From nobody Wed Apr 8 02:49:20 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=1773155872; cv=none; d=zohomail.com; s=zohoarc; b=SKxriXqmKQQ0IHlR+0xDJVx7oDBRaDlSCVtsfCV9lfW2NV8GgKxzql+JmSm26apHfD8qIkEI5deS0vEubSt6hL7nNcJoIRv5lZuoRPykLPuu5gpku07oWCTfIdbOTdfGgADwB4Ca2Zgancs10jEH8i1+E+HvH5qi0UZO/uH9DuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155872; 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=yJWgUF4R1GPsx8bjoUWbWPtkmgoOtugjqirrZiAMfv0=; b=cyq3CSGRHIs5rE1bEfKMMws3sh7UV8b400vg5xD8ZufSXO5WiOmd7sEWf98FzTxp8I5DkFui17UJoTT7T5AwlKGNCKK39G7tbzlBa8XjKCU9apokTuH4g1Safwp37DDSnc78Zcdmz/upqLfu2jodO6eHc1OIKz9IDrEOn5++iw0= 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 1773155872432653.5387300069359; Tue, 10 Mar 2026 08:17:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynk-0007NT-8n; Tue, 10 Mar 2026 11:15:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynL-0006oP-Sy for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:56 -0400 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 1vzynI-0000Ef-TL for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:50 -0400 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 62A81pAs1177331 for ; Tue, 10 Mar 2026 15:14:47 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 4crcvrb6f3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:47 +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 62ABKnWI023481 for ; Tue, 10 Mar 2026 15:14:46 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ct8ng2jtn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:46 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEgCi15532488 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:42 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A840B2004E; Tue, 10 Mar 2026 15:14:42 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4183F2004B; Tue, 10 Mar 2026 15:14:41 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14: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=yJWgUF4R1GPsx8bjo UWbWPtkmgoOtugjqirrZiAMfv0=; b=g/Jv2ZOQK3FfLX2qLdabFnKxTlSmkTmk2 h+2tgpVVLuERX1gcdkuOzIyj2aO1P23NzKuBOIfZzVGp0w+uots/V2lfesBxU/9y FlCykEWjFrSABptvfDxVTeaWwDlLZ5z2fpZdmsmEQ9aDT4YDmPZPndOSCiZyGgPC Wccfz2+0H0cJEXZb5A0W95d/zOKhz7NFxyD33C1mKz8+UKA+4HCO9ZTjVpxU2vFW U3U/GHR+hR0D9GVac/C60FIXLIkt7uMoY+BWccDhT3qQLutz9P9FMP54lp5pHc9M m2kTEnNKKocimSDiSDlWzRHrI09k0xEkrtrbOJYkSnlGW9HwXWpLw== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 01/10] ppc/pnv: Move SBE host doorbell function to top of file Date: Tue, 10 Mar 2026 20:44:21 +0530 Message-ID: <20260310151432.92531-2-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX+KCBTYV9A8bS cxqqO6Orcp1Unu33xNgyAvYP7BtFU/pmuIyXzq9CbaY9JJ7gTdwQsQHZqCRGCM7KhchZTzh8FBL s5AuZO+dpS6uzDEbfjoYhaiZ0dRkJIkpADFCZc6gWp/v2S4w0X//WfGWldzJQkq28ilQJ8nF72G VjhApL6+FPpdxUx80KrmgIG8e1pLypBOHo6kqAvvlmv+c6lkzq+IP7YYEqwUQ9y2EwMA0jL4de9 XYmKhYXfB2hMz15evlbw6bkzzTFw7bxly9NGvjXcgX/uh0RsSZ6eJ9zK6+xLiNqfnt4eNXCfwtK jPERnMhnSiyguRbgswP73v/2puoPr+OwG/zK1ooMO717CdgtGt7SAjOFvs2CxQgwvycGgXiblDd pvU7s9/dcR/jK8I7uwNLWJR9usgbi0AH6rOmdUs1B1fvAaYAIAoPymBTTk8QneUNFemLlTMGCBi dELigRA5qkHD2ISUaDA== X-Proofpoint-GUID: 7eOG8JIw5pJa2koBsRl3AJb8sj5gCgRS X-Proofpoint-ORIG-GUID: 7eOG8JIw5pJa2koBsRl3AJb8sj5gCgRS X-Authority-Analysis: v=2.4 cv=QoFTHFyd c=1 sm=1 tr=0 ts=69b03567 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=K3nGc4jhFjju3E8dwHwA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 malwarescore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155874337154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-2-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- 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 27383ce683..247617338a 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.52.0 From nobody Wed Apr 8 02:49:20 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=1773155788; cv=none; d=zohomail.com; s=zohoarc; b=kzSwrP/PDTtTy6LBEmpQLzchxECf6I4uPK6k50Q5LBhsXWhbpl2A3wfsINlSh0Flhww1dbiOXR9iN5jolGdR50Ungc6090PZcLLmSWD5bjYiYyvvwO6JvhE00FrL5YKbQfCfJWW3tVfgwg95R7hbK/T65F3+TTpT/HpEroEEY1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155788; 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=ONuKfYvFvEai5Z62sQ38HoXonILpjlJA700g5K9THRc=; b=IpLjtKJ67dBRt3JPEMNWaN3cFjIJFIIRFZGWeNSDAlSLzTg8iRyiugo0tz37cUQOe30rg6oCZv0GR7nfEELzlmyOEWoXIvrXzQjdWtv8BbQiDMBE8J1TZTVYdvveSbfrq9+LCw7WjZSC+3XBbJ/7JBSAhoe9OAQpTbz2T8L/rhc= 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 1773155788653118.44869941143429; Tue, 10 Mar 2026 08:16:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynn-0007bt-OZ; Tue, 10 Mar 2026 11:15:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynN-0006p6-RR for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:58 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynL-0000Fa-Nq for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:53 -0400 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 62A7F0sM1123654 for ; Tue, 10 Mar 2026 15:14:50 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 4crcuybfyj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:49 +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 62AFCcqr029850 for ; Tue, 10 Mar 2026 15:14:48 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4csp6up8af-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:48 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEiUZ60490222 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:44 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 666802004E; Tue, 10 Mar 2026 15:14:44 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 073572004B; Tue, 10 Mar 2026 15:14:43 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:42 +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=ONuKfYvFvEai5Z62s Q38HoXonILpjlJA700g5K9THRc=; b=kjz0yEM6Ag3Mlfp09PR72T5S66jc4bKHD CPxXkJioyXXhDrWjYg5K5LtY9B9NhzjwEhhR2ORv92WBczkumj6Kr6aj/DcCTzDO y4DJNHKeH4CFxR142rPXFD12DHbhfwFjlWxJfM7dJLsL5wKc/atb9Pjux/CjOKTu TBM68C6ctyUS3PGC1ualLgZie6DFAuWDUyGMnbIdb2pOhHITaOrCut4S/AVYnecn MMqXmMnezf1YldlhkFkMCfle+SW46GeZuA2GaiVsAk2y0zdkdVubhTC1mjEg0rJ7 wZVg/+mDyLw45Lz2seOqrNltoq1u79ZMNvGT/WKh4cQ4IayKmwWxg== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 02/10] ppc/mpipl: Implement S0 SBE interrupt Date: Tue, 10 Mar 2026 20:44:22 +0530 Message-ID: <20260310151432.92531-3-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=EK4LElZC c=1 sm=1 tr=0 ts=69b03569 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=sHmFuGpciTfFc5QH0gQA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX1zUKOn0RcKo3 pUcEiHF9+jHeLhafi6EMJeW4i4u11SARVSdwgusMuLXhte4yYs5dNZhVQiz6N0f7EP6z+S5/Wi2 DIRqCGeem2BvsrCK/cpYk/Vnl+w0guO6jwDfdppg0g6XbmsPzFNrkNu4S2SKxQi6jJXfirnDib+ NqYEUcQmz8kRy2cqFkx7V14o5by90TXUBqKz7Qh9Bj1Q7hbYCVdobyoaJnBdei2oV6SPG+jIeV1 qGqroY81Femw9K40McGfYFhr3jPFa8z1lClLo2bmSWK5+5h4L4dKz3hvheDunpIZeO8jxBkpKgk F+aSinHC8mPKn7VECyuF8Wtnf7rdGJbWNYWMsGaJ8sepqXoS/KCBEV6NIkSovcK42J0d6664eqt xJIXZeE2sQdz7ustMV4oWBRBkO/IGBoU4uuDMj/LRO2qwxqQHsoON5zi2Qt/VijVUsczpT6BIK2 oTXY7mWXANCbtGq3S0g== X-Proofpoint-GUID: q9GwbXwgA0PWlom7KWf84aqqPKGZN17a X-Proofpoint-ORIG-GUID: q9GwbXwgA0PWlom7KWf84aqqPKGZN17a X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 clxscore=1015 bulkscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155790251158500 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta During MPIPL (aka fadump), after a kernel crash, the kernel does opal_cec_reboot2 opal call, signifying an abnormal termination. When OPAL receives 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. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-3-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- include/hw/ppc/pnv.h | 6 ++++++ include/hw/ppc/pnv_mpipl.h | 19 +++++++++++++++++++ hw/ppc/pnv_mpipl.c | 26 ++++++++++++++++++++++++++ hw/ppc/pnv_sbe.c | 29 +++++++++++++++++++++++++++++ hw/ppc/meson.build | 1 + 5 files changed, 81 insertions(+) create mode 100644 include/hw/ppc/pnv_mpipl.h create mode 100644 hw/ppc/pnv_mpipl.c diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 24f8843a40..7d73629f11 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 0000000000..c544984dc7 --- /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 diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c new file mode 100644 index 0000000000..d8c9b7a428 --- /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 247617338a..5a2b3342d1 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/hw/ppc/meson.build b/hw/ppc/meson.build index f7dac87a2a..c61fba4ec8 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( --=20 2.52.0 From nobody Wed Apr 8 02:49:20 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=1773155770; cv=none; d=zohomail.com; s=zohoarc; b=WbdBVZV1CGZ27NHoMgKoov6GS4p7c+RKqWVXhIf2dy8QErQMxqU03b1lWpFw0TcH/2g8h2ej93X48TdmdkDtcoAYyeUWB/kiZKM3u3IOaPpFbNtXVy+s96OKaVLgi2v5UoRcW7Nh4bdqkZlRADihHGyscx2RjQq48s9ccTx2Uvs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155770; 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=MMM8fqi8Az8/ii4Qkag1EO3WTRA4KMdJ9e91Krm1NgQ=; b=Yb9ch303ss2p+OT40QTU1FUv4MyQIM8QcXfycTUrdhflri/HB2D+KwBBUGTVtZBGdIyUBZTd2xR6yE5iClBic6/3qoKsi5ifKPEJFfoDi6Wrj4IApalJ/s5ijpjpvayfNNII5+E5KCRXJMqViq6xmsDNw/xuv9vlJZOOS2rkSus= 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 1773155770179153.27094401486045; Tue, 10 Mar 2026 08:16:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynd-00071e-KY; Tue, 10 Mar 2026 11:15:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynN-0006p5-RH for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:57 -0400 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 1vzynL-0000Fd-NG for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:53 -0400 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 62AAYBeG1721997 for ; Tue, 10 Mar 2026 15:14:50 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4crcvrb6fe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:50 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62ACwnoV015750 for ; Tue, 10 Mar 2026 15:14:49 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cs1221bku-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:49 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEjK044171536 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:46 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DC42C2004B; Tue, 10 Mar 2026 15:14:45 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BC30C2004E; Tue, 10 Mar 2026 15:14:44 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14: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=MMM8fqi8Az8/ii4Qk ag1EO3WTRA4KMdJ9e91Krm1NgQ=; b=L/wiwbnaJfQjzSxfIld5MSbhpSbQCSEhx lULZTlM+JonPJyByg/OcKxCnRklV+skF6cDDmLS9Y8y7Svx6OOfRwF6HT+vJFClf fU6FyS90EuimXDoo4ZehWMmg7svCH8xHYm45h1Rzi+AV0O9pBkN09lon58SQkKjK tDMXwf6QDitJrMv0gwdjCbMHqUJX6lquFjdzqjfCAL20/6Mv81+xEOTaBrmFcrfz Xb1u2/EjAwcDqBQuHogi7sWBTAWJ+gQRZPSCU0EWla6sn9jV7gqmQ8tkh2mfz2GM MpzusdCIF+Dn1Gi6qhu5y0O54u7llSBo9dNC7OV+VtQtJLI9p33rA== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 03/10] ppc/pnv: Handle stash command in PowerNV SBE Date: Tue, 10 Mar 2026 20:44:23 +0530 Message-ID: <20260310151432.92531-4-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX9DIV4+bosLnF TVI6BbuEGEjUUBE25ImOZX8amOMHoZ9F4vwtLwx3WUdpGpu0rh0JlJp7F/FoDURTlFd51QWXkbm bKMOdffvJc07NrRGRuETtfSJZrraWDVL13vOUPH9tBwgho6z9vkfs92Os+L24dET9i/T8Ai0JIv 7N2pux9yFr4a9Na4ySR41l9N2cm3+XppMAwHfoiYFzgyaBshNad+LoMzCtfRs2gmcmjN6k/Jz/z B4q8Gk5HtE6VoPAJxFaScSff/Oh+jTU6D1WxC12dyAN6Ikqd6M4zvyr5G0x88JPfsW4g24Abd7B M4KtWhJtBoL3R8rzMEVHDX7GH5GX3MbOIQZPEJkdJpg83Y5z4Pkj1u1sUZmATKVwacOjoWweCxQ mwEpYFjip/EZQclYRhNEfm6I5EO/iAE3yZKA+FUiBvWA6lZiygodxLEIM3xf+dfDKAHt2yX6vtw LJK56oesuhoGp37iAhQ== X-Proofpoint-GUID: wu8UD6jKvZC06_hFuzIy-S6FLiKwR_jH X-Proofpoint-ORIG-GUID: wu8UD6jKvZC06_hFuzIy-S6FLiKwR_jH X-Authority-Analysis: v=2.4 cv=QoFTHFyd c=1 sm=1 tr=0 ts=69b0356a cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=pGLkceISAAAA:8 a=lqnwqb0_oS2Hd41rSKUA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 malwarescore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155772610154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-4-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- include/hw/ppc/pnv_mpipl.h | 3 +++ hw/ppc/pnv_sbe.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index c544984dc7..60d6ede482 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 diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 5a2b3342d1..46c5047f1c 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); } --=20 2.52.0 From nobody Wed Apr 8 02:49:20 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=1773155895; cv=none; d=zohomail.com; s=zohoarc; b=DezUXBKhgGtr0KaYy6CBiMKNT0O4Klqm6CTtkXM1M2KFv9E9rAay4Ijxw0ltr86dY7+iJVAahQiuk0MXQMBy/9lSZHUAP1AdWHWT6CeOZWdEiZShKENvNu2gYHAXMR8TeimR52wTwNZNAaC35j+I96DcGgs4XUTSaFzk1Z3rE9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155895; 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=0jJRI5VXRIykfnPhginxDD57zXDzQoYgzNgb4cZNvuk=; b=jd0DCHIMuGHU4Aae90GsSumiEusOVGWbqZOCBUz2sKRqo5DdQMTI7P3jPED1s1lkTB5kWvXc/pNhC1yZf9RH62/RdEro2qDW+RH5lIoLwzAib9Xjlk4f4JHWLun+e8TurkeSF7FLO1ZHwrKm/QXiHjLZY5ONUlJJn+ojJs96FXM= 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 1773155895575830.862277385725; Tue, 10 Mar 2026 08:18:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynq-0007lg-0u; Tue, 10 Mar 2026 11:15:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynQ-0006r4-RJ for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:00 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynO-0000Fs-9j for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:56 -0400 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 629Mj3BV557886 for ; Tue, 10 Mar 2026 15:14:53 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 4crcvmbhdm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:52 +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 62AF5vt3029360 for ; Tue, 10 Mar 2026 15:14:51 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4csp6up8ak-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:51 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEldU43254200 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:47 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 849B82004D; Tue, 10 Mar 2026 15:14:47 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3F6152004B; Tue, 10 Mar 2026 15:14:46 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:46 +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=0jJRI5VXRIykfnPhg inxDD57zXDzQoYgzNgb4cZNvuk=; b=H3Z/Tcq3BifAEABvn9IkOlCAr9fJNIH46 PFEWQ+AXm4aRVm75tZdwLcyC0yudB5bYOBMiNT/0J+K4FCpZIZxe+vCtgr9J5Dno M0OHYHADaRgwQUXFcSpN5O2TL1nSw1iWdWXWLbiKSLNCkvoLF6jsFQNfURnJX8WS URFsOHB7jWn4JJlYrUNasS+/fqjW8Bg3njAKHSps3cHDPiXA9uMYG40UdxGWZ3iw figFb7qHVStSLf/7Ysy46JGJ+shUinx07Grhcunr91ee8+kKUs4CSobz+LkiefxA r3pc7/4z47RcmOuEOx5MkvrQ6ZXZfI9x+0AVWZ2ABM8LN0tgztNyA== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 04/10] pnv/mpipl: Preserve memory regions as per MDST/MDDT tables Date: Tue, 10 Mar 2026 20:44:24 +0530 Message-ID: <20260310151432.92531-5-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: S3GHbu15w3rzONh_jcZACVXSXgVggFMk X-Proofpoint-ORIG-GUID: S3GHbu15w3rzONh_jcZACVXSXgVggFMk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfXwQOeUa/jPKfn 1NMq8vgxj4a2+/sgeSlb7REg9faioJ4XJZsadyaE4Hm0dda4bMVvTaB1OkBeUqz1O6yEBW1F+kR tnsjMVQcOjxX94C3YJeoGpSElLzP6ZaTz9Kx+bv2ArMJEpulM1CNyQndPiT3mcQCuIc7Z9tGRZA Q58oNRDq5INu1yM1mIX/8n0T7Yg1WnXDr4qQN9FvOjEgMnSVQr016tnK61sKpkJurrz7gEULRVr h61QZB1ytvEVM0rMjUHDbdrCWOgZS1qfKQW94LYz2Vp/dvs0rGX2uQmKB9zgfCIYXlpOrZIyNhy WLu0v0tJW2DodjUu6UFAYzcWHMxO3vIwmqRhOQF8CydQmSxAwtekz2J2SZQbWIC18RhXRvIFecU ESK/c90tNZQXbinZ4FxzR6s44QQPXMHtNMTcmZbIRGwF3gw9W/KQQBnSo63O5hshYwHSB0Nnvgt c5SlNu/RlLOJW/wATpw== X-Authority-Analysis: v=2.4 cv=B5q0EetM c=1 sm=1 tr=0 ts=69b0356c cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=uldKd1TX8WFnlnzwhmkA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155896750154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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 Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-5-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- include/hw/ppc/pnv_mpipl.h | 86 ++++++++++++++++++++ hw/ppc/pnv_mpipl.c | 162 +++++++++++++++++++++++++++++++++++++ 2 files changed, 248 insertions(+) diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index 60d6ede482..e0518ef2e1 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 diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index d8c9b7a428..cef1fe2c40 100644 --- a/hw/ppc/pnv_mpipl.c +++ b/hw/ppc/pnv_mpipl.c @@ -5,12 +5,174 @@ */ =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)) + 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; + continue; + } + + chunk_id =3D 0; + num_chunks =3D ceil((data_len * 1.0f) / COPY_CHUNK_SIZE); + while (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 --=20 2.52.0 From nobody Wed Apr 8 02:49:20 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=1773155717; cv=none; d=zohomail.com; s=zohoarc; b=ZHtbFPAKTXrMiTFy0ErBkpe553Pptn/YVFOEPmipI5pcez1S6+ACsfPqsQm/83OfM2FmawSuD4nn/rzHGpYb/3s0MeTedXUwgMhk5E6ZW05fe6uLaHsrYi66TgCvAOq8NR4eHRU54G6GGZnT55mtuqjyXEdqB9gY69GEVHLJqB4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155717; 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=doIly4w7g2zui144zEsvAuCenF/BQeruCMLjDHsTj4k=; b=bBsbRGcXlxUsvGxOCP1+iqvP6VqIVz8vjUK3ZdxTrF2cPtCvJ0CHOFsMVqLDlNu3aEjYjaTMukaBkbG00+zgGoLuDsawFrQqbCmtfwwfHjdqtwWtwP1pmLWj/2V0ze1tTWWOWrXssOVUTvck4ZquXK9RIyI9b/Ndol92f86pmsM= 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 1773155717598783.2336174550479; Tue, 10 Mar 2026 08:15:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzyne-00075O-J2; Tue, 10 Mar 2026 11:15:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynS-0006rO-Ft for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:02 -0400 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 1vzynP-0000G9-Jo for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:58 -0400 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 62A87eqd1651541 for ; Tue, 10 Mar 2026 15:14:54 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 4crcunb5b2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:54 +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 62AEwoI0029714 for ; Tue, 10 Mar 2026 15:14:53 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4csp6up8ar-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:53 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEnhR12124638 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:49 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 725812004D; Tue, 10 Mar 2026 15:14:49 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DA6E42004B; Tue, 10 Mar 2026 15:14:47 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:47 +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=doIly4w7g2zui144z EsvAuCenF/BQeruCMLjDHsTj4k=; b=Dw5rTfEENT9yU/8e3FHmoNTnCpqR8vc0I FvjCCRhNOqhSogMvInZ5GbGtxYNvYei8y+0JQVWlqXbU0cpwWR2rKDKwtFw/Pzer JQ7PIDrFkK86iBqhFjLiAUBBWnBisPeYzxJ2A4Y7seqmsj48yEuBIyn011F33aGH rzARbuM0T/N0tLch8L3zIYgrRbWmnG4tITlbQEZ/cQnjLsYoX5LORdbBaT0bocg0 CBLNK0ACRQpQoZJKegM+WNdxHmQUGqRDjIzVfaQ8EzjRzaNz798ZvKdCy9cL7qGE BubCFxYGC78PMDfr3zfP3Ifas5Wxnx1ONAI7EVOpv1CUPgFl3Zxbg== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 05/10] pnv/mpipl: Preserve CPU registers after crash Date: Tue, 10 Mar 2026 20:44:25 +0530 Message-ID: <20260310151432.92531-6-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: riAZ19tgrKJnQ54BtQe-lqKZDbDCQsl6 X-Authority-Analysis: v=2.4 cv=Hp172kTS c=1 sm=1 tr=0 ts=69b0356e cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=nsAygp86oCIyxKH0w3IA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX2wqCey14mqVC kjrFiB66d9gNg6doXNgaZR6WbiUHi4on+H3mbN/tKJFR3f3+7sCLa+0mQKyrU9dw+Q+hucMcJWZ Px+h/PSQdZaY3d2RzGmhNTZxupTScioBAEns9YHb9IQioCz4ExQXfQhurg0ahmIWoeft0DGTRlu qLvXF4KRqb1wslaa8aVQE7HrPLZ+ejaBqzZWmfKKnsygHqM8W29PRqitpd6FuF2SH6+NXmdwjyp KFMBehgluOEo7BNOi8ec+a3HkcUwraMC9pk78YP3nX9nhJqS/n4WBO4YkiztVC7RTJgp4e76n9u 26OlHfFThHyxrIdFvy0m27a5SGqSWjonHZCbAeBjL+gqEki1Af4hhMykFtEXIA7uXDzETKiGw2w fwKLl3FS0TR0vfbpVXJ4Do/moR0a2gTJEjHtitL489FgiA+M3rrEVnAyOW5hB1XWJkok7SMPjlN BaaZlQuHY4YhmvOuTqw== X-Proofpoint-ORIG-GUID: riAZ19tgrKJnQ54BtQe-lqKZDbDCQsl6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 impostorscore=0 suspectscore=0 spamscore=0 phishscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155719908154101 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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 Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-6-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- include/hw/ppc/pnv_mpipl.h | 60 +++++++++++++++ hw/ppc/pnv_mpipl.c | 154 +++++++++++++++++++++++++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index e0518ef2e1..a602d6bef4 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 diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index cef1fe2c40..308948b829 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 @@ -169,9 +174,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; --=20 2.52.0 From nobody Wed Apr 8 02:49:20 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=1773155782; cv=none; d=zohomail.com; s=zohoarc; b=mGCriatOxlm527gRrjSChupLXUY/K/+NTDrv4yIergqdYxq2dAwshvk224RPbsHsVKCUL/95Cexjc319w4xFPtny6Do06ry70B0WeK4sqqIGJALBApGV83F20z2qIDlic3JNT1F9WxXUZPkHdQ2/ssYdjGzZfCuR3WicGc+6FkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155782; 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=oxnCuJ415kJrm9x0e7Lh0j6E+LRZnIIw3ZKt6MD94sY=; b=mPeEpwSvaLgsV5GGuGupte71H7zd7tEciz6A+GzuL/CkL6P55aD279o2w9LyBEX9RCY7WGApaJdq1McfEvO8f6DKClAO3P1qa3VFjUVusbkMwmNN35zwkr7dzTXBJ8nRjYJThNPgbUa/WKQIZT0rMq7ESGWnm/PDX0GOPlWzaqw= 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 1773155782779529.6802316637386; Tue, 10 Mar 2026 08:16:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynk-0007MM-50; Tue, 10 Mar 2026 11:15:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynT-0006rP-JD for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:04 -0400 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 1vzynQ-0000GI-KG for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:14:59 -0400 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 62A1Ew0s076304 for ; Tue, 10 Mar 2026 15:14:55 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4crcvrb6fq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:55 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62ABlH9R015629 for ; Tue, 10 Mar 2026 15:14:54 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4crybn9mvu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:54 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEpZH44040464 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:51 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E7A5F2004D; Tue, 10 Mar 2026 15:14:50 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C944C2004B; Tue, 10 Mar 2026 15:14:49 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:49 +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=oxnCuJ415kJrm9x0e 7Lh0j6E+LRZnIIw3ZKt6MD94sY=; b=Ey6Os1B8vuNQBOxIz1v+qoG5d31abjjDc zMhskVWZosUk051vBKfdsaDOGEX9i5XB96OcW+HLioh/KBA1rBPwnfbJtIPMgbv1 bQ0wLvo5ddiu1GcwOtkRSoXaMGVnf7HU2nPAX3AHMKasq/mH1KrJN4jMiWcdHmkH MMBOvMKJLKvW1F0eMmnD9mq59GBm72dzBZpPbaEILGwY/73/N3h7/baIFDoZUwQI OiEBm/puOApj9drrjwE+06QgKmHS40GM8c/tufPYGtRSZsbZenP+lX86ra+BPP4M lnBz9bEWb4OVqqnjyN92m5KZVOqbiCIg+Y9pJut/lFjVCkVc2IO4w== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 06/10] pnv/mpipl: Set thread entry size to be allocated by firmware Date: Tue, 10 Mar 2026 20:44:26 +0530 Message-ID: <20260310151432.92531-7-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX83LnxTT/DJN5 4PRn2hBXEXWsAPW0Ke3Ro3gTkA4znzSS5R9lHrbJUeraFJDSNz9Y+2+yfPqB9MhixdDwqcHxWK1 VafMSvdSvfnMELhtbpv+ZJn/JCXIo1f1cbZGTN7YJQv2ooo1Y46a8jlNlbG7050JhxodJ42TjCk VyZnNmFjIQsj1JhIYiZxS1mzVWfw0AtsK+fyALNaG3m9d8AX/jBokeGEawv98c5xlGhkVqX1R2O xN46RZWzyV7SnDEG3fccMZYgxlhZnVqPUn5Gl7RZsvvRrOm+xi/yHsYdYQg+HnHhRi0MS0FdruH oBTtEcQBa0GqfO15fsqTh7fE8hq2EyIkk967gXmtMjcTEqsGoJmd+nx2PpzbGek6P6YJhsLpyUs Jw7ymIQQQO5Psc8BipujIyBU2yCSEq87dP1xf7c14HMRjhOqEpDU/1Ms2bDOvOC2qvpGd0rMuWQ 7g/yAJVZ3ckmZvJq8aA== X-Proofpoint-GUID: 6IXoKoXWOOi0ou5dh_dvDn99q7Il8Aur X-Proofpoint-ORIG-GUID: 6IXoKoXWOOi0ou5dh_dvDn99q7Il8Aur X-Authority-Analysis: v=2.4 cv=QoFTHFyd c=1 sm=1 tr=0 ts=69b0356f cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=K3nGc4jhFjju3E8dwHwA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 adultscore=0 clxscore=1015 malwarescore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155784748154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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 Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-7-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- hw/ppc/pnv.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 1513575b8f..3038b1626c 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.52.0 From nobody Wed Apr 8 02:49:20 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=1773155792; cv=none; d=zohomail.com; s=zohoarc; b=AcI9KSHrVUkAj2BYD8pFmdt8ZKA7f6jIl1X7E5KtKRq52mGbrxsw4hsuso1NE2BaiHFLghk6ZM2IIpJBlYtRTEbVJlLL06PO2BhwrkibRSY3zHmiyY3ADZqUmOFf7lcU5ByJzdwx9srqPB2dS+nG0VJS1OX3RxLl6k7EHtcmbvw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155792; 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=IFpkdtuPPG/KlDqOmjkDQ75AIsOa9sDJjf2Sg5mFku0=; b=cy4xvx1F3h0QKnV3GnUa8OmBtUimB2oD5BDq3VqZrAgO3QLpB376cAGFTrW40aESLIUr+n65CA7MYM4gx8HhN0AQCnRG+do062Y9heMEIVjTOrg0RfcSwIPfur9qRa/fcfYqfUsBZoEpOrCfewl+23LKWlEMPI+BoZTyvDUwF5s= 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 1773155792220356.7810904673139; Tue, 10 Mar 2026 08:16:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynq-0007wN-W9; Tue, 10 Mar 2026 11:15:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynU-0006rR-84 for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:04 -0400 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 1vzynS-0000GT-Cm for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:00 -0400 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 62A8RpIq1271651 for ; Tue, 10 Mar 2026 15:14:57 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4crcunb5bb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:57 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62ABdD86015573 for ; Tue, 10 Mar 2026 15:14:56 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4crybn9mvv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:56 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEqhM40894886 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:52 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 995E12004D; Tue, 10 Mar 2026 15:14:52 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4838C2004B; Tue, 10 Mar 2026 15:14:51 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14: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=IFpkdtuPPG/KlDqOm jkDQ75AIsOa9sDJjf2Sg5mFku0=; b=n10zYs4yRV4UrY1tZ3vc3I6nQd5P+w7p0 8bx3hbTzo2nhgzcTYxo8UTPTK23w5Ye2M8iE6abkDUiIQ/gHNjojzDOa4fOBE8HZ aUP/dhgoKCiSFxXI0nW2hOUPXPJ4s2G83AIW3Y6bpN93NJbsas5VRmCGjCGaf/O2 6yG0HYPfSVwdc8bcJXrPiRcEpbljmiAFCV0d4q/kLaI5J9bVB1B4GdLMK4oZvRSI D+JkuktFKSptHaJcNjqrJsG8996gN41HE8HGybzLIvj0yEhKAj9RtJgY71sw2ili 6XMBPLd3LgBBTChyVeNlUeUiCyddYkXA2pD8V1r2YmJqyXpRsdFsg== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 07/10] pnv/mpipl: Write the preserved CPU and MDRT state Date: Tue, 10 Mar 2026 20:44:27 +0530 Message-ID: <20260310151432.92531-8-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: NGAwoF5KYdmkouYZbaxVTz9Sddcs4uLu X-Authority-Analysis: v=2.4 cv=Hp172kTS c=1 sm=1 tr=0 ts=69b03571 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=dzawcXaIV5huiJcXlfYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX63df8gCGuVA2 rp/C3djIMcrVeRRuF2d/XcQqvDJ8PTt7H7Fi6xSpjLahb0hveqXPxgVkuyAyrvB5sLjwVgUWoJt fBoHXiVMuZE7NTH1/ywZokTVP4V9SgOp5p7X+jpBr4CJov68SDDAthK4ioOOKsaxA6va5Q8vAxR AxCf9iuhDFHEFO4H2JbBzLrVW85vEfw8IGbz6GejLtCZ3nchwW8PjxQ0oOodwM971a8IcHZ4kdN d1Cq4pU6VUVhSBO5+FJeZGx/sr4owEYz8U6OV/6I+vH6L8zpvKByRkdMJV0TWZX5cS9DSn/fhGm txdRMSVnKdgKSvXP1rLacyaZ5oiNY0sW4NBUfZK9vPO4pqRtM9Vesk9Vx87WKw7wNRiySvMPaca unjyVDh3yc0bI8ZzP9niJcrE0+M+Tnfxmosy4/TI5QIyogkp6mGXLO+u3hLnZ70fnLWszcxmvOR FKLW+1BohOWhxji42/A== X-Proofpoint-ORIG-GUID: NGAwoF5KYdmkouYZbaxVTz9Sddcs4uLu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 impostorscore=0 suspectscore=0 spamscore=0 phishscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155795010154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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 Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-8-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- include/hw/ppc/pnv.h | 1 + hw/ppc/pnv.c | 39 +++++++++++- hw/ppc/pnv_mpipl.c | 140 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 179 insertions(+), 1 deletion(-) diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 7d73629f11..98fe10fb4f 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 */ diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 3038b1626c..2db5be821e 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 mpipl_write_succeeded =3D false; =20 qemu_devices_reset(type); =20 @@ -781,7 +783,42 @@ 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 */ + mpipl_write_succeeded =3D do_mpipl_write(pnv); + } + + /* + * If it's a MPIPL boot, add the "mpipl-boot" property, and reset the + * boolean for MPIPL boot for next boot + */ + if (mpipl_write_succeeded) { + 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 308948b829..f5b228f5ba 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 @@ -320,6 +322,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(); @@ -340,3 +475,8 @@ 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); +} --=20 2.52.0 From nobody Wed Apr 8 02:49:20 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=1773155722; cv=none; d=zohomail.com; s=zohoarc; b=hLy1kQPJJ3UiYsUujEGr0j1LZCdPv0QtIpR6Bp1UDAroWQekveHnw+AR4CVp6By0Cehvino8T1y/69+4kVt97YeY6j+RfU3pPpyZ3qsGe6ZFjzyY+4l7i+ybIOWCmFSLTrfI5jOxGESNj8LtktN09ue0OeHExNw20IHHYMOds7A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155722; 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=2PAs1onPus0/1ZSKpQ2WqHofddBpap3b6z9ms4dDkcQ=; b=gvwYIOJtrY7b0GxTgqNvzWHzLShqLAhcYEZCQUZnmbEiMaIyLu7HQ9iSwyAWr+QQjvypaollobUG/m8CqGCMYLDOZDlN5Beo2wNv+we6tA4SgpogW45Ao0G/CVdVhKouhGn4q2vZZEzsqHC16Lm0VGjYkvdoPQQGUfIf3b2S+sU= 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 1773155722189253.07313344714294; Tue, 10 Mar 2026 08:15:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzyne-00074g-IJ; Tue, 10 Mar 2026 11:15:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynW-0006sX-QK for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:04 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynU-0000Gh-Hr for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:02 -0400 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 629NUep0299992 for ; Tue, 10 Mar 2026 15:14:59 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 4crcywbfur-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:58 +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 62ACVk4D025033 for ; Tue, 10 Mar 2026 15:14:57 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cs0jk1erm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:57 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEsG336569526 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:54 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 243312004D; Tue, 10 Mar 2026 15:14:54 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EDEA72004B; Tue, 10 Mar 2026 15:14:52 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:52 +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=2PAs1onPus0/1ZSKp Q2WqHofddBpap3b6z9ms4dDkcQ=; b=IYVRLK5+m5jkYU7J0cMDj2JeQkk3J22zD qTxbl1JZAi227b+WgZ1KmLQw3EcVOUeQNGaJUrPMqsvUX3OdfvHeSknAPvLy9TYl nLNN5CA0UEHMmfovG6o7rQElrB3/DaUvLEp92WFdXMaxRqJbnq3N80Qk5OUyKhfb MzQgC23F521inler1tmNhL1vFT6c7VI08EFXJ3gZiNOKXWUErExU0C9/ZB90zuOx nY2CvmBUT5TI1F4Yb90LibVMUR2mRNMl/XYmi2OwvvfvF1tZltMVWYYh5BN5g4Tu VM0AknJnAn4kdzeA17+uBdJfPAWgIZZrrx8K+s5kMU7Wf13WuPFmg== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 08/10] pnv/mpipl: Enable MPIPL support Date: Tue, 10 Mar 2026 20:44:28 +0530 Message-ID: <20260310151432.92531-9-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX3GC4C3N3V+DL 28nOkOWmgoKWnoy2SUcyg36gZs6dI7lYTG0SCMoHK9fKtfEXy6uAG7+yeQSo++XtkweMNYWYre+ PbZV7bDYDaeoS4B3ZgR+FWLfVF3hKeJvfr7/thpdwlpeEmhP2bv4d/YzNlFpSOnON7UaLesNc9Y Yx69iyLau4MRABTPV701hBrn+0Q9jhKkAfqQdq7RNIh/imPQ0W1rY1/NntyJpxdM67WNhk0/PRE jjbAyiylUQqxoRADO05qN8gyyhLtiefxb8RPJDKTEGpgsXl0zZGwRo0FuQdfWFseL3+ifhZsr0Z J4/h+1v1svkCLRhD1+XWttb6F5HbgHpeSHMXTLgdn4uQbGQn+58CF0nEJfi4c2U9RPS3LyPazBh O/UYfswDWWEH9h5YjoSjUKhHAhvNZEMgFt3CsgiCdaXw5GT5rDCXaq5fL8PNKzuuE0ZBCXvBr/i nabcy44joZHW4BEkQng== X-Authority-Analysis: v=2.4 cv=QaVrf8bv c=1 sm=1 tr=0 ts=69b03572 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=UPKcu-uvLXLb8jsFgj4A:9 X-Proofpoint-GUID: YUMlQLlsgasPD4ac0rU0MDllPVdwj_7a X-Proofpoint-ORIG-GUID: YUMlQLlsgasPD4ac0rU0MDllPVdwj_7a X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 impostorscore=0 clxscore=1015 adultscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155724836154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-9-adityag@l= inux.ibm.com Signed-off-by: Harsh Prateek Bora --- hw/ppc/pnv.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 2db5be821e..6f59fc0d3e 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.52.0 From nobody Wed Apr 8 02:49:20 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=1773155723; cv=none; d=zohomail.com; s=zohoarc; b=Ji2jZlYkzcC91okOw+muU8K6pJF+NlCryUXiKX0yBCzRrA9as1cAKxGck8FCm77nqPaDOEgtEXNOUA+Tyo/PbyeDpozrX5jzTLVqscTO4Roi5YXTWi4rScLHv0lnHGg/0vA+Lb90QcR5stcp5EoXPfNlPH5TNEb7gVj1yu6Hwog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155723; 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=wWQnkhfx9OiwjFjSDV5k/HgZxQnLtjck3Fdhnq45O1g=; b=Ek/fvqGkxwb3qMGIUzaXYDj+BJW3NGGt4XOtVnXZXMo1J/EIpCqb0tKu/0z9pSddSZIFB1hNjHGFbgMyZcewTqVMfUG6jcydPV8uIShvA3Npha3OkSVVKc76aN6evl5EqKP2wDeyuQnQ3uW4oWvhLFdM5gf8YBkLFLlyiYpZJPI= 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 177315572343943.83500923982854; Tue, 10 Mar 2026 08:15:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzynh-0007EF-Mp; Tue, 10 Mar 2026 11:15:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynY-0006u6-8X for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:04 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynW-0000HJ-BD for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:03 -0400 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 62AF9Oi9641632 for ; Tue, 10 Mar 2026 15:15:01 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 4crcvmbhe7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:15:00 +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 62AF3VmH029359 for ; Tue, 10 Mar 2026 15:14:59 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4csp6up8aw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:14:59 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEtMT56230264 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:55 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C1A9D2004D; Tue, 10 Mar 2026 15:14:55 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7C48F2004B; Tue, 10 Mar 2026 15:14:54 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14: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=wWQnkhfx9OiwjFjSD V5k/HgZxQnLtjck3Fdhnq45O1g=; b=YccFQAh860v8YRS+7RWgQNyM1vgEqQG/K fQKKhe74tYeL4MRmQVDtQ3st9mtc++NYEple8TyLmX5ni4aa26cdYA2fr7d8P8L3 09NgzoVnuuVRse9grPW9HwWWaZT/GItxCVdFQMksBVoeKaEZsWSMgO1F5zdvw196 tZINVycxVhuT5MV7B0Tf15REiaKJRbYioGQit7xaRlZjefdfgHN+111xFROds4xs gszyyoqCujNcxvJzlTizn0TFq5/N8kfoNUUHmRNbOtrEidzYcm0D+FF6AnJMiatD rqKrlE2ZsBWyZ68istiv+UiNfZWP7l9YLy+2NxOLh7E4gCITlF7QQ== From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 09/10] tests/functional: Add test for MPIPL in PowerNV Date: Tue, 10 Mar 2026 20:44:29 +0530 Message-ID: <20260310151432.92531-10-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-GUID: I4tQCB-jK8pi7DmJ03kftFCVoqLG4O-k X-Proofpoint-ORIG-GUID: I4tQCB-jK8pi7DmJ03kftFCVoqLG4O-k X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfX6bRy6iXTjOYL lr45Y9eCVXDd/U4+z/YUf78gYOFSbgylyi0YXf3uGrGI3fg5ogHmV3QgWi4xI+PWQpKXqHOtr2H VmnDvH63VwVpixopxRJYH0/+lnALOEWNVai8l8LUfZ5gychVQMgV0+HtyFMNZ2DSKihCbm1cEDG dhb9JMAzYU+7O1nyh/t9KiMAvFS6pGpEyn8zUMeBX5du94nYoxqjHSlpC12TNy91cS5joQyaLa+ kelQGDVKuQTAZuBpk2J/j7chfzr0IM/7kMbFkReZVHkgsMluo2lx/6t2d+oVjgftKIsuqNANhKk REeN0WsSHyug/iLqmuqmH9JjoS7EMKGvDotKH+2Dj4ZswOwnruenvHk5xGZ3sGctG7bDzaV/WRE m6SH0BctWLcETTp25t2J+UFJYDwsCaYcFAhAN6m5ZkSVepwCe4XQq+0xXykxVC2T0VR5GktsmJT eSmZBvglVLxhjQdi1PA== X-Authority-Analysis: v=2.4 cv=B5q0EetM c=1 sm=1 tr=0 ts=69b03574 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=xeNidhmBAAAA:20 a=vTr9H3xdAAAA:8 a=yF-uCvtE38AvPGpA37UA:9 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155725927154100 Content-Type: text/plain; charset="utf-8" From: Aditya Gupta 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 Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-10-adityag@= linux.ibm.com Signed-off-by: Harsh Prateek Bora --- 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 bd9692f64c..7ea65974e0 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.52.0 From nobody Wed Apr 8 02:49:20 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=1773155932; cv=none; d=zohomail.com; s=zohoarc; b=ZRdFybF7Rg60fnRKyK9cA6yyWwg3a2HyPA3wcSabda0dGAI0i6WlQNZBOKGoYnlJ6xB1yTQI12dBlk6FNZQIgSVY9d4P9R1k95xhgsrVhiAlBDzrbHczA/JZIaZGvq3sUIxggz9yHwpAfX/UZ8stJA5aVkmGxkiDoDOpQx5/iVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773155932; 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=HaVK6dQ4jgMbXsjoR9kGYk8XU2DipitWKer1LH+/Pf0=; b=C4xg8tZLqtnQuMzpVZ/MmtACF/i1BRbIRCI22CnQcH4d9cItra8JhG6BML13OzEfrI0o47/f1O+O7n0/KaeuTfCURQ6NIZ8FhyOrXlGa3Xk2uV+cj+fJubMQG6zI4/7iUo8/cnPM3H4LZn0Lk+zWZKX08OrQcP40lkhyFzWB08E= 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 1773155932167749.8102460430117; Tue, 10 Mar 2026 08:18:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzyno-0007hp-Ls; Tue, 10 Mar 2026 11:15:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynZ-0006vN-B1 for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:08 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vzynX-0000HW-GY for qemu-devel@nongnu.org; Tue, 10 Mar 2026 11:15:05 -0400 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 62AA1Dj31849314 for ; Tue, 10 Mar 2026 15:15:02 GMT Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4crcvmbhef-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:15:02 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 62AD2M7k015761 for ; Tue, 10 Mar 2026 15:15:01 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cs1221bmm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 10 Mar 2026 15:15:01 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62AFEvtd46661940 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 15:14:57 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 772A02004E; Tue, 10 Mar 2026 15:14:57 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2350A2004B; Tue, 10 Mar 2026 15:14:56 +0000 (GMT) Received: from Mac.com (unknown [9.39.23.49]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 15:14:55 +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=HaVK6d Q4jgMbXsjoR9kGYk8XU2DipitWKer1LH+/Pf0=; b=CcaSn+jBOMpP151L3wqgBS 80iVRghKZwYvPum3hmtX4PaR2Pfk+6V3Rspd/wOMJmFIjxFzq7/D675Bws3uAzcA TeRC0Pz/I3Qe10kcE7ydG8s9SbdjQvKbt0YhVFaHRH2hK75yRXdIccEwxgJHJvNe H4P3JIB1hxKw3OD6FEIlwNn3W/v0bQoutRpjLl5q9yCLIFYl5mRDGDAKK28Mnqkd APfAOjuJKhwBoIK6nIfPpxb2VXviSjHTMHF5cuyY/U3YRDXvCochFjyccRQDOIzL 8YHZ8V2uVmVtWFWaY00KkF0mpvdlw/BQd4hZj3A/VYAYU5q3kVz7OD9EpKrrNhRA == From: Harsh Prateek Bora To: qemu-devel@nongnu.org Cc: Aditya Gupta , Hari Bathini , Shivang Upadhyay , Sourabh Jain Subject: [PULL 10/10] MAINTAINERS: Add entry for MPIPL (PowerNV) Date: Tue, 10 Mar 2026 20:44:30 +0530 Message-ID: <20260310151432.92531-11-harshpb@linux.ibm.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260310151432.92531-1-harshpb@linux.ibm.com> References: <20260310151432.92531-1-harshpb@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-GUID: 4pSa4sNEXRRzxaG4bcj97BcZBYl8Xnh8 X-Proofpoint-ORIG-GUID: 4pSa4sNEXRRzxaG4bcj97BcZBYl8Xnh8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEzMSBTYWx0ZWRfXyrqd7LfU3ps3 9d0TGVzwMHkQtaFK4a7iqd/crf/mPqZmaoCZbc89PsWJGPjiLz/x/WBKTd2CXzk6PyNugTFJn3A dk5wo2fhNxRBgytcYf8Hx6ZkjJVuXLGuYW0nim0VWOplwaTn4vD3D0E9pGJ+aum2+O9PtTPBt9k 7k04vAB22WKrA8oKH/xm2RGc8Cq5ibPNnfWTAbH4Ea/NSfXROF1bO/S5o5ah2a21gqCQMdSi6ip uEZTHhISR/YRv1R6eboP+whiZCzSMCFuVri1i15s1e5grOgisjN++MQ6tx5laJvFhvIDVArRBeS AaaS9tFmhr1Udb902+pcN98jTvSgfcElWKmi7XkR+ulhCMzTfrrKVo0J+PX4JLKMvDaae10X/WU 2n8Z/PoCQqJV7JAmTHIQFIE1HwewxG0+7IDwMc8T32K+8HruMzDA2/udua38cG7uC4d7IU1v8oI k+etn1WB+v93sPReKFQ== X-Authority-Analysis: v=2.4 cv=B5q0EetM c=1 sm=1 tr=0 ts=69b03576 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VwQbUJbxAAAA:8 a=VnNF1IyMAAAA:8 a=KKAkSRfTAAAA:8 a=K3nGc4jhFjju3E8dwHwA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-10_03,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100131 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=harshpb@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -9 X-Spam_score: -1.0 X-Spam_bar: - X-Spam_report: (-1.0 / 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.819, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.903, 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: 1773155933177158500 From: Aditya Gupta Add maintainer and reviewer for MPIPL subsystem. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Tested-by: Shivang Upadhyay Reviewed-by: Sourabh Jain Link: https://lore.kernel.org/qemu-devel/20260310124619.3909045-11-adityag@= linux.ibm.com Signed-off-by: Harsh Prateek Bora --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 9d1614fd7e..c030a3fec2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3303,6 +3303,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.52.0