From nobody Sat Apr 11 19:53:12 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=1773146859; cv=none; d=zohomail.com; s=zohoarc; b=GiEwKWWceqZlwyiWehXOP0sbYBurnk5mnKuqX6/zVGejbeEXNyPyiba3HL717sK4sBt/B9ppOBVbslNEHP5DK6IxzIC+zd7b4HElbeI83I5bTy2vvQednkakZ2EX5OKf8D+uOCORaUXxOhvJ7HnigiA5wwx2k5Lax27JEphVK/w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146859; 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=OGcbweHKgI/MjOWF3XWCLnKo0ATib3JJT6+YN3wr1rE=; b=ZOcw3S4Fvc0iWiDfylciCuHsD/k5TdFVVQkMO1PlZF5dn9pggPGGE32PY3a/s4atwcqKvjUtpFqzJPLpp4BGEd4R0F2S99butQLnp/r+I5begIgqYw3UblziU0nwNlvS66oGIpf6hsELkpEVgsOoVlhSLpRRNkgUZcRo78IUhzM= 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 177314685954437.345427583841; Tue, 10 Mar 2026 05:47:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwU6-000514-8G; Tue, 10 Mar 2026 08:46:53 -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 1vzwTv-00050a-7L; Tue, 10 Mar 2026 08:46:39 -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 1vzwTs-00036q-FF; Tue, 10 Mar 2026 08:46:38 -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 62A87ede1651541; Tue, 10 Mar 2026 12:46:33 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 4crcunah6u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:32 +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 62ABASRb015581; Tue, 10 Mar 2026 12:46:31 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4crybn93fb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:31 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkRMB44564826 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:27 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BCAFC2004B; Tue, 10 Mar 2026 12:46:27 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 698B120040; Tue, 10 Mar 2026 12:46:25 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:25 +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=OGcbweHKgI/MjOWF3 XWCLnKo0ATib3JJT6+YN3wr1rE=; b=NDQkMHWVLceMBJjT6aqbREVncEj2BqlT/ DtFXMLZxhUWgidim6BZKteQ3A4vfs4QMTTQRwxsZvx2RX2xXx+p9yme0kNS1ODes hbkMidmgNbqeaeJXaSnZcsCg7kl76z2cW+TAJGB1dgWP/955xo2XYetQcoymiuuv KB85XLCtESeLfLz7bAdP0/+EAW6mrarUN6sXhPJ+bmhsP34Wmo+HCZvgohW4/s2b DQOnXddCgaGrekLA8vTXCyT8AN4euByCL/mlm2amHAjh7q/LdSXJnXTtwe6vbrLJ mOnZPJA5pyx7NhQ5RJJ+2B9qfKKuGruPZpJnpbSKNQQNcE7hUd7BA== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 01/10] ppc/pnv: Move SBE host doorbell function to top of file Date: Tue, 10 Mar 2026 18:16:08 +0530 Message-ID: <20260310124619.3909045-2-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: f6QrOaRIMrZyFvn4hg7zR8d0x75U_j-0 X-Authority-Analysis: v=2.4 cv=Hp172kTS c=1 sm=1 tr=0 ts=69b012a8 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=Cz7AoQ69vTHEakZR_RYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfXysTgFPgmApFz 0qo9mhDftoDYEpvMrXc/vbFj+/uBBmUDDoJur2ZvwPS0bKgydlOCU5YGWf3d+W+a/OT+Z3itksb 650mdHdk5GX8KvLhXRkek7XDKR/WZzrWhLtd/5Zj0Nd7PPrei3iqMhtycUE9zmu/KjPHOYl9XDR eZLitPG9lvbBZGHl+FJZGlML/FOzu//WB8ASG0dqwnqMSu5C6zzuUS0YLS1GdOjOlcxcU8nx3V2 bJMed9ZN3SobC6qr0aW7k04frExwyQXFM7Bp/Iae7b9/NRcCcCtw5k9MzeKaZE1nn+eyk8cPP8q 3Kd8gvt3lSJUDGuk3iMpTM1PKS7qo6RZY4lLXhajkMaXIKQoMWeS43iEmFNX96dGblz7C1sJpWV GpyNLEjLc83EPa3Q93cNegZSc2FB+YZoFtet62+6k4QceYsKDoFB0MSMhLESOrBUxdxnx1Awc7x BncFwD0QPhBY0yXZvzg== X-Proofpoint-ORIG-GUID: orUchHdnhjLWNwOEJqDaKNvRoIv2ZF_A 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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146861269158500 Content-Type: text/plain; charset="utf-8" Moved 'pnv_sbe_set_host_doorbell' as-it-is to above 'pnv_sbe_power9_xscom_ctrl_write'. This is done since in a future patch, S0 interrupt implementation uses 'pnv_sbe_set_host_doorbell', hence the host doorbell function needs to be declared/defined before 'pnv_sbe_power9_xscom_ctrl_write' where we implement the S0 interrupt. No functional change. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv_sbe.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 27383ce6837e..247617338a0d 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -80,6 +80,15 @@ #define SBE_CONTROL_REG_S0 PPC_BIT(14) #define SBE_CONTROL_REG_S1 PPC_BIT(15) =20 +static void pnv_sbe_set_host_doorbell(PnvSBE *sbe, uint64_t val) +{ + val &=3D SBE_HOST_RESPONSE_MASK; /* Is this right? What does HW do? */ + sbe->host_doorbell =3D val; + + trace_pnv_sbe_reg_set_host_doorbell(val); + qemu_set_irq(sbe->psi_irq, !!val); +} + struct sbe_msg { uint64_t reg[4]; }; @@ -125,15 +134,6 @@ static const MemoryRegionOps pnv_sbe_power9_xscom_ctrl= _ops =3D { .endianness =3D DEVICE_BIG_ENDIAN, }; =20 -static void pnv_sbe_set_host_doorbell(PnvSBE *sbe, uint64_t val) -{ - val &=3D SBE_HOST_RESPONSE_MASK; /* Is this right? What does HW do? */ - sbe->host_doorbell =3D val; - - trace_pnv_sbe_reg_set_host_doorbell(val); - qemu_set_irq(sbe->psi_irq, !!val); -} - /* SBE Target Type */ #define SBE_TARGET_TYPE_PROC 0x00 #define SBE_TARGET_TYPE_EX 0x01 --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146900; cv=none; d=zohomail.com; s=zohoarc; b=fH0FCP+MEi1cMmKuwiwP8h7RRU5froD/WB6rLs5jPcHY+TwBH7FR0GQ2jJwvNag76i5p7SIs82xBdUpKzv+eY4cEU6w2ToOzbORp7U0x16zTV0o4nMKcp+K8/Tjzo+CDK1ezWYVkttPNzs2BTK1lxfPI/6aHAY0spdelE+DlUpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146900; 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=fiM7qAvQ5Oep0LxP5zBehlAclYQoy8Mg3EPDWi6vWaU=; b=BIVpBlzdd/7wgqQ0HHmdV2uhHGGVMnasZebCcVdV4jZz6LlR3GIyOC8+9T29gVMInIsRZhzIROjPmZG7yw5agpWlwWbLG8Tvcc1ZXvGADu8rMZZtn1gaKr+EK8nkrFRcPOGi1yUyRtY0UKQjLGmDzm8aY5Ks9yfunalXsmmJMl4= 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 1773146900463340.615707285565; Tue, 10 Mar 2026 05:48:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUC-00052O-KR; Tue, 10 Mar 2026 08:46:58 -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 1vzwTw-00050l-H4; Tue, 10 Mar 2026 08:46:41 -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 1vzwTu-00037A-Mk; Tue, 10 Mar 2026 08:46:40 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62A8xcO91581755; Tue, 10 Mar 2026 12:46:36 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 4crd1mjg75-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:35 +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 62ACdcGa015706; Tue, 10 Mar 2026 12:46:34 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cs1220t2s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:34 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkU9v40829362 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:30 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A0DD82004B; Tue, 10 Mar 2026 12:46:30 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2FA0B20043; Tue, 10 Mar 2026 12:46:28 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:27 +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=fiM7qAvQ5Oep0LxP5 zBehlAclYQoy8Mg3EPDWi6vWaU=; b=TPhOO4stZ63Vh6HsP8tm4iyB4PAOLjjEw uY5QRCySf5RMYm4Tk4nZpcKJccW9Rr/NAmrN5neioJws0HKZ7e8QQ/w4fPD/5ne3 p2BTUOdKtm7yqgQ45a6NaD//kSETFhug3a4sy5PB2R3nqiKjo78r3sqnpHrZc6F9 Tj0LJdrr4OrzBl9azvpebdkIgizfcRt8wkhP2fIruYLZlTtrTZjY7pNQc58wjkp5 WF4ah7XyK2Kq4xJ7/s1RwcQXbSCXiDBQVvXsE/XcYdB3KKn8QQ10Ub5dQwiwLhte lOsgJPWzSHn+lWmVPjuHrnsTFpSRDa2kyicGB/hz/2q8vvfPCbaqQ== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 02/10] ppc/mpipl: Implement S0 SBE interrupt Date: Tue, 10 Mar 2026 18:16:09 +0530 Message-ID: <20260310124619.3909045-3-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=ds3Wylg4 c=1 sm=1 tr=0 ts=69b012ab cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=atcXKtye3xvqEmVJAE4A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX1dqNk1BkKGJX ph9+k5AyaK6RXka/HnwSDpuZlFJi9vc1+iZyE83G2G0a7rjQGjVVZu91CUwELF8cZzfiobMutpD FbqTnJsIgjexNzve4DvF1ierX/1I1rPVn9brBKHl2DZvBESMXsMRMAtPKZ05M3/mFkzztgP3qYy Twv3fEEv7EtXSmqeww9Hyc5cLg3tIhMn240qi5NCrExtDNmnwaE1jhBT3lUO9KwtrXMqMTHuLC8 ew8Lhwf1aKDqMCfNXBH2x/6BskveX8sQ9aib8TxhL2Pci+8WJIz/81gh5ujaFTVA9lQlthtdb0v BZM2dTv3dQTdqxx7I/NlR7kq+KLDBpg8WJsQLpYvIRnVXcT0RaGogJbFa4O1F25G15vE/Qw7h6K 7ohOXSWAQAEx/x+xHvFBXFNmjMMB4t+N+KdeuTdwdQ/YK+NSt9RrKeaBrh/W1kqUsB1EIPagVmk BoYtjyUO4YduE0COMlw== X-Proofpoint-GUID: ud4H6CSOv5PxCvKDZrdhjSM3Tu5alKwi X-Proofpoint-ORIG-GUID: H3GTDKjuNtji1yCYKLDxSoVcq10J6ME3 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_02,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 clxscore=1015 impostorscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146902560154100 Content-Type: text/plain; charset="utf-8" During MPIPL (aka fadump), after a kernel crash, the kernel does opal_cec_reboot2 opal call, signifying an abnormal termination. When OPAL 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 Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/meson.build | 1 + hw/ppc/pnv_mpipl.c | 26 ++++++++++++++++++++++++++ hw/ppc/pnv_sbe.c | 29 +++++++++++++++++++++++++++++ include/hw/ppc/pnv.h | 6 ++++++ include/hw/ppc/pnv_mpipl.h | 19 +++++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 hw/ppc/pnv_mpipl.c create mode 100644 include/hw/ppc/pnv_mpipl.h diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index f7dac87a2a48..c61fba4ec8f2 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -56,6 +56,7 @@ ppc_ss.add(when: 'CONFIG_POWERNV', if_true: files( 'pnv_pnor.c', 'pnv_nest_pervasive.c', 'pnv_n1_chiplet.c', + 'pnv_mpipl.c', )) # PowerPC 4xx boards ppc_ss.add(when: 'CONFIG_PPC405', if_true: files( diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c new file mode 100644 index 000000000000..d8c9b7a428b7 --- /dev/null +++ b/hw/ppc/pnv_mpipl.c @@ -0,0 +1,26 @@ +/* + * Emulation of MPIPL (Memory Preserving Initial Program Load), aka fadump + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "system/runstate.h" +#include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_mpipl.h" + +void do_mpipl_preserve(PnvMachineState *pnv) +{ + /* Mark next boot as Memory-preserving boot */ + pnv->mpipl_state.is_next_boot_mpipl =3D true; + + /* + * Do a guest reset. + * Next reset will see 'is_next_boot_mpipl' as true, and trigger MPIPL + * + * Requirement: + * GUEST_RESET is expected to NOT clear the memory, as is the case when + * this is merged + */ + qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); +} diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 247617338a0d..5a2b3342d199 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -26,6 +26,9 @@ #include "hw/ppc/pnv.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_sbe.h" +#include "hw/ppc/pnv_mpipl.h" +#include "system/cpus.h" +#include "system/runstate.h" #include "trace.h" =20 /* @@ -113,11 +116,37 @@ static uint64_t pnv_sbe_power9_xscom_ctrl_read(void *= opaque, hwaddr addr, static void pnv_sbe_power9_xscom_ctrl_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); + PnvSBE *sbe =3D opaque; uint32_t offset =3D addr >> 3; =20 trace_pnv_sbe_xscom_ctrl_write(addr, val); =20 switch (offset) { + case SBE_CONTROL_REG_RW: + switch (val) { + case SBE_CONTROL_REG_S0: + qemu_log_mask(LOG_UNIMP, "SBE: S0 Interrupt triggered\n"); + + pnv_sbe_set_host_doorbell(sbe, sbe->host_doorbell | SBE_HOST_R= ESPONSE_MASK); + + /* Preserve memory regions and CPU state, if MPIPL is register= ed */ + do_mpipl_preserve(pnv); + + /* + * Control may not come back here as 'do_mpipl_preserve' trigg= ers + * a guest reboot + */ + break; + case SBE_CONTROL_REG_S1: + qemu_log_mask(LOG_UNIMP, "SBE: S1 Interrupt triggered\n"); + break; + default: + qemu_log_mask(LOG_UNIMP, + "SBE: CONTROL_REG_RW: Unknown value: Ox%." + HWADDR_PRIx "\n", val); + } + break; default: qemu_log_mask(LOG_UNIMP, "SBE Unimplemented register: Ox%" HWADDR_PRIx "\n", addr >> 3); diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 24f8843a4090..7d73629f112a 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -25,6 +25,7 @@ #include "hw/core/sysbus.h" #include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_pnor.h" +#include "hw/ppc/pnv_mpipl.h" =20 #define TYPE_PNV_CHIP "pnv-chip" =20 @@ -111,6 +112,8 @@ struct PnvMachineState { =20 bool big_core; bool lpar_per_core; + + MpiplPreservedState mpipl_state; }; =20 PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id); @@ -290,4 +293,7 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); =20 #define PNV11_OCC_SENSOR_BASE(chip) PNV10_OCC_SENSOR_BASE(chip) =20 +/* MPIPL helpers */ +void do_mpipl_preserve(PnvMachineState *pnv); + #endif /* PPC_PNV_H */ diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h new file mode 100644 index 000000000000..c544984dc76d --- /dev/null +++ b/include/hw/ppc/pnv_mpipl.h @@ -0,0 +1,19 @@ +/* + * Emulation of MPIPL (Memory Preserving Initial Program Load), aka fadump + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PNV_MPIPL_H +#define PNV_MPIPL_H + +#include "qemu/osdep.h" + +typedef struct MpiplPreservedState MpiplPreservedState; + +/* Preserved state to be saved in PnvMachineState */ +struct MpiplPreservedState { + bool is_next_boot_mpipl; +}; + +#endif --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146856; cv=none; d=zohomail.com; s=zohoarc; b=hcOM4zl9sdRzTNrWRSEPKwogZiASBKE2krY8KQNkvZLyDjYzwXsXM9L657SpYza73Eqpz9ySN+J3YgQP+NCrJsNym7Ej0NPXRBm9Wu/qIqO/miBqu51F+nI54esTXVUm43S48TsMNJrwslDoe0HW/fcBoUcnXtjOm2PYP3lH6aQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146856; 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=RUuZaIl2BO9hgmx/SSQppSlppQtAun4qakBW8cld8yA=; b=FE1dAGGp6gqEh4ZBA0fNrINZmYvrMue0PMIEPOS4+L7SsHjSZOFflk8917awV9QpTGBOHAUZfoBrSA73m/NxeG0/nx7NWQLAtrEBxeosEurXyNxMTFRLT8dlfMrreYTQ5wNi7Gqv7Ce9Yj1j9SlndzB9W5dTly/H4ghD8JPoj8c= 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 1773146856381598.6975517366727; Tue, 10 Mar 2026 05:47:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUO-00055L-NK; Tue, 10 Mar 2026 08:47:10 -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 1vzwTx-000515-PF; Tue, 10 Mar 2026 08:46:43 -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 1vzwTw-00037p-44; Tue, 10 Mar 2026 08:46:41 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62A2FGiP553970; Tue, 10 Mar 2026 12:46:38 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 4crd1mjg79-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:37 +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 62AAQ930029279; Tue, 10 Mar 2026 12:46:37 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4csp6unptx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:37 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkXYL10486174 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:33 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 66B8820043; Tue, 10 Mar 2026 12:46:33 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0665120040; Tue, 10 Mar 2026 12:46:31 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:30 +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=RUuZaIl2BO9hgmx/S SQppSlppQtAun4qakBW8cld8yA=; b=gXx6kKWvRm264aCzlhLkgiNvigaMLI7S8 53yUeuOOUqQasSpa0zMYcyUmuSRGUL1FaJ5UICi0N7OZgsZqjXeuogv5EBUxhn4w gJfw2opDsxwuowPrTB4TD1pw2DPM/kxhMkNCYH6tA3J9T9U2SP9rtok+otS+krvf 3EatmZJV3UW244Ins620oCPo/bPZ4w1oSOrJ3gkdPwKA2KAT2aZsrF3/I63Me+Cn VztkmLLaF4Uk1fGs/5pLuVR/9BqF9SncvcCDNUty/ww0OatlFjoVH6e+iXreKQla 05kBYEnFlbSvktrh2/TvmdxQNMKtdpvJQI4cC3CIPFqMHg2mCUV0g== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 03/10] ppc/pnv: Handle stash command in PowerNV SBE Date: Tue, 10 Mar 2026 18:16:10 +0530 Message-ID: <20260310124619.3909045-4-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=ds3Wylg4 c=1 sm=1 tr=0 ts=69b012ae cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=pGLkceISAAAA:8 a=rjUXpLR2p4wDE8UIozkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX6sh0sJYZ9MW5 6p7HQ0SpGCUOUiR6RM4mzgJcqoLkXYWoNKy9rv2YlEmfHGkkamqNSOuFw2plJXw7AFUjcw4f8KC o1nsMqjkepQn5uwGbZBBwSCrvlzhi1nuST6MrQ6tMVDgkS7d67sBull1fa2WJYwtZaA06A4h70w 0Z709SOtfQeYHCfPHE8TJlYWUK3jx3NJif9fpl+VNkaDxUVdcXO/9GX0BXSWu6JPeGpXME4qJzd VVID245PB/fSX36u4sQZwCtnprkdaTSlF8i7JMWom0gp3fvi41CdJbqqWx2cRo+TC/TWJ8g2NvL sjxgRZGiINS5WIIZESpchhvIqv/qvsr2q4a5tCwrMdmPsX3IVr1by3EYahWa8lSXQnzBeJfAjw1 4ospd+5u15PROYg16UZnBdDLolXjgP2pSuk+VjSqEkPGewwFDlMwnU5uio4wFY2lPqOsfy2YhIW MTS3c+a65l9gk2usbjg== X-Proofpoint-GUID: jO6WdJehgmlJlhkdhBD_TyZlGjBvHCg8 X-Proofpoint-ORIG-GUID: 0qx8BC-_MpatZozhcyxQPGgp2IN8uYZ4 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_02,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 clxscore=1015 impostorscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146858023154100 Content-Type: text/plain; charset="utf-8" Earlier since the SBE_CMD_STASH_MPIPL_CONFIG command was not handled, so skiboot used to not get any response from SBE: [ 106.350742821,3] SBE: Message timeout [chip id =3D 0], cmd =3D d7, s= ubcmd =3D 7 [ 106.352067746,3] SBE: Failed to send stash MPIPL config [chip id =3D= 0x0, rc =3D 254] Fix this by handling the command in PowerNV SBE, and sending a response so skiboot knows SBE has handled the STASH command The stashed skiboot base is later used to access the relocated MDST/MDDT tables when MPIPL is implemented. The purpose of stashing relocated base address is explained in following skiboot commit: author Vasant Hegde Fri Jul 12 16:47:5= 1 2019 +0530 committer Oliver O'Halloran Thu Aug 15 17:53:39 2019= +1000 SBE: Send OPAL relocated base address to SBE OPAL relocates itself during boot. During memory preserving IPL hostb= oot needs to access relocated OPAL base address to get MDST, MDDT tables. Hence= send relocated base address to SBE via 'stash MPIPL config' chip-op. Durin= g next IPL SBE will send stashed data to hostboot... so that hostboot can ac= cess these data. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv_sbe.c | 37 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 3 +++ 2 files changed, 40 insertions(+) diff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c index 5a2b3342d199..46c5047f1c0a 100644 --- a/hw/ppc/pnv_sbe.c +++ b/hw/ppc/pnv_sbe.c @@ -233,8 +233,11 @@ static void sbe_timer(void *opaque) =20 static void do_sbe_msg(PnvSBE *sbe) { + PnvMachineState *pnv =3D PNV_MACHINE(qdev_get_machine()); + MachineState *machine =3D MACHINE(pnv); struct sbe_msg msg; uint16_t cmd, ctrl_flags, seq_id; + uint64_t mbox_val; int i; =20 memset(&msg, 0, sizeof(msg)); @@ -265,6 +268,40 @@ static void do_sbe_msg(PnvSBE *sbe) timer_del(sbe->timer); } break; + case SBE_CMD_STASH_MPIPL_CONFIG: + /* key =3D sbe->mbox[1] */ + switch (sbe->mbox[1]) { + case SBE_STASH_KEY_SKIBOOT_BASE: + mbox_val =3D sbe->mbox[2]; + if (mbox_val >=3D machine->ram_size) { + qemu_log_mask(LOG_GUEST_ERROR, + "SBE: skiboot_base 0x%" PRIx64 " exceeds RAM size 0x%" P= RIx64 "\n", + mbox_val, machine->ram_size); + return; + } + + pnv->mpipl_state.skiboot_base =3D mbox_val; + qemu_log_mask(LOG_UNIMP, + "Stashing skiboot base: 0x%" HWADDR_PRIx "\n", + pnv->mpipl_state.skiboot_base); + + /* + * Set the response register. + * + * Currently setting the same sequence number in + * response as we got in the request. + */ + sbe->mbox[4] =3D sbe->mbox[0]; /* sequence number */ + pnv_sbe_set_host_doorbell(sbe, + sbe->host_doorbell | SBE_HOST_RESPONSE_WAITING); + + break; + default: + qemu_log_mask(LOG_UNIMP, + "SBE: CMD_STASH_MPIPL_CONFIG: Unimplemented key: 0x" TARGE= T_FMT_lx "\n", + sbe->mbox[1]); + } + break; default: qemu_log_mask(LOG_UNIMP, "SBE Unimplemented command: 0x%x\n", cmd); } diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index c544984dc76d..60d6ede48209 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -8,11 +8,14 @@ #define PNV_MPIPL_H =20 #include "qemu/osdep.h" +#include "exec/hwaddr.h" =20 typedef struct MpiplPreservedState MpiplPreservedState; =20 /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { + /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ + hwaddr skiboot_base; bool is_next_boot_mpipl; }; =20 --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146867; cv=none; d=zohomail.com; s=zohoarc; b=CA/Tad+y83Jp7+AgY07y+UmY/9UuksqCiQWEYhD510q+lFpwNVCAok3g0T/DifGatewlkfYDT1SRwk4+D1+fvGipTQoy6g0RZnA4gla+fW+El+bPSpBP/LID5jyJKyLy0O8HqWFUOcXMgS0cbn3kxW8ZQYScRbmUJnnnSR6Ef8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146867; 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=05yWi1TQoGUqbpd6Rj7c/SZZDynmc7ZdELkxaSTnWCU=; b=BgbsFviiMBtcvMs+FNaVDqlDXIIgexfgaq74pCu6X3/PlxiaUIhhucbcndIRdtHksiLBLFFJ+OH+CKFsxCHdr2RjQruE02/7s3udAbgNOUwGPhH5TVwrA7qqtAuFFEtd+NGxchQeFh1lMTAcQAbcS/pI6UmQuhygMsUQVkK6Wr0= 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 1773146867417136.47752141044475; Tue, 10 Mar 2026 05:47:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUk-0005BM-Tw; Tue, 10 Mar 2026 08:47:31 -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 1vzwU0-00051e-8m; Tue, 10 Mar 2026 08:46:50 -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 1vzwTy-00038a-FH; Tue, 10 Mar 2026 08:46:44 -0400 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62AAThT91554633; Tue, 10 Mar 2026 12:46:41 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 4crd1mjg7f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:40 +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 62AB61Li015653; Tue, 10 Mar 2026 12:46:40 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4crybn93fv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:40 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkaRI25231622 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:36 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 14B9820040; Tue, 10 Mar 2026 12:46:36 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CA7712004B; Tue, 10 Mar 2026 12:46:33 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:33 +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=05yWi1TQoGUqbpd6R j7c/SZZDynmc7ZdELkxaSTnWCU=; b=nO2ZT6+T1ylIEOhMtZ9BHS52NcHrJM6Wr LtxsI77NFjxcg7tSvYNVdNDw7U7N7Inu8VtjGKV8nTI2L7qPOZCRXZRd4vod7QC2 kpS++VztN8cq1BmvpPzaq1RH8FBlrB0nk2PNo5WAHc3UpyB9rRf5qkpeXMFyyDco HQau1Aro4k3ZkoPXvi0TpwzSEN8cj+QPck7sk/IWwMI4ArZNiMhPnwrb2XLMXtAf IpzQkS8SliGA89FToWEiPO4ANuL/HftevzhgvBPZADl33xaHR/Yq4FUpkL/A02C4 XhyHRYs4guSlmiUFmsd86gG1eIUBP7GAOaHN2dsqkq8rBoQV3Lppw== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 04/10] pnv/mpipl: Preserve memory regions as per MDST/MDDT tables Date: Tue, 10 Mar 2026 18:16:11 +0530 Message-ID: <20260310124619.3909045-5-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=ds3Wylg4 c=1 sm=1 tr=0 ts=69b012b1 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=V8glGbnc2Ofi9Qvn3v5h:22 a=VnNF1IyMAAAA:8 a=uldKd1TX8WFnlnzwhmkA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX1fD6yIN1ja8d xWUsTdtdp/ayfDA1jZwb7cL9ZURWfbD+dZUFRS8yMeor0F9GrzKB9QY+Y/4+DS4HLhDKB/0w4mc bKGemZBPTS9aVVjDf4lf/eVFUbzzERUYLBH6q8RAVby2Msl3a5x5lGRB+0y6l1WSiSZgBluZKW9 kFW8Ro0xv/p4n8PRn+HNW1/Rk56Pf5LOG9p0Mmm0FylemCfZ7QbxgHv9YGSFvyoSL8OqR8gzDVZ q3/w2JWax6ia2nbiLLvii9NzoQR3qMnnCb4HuIXRvCk9fEsxiUOoN/3Up+F6IV0La9792gD+vNB H7rrtr3jfeRK2JmahXp79WuuZVrd8vXxCFHgPN0D06K2OMX023cZp4JP2nzpmnhlejvZy+O1CAN pl74Wv6J+5WkZHB4s5oJIp1YpZk/vKvYE82CQVuomr8sbakXHaObEW1wlA2bzR2vn4ataElKbDw 8L7xz2Ow8mGVrv5AspA== X-Proofpoint-GUID: 8elbdCplVBn6vrFEd4EDzsG98b-VywE_ X-Proofpoint-ORIG-GUID: y1DsprN-FtqoiwsWjHbmfeI29DaFnnn7 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_02,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 phishscore=0 clxscore=1015 impostorscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146869306158500 Content-Type: text/plain; charset="utf-8" Implement copying of memory region, as mentioned by MDST and MDDT tables. Copy the memory regions from source to destination in chunks of 32MB Note, qemu can fail preserving a particular entry due to any reason, such as: * region length mis-matching in MDST & MDDT * failed copy due to access/decode/etc memory issues HDAT doesn't specify any field in MDRT to notify host about such errors. Though HDAT section "15.3.1.3 Memory Dump Results Table (MDRT)" says: The Memory Dump Results Table is a list of the memory ranges that have been included in the dump Based on above statement, it looks like MDRT should include only those regions which are successfully captured in the dump, hence, regions which qemu fails to dump, just get skipped, and will not have a corresponding entry in MDRT Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv_mpipl.c | 162 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 86 ++++++++++++++++++++ 2 files changed, 248 insertions(+) diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index d8c9b7a428b7..cef1fe2c4056 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 diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index 60d6ede48209..e0518ef2e12e 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -10,13 +10,99 @@ #include "qemu/osdep.h" #include "exec/hwaddr.h" =20 +#include + +typedef struct MdstTableEntry MdstTableEntry; +typedef struct MdrtTableEntry MdrtTableEntry; typedef struct MpiplPreservedState MpiplPreservedState; =20 +/* + * Following offsets are copied from skiboot source code. + * These need to be updated if this changes in a future skiboot version + */ +/* Use 768 bytes for SPIRAH */ +#define SPIRAH_OFF 0x00010000 +#define SPIRAH_SIZE 0x300 + +/* Use 256 bytes for processor dump area */ +#define PROC_DUMP_AREA_OFF (SPIRAH_OFF + SPIRAH_SIZE) +#define PROC_DUMP_AREA_SIZE 0x100 + +#define PROCIN_OFF (PROC_DUMP_AREA_OFF + PROC_DUMP_AREA_SIZE) +#define PROCIN_SIZE 0x800 + +/* Offsets of MDST and MDDT tables from skiboot base */ +#define MDST_TABLE_OFF (PROCIN_OFF + PROCIN_SIZE) +#define MDST_TABLE_SIZE 0x400 + +#define MDDT_TABLE_OFF (MDST_TABLE_OFF + MDST_TABLE_SIZE) +#define MDDT_TABLE_SIZE 0x400 +/* + * Offset of the dump result table MDRT. Hostboot will write to this + * memory after moving memory content from source to destination memory. + */ +#define MDRT_TABLE_OFF 0x01c00000 +#define MDRT_TABLE_SIZE 0x00008000 + +/* HRMOR_BIT copied from skiboot */ +#define HRMOR_BIT (1ull << 63) + +#define __packed __attribute__((packed)) + +/* + * Memory Dump Source Table (MDST) + * + * Format of this table is same as Memory Dump Source Table defined in HDAT + */ +struct MdstTableEntry { + uint64_t addr; + uint8_t data_region; + uint8_t dump_type; + uint16_t reserved; + uint32_t size; +} __packed; + +/* Memory dump destination table (MDDT) has same structure as MDST */ +typedef MdstTableEntry MddtTableEntry; + +/* + * Memory dump result table (MDRT) + * + * List of the memory ranges that have been included in the dump. This tab= le is + * filled by hostboot and passed to OPAL on second boot. OPAL/payload will= use + * this table to extract the dump. + * + * Note: This structure differs from HDAT, but matches the structure + * skiboot uses + */ +struct MdrtTableEntry { + uint64_t src_addr; + uint64_t dest_addr; + uint8_t data_region; + uint8_t dump_type; /* unused */ + uint16_t reserved; /* unused */ + uint32_t size; + uint64_t padding; /* unused */ +} __packed; + +/* Maximum length of mdst/mddt/mdrt tables */ +#define MDST_MAX_ENTRIES (MDST_TABLE_SIZE / sizeof(MdstTableEntry)) +#define MDDT_MAX_ENTRIES (MDDT_TABLE_SIZE / sizeof(MddtTableEntry)) +#define MDRT_MAX_ENTRIES (MDRT_TABLE_SIZE / sizeof(MdrtTableEntry)) + +static_assert(MDST_MAX_ENTRIES =3D=3D MDDT_MAX_ENTRIES, + "Maximum entries in MDDT must match MDST"); +static_assert(MDRT_MAX_ENTRIES >=3D MDST_MAX_ENTRIES, + "MDRT should support atleast having number of entries as in MDST"); + /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ hwaddr skiboot_base; bool is_next_boot_mpipl; + + MdrtTableEntry *mdrt_table; + uint32_t num_mdrt_entries; }; =20 #endif --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146836; cv=none; d=zohomail.com; s=zohoarc; b=XfqN4CHLYJPxKL8MkIvL9narrS2PaAV4GgCO636Qv98ix4U+5K9VJJVwvH+FkckCkJpAGzuKA/9VAhVHKDuzom/HHpABe/ClwYlXzKDPvJMbP0R8o53FF/m0kxrVg/yGdutMFm6zAJMFiUNrXTepz+HpeCfWdFv9aG77GNopPVs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146836; 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=akotHcP6DIPEvCAsOev65lj9NPHLjQpnTp3C++OC+iM=; b=TcHiFSk/Q1e7m8XiQ4iBK4X4np/ZhWgNfbXJASDfvrP/ardS42IkCTC0b4ngMcW0y/McVP1lF6qt7peYXY7ODvL1BVDZFLN/dADf9+UbJm8WsgRWrNcHkxPXdvtUvNvMm82nGeICQDtcmyShw10S60kLTYlW05B/wZNzP5r1wDY= 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 1773146836298411.1918385298351; Tue, 10 Mar 2026 05:47:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUH-00054m-42; Tue, 10 Mar 2026 08:47:01 -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 1vzwU5-00051w-9u; Tue, 10 Mar 2026 08:46:51 -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 1vzwU3-00038u-Bs; Tue, 10 Mar 2026 08:46:49 -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 62A8JGAp1997845; Tue, 10 Mar 2026 12:46:44 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 4crcvmaw5j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:44 +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 62ABHdOu023022; Tue, 10 Mar 2026 12:46:42 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ct8ng21dp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:42 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkc5t26214668 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:39 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CEFFD2004B; Tue, 10 Mar 2026 12:46:38 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 651E52004F; Tue, 10 Mar 2026 12:46:36 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:36 +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=akotHcP6DIPEvCAsO ev65lj9NPHLjQpnTp3C++OC+iM=; b=eMlFVTKUl9DgnET42gRrfkDUXT4NCdmSv eJQwX+xueVGgqirT5de6iPjVktcZphJhsZx0i/lw2A7G7epq1oJ9j01OLhMicNgD 1vCUr0D8vurRezI3b7uO1fV4BTnzsYY2YGUhmf7Tjo6lpRUh/gZpxUUXbYrPPnIa bNh4AK0TmWC+2+5Gthv7xWhZyY/tT3c4DNwzhZSYyLNPda+iSlbXfyOPIBE/rbnt Qp6xWV4bDcVrSZLp/QdVXTJY1cnj2fdnNA+MyEvAm2WJlhV6tdOe0vexZB3T3o/z fJqIDbS+VfWbeRK+HaRmeYbu5eN0/KVZ92qwAAJ1lXDuGRr6ggl/A== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 05/10] pnv/mpipl: Preserve CPU registers after crash Date: Tue, 10 Mar 2026 18:16:12 +0530 Message-ID: <20260310124619.3909045-6-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-GUID: 2rwFeaY7vvWroT-XQTZ-4mME3p6dxVZ- X-Proofpoint-ORIG-GUID: mioafPqzU9Zdr9iPTMCkwkSE6aMY5nRx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX8ur0gEf1yJYX buxu14YCvd3PZVFf6zfiHKlgAvrlew7h62378rRn5SOYGyhrU8qbjJs7jsTvlqewlaUUeIUN9Jg 5Q5MCLtEp3o0CV6uOqGojKmkD78MciafaAcNIlHj7HHJADfCCbeCrjRpa49x+7w7UraJ94tiDgx qX8G333D7na5B9s/QMc1f2KNOdbBaSGiQ1q3IDe8+IjpSyH99IqZADTR4L261muHc354hdiB97L 6JG73Wa5HWafHkB1U8uzEFGIq9dLovswhSuIAxgXYkN/GibTaws27fIhQoFELTXmhKSDoAJw55H z5axJma0cKv3HsvqZxuNZJ1xEOdtfG4iVHPYy2FGQz/oc9ovrE3P6YGE27sRO28eu5Jl5Z5pZsw qdfiQ6STwied3NoH41/P3Up/5U06mWglyvTQltHgmVTiKCZ3wimerK2OgBM5g0y/6VAcI4GyaEi fTwkixgJFsQptDSP/uw== X-Authority-Analysis: v=2.4 cv=B5q0EetM c=1 sm=1 tr=0 ts=69b012b4 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=wbqgZbxrT7QHuDENgcwA: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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146838246158500 Content-Type: text/plain; charset="utf-8" Kernel expects the platform to provide CPU registers after pausing execution of the CPUs. Currently only exporting the registers, used by Linux, for generating the /proc/vmcore Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv_mpipl.c | 154 +++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv_mpipl.h | 60 +++++++++++++++ 2 files changed, 214 insertions(+) diff --git a/hw/ppc/pnv_mpipl.c b/hw/ppc/pnv_mpipl.c index cef1fe2c4056..308948b829cd 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; diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h index e0518ef2e12e..a602d6bef48d 100644 --- a/include/hw/ppc/pnv_mpipl.h +++ b/include/hw/ppc/pnv_mpipl.h @@ -15,6 +15,10 @@ typedef struct MdstTableEntry MdstTableEntry; typedef struct MdrtTableEntry MdrtTableEntry; typedef struct MpiplPreservedState MpiplPreservedState; +typedef struct MpiplRegDataHdr MpiplRegDataHdr; +typedef struct MpiplRegEntry MpiplRegEntry; +typedef struct MpiplProcDumpArea MpiplProcDumpArea; +typedef struct MpiplPreservedCPUState MpiplPreservedCPUState; =20 /* * Following offsets are copied from skiboot source code. @@ -49,6 +53,8 @@ typedef struct MpiplPreservedState MpiplPreservedState; =20 #define __packed __attribute__((packed)) =20 +#define NUM_REGS_PER_CPU 66 /*(32 GPRs, 34 SPRs)*/ + /* * Memory Dump Source Table (MDST) * @@ -95,6 +101,55 @@ static_assert(MDST_MAX_ENTRIES =3D=3D MDDT_MAX_ENTRIES, static_assert(MDRT_MAX_ENTRIES >=3D MDST_MAX_ENTRIES, "MDRT should support atleast having number of entries as in MDST"); =20 +/* + * Processor Dump Area + * + * This contains the information needed for having processor + * state captured during a platform dump. + * + * As mentioned in HDAT, following the P9 specific format + */ +struct MpiplProcDumpArea { + uint32_t thread_size; /* Size of each thread register entry */ +#define PROC_DUMP_AREA_VERSION_P9 0x1 /* P9 format */ + uint8_t version; + uint8_t reserved[11]; + uint64_t alloc_addr; /* Destination memory to place register data = */ + uint32_t reserved2; + uint32_t alloc_size; /* Allocated size */ + uint64_t dest_addr; /* Destination address */ + uint32_t reserved3; + uint32_t act_size; /* Actual data size */ +} __packed; + +/* + * "Architected Register Data" in the HDAT spec + * + * Acts as a header to the register entries for a particular thread + */ +struct MpiplRegDataHdr { + uint32_t pir; /* PIR of thread */ + uint8_t core_state; /* Stop state of the overall core */ + uint8_t reserved[3]; + uint32_t off_regentries; /* Offset to Register Entries Array */ + uint32_t num_regentries; /* Number of Register Entries in Array */ + uint32_t alloc_size; /* Allocated size for each Register Entry */ + uint32_t act_size; /* Actual size for each Register Entry */ +} __packed; + +struct MpiplRegEntry { + uint32_t reg_type; + uint32_t reg_num; + uint64_t reg_val; +} __packed; + +struct MpiplPreservedCPUState { + MpiplRegDataHdr hdr; + + /* Length of 'reg_entries' is hdr.num_regentries */ + MpiplRegEntry reg_entries[NUM_REGS_PER_CPU]; +}; + /* Preserved state to be saved in PnvMachineState */ struct MpiplPreservedState { /* skiboot_base will be valid only after OPAL sends relocated base to = SBE */ @@ -103,6 +158,11 @@ struct MpiplPreservedState { =20 MdrtTableEntry *mdrt_table; uint32_t num_mdrt_entries; + + MpiplProcDumpArea proc_area; + + MpiplPreservedCPUState *cpu_states; + uint32_t num_cpu_states; }; =20 #endif --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146890; cv=none; d=zohomail.com; s=zohoarc; b=gGXNuhw7srTeqtomD1XTqmKW2cxS/62v1sIXkfInRDFyUGyWgsJWc7hAp6sy+4gtE3ioeRHlMXPm6YOvSGmfKhLc03EH4khDpb5rOVgNHxlp1TrznjWHI542gCrO+skf+rXJB8wpyiF9H8fdIjx3kTP+QvlNtUA2RU1dKkiXGXM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146890; 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=KDNKF3RXtxUcBaU1zEVwzfQj+RyanbyR+5WGtctHqT4=; b=Ue0XHACxI/kStZ3LD69gdQkdzhZ9Mp5oBDy0w/rqpqwCYFNSv2hTUMiSb3wXheJlc1ChWRsw9nbYKLbGsXs7vH7nTD9+Tw38yM0ikCauU/4MQ8LAi0XrNmDoLmBD6vmnw+rgW0R6qLO2VZUenac5fHQ/O4O8TT/C0HNo2u2eU54= 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 1773146890004584.6731577099513; Tue, 10 Mar 2026 05:48:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUg-0005AL-9F; Tue, 10 Mar 2026 08:47:28 -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 1vzwU7-00051x-KI; Tue, 10 Mar 2026 08:46:52 -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 1vzwU4-000390-S8; Tue, 10 Mar 2026 08:46:50 -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 62A5ISDg719749; Tue, 10 Mar 2026 12:46:47 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 4crcywau7b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:46 +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 62ABUUsm015638; Tue, 10 Mar 2026 12:46:45 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4crybn93g7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:45 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkf5j45285644 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:41 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7D78820040; Tue, 10 Mar 2026 12:46:41 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3E8DA2004B; Tue, 10 Mar 2026 12:46:39 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:39 +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=KDNKF3RXtxUcBaU1z EVwzfQj+RyanbyR+5WGtctHqT4=; b=TlL13Ie6XOtspbxbUFI1DhJruLeqUi0bB b3rrQyHvcvtj8zHHxN+qKxfEo9Nf8yApxquvPcX5DLhhRD7CAmk8vO2DdFLcEqju c6dntTwtHesjQo/rGhu4kv7VwsXdaRmP6K0Et6F+NhMlOd2+jMu5ygaQrDMlZ/A0 ShhXtBWytk/gFZ72B5eJMO3FHkl12/c4WdVzDWY1MedAoQ9MHJf1w8Qalz8L87iz 8Fq6heV1vvJoIE/9AkRXW4idjfIzeUaaRxXEB1kdGuw0mdSn7auBQKJc1WP88iJs IiYzWYwT97ifNxv3tbn1PwXOtSC/SMTMRGb7pVZLexCsoO7Ih8jhw== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 06/10] pnv/mpipl: Set thread entry size to be allocated by firmware Date: Tue, 10 Mar 2026 18:16:13 +0530 Message-ID: <20260310124619.3909045-7-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX1cQ9CPgg1TZR WHKr6FAQifmDXDOqCZMN5mGiqxW+N92NYXDq/7i4Hq90qoOgcPaM4vMwJfjrm/GCol5H/QelDfl STz/azvjenAttFUiyktaLiHGm0jSxY1v7txek9nCIEm+7lYebwkC4cRe+6a+WeYBtzPyHxzDUwV WxeGfR3gccGy0xGNlAnEwLHBaiq8Bt8waqMA2kakVjdqZPkYzYOAMCQqOimIvfLh5XSwQnqNLoC wM/GDhfd3kHtP6e8v2xH+cZcRY0vPGFMo/T8VamzSewsWUc4ywESEiVKO7Ax78PwE7LAcPiT6Tk 5sT0BekZZj165KKkMEr2Ofe4MLy+8MTqtK2RGjBGpUBvVJWnXzaM2UtrCFIOLlB7ZB9NHe03F88 ukn+XDinhm4VWOQa8A2oWrOxrHd6R54fGAx2hVvEiRgU5MZa2bNSsDz2MtoUfNXMoIyqwIg0EGZ YtIYZQ2Z2PHPa6HeHSw== X-Authority-Analysis: v=2.4 cv=QaVrf8bv c=1 sm=1 tr=0 ts=69b012b7 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=x2nWBmqi6rLqIJY0GGYA:9 X-Proofpoint-GUID: jBRAPitxvtHMxFi4BpH7EvoEdWieyjBs X-Proofpoint-ORIG-GUID: QE0QNIBoo8GtvJn7y1tCltTVX-Nrqu6b 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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146891425158500 Content-Type: text/plain; charset="utf-8" Set the "Thread Register State Entry Size" that is required by firmware (OPAL), to know size of memory to allocate to capture CPU state, in the event of a crash Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 1513575b8f37..3038b1626c54 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -781,6 +781,30 @@ static void pnv_reset(MachineState *machine, ResetType= type) _FDT((fdt_pack(fdt))); } =20 + if (!pnv->mpipl_state.is_next_boot_mpipl) { + /* + * Set the "Thread Register State Entry Size", so that firmware can + * allocate enough memory to capture CPU state in the event of a + * crash + */ + + MpiplProcDumpArea proc_area; + + proc_area.version =3D PROC_DUMP_AREA_VERSION_P9; + proc_area.thread_size =3D cpu_to_be32(sizeof(MpiplPreservedCPUStat= e)); + + /* These are to be allocated & assigned by the firmware */ + proc_area.alloc_addr =3D 0; + proc_area.alloc_size =3D 0; + + /* These get assigned after crash, when QEMU preserves the registe= rs */ + proc_area.dest_addr =3D 0; + proc_area.act_size =3D 0; + + cpu_physical_memory_write(PROC_DUMP_AREA_OFF, &proc_area, + sizeof(proc_area)); + } + cpu_physical_memory_write(PNV_FDT_ADDR, fdt, fdt_totalsize(fdt)); =20 /* Update machine->fdt with latest fdt */ --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146913; cv=none; d=zohomail.com; s=zohoarc; b=Ob+1WCdXTY8KwUIOI/TTpgNTs3qn/5hRjMdB7Vibc7vqA+Pq+hpZFTAC4x6TGWqplfGyKq2YxDYWEMHu5GeUI8AjX4vERBPe0smwBws6bo8HSP7sQT8wI4ZL4q2hQkB22Nly4/hONUE7edDOO9wyEeV4FYUyLX4Elv/sz2ESngE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146913; 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=2J5Pmz6j4rMsPbLmJpAoOlirGiO9n3jAglebaPyOPHs=; b=JW3B4Rg0DNNak6nQqSLCag9l1eBobolqcLIwMS24R7ofC/rWppwDlMDIJPoRk9nWL5+iz8NTZa0AsX/c7rMINXJ/eu8h3EY8tS5mvMuIzWGY4oErdGcE8mGC4lYAKct59qPsITPk08xqmkHDIKuyrW/EquxUMBcHvyMLXO0elSU= 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 1773146913748161.95682180406516; Tue, 10 Mar 2026 05:48:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwVA-0005U5-O5; Tue, 10 Mar 2026 08:47:59 -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 1vzwUA-00052f-Ja; Tue, 10 Mar 2026 08:46:56 -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 1vzwU7-00039P-Us; Tue, 10 Mar 2026 08:46:54 -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 62A9mjGK1503098; Tue, 10 Mar 2026 12:46:50 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 4crcuyaucb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:49 +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 62ABOM1p022994; Tue, 10 Mar 2026 12:46:48 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ct8ng21dt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:48 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkici46399896 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:44 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 75AB920043; Tue, 10 Mar 2026 12:46:44 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EF9452004B; Tue, 10 Mar 2026 12:46:41 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:41 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=2J5Pmz6j4rMsPbLmJ pAoOlirGiO9n3jAglebaPyOPHs=; b=GzKwqcJhXvko+1Sn5R6gq5c3pRNnJ/l0T g5uc/kljLwm7/ub7fREw7ABmf0IxmQczuhNSMA37WrL2YzpS1GSxAOv2dJOgRIWT OOr8xGMBKOH6Y0x8/MEn2mvib0drdT7z98k/OllK2VIDvhFh4bSU1jZT9TrbT7Xv 3/EjB5dRnbplNk07U4aV82X3k7RdQEG2afZvajZf4kTWtVK/7lxwdMhFreUpNvmG xQTBLeNimUcr/DNKx082P4CxN04cbz9kesowLhNgRNFI/mM07dpo+FXBPy/4AtFi 9FdkO0dyYU4nu5EXFW6WfA9tNij87QywVDNLZaP0bNvxbbm7VCqJQ== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 07/10] pnv/mpipl: Write the preserved CPU and MDRT state Date: Tue, 10 Mar 2026 18:16:14 +0530 Message-ID: <20260310124619.3909045-8-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=EK4LElZC c=1 sm=1 tr=0 ts=69b012ba cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=FAZnT6m9RyNNhMT2MuIA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX/PZlg74rvUiv BGH+fDwonlbiSIMK18mwdL9iiFzH95FPHPPReV9zGfzHEvPi5xgyDb/QJdF5PWW6mk0zV0KnJmA Jjz3QaDXAr8ACiTQjUEK2txE1dbNaEmCp0fFuKLjBax7dOThYC00ytoQRNyeEQ+sgDe+B3UJUEe OzBUEgkjpHkisaJam17G62gsO0P+crAkmTI8lgauCOAEKH0IA39kry9H4SatUI481LTVgHifBs0 /PDZFzt9MHA+Nw1gqjk6TvCmp3ZqTlG8mrsCD77gKt487ozPFl8Ot0v550sc4bXhukjYaZlWSUW p1hSLT5VrfWXwGj+yNC/sP+NxVJJ4Eh0A05EEe0H9LykCDAA9ry2yIPOyEqF8eVpizCbsemyA9s lfJSKFmCEduqDywDOdLB7T/n73CnjD81FWmd9VeHtgOw7CWwVEleB6nPO8k8RjSKLB8XkP7wp8e jpC3RzY1H8M+hBOiWpg== X-Proofpoint-GUID: FUKI2fjpdOtzAawnxzZLIlHvsa69nOmK X-Proofpoint-ORIG-GUID: bOl4GoJPIRPNk_UlY_ckYYzW3NAeOgx0 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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146915001154100 Content-Type: text/plain; charset="utf-8" Logic for preserving the CPU registers and memory regions has been done in previous patches. Write those data at the relevant memory address, such as PROC_DUMP_AREA for CPU registers, and MDRT for preserved memory regions. Also export "mpipl-boot" device tree node, for kernel to know that it's a 'dump active' boot Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv.c | 39 +++++++++++- hw/ppc/pnv_mpipl.c | 140 +++++++++++++++++++++++++++++++++++++++++++ include/hw/ppc/pnv.h | 1 + 3 files changed, 179 insertions(+), 1 deletion(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 3038b1626c54..2db5be821e05 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 308948b829cd..f5b228f5ba3c 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); +} diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 7d73629f112a..98fe10fb4f2e 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -295,5 +295,6 @@ void pnv_bmc_set_pnor(IPMIBmc *bmc, PnvPnor *pnor); =20 /* MPIPL helpers */ void do_mpipl_preserve(PnvMachineState *pnv); +bool do_mpipl_write(PnvMachineState *pnv); =20 #endif /* PPC_PNV_H */ --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146914; cv=none; d=zohomail.com; s=zohoarc; b=TpvW0HLvBH4KCYeR8ysyHB5AOBSz6OO7qnRzP8xZVPdWk40r/YTW7KHq1CWvwrqhmrJUMYLq2M9CttdvmTqJnhHXIXmcE0hFeE74iMiv/n4pORWLiku84NPCqq29xJGwltDl0uOmszkrPab5XgSROXMJQ4ee0roZ8V50LwDbnok= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146914; 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=2OYDG9dEIDfFAzRNDmjRBdNqZ0IaQ9OerNLs36IA2JI=; b=Rwt/jwaNb4YwHqTCT2XpyevjcAk78dlX5OXM3vXnNhhio8mzg/Wf3nuTftlTl7gwtib65PmnTuRrx/aYxTL2RC8HMD2/V3MbSNu7raI+fJrvU3XvlTiOsC92MlTOTtQ9HK5NxNp13tfZq4HEa5AHCIvE0XkK5KsvngaaXCBqVlw= 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 1773146914316467.18585949525925; Tue, 10 Mar 2026 05:48:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwVP-0005qu-Eq; Tue, 10 Mar 2026 08:48: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 1vzwUB-00052q-1t; Tue, 10 Mar 2026 08:46: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 1vzwU9-00039q-EM; Tue, 10 Mar 2026 08:46:54 -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 62A84ApQ1555330; Tue, 10 Mar 2026 12:46:52 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 4crcvraj5k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:51 +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 62ACSMQV025064; Tue, 10 Mar 2026 12:46:50 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4cs0jk0wh0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:50 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACklnS17105224 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:47 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 261442004D; Tue, 10 Mar 2026 12:46:47 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D8D1820040; Tue, 10 Mar 2026 12:46:44 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:44 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=2OYDG9dEIDfFAzRND mjRBdNqZ0IaQ9OerNLs36IA2JI=; b=nzPy6zcn2awHeV2eA65e22sqSa7Y4MqXN 7tn6yVqUa32x6S/Ha87iaj8I7xrc/WI5DLWvHR6KVCAuLdoAhEBrF1xKA7e0HOPW RES4eOd3dUP5wHKstlMta41IP+tEEE0ImhWitjCLOGKiPk8VyC1tqyQpFqdvjwe0 51UFn0V1ZhPLO70KzUlWRmN+bUJqImXFAsmafMT1QE0WplsyASp1/uGh6XIywwWz giQpAhGXI7k1Qyj0/wjbDbA4K1BFNUMdBSUVmd9T3x29gPWLcvtmfJK8AYRThGO7 ahY281jUnIcZeMRuBcrVMOwyaC5wWAQd6hpf9LLOun3KR9U+y3E9Q== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 08/10] pnv/mpipl: Enable MPIPL support Date: Tue, 10 Mar 2026 18:16:15 +0530 Message-ID: <20260310124619.3909045-9-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX8khilC+ap3ds qDs+INJtQxSxZs+ldGMufHIHnMsZyOQKzsHgnEEkj3fpf14kb3Uqb/GWSW8XoAsqxZHHdCjg7DA 2VvqoOfeNRSJwnixGYBWDyNg9BCWoGSpy3/tzPB4E7HDTDLKw7vhd0iIUlJcrDDqs9X4a1sgt6a 3AS+B4c2xRNjxekfdZF4YNZLnB9Bh+cy1WWYDQLzcSWFzF2Uu4mXtLxvzTtt2q9TcTZ6jt0NTvc PuzPk1QXlq6e9/m0aZv9UoqeDtAWNzaQsbPZkINEKWyzQwWj+XuPtF9fpf+TES3vSzgYzHqBY7i MxG9YOAReuNjQK+9Xry8nXLFxo45C/2g5vPEVraxn1P28P0l06g/smaE5JgfnOzSvFEQH0bOYRb kI0if7ebsoQ2eB2Ah3NL+W3PY72QkAymW3tS4FWcwAmN6rf3tkYgKn6EprdO+4/mrCgBDLaDZEq cASo27K6cFOyZglqe2g== X-Proofpoint-GUID: RjPYvxYMnU_vLNZNRf0y2QpJIUn_xv_2 X-Proofpoint-ORIG-GUID: 5f0sSbsLmNcN4UbobV6awlinxLr1wsqq X-Authority-Analysis: v=2.4 cv=QoFTHFyd c=1 sm=1 tr=0 ts=69b012bc cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=dCvegdiEg4V6ml2xVIcA: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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=adityag@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146916743154100 Content-Type: text/plain; charset="utf-8" With all MPIPL support in place, export a "dump" node in device tree, signifying that PowerNV QEMU platform supports MPIPL Also, export fw-load-area dt node, which has details about where the kernel & initrd were loaded, so that kernel can verify whether the kernel/initrd images were loaded within the boot memory region. QEMU just exports these details in fw-load-area, the check for boot memory region is done in kernel. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- hw/ppc/pnv.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 2db5be821e05..6f59fc0d3e33 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -54,6 +54,7 @@ #include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_pnor.h" +#include "hw/ppc/pnv_mpipl.h" =20 #include "hw/isa/isa.h" #include "hw/char/serial-isa.h" @@ -672,6 +673,39 @@ static void pnv_dt_power_mgt(PnvMachineState *pnv, voi= d *fdt) _FDT(fdt_setprop_cell(fdt, off, "ibm,enabled-stop-levels", 0xc0000000)= ); } =20 +static void pnv_dt_mpipl_dump(PnvMachineState *pnv, void *fdt) +{ + int off; + + /* + * Add "dump" node so kernel knows MPIPL (aka fadump) is supported + * + * Note: This is only needed to be done since we are passing device tr= ee to + * opal + * + * In case HDAT is supported in future, then opal can add these nodes = by + * itself based on system attribute having MPIPL_SUPPORTED bit set + */ + off =3D fdt_add_subnode(fdt, 0, "ibm,opal"); + if (off =3D=3D -FDT_ERR_EXISTS) { + off =3D fdt_path_offset(fdt, "/ibm,opal"); + } + + _FDT(off); + off =3D fdt_add_subnode(fdt, off, "dump"); + _FDT(off); + _FDT((fdt_setprop_string(fdt, off, "compatible", "ibm,opal-dump"))); + + /* Add kernel and initrd as fw-load-area */ + uint64_t fw_load_area[4] =3D { + cpu_to_be64(KERNEL_LOAD_ADDR), cpu_to_be64(KERNEL_MAX_SIZE), + cpu_to_be64(INITRD_LOAD_ADDR), cpu_to_be64(INITRD_MAX_SIZE) + }; + + _FDT((fdt_setprop(fdt, off, "fw-load-area", + fw_load_area, sizeof(fw_load_area)))); +} + static void *pnv_dt_create(MachineState *machine) { PnvMachineClass *pmc =3D PNV_MACHINE_GET_CLASS(machine); @@ -734,6 +768,9 @@ static void *pnv_dt_create(MachineState *machine) pmc->dt_power_mgt(pnv, fdt); } =20 + /* Advertise support for MPIPL */ + pnv_dt_mpipl_dump(pnv, fdt); + return fdt; } =20 --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146943; cv=none; d=zohomail.com; s=zohoarc; b=RZBeetI+BoseQ80m3/ortrt7uPEaDitAJuHp+aeODpFjmRdOQXs+YujhwJX8jb/cipzvzIyBjd3AN1slM+UsvyyVM1en9iSRXXUvXtxHMeJdNbx/2EXxUq8//t3F2jQnjCwVdyEeM1MhFQfKetpHMxnuH+hpNeDKFL2eap5k+XU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146943; 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=gCouDQl/xUhsUxOzZ/1sjor9Q++aGzChfSsdF05Mb5E=; b=DjqqDCpLcPd/WhemaZ8hEYmRGzo1Um9Wkq3v7zY8qqfEyqvONW8QZp9JOSYnggEgUvRw/AtjRD8LOyX9Rk+CtyHzxWnqrzVAUtJ6ukdwruBqUazvFsJbEzHihdHYabyaSCOqoX+lKjhPXf5EenRtSX7JrBdkNE27DFQrAcTmC+A= 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 17731469439730.06920600373473462; Tue, 10 Mar 2026 05:49:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwVR-0006CD-MI; Tue, 10 Mar 2026 08:48:13 -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 1vzwUF-00054E-Gu; Tue, 10 Mar 2026 08:46:59 -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 1vzwUD-0003AQ-4O; Tue, 10 Mar 2026 08:46:59 -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 62A9JfsE1455623; Tue, 10 Mar 2026 12:46:55 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 4crcuyaucn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:55 +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 62ABHdOv023022; Tue, 10 Mar 2026 12:46:53 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ct8ng21e0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:53 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkoYl28836182 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:50 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 02AB82004D; Tue, 10 Mar 2026 12:46:50 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 86D1820040; Tue, 10 Mar 2026 12:46:47 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46: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=gCouDQl/xUhsUxOzZ /1sjor9Q++aGzChfSsdF05Mb5E=; b=KIOGuUhFqrMtzkMUxpvqLBEfMsD9VrkQ9 g0wPpGvtJHTxNZfr67uedpkdzwSEqVeDF+RRvja07jB5KeiALyF9Q7tPq3u2B3cC Tan+fwsPmdddngxEBV6kxEJtewv+25Bqmu5mTxTBN0NlraDs6z/4SddteuZBo0Ny H05ucyBXwINNbLWTWKi1q7JI5PCzrhN13t/f6ZsWoqF4VIQZhDddO9GHGyi/s6WW oJobNr80v5XG1g3Qf5RyxEDxZR4rJAk7i962sTTfgarDi4LURKcr5TlZa7BCFQE2 1Lzbh9/1sMBMV7IoOygrXjVAMcCfk7AQEUn3gqmx0CKQhJS8U6hPw== From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 09/10] tests/functional: Add test for MPIPL in PowerNV Date: Tue, 10 Mar 2026 18:16:16 +0530 Message-ID: <20260310124619.3909045-10-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=EK4LElZC c=1 sm=1 tr=0 ts=69b012bf cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=xeNidhmBAAAA:20 a=vTr9H3xdAAAA:8 a=VnNF1IyMAAAA:8 a=yF-uCvtE38AvPGpA37UA:9 a=bA3UWDv6hWIuX7UZL3qL:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX9I7d3eDs6rWC UvvQYVPTPVsOIxvMVsx+ZUHdBn7tLtR5Y9UylmP+Mt+5igM9IEQc1eUjljWFk6OWil8Jw9s7fcu LEBBqLmxh8y3qLAi3rrFsokQxULkDIhyV8TyrsVSnEfQwBz+/SP0y0AdJWM2yX9B97PdOviX6u4 DvLe7jB/3UDMHpbZxor6Ur0k76HGUYvJatxvNRfqvqc/MQY/agLiYyBEKxNF5TzpZRq8M4B4Vzb ngFrJszBa4vEsJOdTLORs0+OMoSaG/nIPhV8Wp9H3w0Zdmoi1ph68ydfUz1FBb8o/H+edZuzQTI RdNB+AZBWMvGnu5cU+bNUUIIcdIpDSp1q9mBVBByJT2yfQpPWdMvuk0rWY7UNrNZrbTEIqvMirq kZizLopo+vNDc5vbFhh/lHQ8M6RnZZvvngFRWQ4VSQm7EMNrxhExWQSoouonxxbCZR/gfoPmDfK eoMMd6qNjM/syqv9hQQ== X-Proofpoint-GUID: t_0YIVC6OkDM0-_y4FJZHmNThDQ4HX1M X-Proofpoint-ORIG-GUID: _Og19lAHMSICL2POpcY0WbyfyiajYJu9 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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146945258154100 Content-Type: text/plain; charset="utf-8" With MPIPL support implemented, enable fadump's functional test for PowerNV Also, current functional test for powernv uses op-build's Linux 5.10 image, which doesn't support adding "fadump=3Don" in argument due to this: Kernel is locked down from Kernel configuration; see man kernel_lockdow= n.7 Hence, instead of op-build's image, use the newer fedora vmlinuz as used in FADump PSeries functional test Also due to "bash#" string not showing up, rely on sh: no job control to check if testcase has reached till shell Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- tests/functional/ppc64/test_fadump.py | 35 ++++++++++----------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/tests/functional/ppc64/test_fadump.py b/tests/functional/ppc64= /test_fadump.py index bd9692f64c05..7ea65974e0ea 100755 --- a/tests/functional/ppc64/test_fadump.py +++ b/tests/functional/ppc64/test_fadump.py @@ -14,6 +14,7 @@ class QEMUFadump(LinuxKernelTest): =20 1. test_fadump_pseries: PSeries 2. test_fadump_pseries_kvm: PSeries + KVM + 3. test_fadump_powernv: PowerNV """ =20 timeout =3D 90 @@ -24,11 +25,6 @@ class QEMUFadump(LinuxKernelTest): msg_registered_failed =3D '' msg_dump_active =3D '' =20 - ASSET_EPAPR_KERNEL =3D Asset( - ('https://github.com/open-power/op-build/releases/download/v2.7/' - 'zImage.epapr'), - '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd') - ASSET_VMLINUZ_KERNEL =3D Asset( ('https://archives.fedoraproject.org/pub/archive/fedora-secondary/' 'releases/39/Everything/ppc64le/os/ppc/ppc64/vmlinuz'), @@ -62,16 +58,14 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): # SLOF takes upto >20s in startup time, use VOF self.set_machine("pseries") self.vm.add_args("-machine", "x-vof=3Don") - self.vm.add_args("-m", "6G") + + self.vm.add_args("-m", "6G") =20 self.vm.set_console() =20 kernel_path =3D None =20 - if is_powernv: - kernel_path =3D self.ASSET_EPAPR_KERNEL.fetch() - else: - kernel_path =3D self.ASSET_VMLINUZ_KERNEL.fetch() + kernel_path =3D self.ASSET_VMLINUZ_KERNEL.fetch() =20 initrd_path =3D self.ASSET_FEDORA_INITRD.fetch() =20 @@ -102,16 +96,14 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3D= False): timeout=3D20 ) =20 - # Ensure fadump is registered successfully, if registration - # succeeds, we get a log from rtas fadump: - # - # rtas fadump: Registration is successful! - self.wait_for_console_pattern( - "rtas fadump: Registration is successful!" - ) + # Ensure fadump is registered successfully + if not is_powernv: + self.wait_for_console_pattern( + "rtas fadump: Registration is successful!" + ) =20 # Wait for the shell - self.wait_for_console_pattern("#") + self.wait_for_console_pattern("sh: no job control") =20 # Mount /proc since not available in the initrd used exec_command(self, command=3D"mount -t proc proc /proc") @@ -135,7 +127,7 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): # that qemu didn't pass the 'ibm,kernel-dump' device tree node wait_for_console_pattern( test=3Dself, - success_message=3D"rtas fadump: Firmware-assisted dump is acti= ve", + success_message=3D"fadump: Firmware-assisted dump is active", failure_message=3D"fadump: Reserved " ) =20 @@ -148,7 +140,7 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): self.wait_for_console_pattern("preserving crash data") =20 # Wait for prompt - self.wait_for_console_pattern("sh-5.2#") + self.wait_for_console_pattern("Run /bin/sh as init process") =20 # Mount /proc since not available in the initrd used exec_command_and_wait_for_pattern(self, @@ -166,9 +158,8 @@ def do_test_fadump(self, is_kvm=3DFalse, is_powernv=3DF= alse): def test_fadump_pseries(self): return self.do_test_fadump(is_kvm=3DFalse, is_powernv=3DFalse) =20 - @skip("PowerNV Fadump not supported yet") def test_fadump_powernv(self): - return + return self.do_test_fadump(is_kvm=3DFalse, is_powernv=3DTrue) =20 def test_fadump_pseries_kvm(self): """ --=20 2.53.0 From nobody Sat Apr 11 19:53:12 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=1773146894; cv=none; d=zohomail.com; s=zohoarc; b=gT0mOdz20ZT6AFWSC4ZzkgE02DPQlb0fWE6xCdmSHJNtd2kU2lEIqykGki7I5Q7SMh9DXvNvbzATs/t6OFx7swIQWfUFoSslifci8qOhLNyqNLCdoGOWLx/dCsFYlJANAPWcqvuIAITyRHh8FnAzhMNrnwf1DngM1QILLNEaLPQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773146894; 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=9In4IWyOETzf1NjxZzx8uGE/CodIaAPboOABe4mb3Sw=; b=mMkN7OfUrwzaNdHrmo6UeHlKSXwPtGb+XGTVMZGtdCKlIY8XeQB5dzfdxihhHEoWLTN+vg86Q8OiYFi8htARklJtFoAnTwI66iRMZAjj2xkfE7LfHNe/5K1zRK29DiORwU3hj0o32Iwci0QcHONGYDlSgsCO+7jAkqIRds3Jy2o= 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 1773146894635899.361082177188; Tue, 10 Mar 2026 05:48:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vzwUi-0005BL-Ju; Tue, 10 Mar 2026 08:47:30 -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 1vzwUI-00055F-LM; Tue, 10 Mar 2026 08:47:03 -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 1vzwUG-0003Ao-4M; Tue, 10 Mar 2026 08:47:01 -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 62A99TI11605875; Tue, 10 Mar 2026 12:46:58 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 4crcuyaucu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:58 +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 62ABQiOR023007; Tue, 10 Mar 2026 12:46:57 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ct8ng21e5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 10 Mar 2026 12:46:56 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 62ACkroW52625830 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 10 Mar 2026 12:46:53 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F037C2004B; Tue, 10 Mar 2026 12:46:52 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5C64020043; Tue, 10 Mar 2026 12:46:50 +0000 (GMT) Received: from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.in.ibm.com (unknown [9.109.199.210]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 10 Mar 2026 12:46:50 +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=9In4IW yOETzf1NjxZzx8uGE/CodIaAPboOABe4mb3Sw=; b=opOHh7Le3Wf1SgV2RBwnT9 8DZQL1BCDRg5vQqgwfzbrZdMNob5k66yaLw0+/6z8t9soitmODOpTofUNuKmCvLQ MOhGp8y6qIdBJsxVgEcprQvkJPzmlLHWLUPydbVPeO5nP4nxaji/RWHGM7VAaK0u f0CijX9dOehzQJ8rdYE7XH6ofcDu+SqMQUXUsIA1JTDrRnHW1H38iM+Tvmhk9BNO /KZRMhVSRc2WAH3F6qm2jI9qry6Sn1MGASxYOxN6qhGVRkm1FZ5PhtX8ep9kNX7a ApyGYuHj67PZjsT9QNcQ4oJhhB6QYFeEXJBHhlPIVNceY6VIF3Y5U/PMCDr+m1BQ == From: Aditya Gupta To: Cc: , Hari Bathini , Sourabh Jain , Harsh Prateek Bora , Nicholas Piggin , Miles Glenn , Chinmay Rath , Shivang Upadhyay Subject: [PATCH v5 10/10] MAINTAINERS: Add entry for MPIPL (PowerNV) Date: Tue, 10 Mar 2026 18:16:17 +0530 Message-ID: <20260310124619.3909045-11-adityag@linux.ibm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260310124619.3909045-1-adityag@linux.ibm.com> References: <20260310124619.3909045-1-adityag@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Authority-Analysis: v=2.4 cv=EK4LElZC c=1 sm=1 tr=0 ts=69b012c2 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=uAbxVGIbfxUO_5tXvNgY:22 a=VnNF1IyMAAAA:8 a=KKAkSRfTAAAA:8 a=xAhUsU6pBgj2HNqxJKAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEwMDEwOSBTYWx0ZWRfX1jLMQLvvrfuD deKixvMvJHMGnSXO17HZYEbTTyq7IFhXJ80PZOqvBj8TZPET/gQvXhtLw4tH+15t3gyJwVqTJzW bezd2pZ4pvj5Sj69t2j9ITTwS05wj+LgoAyuzJuEyNAuyi2//eGr1WNhSLRSJuJhqntG1o6xWAz 2rQw2mLWcyeGaqB143RW+2K/Zk9YZc5CLpzqJ9GLienJN224Tk6P6eQa6vfDRShyaW7+5b9qlOA +KT0lrzuHcaxhFaUHfHlCvqjrcA+AhiCzFpvs533Pq8rP0I2X4AzDMewbVyke1Zpo1cBgl5jTd1 644ekiEo0acRnhr1kVaP5mjjUcKZPZOHznsUZKxp29ofKSpPVc0rABImIun7fURYTbMIKTdCWwp 79Yw0Ex6taEptPmVIDydigy0YCTJXyeA8ewNq/tdjAU/+43YVHKSD1r5w45Ab9Ck+ihH6TuwZ1o r2xvQuYmToPmCnQXUDg== X-Proofpoint-GUID: GcEuklIiEWy5R7_GSyUQSbW6j53UyZcc X-Proofpoint-ORIG-GUID: yKNvrIsxnY2iTTeGKFFyJi__KL_sWQCd 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_02,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-2603100109 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=adityag@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -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: 1773146896414154100 Add maintainer and reviewer for MPIPL subsystem. Reviewed-by: Hari Bathini Signed-off-by: Aditya Gupta Reviewed-by: Sourabh Jain Tested-by: Shivang Upadhyay --- MAINTAINERS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 6730cee490cf..a013277ccb95 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3302,6 +3302,14 @@ F: include/hw/ppc/spapr_fadump.h F: hw/ppc/spapr_fadump.c F: tests/functional/ppc64/test_fadump.py =20 +Memory-Preserving Initial Program Load (MPIPL) for PowerNV +M: Aditya Gupta +R: Hari Bathini +S: Maintained +F: include/hw/ppc/pnv_mpipl.h +F: hw/ppc/pnv_mpipl.c +F: tests/functional/ppc64/test_fadump.py + GDB stub M: Alex Benn=C3=A9e R: Philippe Mathieu-Daud=C3=A9 --=20 2.53.0