From nobody Sun Apr 12 04:21:48 2026 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=1772023679; cv=none; d=zohomail.com; s=zohoarc; b=kPnaXFTrZb7hBb2o2YmiJqQ6SD/gLVILyee7IcYzfrT/ylbiP6iNDvOLr90LVgo8t+lxcW4lyffXkNLvAjIuMI8E/g+WY8sKQlbI6LInzpl2b5N0YCzmxh6Rk4m3HSRAFz9ORn1OiKDvvaV3Vz0rVPh1N+Ls+6MEOcTk2tOaT0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023679; h=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=BKxcgizA4DIj9X+uzwnck18v9OQtI1/RI+V75J4O23w=; b=UxsMowLr9SjJCyMWWAOnnYbHFZMVLdFqjFlkLHF9oxgGfmUyQvteNSTlULkVFXTN+3xgnleHuGtSHB4sDrmjtRFuHPfdwY4oRkmGmU04iDJyrHc7yPnfpsQwZQqIBmlXxz5Z7g+q9G02NkmG5g5wdPyFBK1ViuOglP7HpEGVkFI= 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 1772023679606317.83046329827675; Wed, 25 Feb 2026 04:47:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEI4-0007FD-SY; Wed, 25 Feb 2026 07:46:56 -0500 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 1vvEHy-0007EY-5j; Wed, 25 Feb 2026 07:46:50 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvEHv-0002EA-ON; Wed, 25 Feb 2026 07:46:49 -0500 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PARMpW2221454; Wed, 25 Feb 2026 12:46:46 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 4cf34c7gp7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:45 +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 61PCMQxa013438; Wed, 25 Feb 2026 12:46:45 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cfqdy5d4k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:45 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCkfPk55706106 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:41 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 30CC020043; Wed, 25 Feb 2026 12:46:41 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EE20B20040; Wed, 25 Feb 2026 12:46:38 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:38 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=BKxcgizA4DIj9X+uz wnck18v9OQtI1/RI+V75J4O23w=; b=k1ZqUcXLX/r0NjEKeFu2KJVcG6CTOYYpW NCtp0XGfzKb8vX8oOZHo6rsGrkTXuDAr4i+wgIxjH4u3JFVS42JOGiJdPdsWFvf8 f/8zHOKmQ48t7r7VdjQDCLxDBH8FsDoiAtJENoC+BqJ8uKE9LjApdH1j9v+/djHN ft7rkIi5jQLNRn3Vup11TMYyFzdKkbwKp5nG1OjUlQCTIHSiV6s0spjtowGfiWQp hJ4uGVxDx+19N/HD2gFggT/pSl+y+xmrJYxc9l5Ol2Nmql8l1ysJf5EQaKhK5MQJ nQC71PxGRSJajS9226DG5bFCDdzlqKYQDfL3BgdVUzvV4mBJWh/hg== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 01/10] ppc/pnv: Move SBE host doorbell function to top of file Date: Wed, 25 Feb 2026 18:16:23 +0530 Message-ID: <20260225124633.1841222-2-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfXxwPV7jZ7didH WzHjWALdk1ntPUUVGMnULvR6cZppnqHxEMSf+zj8Vbjr14HbIfQMvm2TVCLYuqWEMcceY+0a9VD O4oNn+vlwpDEaDIP0feWOXkj+QoZKKPcRhv61BJQbJWGUIDXUQBjMvJ9Y/vVALtBdu4ZQC3TiLs C3B1HxYzCfFoVM0eg18g92zNEV4saVjDGsac18j2Nt7r8bzusZIVbx6qFJ74fOP8Qr2ldrhE9+9 Npc/zVQVPM8fP2lIME1eCR09HrER6O/TIbynUsp+2dRa3Qkah9K6LJUjxQtlgqvYxzKA13PcKIe VBt0fTGxnngF02uRflJmbtQ3hFoRjgR2ImGN+VwfmXp9xJl8FGu+leXiNkoXALlLPzrppqqmaSE LHkDbaWEHRdGufKtqNPohF0S8BsXvW5yH3fGw490Iki55vF98AMb5UJXcFIgUq8vOWfxa7MmKKP AFAHJ8flTQbNcp7Hv1Q== X-Proofpoint-ORIG-GUID: IBQFhDLVafLp-bpjtVuh8QWWCjjgM3gy X-Authority-Analysis: v=2.4 cv=F9lat6hN c=1 sm=1 tr=0 ts=699eef36 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=Cz7AoQ69vTHEakZR_RYA:9 X-Proofpoint-GUID: AgquUIh7ZlyYPUww4-t3SmPB9P28O79p X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 suspectscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023681739158500 Content-Type: text/plain; charset="utf-8" Moved 'pnv_sbe_set_host_doorbell' as-it-is to above 'pnv_sbe_power9_xscom_ctrl_write'. This is done since in a future patch, S0 interrupt implementation uses 'pnv_sbe_set_host_doorbell', hence the host doorbell function needs to be declared/defined before 'pnv_sbe_power9_xscom_ctrl_write' where we implement the S0 interrupt. No functional change. Signed-off-by: Aditya Gupta --- hw/ppc/pnv_sbe.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 27383ce6837e..247617338a0d 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -80,6 +80,15 @@ #define SBE_CONTROL_REG_S0 PPC_BIT(14) #define SBE_CONTROL_REG_S1 PPC_BIT(15) =20 +static void pnv_sbe_set_host_doorbell(PnvSBE *sbe, uint64_t val) +{ + val &=3D SBE_HOST_RESPONSE_MASK; /* Is this right? What does HW do? */ + sbe->host_doorbell =3D val; + + trace_pnv_sbe_reg_set_host_doorbell(val); + qemu_set_irq(sbe->psi_irq, !!val); +} + struct sbe_msg { uint64_t reg[4]; }; @@ -125,15 +134,6 @@ static const MemoryRegionOps pnv_sbe_power9_xscom_ctrl= _ops =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 -static void pnv_sbe_set_host_doorbell(PnvSBE *sbe, uint64_t val) -{ - val &=3D SBE_HOST_RESPONSE_MASK; /* Is this right? What does HW do? */ - sbe->host_doorbell =3D val; - - trace_pnv_sbe_reg_set_host_doorbell(val); - qemu_set_irq(sbe->psi_irq, !!val); -} - /* SBE Target Type */ #define SBE_TARGET_TYPE_PROC 0x00 #define SBE_TARGET_TYPE_EX 0x01 --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023742; cv=none; d=zohomail.com; s=zohoarc; b=Lts0oVI9YoVaqnV7esXSh2ckEswCRbJiKSEq+NMalCcXrRKejWiCVidf68Qoz3CpsexwDdZVzFsMAr9D+xD+9f9arpP08GHhK0DKs3g30U5ig9wMZHMLat72t6eOqnJlWjqM8eiR5BxqvtYapsSEW4ECzlcp0oPGebqa13VOIvs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023742; h=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=rMCUh65msE2wmYKKaek+RmwMCxZadT80NXyymhnc6ms=; b=N2mnBBS4UQunRA+edBxdfyzbUMmdXk75N7EAifqz7djUJA93wsepZPKNgZZSOe7az6MpoTH4s5yj/yqYnyZV3ZBGX69PiwjjDXHB3q7/dkd+k1na7zMUiwGsgr0hR+RT+vwVjDLkEB3En9wIPA2ccKozlfRANreFmReVB+KOYqE= 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 1772023742294701.7479166933434; Wed, 25 Feb 2026 04:49:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEI6-0007Gn-WC; Wed, 25 Feb 2026 07:46:59 -0500 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 1vvEI1-0007F1-8R; Wed, 25 Feb 2026 07:46:54 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvEHy-0002Ey-SW; Wed, 25 Feb 2026 07:46:52 -0500 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P8ijFU1659923; Wed, 25 Feb 2026 12:46:49 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cf4bryerr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:49 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61PCKVOM015789; Wed, 25 Feb 2026 12:46:48 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cfq1sndx3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:48 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCkiKe46793172 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:44 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A5B9C20043; Wed, 25 Feb 2026 12:46:44 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DA90220040; Wed, 25 Feb 2026 12:46:41 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:41 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=rMCUh65msE2wmYKKa ek+RmwMCxZadT80NXyymhnc6ms=; b=DlAFRy24mN1Z5jJprOkWBLEPQXo/nT/r5 LfpDihxLdSGG3CG+VDePWT/oAb+QfK6zI+CEzx+d2hzSSBQyfGev2wIfHiLc6/aC V5Oq9tCkq7rsPEvU/fadjupIyXioz8dwPr79ZPzgNLQCjHpR8blbzSRYPcz8pcgT gRHCjhLoMXBVHQxhV8Y/P6p94YH97U0e6bh9O5OBKC1rNMhyfYETUe/EhnMhJXpx 3iYEjcTq1wWBuqnK4Z/lXbpk6r3zLzPwrmCwstlmREjKgVdZ712k1MuxWvX6xCdn 94bhTUKcFgokB1fvK9DUr77ZnTq7rqcqYHG57z0ZhfQSX2nFQIl3g== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 02/10] ppc/mpipl: Implement S0 SBE interrupt Date: Wed, 25 Feb 2026 18:16:24 +0530 Message-ID: <20260225124633.1841222-3-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: s_STtAZKKYhtws-4iwmu5R_htUnIVqhZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfXy/dt3mYcyW/V 6MUm+KXMse+Go+bFpC7N6fYZgjViH6bERUl+Zyu3i+s/KicWFynKUnmtPvyXf18tMDWoKyY76p0 YwwZWvHjyDnKouZ+HcAfvMoFM/zE8T/YJJMybxUcU7Y2x8lp0LbKOGU6g4dyluv0JCE0b0ZgB6d eaU626tLN09IjC8q+Yi87i5L13oPGcXEByfYNRHVcPwmvSiK/1+rCiNouBXS76SoKzk0MXzzTle AX2R82DbQ4Frw/0QuAkRqsHFteoBgXnbO0S/md3I1Ye/A+Z3NnMzW5CV7VFe50afCAK1KqTojJ3 18DLyRQOfIMtMAl/4mUHM83vPeWL15CaEcYFjr9dn4oU9UeyX9cDgipb/Yq1FRfWusP5SNDKEAm Z9gFxIeeLbYedono3JJ8KJEXDLXN21hJEHR0NWeA9PVxGCA7rl6AKc5BJILWfvIntTEqztzwm0q aN+wU6eBdEWJ8Eh3krw== X-Authority-Analysis: v=2.4 cv=eNceTXp1 c=1 sm=1 tr=0 ts=699eef39 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=atcXKtye3xvqEmVJAE4A:9 X-Proofpoint-GUID: XsU6YbtoiWreGy8SwUIDj4UDLL-7shYJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 phishscore=0 suspectscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023743981158500 Content-Type: text/plain; charset="utf-8" During MPIPL (aka fadump), after a kernel crash, the kernel does opal_cec_reboot2 opal call, signifying an abnormal termination. When OPAL recieves this opal call, it further triggers SBE S0 interrupt, to trigger a MPIPL boot. Currently S0 interrupt is unimplemented in QEMU. Implement S0 interrupt as 'pause_vcpus' + 'guest_reset' in QEMU, as the SBE's implementation of S0 seems to be basically "stop all clocks" and then "host reset". pause_vcpus is done in a later patch when register preserving support is added See 'stopClocksS0' in SBE source code for more information. Also log both S0 and S1 interrupts. Signed-off-by: Aditya Gupta --- hw/ppc/meson.build | 1 + hw/ppc/pnv_mpipl.c | 26 ++++++++++++++++++++++++++ hw/ppc/pnv_sbe.c | 29 +++++++++++++++++++++++++++++ include/hw/ppc/pnv.h | 6 ++++++ include/hw/ppc/pnv_mpipl.h | 19 +++++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 hw/ppc/pnv_mpipl.c create mode 100644 include/hw/ppc/pnv_mpipl.h diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index f7dac87a2a48..c61fba4ec8f2 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -56,6 +56,7 @@ ppc_ss.add(when: 'CONFIG_POWERNV', if_true: files( 'pnv_pnor.c', 'pnv_nest_pervasive.c', 'pnv_n1_chiplet.c', + 'pnv_mpipl.c', )) # PowerPC 4xx boards ppc_ss.add(when: 'CONFIG_PPC405', if_true: files( diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c new file mode 100644 index 000000000000..d8c9b7a428b7 --- /dev/null +++ b/hw/ppc/pnv_mpipl.c @@ -0,0 +1,26 @@ +/* + * Emulation of MPIPL (Memory Preserving Initial Program Load), aka fadump + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "system/runstate.h" +#include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_mpipl.h" + +void do_mpipl_preserve(PnvMachineState *pnv) +{ + /* Mark next boot as Memory-preserving boot */ + pnv->mpipl_state.is_next_boot_mpipl =3D true; + + /* + * Do a guest reset. + * Next reset will see 'is_next_boot_mpipl' as true, and trigger MPIPL + * + * Requirement: + * GUEST_RESET is expected to NOT clear the memory, as is the case when + * this is merged + */ + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); +} diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 247617338a0d..5a2b3342d199 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -26,6 +26,9 @@ #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_sbe.h" +#include "hw/ppc/pnv_mpipl.h" +#include "system/cpus.h" +#include "system/runstate.h" #include "trace.h" =20 /* @@ -113,11 +116,37 @@ static uint64_t pnv_sbe_power9_xscom_ctrl_read(void *= opaque, hwaddr addr, static void pnv_sbe_power9_xscom_ctrl_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); + PnvSBE *sbe =3D opaque; uint32_t offset =3D addr >> 3; =20 trace_pnv_sbe_xscom_ctrl_write(addr, val); =20 switch (offset) { + case SBE_CONTROL_REG_RW: + switch (val) { + case SBE_CONTROL_REG_S0: + qemu_log_mask(LOG_UNIMP, "SBE: S0 Interrupt triggered\n"); + + pnv_sbe_set_host_doorbell(sbe, sbe->host_doorbell | SBE_HOST_R= ESPONSE_MASK); + + /* Preserve memory regions and CPU state, if MPIPL is register= ed */ + do_mpipl_preserve(pnv); + + /* + * Control may not come back here as 'do_mpipl_preserve' trigg= ers + * a guest reboot + */ + break; + case SBE_CONTROL_REG_S1: + qemu_log_mask(LOG_UNIMP, "SBE: S1 Interrupt triggered\n"); + break; + default: + qemu_log_mask(LOG_UNIMP, + "SBE: CONTROL_REG_RW: Unknown value: Ox%." + HWADDR_PRIx "\n", val); + } + break; default: qemu_log_mask(LOG_UNIMP, "SBE Unimplemented register: Ox%" HWADDR_PRIx "\n", addr >> 3); diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 24f8843a4090..7d73629f112a 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -25,6 +25,7 @@ #include "hw/core/sysbus.h" #include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_pnor.h" +#include "hw/ppc/pnv_mpipl.h" =20 #define TYPE_PNV_CHIP "pnv-chip" =20 @@ -111,6 +112,8 @@ struct PnvMachineState { =20 bool big_core; bool lpar_per_core; + + MpiplPreservedState mpipl_state; }; =20 PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id); @@ -290,4 +293,7 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); =20 #define PNV11_OCC_SENSOR_BASE(chip) PNV10_OCC_SENSOR_BASE(chip) =20 +/* MPIPL helpers */ +void do_mpipl_preserve(PnvMachineState *pnv); + #endif /* PPC_PNV_H */ diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h new file mode 100644 index 000000000000..c544984dc76d --- /dev/null +++ b/include/hw/ppc/pnv_mpipl.h @@ -0,0 +1,19 @@ +/* + * Emulation of MPIPL (Memory Preserving Initial Program Load), aka fadump + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PNV_MPIPL_H +#define PNV_MPIPL_H + +#include "qemu/osdep.h" + +typedef struct MpiplPreservedState MpiplPreservedState; + +/* Preserved state to be saved in PnvMachineState */ +struct MpiplPreservedState { + bool is_next_boot_mpipl; +}; + +#endif --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023725; cv=none; d=zohomail.com; s=zohoarc; b=BBjV/VzEhGkCytKhSDqvEs/brqiUIanRue5LOmTQ4GxLSqi+RbbldDEikjxbfV26fyo4cQ82izt8qRUZCstcQXLb9H1euhUybQpYIsPlQdhAXE3HvjCkI6zoQ9jjQKyB88qoNssGDaS1GRwvsyxOUPLwpftoo9UOU0wsHFGE0H8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023725; h=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=1nt3PTCilSPCVfCryfhq42otNTWOyBRm0Ts0ywt/xV4=; b=UXGSqI1FTHW0kXtfUE+Wd3MLZSOWeV4Sj8lULn1/s1YgSIxZ9tUZFOuz/LkBcKseVM5bBBTd5uMYx/zpnW8wZ+7zX6NakPAuonPDnlV7IOgxU66M58vZjd1DXZiE4pMHYmCS2+GmPCWlF83dPQaO67Po4nV+EDDvY27lISLlU0I= 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 1772023725592649.814181074649; Wed, 25 Feb 2026 04:48:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIC-0007I6-5q; Wed, 25 Feb 2026 07:47:04 -0500 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 1vvEI7-0007Gq-0Y; Wed, 25 Feb 2026 07:46:59 -0500 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 1vvEI3-0002FZ-3Y; Wed, 25 Feb 2026 07:46:57 -0500 Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P7VHV71138396; Wed, 25 Feb 2026 12:46:53 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 4cf4cr06fb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:52 +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 61PCRrIO013431; Wed, 25 Feb 2026 12:46:51 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cfqdy5d4t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:51 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCkl4e55574884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:47 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 955B520043; Wed, 25 Feb 2026 12:46:47 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 11FA520040; Wed, 25 Feb 2026 12:46:45 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:44 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=1nt3PTCilSPCVfCry fhq42otNTWOyBRm0Ts0ywt/xV4=; b=X4hvtsf2sdXDYERewKm/uT7ZbUgNrk7Ah Dh90qEaKy+joJEGiG5SNo4prdzIVNT8bLuLbdJYhZ4k+/et5bBcZpPfe84LSXnb8 v1x1u1a7/2BGha5D2NBpaVmGTKwAX+XvWAGx+yoIBE5CoAJMd0B6BDM0GGZWF549 59GBc6XAf60P2uzv7RfEEfgvzgLegnq/8PqrMhbB5Is31OhRAB3DdVuqmQi9Hmay 6Rf3eWKFDWXqUFLjr+eh0C/4otSoKMKX06Hi/3DXQ3OY037WxYX49euRKn2Mgzh3 OBW5iQaVWZs2G0FOxeFAaTOC/pYaT0BKENIs+/BlyHsGI26Sj4cwQ== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 03/10] ppc/pnv: Handle stash command in PowerNV SBE Date: Wed, 25 Feb 2026 18:16:25 +0530 Message-ID: <20260225124633.1841222-4-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: j7YRkr21dF2oAxNxTq2i-V7Z4n7F5VK5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX3IzxPIz8nyZn XXLo+WZ6OeoMp3giFD+Dd1ANDLLWJj7Hkzxdyd3TZ6Xjktq4X/hmHies2cEKRbZSe+a25EO8P73 AAA6G/bWw48XVcgXeKtnV2E/IvPJaSvJI63iZAbcEGFi0I9aNnu6JteubDRdI50UZZ7aoczge0+ WOC7I/18GmG5tZOEYR3vrJmz77ZL3CiynwpkeMHuZHxyDX6KHfK6J7UOLg9gk4zD1kiPjvCWxzD XcS9O40ZdHKMFS8wneleQ+6XdrAj8Vv4vtKRRSx0p9tmC+mr2HGDcu/Ftk7nB5U4heXdjI7CYXE nKdrkswsgFii0ktuSUv+JVt5CtMNGgjQ/uxZesvqJ10aTpkTHVe/8c6ZWpiSF/exDgkecUVpE1c rJA1Y17rDXNY1f4w9EEY1tjOmeSNrqM8qDIpErbeccrVK+taCORBvu8WFsXu+HLp/Zsy9fu3ma2 g3sdnh4qNByvJFfslCw== X-Proofpoint-GUID: 0cvIxwkBR7v_OLTOyyJoLLQDYJQPflHU X-Authority-Analysis: v=2.4 cv=bbBmkePB c=1 sm=1 tr=0 ts=699eef3d cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=pGLkceISAAAA:8 a=rjUXpLR2p4wDE8UIozkA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023726081158500 Content-Type: text/plain; charset="utf-8" Earlier since the SBE_CMD_STASH_MPIPL_CONFIG command was not handled, so skiboot used to not get any response from SBE: [ 106.350742821,3] SBE: Message timeout [chip id =3D 0], cmd =3D d7, s= ubcmd =3D 7 [ 106.352067746,3] SBE: Failed to send stash MPIPL config [chip id =3D= 0x0, rc =3D 254] Fix this by handling the command in PowerNV SBE, and sending a response so skiboot knows SBE has handled the STASH command The stashed skiboot base is later used to access the relocated MDST/MDDT tables when MPIPL is implemented. The purpose of stashing relocated base address is explained in following skiboot commit: author Vasant Hegde Fri Jul 12 16:47:5= 1 2019 +0530 committer Oliver O'Halloran Thu Aug 15 17:53:39 2019= +1000 SBE: Send OPAL relocated base address to SBE OPAL relocates itself during boot. During memory preserving IPL hostb= oot needs to access relocated OPAL base address to get MDST, MDDT tables. Hence= send relocated base address to SBE via 'stash MPIPL config' chip-op. Durin= g next IPL SBE will send stashed data to hostboot... so that hostboot can ac= cess these data. Signed-off-by: Aditya Gupta --- hw/ppc/pnv_sbe.c | 37 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 3 +++ 2 files changed, 40 insertions(+) diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 5a2b3342d199..46c5047f1c0a 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -233,8 +233,11 @@ static void sbe_timer(void *opaque) =20 static void do_sbe_msg(PnvSBE *sbe) { + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); + MachineState *machine =3D MACHINE(pnv); struct sbe_msg msg; uint16_t cmd, ctrl_flags, seq_id; + uint64_t mbox_val; int i; =20 memset(&msg, 0, sizeof(msg)); @@ -265,6 +268,40 @@ static void do_sbe_msg(PnvSBE *sbe) timer_del(sbe->timer); } break; + case SBE_CMD_STASH_MPIPL_CONFIG: + /* key =3D sbe->mbox[1] */ + switch (sbe->mbox[1]) { + case SBE_STASH_KEY_SKIBOOT_BASE: + mbox_val =3D sbe->mbox[2]; + if (mbox_val >=3D machine->ram_size) { + qemu_log_mask(LOG_GUEST_ERROR, + "SBE: skiboot_base 0x%" PRIx64 " exceeds RAM size 0x%" P= RIx64 "\n", + mbox_val, machine->ram_size); + return; + } + + pnv->mpipl_state.skiboot_base =3D mbox_val; + qemu_log_mask(LOG_UNIMP, + "Stashing skiboot base: 0x%" HWADDR_PRIx "\n", + pnv->mpipl_state.skiboot_base); + + /* + * Set the response register. + * + * Currently setting the same sequence number in + * response as we got in the request. + */ + sbe->mbox[4] =3D sbe->mbox[0]; /* sequence number */ + pnv_sbe_set_host_doorbell(sbe, + sbe->host_doorbell | SBE_HOST_RESPONSE_WAITING); + + break; + default: + qemu_log_mask(LOG_UNIMP, + "SBE: CMD_STASH_MPIPL_CONFIG: Unimplemented key: 0x" TARGE= T_FMT_lx "\n", + sbe->mbox[1]); + } + break; default: qemu_log_mask(LOG_UNIMP, "SBE Unimplemented command: 0x%x\n", cmd); } diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index c544984dc76d..60d6ede48209 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -8,11 +8,14 @@ #define PNV_MPIPL_H =20 #include "qemu/osdep.h" +#include "exec/hwaddr.h" =20 typedef struct MpiplPreservedState MpiplPreservedState; =20 /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { + /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ + hwaddr skiboot_base; bool is_next_boot_mpipl; }; =20 --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023701; cv=none; d=zohomail.com; s=zohoarc; b=RRB5Wi0aWQ5GXT5LcvNqBZ5pYlr1iYFYpg5LeHfcVGlvB4q4sL6IBAz7WA7whVQ+5l3j+z0i/VJnnsxbJ5kYmgEKeAYB+jbZR+F1zDMqsgtkGYzhi6fkaxD4oQOC88bV+MN2+0oyNdPS/Fg5tUYA3C50mer2afdOdifU1tZwgWU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023701; h=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=J8ITxiKFHolZXhuyR8Ah0vWC9jfIdSHDsq62PjqKEYI=; b=SAxOF+shbdGc3ukbJsMMeUYJZsQZ6jTkxZn9rnjP0m7AKBY2igXUXjs60EuV9dKEmL/Eirs7Fc9zgR2rANPIAQre4VWHPqY/aAyFERfGhJVx1Ig2Z2Bt6ZW4YvUqFuw7rqAEO+ZW9Feu5LoL6p2gF5RalcCv592A9glwLxrnac0= 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 1772023701065753.4355743680965; Wed, 25 Feb 2026 04:48:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIF-0007KF-1B; Wed, 25 Feb 2026 07:47:07 -0500 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 1vvEIA-0007Hp-ML; Wed, 25 Feb 2026 07:47:03 -0500 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 1vvEI7-0002Fj-2i; Wed, 25 Feb 2026 07:47:02 -0500 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61OKxDvG3059391; Wed, 25 Feb 2026 12:46:56 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cf47209fp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:55 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61P97F1l003386; Wed, 25 Feb 2026 12:46:55 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cfs8jw41e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:54 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCkpRP46793214 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:51 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 26C7C20043; Wed, 25 Feb 2026 12:46:51 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 475BB20040; Wed, 25 Feb 2026 12:46:48 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:48 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=J8ITxiKFHolZXhuyR 8Ah0vWC9jfIdSHDsq62PjqKEYI=; b=sCn7uqVVgvd0/FlgfPupEuwteWATiDTq6 5FPNsbyX+i+cQGEkMZXef5a1+aOim2/OW+Y7STduWip2fwQZHI9eIKP0k8S+tXJP UEiPeXns+UZT5Ix280/lemgR59pJQwH4PlXE3TA3su8LaKnnw9zdbxRL7q5JGKd5 kuDQQyGq7YgUl22iOgVfmHCD8dR1c30p+kYnVBpEAr2u/NSKYxBiXqMBcrnHYbMt gHywosCRFE/2jRqnPbR9M1LDGF8XWA8Ddo3h85lBSOHwBdgqXjpNuKmpxv+KGceF 9b57TRy2weYH/RXsoP/Ms/0RoDp0ePvlVCbCiHMicqpylc2fNDQ6g== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 04/10] pnv/mpipl: Preserve memory regions as per MDST/MDDT tables Date: Wed, 25 Feb 2026 18:16:26 +0530 Message-ID: <20260225124633.1841222-5-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: XOtHCgXoJfHfZsgqJNZEP5v9oiREyDYa X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX6sqZTBQsgFA9 qrHDlwnUBBa6Tsu6uR7BSDrvRW9VHN1HoSP/5vthHOp3cJIqhSnbjxyJbY61BbjZ0E1Gf++fR+p T0rlQ8ou+F9uzhHOCj6Jd/Vl991ArfP/IRX442C9MaFZWQLtbPyI2zmg1iLvcCHKT8UQjWqiVlh vvI8YCUN22eNFLtmFwMzaNyBa1hHO+E9W9NHKAMlGbYD+xJ3eJCcosvjEtpFKINvgW4b7kPuB1L klYZFlLPGQV055z70yKJn5+fJqWJrYLIm0j1WEDeEDODuXc4LBy/Qdr8IMTq0437bQDqk267chT Xzw1CFodsxrYu1QqkiPD1jxAVG1JxiOveO/83epsBVMWRBhzBB5DbSIZT1r/g680PPdygnEeOzH aebnAhK7HMCC/TN+LulpapQKxrX0NqjFeWBcSR40yVvgErrU0vGTw0TqE1/lIQkC4FgYTIJW9ux 6unV/RIkMHhJtePqGpg== X-Authority-Analysis: v=2.4 cv=R7wO2NRX c=1 sm=1 tr=0 ts=699eef40 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=uldKd1TX8WFnlnzwhmkA:9 X-Proofpoint-GUID: MQSd8lIU7nbIWaThBBNVPaTnMXUQstVD X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023701909158500 Content-Type: text/plain; charset="utf-8" Implement copying of memory region, as mentioned by MDST and MDDT tables. Copy the memory regions from source to destination in chunks of 32MB Note, qemu can fail preserving a particular entry due to any reason, such as: * region length mis-matching in MDST & MDDT * failed copy due to access/decode/etc memory issues HDAT doesn't specify any field in MDRT to notify host about such errors. Though HDAT section "15.3.1.3 Memory Dump Results Table (MDRT)" says: The Memory Dump Results Table is a list of the memory ranges that have been included in the dump Based on above statement, it looks like MDRT should include only those regions which are successfully captured in the dump, hence, regions which qemu fails to dump, just get skipped, and will not have a corresponding entry in MDRT Signed-off-by: Aditya Gupta --- hw/ppc/pnv_mpipl.c | 161 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 86 ++++++++++++++++++++ 2 files changed, 247 insertions(+) diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index d8c9b7a428b7..d9fe4a5decac 100644 --- a/hw/ppc/pnv_mpipl.c +++ b/hw/ppc/pnv_mpipl.c @@ -5,12 +5,173 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/log.h" +#include "qemu/units.h" +#include "system/address-spaces.h" #include "system/runstate.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_mpipl.h" +#include + +#define MDST_TABLE_RELOCATED \ + (pnv->mpipl_state.skiboot_base + MDST_TABLE_OFF) +#define MDDT_TABLE_RELOCATED \ + (pnv->mpipl_state.skiboot_base + MDDT_TABLE_OFF) + +/* + * Preserve the memory regions as pointed by MDST table + * + * During this, the memory region pointed by entries in MDST, are 'copied' + * as it is to the memory region pointed by corresponding entry in MDDT + * + * Notes: All reads should consider data coming from skiboot as big-endian, + * and data written should also be in big-endian + */ +static bool pnv_mpipl_preserve_mem(PnvMachineState *pnv) +{ + g_autofree MdstTableEntry *mdst =3D g_malloc(MDST_TABLE_SIZE); + g_autofree MddtTableEntry *mddt =3D g_malloc(MDDT_TABLE_SIZE); + g_autofree MdrtTableEntry *mdrt =3D g_malloc0(MDRT_TABLE_SIZE); + AddressSpace *default_as =3D &address_space_memory; + MemTxResult io_result; + MemTxAttrs attrs; + uint64_t src_addr, dest_addr; + uint32_t data_len; + uint64_t num_chunks, chunk_id =3D 0; + int mdrt_idx =3D 0; + + /* Mark the memory transactions as privileged memory access */ + attrs.user =3D 0; + attrs.memory =3D 1; + + if (pnv->mpipl_state.mdrt_table) { + /* + * MDRT table allocated from some past crash, free the memory to + * prevent memory leak + */ + g_free(pnv->mpipl_state.mdrt_table); + pnv->mpipl_state.num_mdrt_entries =3D 0; + } + + io_result =3D address_space_read(default_as, MDST_TABLE_RELOCATED, att= rs, + mdst, MDST_TABLE_SIZE); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to read MDST table at: 0x" TARGET_FMT_lx "\n", + MDST_TABLE_RELOCATED); + + return false; + } + + io_result =3D address_space_read(default_as, MDDT_TABLE_RELOCATED, att= rs, + mddt, MDDT_TABLE_SIZE); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to read MDDT table at: 0x" TARGET_FMT_lx "\n", + MDDT_TABLE_RELOCATED); + + return false; + } + + /* Try to read all entries */ + for (int i =3D 0; i < MDST_MAX_ENTRIES; ++i) { + g_autofree uint8_t *copy_buffer =3D NULL; + bool is_copy_failed =3D false; + + /* Considering entry with address and size as 0, as end of table */ + if ((mdst[i].addr =3D=3D 0) && (mdst[i].size =3D=3D 0)) { + break; + } + + if (mdst[i].size !=3D mddt[i].size) { + qemu_log_mask(LOG_TRACE, + "Warning: Invalid entry, size mismatch in MDST & MDDT\= n"); + continue; + } + + if (mdst[i].data_region !=3D mddt[i].data_region) { + qemu_log_mask(LOG_TRACE, + "Warning: Invalid entry, region mismatch in MDST & MDD= T\n"); + continue; + } + + src_addr =3D be64_to_cpu(mdst[i].addr) & ~HRMOR_BIT; + dest_addr =3D be64_to_cpu(mddt[i].addr) & ~HRMOR_BIT; + data_len =3D be32_to_cpu(mddt[i].size); + +#define COPY_CHUNK_SIZE ((size_t)(32 * MiB)) + is_copy_failed =3D false; + copy_buffer =3D g_try_malloc(COPY_CHUNK_SIZE); + if (copy_buffer =3D=3D NULL) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed allocating memory (size: %zu) for copying" + " reserved memory regions\n", COPY_CHUNK_SIZE); + is_copy_failed =3D true; + } + + num_chunks =3D ceil((data_len * 1.0f) / COPY_CHUNK_SIZE); + while ((!is_copy_failed) && (chunk_id < num_chunks)) { + /* Take minimum of bytes left to copy, and chunk size */ + uint64_t copy_len =3D MIN( + data_len - (chunk_id * COPY_CHUNK_SIZE), + COPY_CHUNK_SIZE + ); + + /* Copy the source region to destination */ + io_result =3D address_space_read(default_as, src_addr, attrs, + copy_buffer, copy_len); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to read region at: 0x%" PRIx64 "\n", + src_addr); + is_copy_failed =3D true; + break; + } + + io_result =3D address_space_write(default_as, dest_addr, attrs, + copy_buffer, copy_len); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to write region at: 0x%" PRIx64 "\n", + dest_addr); + is_copy_failed =3D true; + break; + } + + src_addr +=3D COPY_CHUNK_SIZE; + dest_addr +=3D COPY_CHUNK_SIZE; + ++chunk_id; + } +#undef COPY_CHUNK_SIZE + + if (is_copy_failed) { + /* + * HDAT doesn't specify an error code in MDRT for failed copy, + * and doesn't specify how this is to be handled + * Hence just skip adding an entry in MDRT, as done for size + * mismatch or other inconsistency between MDST/MDDT + */ + continue; + } + + /* Populate entry in MDRT table if preserving successful */ + mdrt[mdrt_idx].src_addr =3D cpu_to_be64(src_addr); + mdrt[mdrt_idx].dest_addr =3D cpu_to_be64(dest_addr); + mdrt[mdrt_idx].size =3D cpu_to_be32(data_len); + mdrt[mdrt_idx].data_region =3D mdst[i].data_region; + ++mdrt_idx; + } + + pnv->mpipl_state.mdrt_table =3D g_steal_pointer(&mdrt); + pnv->mpipl_state.num_mdrt_entries =3D mdrt_idx; + + return true; +} =20 void do_mpipl_preserve(PnvMachineState *pnv) { + pnv_mpipl_preserve_mem(pnv); + /* Mark next boot as Memory-preserving boot */ pnv->mpipl_state.is_next_boot_mpipl =3D true; =20 diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index 60d6ede48209..e0518ef2e12e 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -10,13 +10,99 @@ #include "qemu/osdep.h" #include "exec/hwaddr.h" =20 +#include + +typedef struct MdstTableEntry MdstTableEntry; +typedef struct MdrtTableEntry MdrtTableEntry; typedef struct MpiplPreservedState MpiplPreservedState; =20 +/* + * Following offsets are copied from skiboot source code. + * These need to be updated if this changes in a future skiboot version + */ +/* Use 768 bytes for SPIRAH */ +#define SPIRAH_OFF 0x00010000 +#define SPIRAH_SIZE 0x300 + +/* Use 256 bytes for processor dump area */ +#define PROC_DUMP_AREA_OFF (SPIRAH_OFF + SPIRAH_SIZE) +#define PROC_DUMP_AREA_SIZE 0x100 + +#define PROCIN_OFF (PROC_DUMP_AREA_OFF + PROC_DUMP_AREA_SIZE) +#define PROCIN_SIZE 0x800 + +/* Offsets of MDST and MDDT tables from skiboot base */ +#define MDST_TABLE_OFF (PROCIN_OFF + PROCIN_SIZE) +#define MDST_TABLE_SIZE 0x400 + +#define MDDT_TABLE_OFF (MDST_TABLE_OFF + MDST_TABLE_SIZE) +#define MDDT_TABLE_SIZE 0x400 +/* + * Offset of the dump result table MDRT. Hostboot will write to this + * memory after moving memory content from source to destination memory. + */ +#define MDRT_TABLE_OFF 0x01c00000 +#define MDRT_TABLE_SIZE 0x00008000 + +/* HRMOR_BIT copied from skiboot */ +#define HRMOR_BIT (1ull << 63) + +#define __packed __attribute__((packed)) + +/* + * Memory Dump Source Table (MDST) + * + * Format of this table is same as Memory Dump Source Table defined in HDAT + */ +struct MdstTableEntry { + uint64_t addr; + uint8_t data_region; + uint8_t dump_type; + uint16_t reserved; + uint32_t size; +} __packed; + +/* Memory dump destination table (MDDT) has same structure as MDST */ +typedef MdstTableEntry MddtTableEntry; + +/* + * Memory dump result table (MDRT) + * + * List of the memory ranges that have been included in the dump. This tab= le is + * filled by hostboot and passed to OPAL on second boot. OPAL/payload will= use + * this table to extract the dump. + * + * Note: This structure differs from HDAT, but matches the structure + * skiboot uses + */ +struct MdrtTableEntry { + uint64_t src_addr; + uint64_t dest_addr; + uint8_t data_region; + uint8_t dump_type; /* unused */ + uint16_t reserved; /* unused */ + uint32_t size; + uint64_t padding; /* unused */ +} __packed; + +/* Maximum length of mdst/mddt/mdrt tables */ +#define MDST_MAX_ENTRIES (MDST_TABLE_SIZE / sizeof(MdstTableEntry)) +#define MDDT_MAX_ENTRIES (MDDT_TABLE_SIZE / sizeof(MddtTableEntry)) +#define MDRT_MAX_ENTRIES (MDRT_TABLE_SIZE / sizeof(MdrtTableEntry)) + +static_assert(MDST_MAX_ENTRIES =3D=3D MDDT_MAX_ENTRIES, + "Maximum entries in MDDT must match MDST"); +static_assert(MDRT_MAX_ENTRIES >=3D MDST_MAX_ENTRIES, + "MDRT should support atleast having number of entries as in MDST"); + /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ hwaddr skiboot_base; bool is_next_boot_mpipl; + + MdrtTableEntry *mdrt_table; + uint32_t num_mdrt_entries; }; =20 #endif --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023734; cv=none; d=zohomail.com; s=zohoarc; b=KYD9WBAhyRDLlcSCEEji1sbcUNh7XzK20yAVvOEc5VZc9/DDUeoI6R+pzVxoa62nVYx+FaNvLQvJtRkfPeCS+IWXh5z0ju8MdKZ8pGOjFc+r05QRmJnrZa7hvUmO5x0CiSN+kIqjgwC4BZAnl1Tp8UTPy3FozIxQ3IR/faGNhbI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023734; h=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=yCYp0dibDwAHYJwDSYO0E26O5qhckXkHqlRcHcJTTWc=; b=ANpgbNfM6H60qCxWYueojfErh238wlH6m7JhhdSWbazzO6FrBoy/7jM9ytfsSECOSmzOsdxAeHMwQZWAIZEDreA1hBj1orRy1DyTR5/ekJblmJTooOfYrcUuvUWnz4qIM232wZaKZCL7v3EVpKJJuRsRK6NaYyFXGLazDlJS+jk= 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 1772023734790859.7577114144226; Wed, 25 Feb 2026 04:48:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEID-0007Ih-6F; Wed, 25 Feb 2026 07:47:05 -0500 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 1vvEIB-0007Hq-8m; Wed, 25 Feb 2026 07:47:03 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvEI9-0002GE-99; Wed, 25 Feb 2026 07:47:02 -0500 Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61OJRG0a2032984; Wed, 25 Feb 2026 12:47:00 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cf24gfppu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:59 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61P8FNuO030259; Wed, 25 Feb 2026 12:46:58 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cfrhkd82e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:46:58 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCksYd53281122 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:54 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A505420043; Wed, 25 Feb 2026 12:46:54 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B4F8E20040; Wed, 25 Feb 2026 12:46:51 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:51 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=yCYp0dibDwAHYJwDS YO0E26O5qhckXkHqlRcHcJTTWc=; b=pNdHZHqjX5E198RpjzSkPmOj32omd6YWk AUbVzEPQ4GhW5/ipDiesHVs4jYEyTZmqLDPE9KrDKohfYxGolciGnJcwfPBtZbqk aeygxO3sZmQrMIvGgobRp2dOu2bO/pT/WZqy9Cs/rJC+FQ+X8XZAykSQFgaN3V8V OimxhJgacxmwCn2iYV0A36Ap0BuoeypJ1vZ3ENHdBslsifODKfBRSzaOifAdbQVg 1NYaNM/Wt2Q5rdxNiNE6Xhl+vOvj3NDzqYTP1cW3cBXU+G+vGJKsuuW3oFu5ip2N BE0m5nFujBIp/BTmYJbL0pMff6K1l2sVRmoIuwMhZ8fmR1yl1kOHA== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 05/10] pnv/mpipl: Preserve CPU registers after crash Date: Wed, 25 Feb 2026 18:16:27 +0530 Message-ID: <20260225124633.1841222-6-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=TNRIilla c=1 sm=1 tr=0 ts=699eef43 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=brt73dwc2WLUf8B55FwA:9 X-Proofpoint-GUID: k6Ct_lpS3FZJIt8EBFioqoQsZGL44di8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX+olntFnMqoaq N6QQIUM5rI1AWtcwU4qqcx0aWhoxZbT6yoHtV+36obIs/0ZVYkv3uVyrLSJkn9zW/syXSfNhr7X nJawHIopyz9kd83yUtulgnCkwPHTWagbthHsaXNnQA0BxL8AQfdK5uUVzyDduvtvxw6Szd7oL85 b2+uE+DKXJEgFAQmyXiSKH2dMCaax85qlLZIUqFrV30Ay1PCk2i50vdMbmAG8/SkrnLazCxddH6 vp0WUv4I9wEh9K1vQuhIUX4l38l8MCarQeCRL7DpdmpZdnG+ycj5MOphWB46uuAPyG5vv3cXl2j bAnKY3a6sj9J7Hvoto/oq3A+cunwfPctSxNCTRrbqY6h4mZ8Nkd/JBGegsHQ7zejDMI4zlh8y3J feo76naVi0qWoQ9nd0Q1K4bP8zJ6Rcm+kXXZi2KynR3lOo5VWPYugvr/O9Qf+CEzcjt276+rv2M z56gslTMmfR+wxxQtVg== X-Proofpoint-ORIG-GUID: lOTMaZ2a_tiS4tNu9iskU34_ZyjbadSS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 impostorscore=0 spamscore=0 clxscore=1015 bulkscore=0 lowpriorityscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023735842158500 Content-Type: text/plain; charset="utf-8" Kernel expects the platform to provide CPU registers after pausing execution of the CPUs. Currently only exporting the registers, used by Linux, for generating the /proc/vmcore Signed-off-by: Aditya Gupta --- hw/ppc/pnv_mpipl.c | 154 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 60 +++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index d9fe4a5decac..37f498051254 100644 --- a/hw/ppc/pnv_mpipl.c +++ b/hw/ppc/pnv_mpipl.c @@ -8,6 +8,9 @@ #include "qemu/log.h" #include "qemu/units.h" #include "system/address-spaces.h" +#include "system/cpus.h" +#include "system/hw_accel.h" +#include "system/memory.h" #include "system/runstate.h" #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_mpipl.h" @@ -17,6 +20,8 @@ (pnv->mpipl_state.skiboot_base + MDST_TABLE_OFF) #define MDDT_TABLE_RELOCATED \ (pnv->mpipl_state.skiboot_base + MDDT_TABLE_OFF) +#define PROC_DUMP_RELOCATED \ + (pnv->mpipl_state.skiboot_base + PROC_DUMP_AREA_OFF) =20 /* * Preserve the memory regions as pointed by MDST table @@ -168,9 +173,158 @@ static bool pnv_mpipl_preserve_mem(PnvMachineState *p= nv) return true; } =20 +static void do_store_cpu_regs(CPUState *cpu, MpiplPreservedCPUState *state) +{ + CPUPPCState *env =3D cpu_env(cpu); + MpiplRegDataHdr *regs_hdr =3D &state->hdr; + MpiplRegEntry *reg_entries =3D state->reg_entries; + MpiplRegEntry *curr_reg_entry; + uint32_t num_saved_regs =3D 0; + + cpu_synchronize_state(cpu); + + regs_hdr->pir =3D cpu_to_be32(env->spr[SPR_PIR]); + + /* QEMU CPUs are not in Power Saving Mode */ + regs_hdr->core_state =3D 0xff; + + regs_hdr->off_regentries =3D 0; + regs_hdr->num_regentries =3D cpu_to_be32(NUM_REGS_PER_CPU); + + regs_hdr->alloc_size =3D cpu_to_be32(sizeof(MpiplRegEntry)); + regs_hdr->act_size =3D cpu_to_be32(sizeof(MpiplRegEntry)); + +#define REG_TYPE_GPR 0x1 +#define REG_TYPE_SPR 0x2 +#define REG_TYPE_TIMA 0x3 + +/* + * ID numbers used by f/w while populating certain registers + * + * Copied these defines from the linux kernel + */ +#define REG_ID_NIP 0x7D0 +#define REG_ID_MSR 0x7D1 +#define REG_ID_CCR 0x7D2 + + curr_reg_entry =3D reg_entries; + +#define REG_ENTRY(type, num, val) \ + do { \ + curr_reg_entry->reg_type =3D cpu_to_be32(type); \ + curr_reg_entry->reg_num =3D cpu_to_be32(num); \ + curr_reg_entry->reg_val =3D cpu_to_be64(val); \ + ++curr_reg_entry; \ + ++num_saved_regs; \ + } while (0) + + /* Save the GPRs */ + for (int gpr_id =3D 0; gpr_id < 32; ++gpr_id) { + REG_ENTRY(REG_TYPE_GPR, gpr_id, env->gpr[gpr_id]); + } + + REG_ENTRY(REG_TYPE_SPR, SPR_ACOP, env->spr[SPR_ACOP]); + REG_ENTRY(REG_TYPE_SPR, SPR_AMR, env->spr[SPR_AMR]); + REG_ENTRY(REG_TYPE_SPR, SPR_BESCR, env->spr[SPR_BESCR]); + REG_ENTRY(REG_TYPE_SPR, SPR_CFAR, env->spr[SPR_CFAR]); + REG_ENTRY(REG_TYPE_SPR, SPR_CIABR, env->spr[SPR_CIABR]); + + REG_ENTRY(REG_TYPE_SPR, SPR_CTR, env->spr[SPR_CTR]); + REG_ENTRY(REG_TYPE_SPR, SPR_CTRL, env->spr[SPR_CTRL]); + REG_ENTRY(REG_TYPE_SPR, SPR_DABR, env->spr[SPR_DABR]); + REG_ENTRY(REG_TYPE_SPR, SPR_DABRX, env->spr[SPR_DABRX]); + REG_ENTRY(REG_TYPE_SPR, SPR_DAR, env->spr[SPR_DAR]); + REG_ENTRY(REG_TYPE_SPR, SPR_DAWR0, env->spr[SPR_DAWR0]); + REG_ENTRY(REG_TYPE_SPR, SPR_DAWR1, env->spr[SPR_DAWR1]); + REG_ENTRY(REG_TYPE_SPR, SPR_DAWRX0, env->spr[SPR_DAWRX0]); + REG_ENTRY(REG_TYPE_SPR, SPR_DAWRX1, env->spr[SPR_DAWRX1]); + REG_ENTRY(REG_TYPE_SPR, SPR_DPDES, env->spr[SPR_DPDES]); + REG_ENTRY(REG_TYPE_SPR, SPR_DSCR, env->spr[SPR_DSCR]); + REG_ENTRY(REG_TYPE_SPR, SPR_DSISR, env->spr[SPR_DSISR]); + REG_ENTRY(REG_TYPE_SPR, SPR_EBBHR, env->spr[SPR_EBBHR]); + REG_ENTRY(REG_TYPE_SPR, SPR_EBBRR, env->spr[SPR_EBBRR]); + + REG_ENTRY(REG_TYPE_SPR, SPR_FSCR, env->spr[SPR_FSCR]); + + REG_ENTRY(REG_TYPE_SPR, SPR_CTR, env->ctr); + REG_ENTRY(REG_TYPE_SPR, SPR_DAR, env->spr[SPR_DAR]); + REG_ENTRY(REG_TYPE_SPR, SPR_DSISR, env->spr[SPR_DSISR]); + REG_ENTRY(REG_TYPE_SPR, SPR_LR, env->lr); + REG_ENTRY(REG_TYPE_SPR, REG_ID_MSR, env->msr); + REG_ENTRY(REG_TYPE_SPR, REG_ID_NIP, env->nip); + REG_ENTRY(REG_TYPE_SPR, SPR_XER, env->xer); + REG_ENTRY(REG_TYPE_SPR, SPR_SRR0, env->spr[SPR_SRR0]); + REG_ENTRY(REG_TYPE_SPR, SPR_SRR1, env->spr[SPR_SRR1]); + REG_ENTRY(REG_TYPE_SPR, SPR_HSRR0, env->spr[SPR_HSRR0]); + REG_ENTRY(REG_TYPE_SPR, SPR_HSRR1, env->spr[SPR_HSRR1]); + REG_ENTRY(REG_TYPE_SPR, SPR_CFAR, env->spr[SPR_CFAR]); + REG_ENTRY(REG_TYPE_SPR, SPR_HMER, env->spr[SPR_HMER]); + REG_ENTRY(REG_TYPE_SPR, SPR_HMEER, env->spr[SPR_HMEER]); + + /* + * Ensure the number of registers saved match the number of + * registers per cpu + * + * This will help catch an error if in future a new register entry + * is added/removed while not modifying NUM_PER_CPU_REGS + */ + assert(num_saved_regs =3D=3D NUM_REGS_PER_CPU); +} + +static bool pnv_mpipl_preserve_cpu_state(PnvMachineState *pnv) +{ + MachineState *machine =3D MACHINE(pnv); + uint32_t num_cpus =3D machine->smp.cpus; + MpiplPreservedCPUState *state; + CPUState *cpu; + AddressSpace *default_as =3D &address_space_memory; + MemTxResult io_result; + MemTxAttrs attrs; + + /* Mark the memory transactions as privileged memory access */ + attrs.user =3D 0; + attrs.memory =3D 1; + + if (pnv->mpipl_state.cpu_states) { + /* + * CPU States might have been allocated from some past crash, free= the + * memory to preven memory leak + */ + g_free(pnv->mpipl_state.cpu_states); + pnv->mpipl_state.num_cpu_states =3D 0; + } + + pnv->mpipl_state.cpu_states =3D g_malloc_n(num_cpus, + sizeof(MpiplPreservedCPUState)); + pnv->mpipl_state.num_cpu_states =3D num_cpus; + + state =3D pnv->mpipl_state.cpu_states; + + /* Preserve the Processor Dump Area */ + io_result =3D address_space_read(default_as, PROC_DUMP_RELOCATED, attr= s, + &pnv->mpipl_state.proc_area, sizeof(MpiplProcDumpArea)); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to read Proc Dump Area at: 0x" TARGET_FMT_lx "\= n", + PROC_DUMP_RELOCATED); + + return false; + } + + CPU_FOREACH(cpu) { + do_store_cpu_regs(cpu, state); + ++state; + } + + return true; +} + void do_mpipl_preserve(PnvMachineState *pnv) { + pause_all_vcpus(); + pnv_mpipl_preserve_mem(pnv); + pnv_mpipl_preserve_cpu_state(pnv); =20 /* Mark next boot as Memory-preserving boot */ pnv->mpipl_state.is_next_boot_mpipl =3D true; diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index e0518ef2e12e..a602d6bef48d 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -15,6 +15,10 @@ typedef struct MdstTableEntry MdstTableEntry; typedef struct MdrtTableEntry MdrtTableEntry; typedef struct MpiplPreservedState MpiplPreservedState; +typedef struct MpiplRegDataHdr MpiplRegDataHdr; +typedef struct MpiplRegEntry MpiplRegEntry; +typedef struct MpiplProcDumpArea MpiplProcDumpArea; +typedef struct MpiplPreservedCPUState MpiplPreservedCPUState; =20 /* * Following offsets are copied from skiboot source code. @@ -49,6 +53,8 @@ typedef struct MpiplPreservedState MpiplPreservedState; =20 #define __packed __attribute__((packed)) =20 +#define NUM_REGS_PER_CPU 66 /*(32 GPRs, 34 SPRs)*/ + /* * Memory Dump Source Table (MDST) * @@ -95,6 +101,55 @@ static_assert(MDST_MAX_ENTRIES =3D=3D MDDT_MAX_ENTRIES, static_assert(MDRT_MAX_ENTRIES >=3D MDST_MAX_ENTRIES, "MDRT should support atleast having number of entries as in MDST"); =20 +/* + * Processor Dump Area + * + * This contains the information needed for having processor + * state captured during a platform dump. + * + * As mentioned in HDAT, following the P9 specific format + */ +struct MpiplProcDumpArea { + uint32_t thread_size; /* Size of each thread register entry */ +#define PROC_DUMP_AREA_VERSION_P9 0x1 /* P9 format */ + uint8_t version; + uint8_t reserved[11]; + uint64_t alloc_addr; /* Destination memory to place register data = */ + uint32_t reserved2; + uint32_t alloc_size; /* Allocated size */ + uint64_t dest_addr; /* Destination address */ + uint32_t reserved3; + uint32_t act_size; /* Actual data size */ +} __packed; + +/* + * "Architected Register Data" in the HDAT spec + * + * Acts as a header to the register entries for a particular thread + */ +struct MpiplRegDataHdr { + uint32_t pir; /* PIR of thread */ + uint8_t core_state; /* Stop state of the overall core */ + uint8_t reserved[3]; + uint32_t off_regentries; /* Offset to Register Entries Array */ + uint32_t num_regentries; /* Number of Register Entries in Array */ + uint32_t alloc_size; /* Allocated size for each Register Entry */ + uint32_t act_size; /* Actual size for each Register Entry */ +} __packed; + +struct MpiplRegEntry { + uint32_t reg_type; + uint32_t reg_num; + uint64_t reg_val; +} __packed; + +struct MpiplPreservedCPUState { + MpiplRegDataHdr hdr; + + /* Length of 'reg_entries' is hdr.num_regentries */ + MpiplRegEntry reg_entries[NUM_REGS_PER_CPU]; +}; + /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ @@ -103,6 +158,11 @@ struct MpiplPreservedState { =20 MdrtTableEntry *mdrt_table; uint32_t num_mdrt_entries; + + MpiplProcDumpArea proc_area; + + MpiplPreservedCPUState *cpu_states; + uint32_t num_cpu_states; }; =20 #endif --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023700; cv=none; d=zohomail.com; s=zohoarc; b=dTIiubE9eijCVE7CCtBAPS4cWzamtBtlfxFHTXhrseW+DhSzuZqbhFWCB9PE0+/2S36bZTyngu7bWi+3TRLKVN4uIjQHFmITbuSRfxeKmcYscmfSE65NgKE/jHd54Bz160GMn1P2zUyTM6+I5UrqkSWZeQCO4viBKaFAQ6sxoAc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023700; h=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=HI2RUMXHyfPDdx3b4vtQ4icfs2E5dIlCYD5CULjIdUk=; b=EHPLkoIKMHRVxB9DlcbMdlVI4GxSiwDvue3mGP2SVmH2XQ5MvcKSIcL0F2qiW8NC+0Bx0QebvZ1vUCd/ifdXFWmaPhuY7uDRKcyqEnEOIgObGopKAF8e/5q0p2mF6ZdKdHS4mwupGj8S8SotMsKprJijhSAyZ6duo+Kc0N/woGo= 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 1772023700397255.9837896791007; Wed, 25 Feb 2026 04:48:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIF-0007KY-P4; Wed, 25 Feb 2026 07:47:07 -0500 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 1vvEIE-0007Jy-9k; Wed, 25 Feb 2026 07:47:06 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvEIC-0002Gv-Nh; Wed, 25 Feb 2026 07:47:05 -0500 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P4QA4n3340480; Wed, 25 Feb 2026 12:47:03 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 4cf34c7gq3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:03 +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 61PCF9xJ013419; Wed, 25 Feb 2026 12:47:02 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cfqdy5d58-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:02 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCkwp943254254 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:46:58 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8ECBA20043; Wed, 25 Feb 2026 12:46:58 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2281520040; Wed, 25 Feb 2026 12:46:55 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:54 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=HI2RUMXHyfPDdx3b4 vtQ4icfs2E5dIlCYD5CULjIdUk=; b=jCGcv5k/zvCDZ5WRotZgTf0lM78BKaAcp hIRgpASqUZi3RVVnhWjCXgud1LtHy12vahgu3RMI7NkGYRq/TVbSCH07RbSsjHAx KcwzFLYMxXfjorgvI/hBS64lwMOqaGWNAOaBqnd0Gz5UtSzd8Bvr4r5M8ZZxyBhB pp80/hL5j1ba/JPS5BDE0UjcMxtPxrhNVJh1d/y/O4GXkX2fWFKuqA0HFeiDUAyl EQVed1LrmLKS5pSugtGawzbyAIM2QmvA3PLKyYviaimDGRPkeqff7DfShU6qhY69 cS0s3kyHEIP+8Kx4p1tlTB9csRlVvt56JS5XWneMPId1ucO4TrwdQ== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 06/10] pnv/mpipl: Set thread entry size to be allocated by firmware Date: Wed, 25 Feb 2026 18:16:28 +0530 Message-ID: <20260225124633.1841222-7-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX7O0+GzUlP7gx gJE6+BN0eePX0p8aYSpUskyCrmPXQQeLqCcZs/Ms5q0XcMRpchLuc96692IvIL4Z9LiJef9SPZT BUrDc7RqDb7q4YO4E6RkVI7E2a6K4Q7fSYw/0l29FOb5lGEYzGhZ+JSoSHa2RJuNLAlUjV63zV3 gl8ZsB208naH0C54w+EumILYZ49yUQrnWyZu6pS278lBJb/oVaYTuXjwtmUmEpE+7tOir1szCFH TTFZtwu9hAX6h2WrGoXnPmJsc1DsCqbLUNMlPHDRXZN7iVYm8TJbHz4T01PYW9OXIS3/LbXLHrf cqrkDXtvbH94U6Fsz3jvHIfFQGI9VNZ+Ckj2aiiDZDuRJPHXaM66unoFfLQbR9OVVenx6TvLE/x MyrV2w8NGoPFyUGvYX1MPSqX5pZHSl159lajAO97DrJoMf7i23+vAkbk6UJQ/VuP31yYc2SL+Ps 0dEqlouravXaX2GIG6A== X-Proofpoint-ORIG-GUID: EuU_yIlstYf0dygmR2XaiEBt8SqVKykL X-Authority-Analysis: v=2.4 cv=F9lat6hN c=1 sm=1 tr=0 ts=699eef47 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=x2nWBmqi6rLqIJY0GGYA:9 X-Proofpoint-GUID: j9YPiLn_gY8J4Z7KMrycGGturH9l61pk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 bulkscore=0 adultscore=0 spamscore=0 clxscore=1015 suspectscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023701805158500 Content-Type: text/plain; charset="utf-8" Set the "Thread Register State Entry Size" that is required by firmware (OPAL), to know size of memory to allocate to capture CPU state, in the event of a crash Signed-off-by: Aditya Gupta --- hw/ppc/pnv.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 1513575b8f37..3038b1626c54 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -781,6 +781,30 @@ static void pnv_reset(MachineState *machine, ResetType= type) _FDT((fdt_pack(fdt))); } =20 + if (!pnv->mpipl_state.is_next_boot_mpipl) { + /* + * Set the "Thread Register State Entry Size", so that firmware can + * allocate enough memory to capture CPU state in the event of a + * crash + */ + + MpiplProcDumpArea proc_area; + + proc_area.version =3D PROC_DUMP_AREA_VERSION_P9; + proc_area.thread_size =3D cpu_to_be32(sizeof(MpiplPreservedCPUStat= e)); + + /* These are to be allocated & assigned by the firmware */ + proc_area.alloc_addr =3D 0; + proc_area.alloc_size =3D 0; + + /* These get assigned after crash, when QEMU preserves the registe= rs */ + proc_area.dest_addr =3D 0; + proc_area.act_size =3D 0; + + cpu_physical_memory_write(PROC_DUMP_AREA_OFF, &proc_area, + sizeof(proc_area)); + } + cpu_physical_memory_write(PNV_FDT_ADDR, fdt, fdt_totalsize(fdt)); =20 /* Update machine->fdt with latest fdt */ --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023734; cv=none; d=zohomail.com; s=zohoarc; b=c2njnx2KuQNHJ9P8PRIrz1GYDNLiP1p9H8E69SfCtkOOIob9j/rTo/Bd+3a9zRTpdxdYboUNlHWyQlNcs5iDZhiewAiHuLosg9wU96/sJ/v+KzS0GSg3JKJ75C7WU9AdSdfDb3pkTcuRYeukQuey5H7khOWxPjJEFMX7Ie2MDWM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023734; h=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=o88LVfjgjG2wffnnOlc4Z8RcletitBrIyQRTiQ/Jqp8=; b=jNLvuOGBUKa/4LwsKCV5X7OQQl/rOoWzh7EqRscATw7sTw93TVur4q+1Nq4Ogyv23tHD5g5ASthtcMjdXF8pAiy3SsQLvSGGZsjKPqFqM+JoBRX4D4rn1sJ6f+usADDPOfIzphIGgbMWWegpjL0AtUDxwvXP0ZHs57GlCANMCCg= 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 1772023734607644.5312396911861; Wed, 25 Feb 2026 04:48:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIK-0007ME-9d; Wed, 25 Feb 2026 07:47:12 -0500 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 1vvEIH-0007LV-RB; Wed, 25 Feb 2026 07:47:09 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvEIF-0002HL-Pn; Wed, 25 Feb 2026 07:47:09 -0500 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61OKf45s2866998; Wed, 25 Feb 2026 12:47:06 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cf4bryesk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:05 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61PC3pLV015970; Wed, 25 Feb 2026 12:47:05 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cfq1sndxr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:04 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCl1hg28770682 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:47:01 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4839E20043; Wed, 25 Feb 2026 12:47:01 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E3D1120040; Wed, 25 Feb 2026 12:46:58 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:46:58 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=o88LVfjgjG2wffnnO lc4Z8RcletitBrIyQRTiQ/Jqp8=; b=BMA+Kg+Pis51rgk/qnhbLqqK3vYPh7DyN pkYHGNVlYZcR5nnA19hoimAQVDMVPCwVavtV8f7UrIDGpQ4ysyoTdlpiZqzAx9cC hwzENXkQo5fIlzOBP8T++rX35eFlO280N0TvETltr0NIX7f8QLbT7Tf6EW3AgkBB 4ZPHx4uJ/T89e9rc7YJVddesdzi2JQcMDDlvqo4XBiEM/IzVOPaB/THcOgfArcVP 5vn26nxG5nuJRfmJMTxqxzXh8CM0vtJKlyMj8VuTdpNLtiDGVCy3sNUvqR11Xtkq H4eGXvQ/Qdc0hr5O+jB+qn2ylp6U5ziQMkM9u8fDORHI7g+Ra4GHA== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 07/10] pnv/mpipl: Write the preserved CPU and MDRT state Date: Wed, 25 Feb 2026 18:16:29 +0530 Message-ID: <20260225124633.1841222-8-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: SZmziiIeUXEpvjzK5NtyshD-CIuCb3M_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX0n+J4rTLzYsg QiypRG7q6Ph3J8UECeKoyq9zfrVQto/7C+Lkb9Xzd4yv0S8s3395Md/V2sNQpUUocuv7X+aEkyf HtYS0V4g3I8GZ5HZsRlKEeJfgRPD6q6mY+1TG4gylCbktVV9Hfh0qCzhotSo4t7Jp+3mWvQ+txH O9CJfpRbwYWRRE9/Ibn2kPUy1DgJa4kW/8nXE990tuL9gBsmjDX1oPBXN1RW+qqb0o7dE/b1fLQ KOt/wNpbyDa+vY8H2zq8ykzQsc7bAQysCsWvfEyVD0qmh/bFDyzvR5KaaAcoDmenM8x1GTMahx7 wW/bPR/Om7HBqRRtvKiW/35KCervnRqDpcYFNF7wEW3xa4cWrjOZy4eTjI6EJqL7uxd13bS35kt 8s+/j+NwW2rKwifgxwEZTVzP30t7a15UeNiir4J+M9x6+f8Iw0x+LgJV6QQNTY0/tIlAz2SkTRI 3lYCO2l8QBPD9jzusFA== X-Authority-Analysis: v=2.4 cv=eNceTXp1 c=1 sm=1 tr=0 ts=699eef4a cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=dzawcXaIV5huiJcXlfYA:9 X-Proofpoint-GUID: 0PqL8G2U_uJrzxAGemCcoOG-1I5upX6W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 phishscore=0 suspectscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023735949158500 Content-Type: text/plain; charset="utf-8" Logic for preserving the CPU registers and memory regions has been done in previous patches. Write those data at the relevant memory address, such as PROC_DUMP_AREA for CPU registers, and MDRT for preserved memory regions. Also export "mpipl-boot" device tree node, for kernel to know that it's a 'dump active' boot Signed-off-by: Aditya Gupta --- hw/ppc/pnv.c | 45 +++++++++++++- hw/ppc/pnv_mpipl.c | 141 +++++++++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv.h | 1 + 3 files changed, 186 insertions(+), 1 deletion(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 3038b1626c54..0b94e0c7a19b 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -751,6 +751,8 @@ static void pnv_reset(MachineState *machine, ResetType = type) PnvMachineState *pnv =3D PNV_MACHINE(machine); IPMIBmc *bmc; void *fdt; + int node_offset; + bool is_next_boot_mpipl =3D false; =20 qemu_devices_reset(type); =20 @@ -781,7 +783,48 @@ static void pnv_reset(MachineState *machine, ResetType= type) _FDT((fdt_pack(fdt))); } =20 - if (!pnv->mpipl_state.is_next_boot_mpipl) { + /* + * Only on success of writing MPIPL data will the next boot be provided + * "mpipl-boot" property in device tree + * Otherwise boot like a normal non-MPIPL boot + */ + if (pnv->mpipl_state.is_next_boot_mpipl) { + /* Write the preserved MDRT and CPU State Data */ + bool mpipl_write_succeeded =3D do_mpipl_write(pnv); + + if (!mpipl_write_succeeded) { + is_next_boot_mpipl =3D false; + } else { + is_next_boot_mpipl =3D true; + } + } + + /* + * If it's a MPIPL boot, add the "mpipl-boot" property, and reset the + * boolean for MPIPL boot for next boot + */ + if (is_next_boot_mpipl) { + void *fdt_copy =3D g_malloc0(FDT_MAX_SIZE); + + /* Create a writable copy of the fdt */ + _FDT((fdt_open_into(fdt, fdt_copy, FDT_MAX_SIZE))); + + node_offset =3D fdt_path_offset(fdt_copy, "/ibm,opal/dump"); + _FDT((fdt_appendprop_u64(fdt_copy, node_offset, "mpipl-boot", 1))); + + /* Update the fdt, and free the original fdt */ + if (fdt !=3D machine->fdt) { + /* + * Only free the fdt if it's not machine->fdt, to prevent + * double free, since we already free machine->fdt later + */ + g_free(fdt); + } + fdt =3D fdt_copy; + + /* This boot is an MPIPL, reset the boolean for next boot */ + pnv->mpipl_state.is_next_boot_mpipl =3D false; + } else { /* * Set the "Thread Register State Entry Size", so that firmware can * allocate enough memory to capture CPU state in the event of a diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index 37f498051254..d10ff5bc922d 100644 --- a/hw/ppc/pnv_mpipl.c +++ b/hw/ppc/pnv_mpipl.c @@ -20,6 +20,8 @@ (pnv->mpipl_state.skiboot_base + MDST_TABLE_OFF) #define MDDT_TABLE_RELOCATED \ (pnv->mpipl_state.skiboot_base + MDDT_TABLE_OFF) +#define MDRT_TABLE_RELOCATED \ + (pnv->mpipl_state.skiboot_base + MDRT_TABLE_OFF) #define PROC_DUMP_RELOCATED \ (pnv->mpipl_state.skiboot_base + PROC_DUMP_AREA_OFF) =20 @@ -319,6 +321,139 @@ static bool pnv_mpipl_preserve_cpu_state(PnvMachineSt= ate *pnv) return true; } =20 +/* + * Write the preserved CPU state data in Processor Dump Area (PROC_DUMP_AR= EA) + * + * Returns true if everything went fine, else false for any error + */ +static bool pnv_mpipl_write_cpu_state(PnvMachineState *pnv) +{ + MpiplProcDumpArea *proc_area =3D &pnv->mpipl_state.proc_area; + MpiplPreservedCPUState *cpu_state =3D pnv->mpipl_state.cpu_states; + const uint32_t num_cpu_states =3D pnv->mpipl_state.num_cpu_states; + hwaddr next_regentries_hdr; + AddressSpace *default_as =3D &address_space_memory; + MemTxResult io_result; + MemTxAttrs attrs; + + /* Mark the memory transactions as privileged memory access */ + attrs.user =3D 0; + attrs.memory =3D 1; + + if (be32_to_cpu(proc_area->alloc_size) < + (num_cpu_states * sizeof(MpiplPreservedCPUState))) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Size of buffer allocate by skiboot (%u bytes) is not" + "enough to save all CPUs registers needed (%zu bytes)", + be32_to_cpu(proc_area->alloc_size), + num_cpu_states * sizeof(MpiplPreservedCPUState)); + + return false; + } + + proc_area->version =3D PROC_DUMP_AREA_VERSION_P9; + + /* + * This is the stride kernel/firmware should use to jump from a + * register entries header to next CPU's header + */ + proc_area->thread_size =3D cpu_to_be32(sizeof(MpiplPreservedCPUState)); + + /* Write the header and register entries for each CPU */ + next_regentries_hdr =3D be64_to_cpu(proc_area->alloc_addr) & (~HRMOR_B= IT); + for (int i =3D 0; i < num_cpu_states; ++i) { + io_result =3D address_space_write(default_as, next_regentries_hdr,= attrs, + &cpu_state->hdr, sizeof(MpiplRegDataHdr)); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to write RegEntries Header\n"); + return false; + } + + io_result =3D address_space_write(default_as, + next_regentries_hdr + sizeof(MpiplRegDataHdr), attrs, + &cpu_state->reg_entries, + NUM_REGS_PER_CPU * (sizeof(MpiplRegEntry))); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to write Register Entries\n"); + return false; + } + + /* + * According to HDAT section: + * "15.3.1.5 Architected Register Data content": + * + * The next register entries header will be at current header + + * "Thread Register State Entry size" + * + * Note: proc_area.thread_size =3D=3D sizeof(MpiplPreservedCPUStat= e) + */ + next_regentries_hdr +=3D sizeof(MpiplPreservedCPUState); + ++cpu_state; + } + + /* Point the destination address to the preserved memory region */ + proc_area->dest_addr =3D proc_area->alloc_addr; + proc_area->act_size =3D cpu_to_be32(num_cpu_states * + sizeof(MpiplPreservedCPUState)); + + io_result =3D address_space_write(default_as, PROC_DUMP_AREA_OFF, attr= s, + proc_area, sizeof(MpiplProcDumpArea)); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, + "MPIPL: Failed to write Register Entries\n"); + return false; + } + + return true; +} + +/* + * Write the preserved MDRT table, representing preserved memory regions + * + * Returns true if everything went fine, else false for any error + */ +static bool pnv_mpipl_write_mdrt(PnvMachineState *pnv) +{ + MpiplPreservedState *state =3D &pnv->mpipl_state; + AddressSpace *default_as =3D &address_space_memory; + MemTxResult io_result; + MemTxAttrs attrs; + + /* Mark the memory transactions as privileged memory access */ + attrs.user =3D 0; + attrs.memory =3D 1; + + /* + * Generally writes from platform during MPIPL don't go to a relocated + * skiboot address + * + * Though for MDRT we are doing so, as this is the address skiboot + * considers by default for MDRT + * + * MDRT/MDST/MDDT base addresses are actually meant to be shared by + * platform in SPIRA structures. + * + * Not implementing SPIRA as it increases complexity for no gains. + * Using the default address skiboot expects for MDRT, which is the + * relocated MDRT, hence writing to it + * + * Other tables like MDST/MDDT should not be written to relocated + * addresses, as skiboot will overwrite anything from SKIBOOT_BASE till + * SKIBOOT_BASE+SKIBOOT_SIZE (which is 0x30000000-0x31c00000 by defaul= t) + */ + io_result =3D address_space_write(default_as, MDRT_TABLE_RELOCATED, at= trs, + state->mdrt_table, + state->num_mdrt_entries * sizeof(MdrtTableEntry)); + if (io_result !=3D MEMTX_OK) { + qemu_log_mask(LOG_GUEST_ERROR, "MPIPL: Failed to write MDRT table\= n"); + return false; + } + + return true; +} + void do_mpipl_preserve(PnvMachineState *pnv) { pause_all_vcpus(); @@ -339,3 +474,9 @@ void do_mpipl_preserve(PnvMachineState *pnv) */ qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); } + +bool do_mpipl_write(PnvMachineState *pnv) +{ + return pnv_mpipl_write_mdrt(pnv) && pnv_mpipl_write_cpu_state(pnv); +} + diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 7d73629f112a..98fe10fb4f2e 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -295,5 +295,6 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); =20 /* MPIPL helpers */ void do_mpipl_preserve(PnvMachineState *pnv); +bool do_mpipl_write(PnvMachineState *pnv); =20 #endif /* PPC_PNV_H */ --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023718; cv=none; d=zohomail.com; s=zohoarc; b=dC8v/qZBZJS4XLOB918lBxlccpHAwbTBCRr3We+jIXhwQ+NBm785u9uttrCPXlhIE5YCfoFl4/SHfoGqj+6ROobOqImJ/z/eqlpXOePezy6/cfN9ueK/VLbjeU66ylXeyShehwjM583xFd62u7pGU+sK52y3r0/zZc8L9x5Gv70= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023718; h=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=UK+xA9WFk6Gv+50G47aIph6xlGwuNjGbx7NAg1n0/TU=; b=MWjrMHB3nuODhRVAU2FUaGxhiJq8vOx+zLJU8qBsrbkvPRkW7Rx1bDBct+e3iI1KP2HcEiemNVuEctIjw2/atxfw7PGqrZoPJjZVVSGxYbCVJvnemp0hjLXmKpPY1N/41lgk96kCauqVEkC+utwLI+LV6gKFb9XVvUqyXzomoaI= 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 1772023718738557.1947507573763; Wed, 25 Feb 2026 04:48:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIN-0007NC-Qv; Wed, 25 Feb 2026 07:47:15 -0500 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 1vvEIM-0007Mn-Bl; Wed, 25 Feb 2026 07:47:14 -0500 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 1vvEIK-0002I5-QA; Wed, 25 Feb 2026 07:47:14 -0500 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61PBFNmp2346126; Wed, 25 Feb 2026 12:47:11 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4ch858nmpe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:10 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61PCamJ3030342; Wed, 25 Feb 2026 12:47:09 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4cfrhkd82u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:09 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCl5C734013660 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:47:05 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 88B0420043; Wed, 25 Feb 2026 12:47:05 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D5E8420040; Wed, 25 Feb 2026 12:47:01 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:47:01 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=UK+xA9WFk6Gv+50G4 7aIph6xlGwuNjGbx7NAg1n0/TU=; b=EBnsZORY+QEx2xdTADN9iI7u3SqL4kdK2 h1uS+uZ20tmlpZX6SvNWMC1k7dLIZjoluKupDEyuI122q19rZnnFi+p5N6MP/nHW RXeDaOhENQdjFkFW9nqmwC3Wgh1VjTcZLp/Yo5x0Jkf2Tft4nmG7V6weXUFvpBQP hUk1x1+kI3g56ReAtpMTmD3KL0FuTqLLY1XGca69+OOXke1LqkLK9u+ksq/gERr/ cBzQgCiqnzcId4Iz4b9XigjSCnI6Cc8s9MhFgdE5gsPQ1QrlfkL1T457hwtuVOn8 ZdfbaNcTw/qLoObrW+xKufjWkF+Q4EJwI4h4FuQUGjUQHi+D+Npbg== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 08/10] pnv/mpipl: Enable MPIPL support Date: Wed, 25 Feb 2026 18:16:30 +0530 Message-ID: <20260225124633.1841222-9-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX1jVLoDEkOfYW GV8Ms55rMYZzLh3GJ2xt8fv/mFUnAuScmcQgGKzFiisX6jgSK4xsnmKCzSBJMT/3gayd5kWH6iU voSDWvk1bOm7V1htXk4vNplHJFA74ofAXqXGQ9Oble1pkigVr9o7L89YvRdoa78vffZTX+UoiZz K1BsznI1bv+q/LVpYvtNOykMiHgu/9/LU0JCn5kPKRK/f8ymM7etu7CSNOZGo9Cbp6EcJUBfIXG 3RbhXb2fjbBHT47jZ90iOUVS51w9xqoKh6kNK26UO2fAq0psb8d0smtcKw0MrVYim9PBMCWLhUn BxnfDNedYHrw5r2rEqifq5DcvWyE5k5+5hX/4PgCdvRs0jNMwiTA+psTdKZaM+OmCOaYIjio/2k XrtjmRxPrGrB47e4vrnlcysftjWD3Rai/WILHtCL+L2jBELnAtSBrR0Dk74FB92t0KCmdcYcRV+ 6q10JXhPizaZWOWUV3A== X-Proofpoint-GUID: p1DKlJBdT3VWoyLIyrF1u-KwX1ux8u5Z X-Authority-Analysis: v=2.4 cv=S4HUAYsP c=1 sm=1 tr=0 ts=699eef4f cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=dCvegdiEg4V6ml2xVIcA:9 X-Proofpoint-ORIG-GUID: u08A5MJ-J1EufUo6TVkAvLgvz04jCbLi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 impostorscore=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023719994158500 Content-Type: text/plain; charset="utf-8" With all MPIPL support in place, export a "dump" node in device tree, signifying that PowerNV QEMU platform supports MPIPL Also, export fw-load-area dt node, which has details about where the kernel & initrd were loaded, so that kernel can verify whether the kernel/initrd images were loaded within the boot memory region. QEMU just exports these details in fw-load-area, the check for boot memory region is done in kernel. Signed-off-by: Aditya Gupta --- hw/ppc/pnv.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 0b94e0c7a19b..139a2037e5d6 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -54,6 +54,7 @@ #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_pnor.h" +#include "hw/ppc/pnv_mpipl.h" =20 #include "hw/isa/isa.h" #include "hw/char/serial-isa.h" @@ -672,6 +673,39 @@ static void pnv_dt_power_mgt(PnvMachineState *pnv, voi= d *fdt) _FDT(fdt_setprop_cell(fdt, off, "ibm,enabled-stop-levels", 0xc0000000)= ); } =20 +static void pnv_dt_mpipl_dump(PnvMachineState *pnv, void *fdt) +{ + int off; + + /* + * Add "dump" node so kernel knows MPIPL (aka fadump) is supported + * + * Note: This is only needed to be done since we are passing device tr= ee to + * opal + * + * In case HDAT is supported in future, then opal can add these nodes = by + * itself based on system attribute having MPIPL_SUPPORTED bit set + */ + off =3D fdt_add_subnode(fdt, 0, "ibm,opal"); + if (off =3D=3D -FDT_ERR_EXISTS) { + off =3D fdt_path_offset(fdt, "/ibm,opal"); + } + + _FDT(off); + off =3D fdt_add_subnode(fdt, off, "dump"); + _FDT(off); + _FDT((fdt_setprop_string(fdt, off, "compatible", "ibm,opal-dump"))); + + /* Add kernel and initrd as fw-load-area */ + uint64_t fw_load_area[4] =3D { + cpu_to_be64(KERNEL_LOAD_ADDR), cpu_to_be64(KERNEL_MAX_SIZE), + cpu_to_be64(INITRD_LOAD_ADDR), cpu_to_be64(INITRD_MAX_SIZE) + }; + + _FDT((fdt_setprop(fdt, off, "fw-load-area", + fw_load_area, sizeof(fw_load_area)))); +} + static void *pnv_dt_create(MachineState *machine) { PnvMachineClass *pmc =3D PNV_MACHINE_GET_CLASS(machine); @@ -734,6 +768,9 @@ static void *pnv_dt_create(MachineState *machine) pmc->dt_power_mgt(pnv, fdt); } =20 + /* Advertise support for MPIPL */ + pnv_dt_mpipl_dump(pnv, fdt); + return fdt; } =20 --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023739; cv=none; d=zohomail.com; s=zohoarc; b=XzHQY8r82nJc8+opjuy8tJX6CZ+zfkSWEhOwcsNfGLI8j5npOfnnUztDvVU4B+clmRuKkQUFCYBk7aqwrxvKFMNnt5DU1Pa6KdMP92so/CdWSQ5vXbERe8Cjh/hdwLE6LGyCkwp/beJ5RI6XxEAowvzCynzWiInNAZ4d0ElJpfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023739; h=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=GMdjZsABBxn0XKEYwkOI33cjbYG2f5rNoYGqUCK5CF0=; b=c7tQABdaj5kmRmhCCvsNDMnU51c+WVEe2HuxpeW0RzTVU6gUGx1IVWj0v7Pk0ZgevWeGH+iiP7KwusnzP+BzBfIUlRliQZyAZGTUPmaAGUE/1WG2ySSBmjGXd0glGdG54JB530aBX9AgII/5dPacGRGXFSVQd/jBXc2pvmfWK+I= 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 1772023739200996.2006791315948; Wed, 25 Feb 2026 04:48:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIR-0007OT-9L; Wed, 25 Feb 2026 07:47:19 -0500 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 1vvEIP-0007Nf-Oa; Wed, 25 Feb 2026 07:47:17 -0500 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 1vvEIN-0002IU-GT; Wed, 25 Feb 2026 07:47:17 -0500 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61OKGpJr2346129; Wed, 25 Feb 2026 12:47:14 GMT Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4ch858nmpn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:13 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61P9BWQo003821; Wed, 25 Feb 2026 12:47:12 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cfs8jw42b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:12 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PCl8Tk57540950 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:47:08 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C95F12004B; Wed, 25 Feb 2026 12:47:08 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 13D0620040; Wed, 25 Feb 2026 12:47:06 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:47:05 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=GMdjZsABBxn0XKEYw kOI33cjbYG2f5rNoYGqUCK5CF0=; b=IZcx5axOyBRRtIj3u7TDjBYAql0ox2aal FkhlQn9ErAl+p6fK9suv8OKJOc/r+xSSEPCSJuHjTm8M4SbutPKzaNgPDDoTg0yP OYwyxyg5PH9/VLmtL6yY3H3L3KYWY6uG/zpG0AavhUnFX/sXJjJwJS+p2Wqf8uCQ 0MbH2Q2B1iHlr/KlTIEbQ2Bvchmt2Hfv5M4hkJSdq/TfU3HAYl90Z2jNxyehxjHM VO/EFcaQvxHARacwb1XaqckndowqTeY/aubYvCluWL/RAOkwr7NQEkDFZ/toSK6P WBBNj32JZd06xlNpEQHX1QyqJqC75Z/kM6Ib/1AG2iWIsFMjE7Qgg== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 09/10] tests/functional: Add test for MPIPL in PowerNV Date: Wed, 25 Feb 2026 18:16:31 +0530 Message-ID: <20260225124633.1841222-10-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX8wb4Ico+DHu8 7eAJe3wQCmv9UD5wI8E1O1OiY3W5akB+JkukEBmwa/v3CpWB5oepF1+5A+B2C1jztdWY0/EB3p5 pj38hPqAoJAWjfzUGC0ZY04v0GbMKdr1cZVa05mNXK3fSa7jhygbVSc5zICJ+ut4eBItXYRe5Fq du9lY3JjSErNipdtu11sIIENe5wcKkLNW42NLN+6/luAZoSIs7dwLQPgq8r+4thltYKnjayH9vv yRPwo8xTD8/vaKkZ+FUyN5ossrOyICUpZ7sV035IeHOr6UST5sqIRHFrJpVH9XR+xxBrDDKM4QC 3uXcWwzDQJK07bHQDmgayTIuaoIhIiW8rBd3Ye63JvL9fysVBfTNIh2Ng11mNxarm6KZK991u/A M+8y9FM/Z/EUlVt9JodTwr7IrLScNgMDXa+FMDxiaNVGzLd3+7cQtOOhRQ0ILZ64zh1xLGfnCgm +byS7HfOseNZZpOnXmA== X-Proofpoint-GUID: BIxtlIJRE7mFQqAq4qjvJvDV0vWF2jg2 X-Authority-Analysis: v=2.4 cv=S4HUAYsP c=1 sm=1 tr=0 ts=699eef51 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=xeNidhmBAAAA:20 a=vTr9H3xdAAAA:8 a=VnNF1IyMAAAA:8 a=yF-uCvtE38AvPGpA37UA:9 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-ORIG-GUID: yHR47q2C_0oXxCilH8Mev6hMOdrkFq5_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 impostorscore=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023739985158500 Content-Type: text/plain; charset="utf-8" With MPIPL support implemented, enable fadump's functional test for PowerNV Also, current functional test for powernv uses op-build's Linux 5.10 image, which doesn't support adding "fadump=3Don" in argument due to this: Kernel is locked down from Kernel configuration; see man kernel_lockdow= n.7 Hence, instead of op-build's image, use the newer fedora vmlinuz as used in FADump PSeries functional test Also due to "bash#" string not showing up, rely on sh: no job control to check if testcase has reached till shell Signed-off-by: Aditya Gupta --- tests/functional/ppc64/test_fadump.py | 35 ++++++++++----------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/tests/functional/ppc64/test_fadump.py b/tests/functional/ppc64= /test_fadump.py index bd9692f64c05..7ea65974e0ea 100755 --- a/tests/functional/ppc64/test_fadump.py +++ b/tests/functional/ppc64/test_fadump.py @@ -14,6 +14,7 @@ class QEMUFadump(LinuxKernelTest): =20 1. test_fadump_pseries: PSeries 2. test_fadump_pseries_kvm: PSeries + KVM + 3. test_fadump_powernv: PowerNV """ =20 timeout =3D 90 @@ -24,11 +25,6 @@ class QEMUFadump(LinuxKernelTest): msg_registered_failed =3D '' msg_dump_active =3D '' =20 - ASSET_EPAPR_KERNEL =3D Asset( - ('https://github.com/open-power/op-build/releases/download/v2.7/' - 'zImage.epapr'), - '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd') - ASSET_VMLINUZ_KERNEL =3D Asset( ('https://archives.fedoraproject.org/pub/archive/fedora-secondary/' 'releases/39/Everything/ppc64le/os/ppc/ppc64/vmlinuz'), @@ -62,16 +58,14 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): # SLOF takes upto >20s in startup time, use VOF self.set_machine("pseries") self.vm.add_args("-machine", "x-vof=3Don") - self.vm.add_args("-m", "6G") + + self.vm.add_args("-m", "6G") =20 self.vm.set_console() =20 kernel_path =3D None =20 - if is_powernv: - kernel_path =3D self.ASSET_EPAPR_KERNEL.fetch() - else: - kernel_path =3D self.ASSET_VMLINUZ_KERNEL.fetch() + kernel_path =3D self.ASSET_VMLINUZ_KERNEL.fetch() =20 initrd_path =3D self.ASSET_FEDORA_INITRD.fetch() =20 @@ -102,16 +96,14 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3D= False): timeout=3D20 ) =20 - # Ensure fadump is registered successfully, if registration - # succeeds, we get a log from rtas fadump: - # - # rtas fadump: Registration is successful! - self.wait_for_console_pattern( - "rtas fadump: Registration is successful!" - ) + # Ensure fadump is registered successfully + if not is_powernv: + self.wait_for_console_pattern( + "rtas fadump: Registration is successful!" + ) =20 # Wait for the shell - self.wait_for_console_pattern("#") + self.wait_for_console_pattern("sh: no job control") =20 # Mount /proc since not available in the initrd used exec_command(self, command=3D"mount -t proc proc /proc") @@ -135,7 +127,7 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): # that qemu didn't pass the 'ibm,kernel-dump' device tree node wait_for_console_pattern( test=3Dself, - success_message=3D"rtas fadump: Firmware-assisted dump is acti= ve", + success_message=3D"fadump: Firmware-assisted dump is active", failure_message=3D"fadump: Reserved " ) =20 @@ -148,7 +140,7 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): self.wait_for_console_pattern("preserving crash data") =20 # Wait for prompt - self.wait_for_console_pattern("sh-5.2#") + self.wait_for_console_pattern("Run /bin/sh as init process") =20 # Mount /proc since not available in the initrd used exec_command_and_wait_for_pattern(self, @@ -166,9 +158,8 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): def test_fadump_pseries(self): return self.do_test_fadump(is_kvm=3DFalse, is_powernv=3DFalse) =20 - @skip("PowerNV Fadump not supported yet") def test_fadump_powernv(self): - return + return self.do_test_fadump(is_kvm=3DFalse, is_powernv=3DTrue) =20 def test_fadump_pseries_kvm(self): """ --=20 2.53.0 From nobody Sun Apr 12 04:21:48 2026 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=1772023681; cv=none; d=zohomail.com; s=zohoarc; b=VHBsUdh3rzpRgm6Ql5bJdLQOfSmqNsaUE+4vr0Nt16MCR5CrftYjmkHF7Cet30Np03+lUVwQn7CX9EW/xhN43W6n03Fu3h6G7ViNT8R0D2BXLQ8P2cqQyiUmJLG9QeS3zrDpf2kTsdzPN283yTbRn+KmvcOsCene90TUoNRXpWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772023681; 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=4DolhLx3K0jPmcjw6ZdtQ6ElOFxuDznZnW9b3Qkss38=; b=TKP8YWL7YoAXKxKkIaTABGANTHuVHL0ryPltwJVeaxPAkF7+LnmNSpCUspt8l2u/iXi2l7yZzzmjhhXqI4PpFVPulD/hnMwfWiX6JqTP5aag5KP7KkeIWeBO7lwl+Mt+3Jo70MJ8EX9UDNdRo8InkM0Tpdmlp7ZCKYE4olXFXcc= 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 1772023681392428.91495549071885; Wed, 25 Feb 2026 04:48:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvEIW-0007PZ-WE; Wed, 25 Feb 2026 07:47:25 -0500 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 1vvEIS-0007P2-38; Wed, 25 Feb 2026 07:47:20 -0500 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 1vvEIQ-0002Ix-Fp; Wed, 25 Feb 2026 07:47:19 -0500 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61P0SNAk3626675; Wed, 25 Feb 2026 12:47:17 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4cf47209gp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:16 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 61PCY7b6015750; Wed, 25 Feb 2026 12:47:15 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cfq1sndy6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Feb 2026 12:47:15 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 61PClCCH45744390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 25 Feb 2026 12:47:12 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0611C2004D; Wed, 25 Feb 2026 12:47:12 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3FC9420040; Wed, 25 Feb 2026 12:47:09 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown [9.124.222.235]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 25 Feb 2026 12:47:08 +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=4DolhL x3K0jPmcjw6ZdtQ6ElOFxuDznZnW9b3Qkss38=; b=R1uJKMGl8WVi26v42lD/RF 5p77gt7XcYRb9CyvqH2qvJ6/AT9owCAeXm7aX9LLUO7W4k29jZFQoydIuM/FZRPl 4/xGkusrXqoKq9ubKtysiR/UyUnAc7i5LqFZ3L+TF3kMziANCj/tiVHcNavtlkP0 u7Jq84DIaC5ofZEcfkIJogK3VR4ZWXn2SEDhpqDYcAxsnV1lVNHzuvQ34PT6cEnq ZJaUus10xFT3n7PzRd6UPwAryFlWQXZ28ZK5cjpDfjiS4gk489ovN9rzDqagJb8v aFBxdmVA16SaO40TRP1aKvAA0SaSMf1wQYVReINvg+W9uxRjTY7MSACWsojpPeRw == From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v3 10/10] MAINTAINERS: Add entry for MPIPL (PowerNV) Date: Wed, 25 Feb 2026 18:16:32 +0530 Message-ID: <20260225124633.1841222-11-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260225124633.1841222-1-adityag@linux.ibm.com> References: <20260225124633.1841222-1-adityag@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-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: RQ_jTyRKQyJT0CJIcxQ32pEPjqOiUz3A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI1MDEyMyBTYWx0ZWRfX00obRDkUqA2y FFd93AU2a8wLYdbqp9VI4LL9EdgVZWBb/ekmUbalL7t6jXZAn8aghNjIgmrTa+eP/e/9gAJyMo4 pHKwm2MLQXo3QgTcWpWqTzoQ8InY9RyDohGWqcAjWKRFur+kDeVqzup9atn/T4dXJ7xSyW8V0yy FIGMtlbOOmJDGmiMtBvvd1oX1MUj3G8lpY6vT3e7PjleDFUuFDGoJbYHbhxDWxRe8iIl2pXxn1E ebq8Zxs7zovR4Aue6Xec+iDz6+aAR4KANMPgi3cdYUVy68VUdA0/xuhIrocF8RlMfO6eMfWkAfv FhRNOrLg42u9Awv3LFmmKKThnO67L304SxpUA/CchykJAZKfJb+hkcXdVarRDVU3QX6H6fBBfrA K1DteozBqo2u+NbVe/YzTh+cHICNa3RDhK2E784b0PnnWYnia7A5MfyhP5mCXpwmX7A9cuA6pKd WqbM3hELninXRMmU7hw== X-Authority-Analysis: v=2.4 cv=R7wO2NRX c=1 sm=1 tr=0 ts=699eef54 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=VnNF1IyMAAAA:8 a=KKAkSRfTAAAA:8 a=xAhUsU6pBgj2HNqxJKAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: hCG5VOnE_FZ7PMboPgHq1N9reqmQ3dnF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-24_03,2026-02-25_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602250123 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=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1772023681754158500 Add maintainer and reviewer for MPIPL subsystem. Signed-off-by: Aditya Gupta Reviewed-by: Hari Bathini --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 233d2a5e71ff..f536356faf49 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3289,6 +3289,14 @@ F: include/hw/ppc/spapr_fadump.h F: hw/ppc/spapr_fadump.c F: tests/functional/ppc64/test_fadump.py =20 +Memory-Preserving Initial Program Load (MPIPL) for PowerNV +M: Aditya Gupta +R: Hari Bathini +S: Maintained +F: include/hw/ppc/pnv_mpipl.h +F: hw/ppc/pnv_mpipl.c +F: tests/functional/ppc64/test_fadump.py + GDB stub M: Alex Benn=C3=A9e R: Philippe Mathieu-Daud=C3=A9 --=20 2.53.0