From nobody Wed Sep 10 05:31:00 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=linux.ibm.com ARC-Seal: i=1; a=rsa-sha256; t=1757361859; cv=none; d=zohomail.com; s=zohoarc; b=lKMIsj1nlgEWBIBv3hQVT/84M0KnKutsRAd22eMpu/MpUSMPL947a6oULt4xHYtATbSgCocz+C2/VW5T4kmHQiiVkKhbULKCym9RYV9ANTITgXXt7C3/M8lIZ4zOnyC1cYSvUVarUZt5ilBaDyyoJvdxn9+4gcPTehQJeSA+Sjo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1757361859; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=51ZrNQuMDWHdTvuk8/+E6TuIjpvWDFA3qstEJOBXSNg=; b=Guq70oDuUpj8pfzO+rh7eMG+sH/akEnjtZmT4TXhujnpnDZAWrEY0wJ5HW+e48xILZ3ikkYJcSbw6q2fVt87UMh6RjMkvUiysvKDRQqdoKA9IkfLu+vsFjNtc7M4xNNktFzJ4JPFqBZJMStNiMvZ/Uro1J7LSRIbuOADMpm/G4c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1757361859709561.0364592433202; Mon, 8 Sep 2025 13:04:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uvi4A-0001xu-LT; Mon, 08 Sep 2025 16:02:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uvi3p-0001uh-UJ; Mon, 08 Sep 2025 16:01:58 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uvi3l-0006zX-7Z; Mon, 08 Sep 2025 16:01:57 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 588J5vLA030018; Mon, 8 Sep 2025 20:01:49 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 490cff3q2k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 08 Sep 2025 20:01:49 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.1.12/8.18.0.8) with ESMTP id 588Jx9PG000586; Mon, 8 Sep 2025 20:01:48 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 490cff3q2f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 08 Sep 2025 20:01:48 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 588G4htX020458; Mon, 8 Sep 2025 20:01:47 GMT Received: from smtprelay04.wdc07v.mail.ibm.com ([172.16.1.71]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 490yp0qv0f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 08 Sep 2025 20:01:47 +0000 Received: from smtpav02.wdc07v.mail.ibm.com (smtpav02.wdc07v.mail.ibm.com [10.39.53.229]) by smtprelay04.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 588K1kSR60621084 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 8 Sep 2025 20:01:46 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 475CC5805C; Mon, 8 Sep 2025 20:01:46 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 787A45805B; Mon, 8 Sep 2025 20:01:45 +0000 (GMT) Received: from mglenn-KVM.. (unknown [9.10.239.198]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 8 Sep 2025 20:01:45 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=51ZrNQ uMDWHdTvuk8/+E6TuIjpvWDFA3qstEJOBXSNg=; b=Yki88j1neleY197/5SBg5n SO3kVdMBXkJvFsBAFYPSiUWs5zmbrLDiSXsL5ITNXDk2suWdA9edtG+G1DI29dML 24hp1ungDOWWEfacqtfFYF9hOvgx40D1kRddEsPMQTSFvDZIdno5rKHpi1wDBxRj 2EPY1+yNnuGwl3QioIlTpL9c/tDtE72WQPBl1k6QUEynyF/duX0jqjxGZPX7S4LC uSnPyA++/G29rpXeQRxfp+1eUXZXsJl+UmS9qdDcP9tSpjmpkSlROYmsQJpHD10p Udp2D7ZBm0g80v+OCOBW18sMo997jbAg19isH3xndY63T+3RfgRyJYscWkc3x53w == From: Glenn Miles To: qemu-devel@nongnu.org Cc: Glenn Miles , qemu-ppc@nongnu.org, clg@redhat.com, npiggin@gmail.com, harshpb@linux.ibm.com, thuth@redhat.com, rathc@linux.ibm.com, richard.henderson@linaro.org Subject: [PATCH v3 9/9] tests/functional: Add test for IBM PPE42 instructions Date: Mon, 8 Sep 2025 15:00:19 -0500 Message-ID: <20250908200028.115789-10-milesg@linux.ibm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250908200028.115789-1-milesg@linux.ibm.com> References: <20250908200028.115789-1-milesg@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: EsCbkImBWDjgTtXbr3qlxjtklrPl4mmD X-Proofpoint-GUID: 2IBoCLmDbkicYToLjf7tnMDC4vfo2lzV X-Authority-Analysis: v=2.4 cv=EYDIQOmC c=1 sm=1 tr=0 ts=68bf362d cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=IkcTkHD0fZMA:10 a=yJojWOMRYYMA:10 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=20KFwNOVAAAA:8 a=69wJf7TsAAAA:8 a=up-X0YpDAAAA:8 a=WP5zsaevAAAA:8 a=NUakdCcs51WeiAtREWwA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=Fg1AiH1G6rFz08G2ETeA:22 a=86FmjZgct7XXK6GGpxvI:22 a=t8Kx07QrZZTALmIZmm-o:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA2MDAyMCBTYWx0ZWRfX6qNkw1qJJK4I aCduqnkE7p0Hp+fQeQZEvNV+rixSDPMMlgwcFHM5bAJne6J0EJ72ARQpHFC/+y+nLwFBCbZ6U/o HjwyMmj/StfFjvyN0tT6KYeWI+CJtGIO+5cWueVw8XAQfSKXfw4lVXpz19YvUM1BOymdxf+sF0j l6hHzGYikKjypqA1w0+u+smalBYP9hcOfFavH7LItqj4e8SSYfopQWx4Gtno3IWc2Ne6U1YN519 mpALcBlADvnuRBdLW8uOW38n4RGgAyJkLTwdpDzgIVpeSBsmLBdKkOLXEuVzvtjVfs945qsEF2O Yf5PN9cuOwkH4GaAC4w+35M5qLcwunIZeIhnrIcfiuxTN/b1nhxIzrx9jffyD08EalpPk0NxJ8/ OY8kPT0d X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-08_06,2025-09-08_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 suspectscore=0 spamscore=0 impostorscore=0 priorityscore=1501 phishscore=0 clxscore=1015 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509060020 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=milesg@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @ibm.com) X-ZM-MESSAGEID: 1757361861455116600 Adds a functional test for the IBM PPE42 instructions which downloads a test image from a public github repo and then loads and executes the image. (see https://github.com/milesg-github/ppe42-tests for details) Test status is checked by periodically issuing 'info register' commands and checking the NIP value. If the NIP is 0xFFF80200 then the test successfully executed to completion. If the machine stops before the test completes or if a 90 second timeout is reached, then the test is marked as having failed. This test does not test any PowerPC instructions as it is expected that these instructions are well covered in other tests. Only instructions that are unique to the IBM PPE42 processor are tested. Signed-off-by: Glenn Miles Reviewed-by: Thomas Huth --- No changes from v2 patch 4 MAINTAINERS | 1 + tests/functional/meson.build | 1 + tests/functional/test_ppc_ppe42.py | 79 ++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 tests/functional/test_ppc_ppe42.py diff --git a/MAINTAINERS b/MAINTAINERS index 52fa303e0a..af412ad0ce 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1536,6 +1536,7 @@ M: Glenn Miles L: qemu-ppc@nongnu.org S: Odd Fixes F: hw/ppc/ppe42_machine.c +F: tests/functional/test_ppc_ppe42.py =20 PReP M: Herv=C3=A9 Poussineau diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 311c6f1806..ddfef55bd2 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -233,6 +233,7 @@ tests_ppc_system_quick =3D [ ] =20 tests_ppc_system_thorough =3D [ + 'ppc_ppe42', 'ppc_40p', 'ppc_amiga', 'ppc_bamboo', diff --git a/tests/functional/test_ppc_ppe42.py b/tests/functional/test_ppc= _ppe42.py new file mode 100644 index 0000000000..26bbe11b2d --- /dev/null +++ b/tests/functional/test_ppc_ppe42.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +# +# Functional tests for the IBM PPE42 processor +# +# Copyright (c) 2025, IBM Corporation +# +# SPDX-License-Identifier: GPL-2.0-or-later + +from qemu_test import QemuSystemTest, Asset +import asyncio + +class Ppe42Machine(QemuSystemTest): + + timeout =3D 90 + poll_period =3D 1.0 + + ASSET_PPE42_TEST_IMAGE =3D Asset( + ('https://github.com/milesg-github/ppe42-tests/raw/refs/heads/main= /' + 'images/ppe42-test.out'), + '03c1ac0fb7f6c025102a02776a93b35101dae7c14b75e4eab36a337e39042ea8') + + def _test_completed(self): + self.log.info("Checking for test completion...") + try: + output =3D self.vm.cmd('human-monitor-command', + command_line=3D'info registers') + except Exception as err: + self.log.debug(f"'info registers' cmd failed due to {err=3D}," + " {type(err)=3D}") + raise + + self.log.info(output) + if "NIP fff80200" in output: + self.log.info("") + return True + else: + self.log.info("") + return False + + def _wait_pass_fail(self, timeout): + while not self._test_completed(): + if timeout >=3D self.poll_period: + timeout =3D timeout - self.poll_period + self.log.info(f"Waiting {self.poll_period} seconds for tes= t" + " to complete...") + e =3D None + try: + e =3D self.vm.event_wait('STOP', self.poll_period) + + except asyncio.TimeoutError: + self.log.info("Poll period ended.") + pass + + except Exception as err: + self.log.debug(f"event_wait() failed due to {err=3D}," + " {type(err)=3D}") + raise + + if e !=3D None: + self.log.debug(f"Execution stopped: {e}") + self.log.debug("Exiting due to test failure") + self.fail("Failure detected!") + break + else: + self.fail("Timed out waiting for test completion.") + + def test_ppe42_instructions(self): + self.set_machine('ppe42_machine') + self.require_accelerator("tcg") + image_path =3D self.ASSET_PPE42_TEST_IMAGE.fetch() + self.vm.add_args('-nographic') + self.vm.add_args('-device', f'loader,file=3D{image_path}') + self.vm.add_args('-device', 'loader,addr=3D0xfff80040,cpu-num=3D0') + self.vm.add_args('-action', 'panic=3Dpause') + self.vm.launch() + self._wait_pass_fail(self.timeout) + +if __name__ =3D=3D '__main__': + QemuSystemTest.main() --=20 2.43.0