{"id":2230457,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2230457/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260429183310.12455-4-harshpb@linux.ibm.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.1/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260429183310.12455-4-harshpb@linux.ibm.com>","date":"2026-04-29T18:32:53","name":"[PULL,03/13] ppc/pnv: Handle stash command in PowerNV SBE","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"98e2975fc6efb85eb43c0897e4429d572eb9700d","submitter":{"id":85411,"url":"http://patchwork.ozlabs.org/api/1.1/people/85411/?format=json","name":"Harsh Prateek Bora","email":"harshpb@linux.ibm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260429183310.12455-4-harshpb@linux.ibm.com/mbox/","series":[{"id":502132,"url":"http://patchwork.ozlabs.org/api/1.1/series/502132/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=502132","date":"2026-04-29T18:32:53","name":"[PULL,01/13] ppc/pnv: Move SBE host doorbell function to top of file","version":1,"mbox":"http://patchwork.ozlabs.org/series/502132/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2230457/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2230457/checks/","tags":{},"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=WwxYRG2g;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5Qtl48Zxz1yHX\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 04:34:06 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wI9jJ-0007aa-UO; Wed, 29 Apr 2026 14:33:49 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <harshpb@linux.ibm.com>)\n id 1wI9jE-0007ZW-HB\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 14:33:44 -0400","from mx0b-001b2d01.pphosted.com ([148.163.158.5])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <harshpb@linux.ibm.com>)\n id 1wI9jC-000771-M8\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 14:33:44 -0400","from pps.filterd (m0360072.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63TFsqo01456647\n for <qemu-devel@nongnu.org>; Wed, 29 Apr 2026 18:33:41 GMT","from ppma23.wdc07v.mail.ibm.com\n (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4drn8vjh5r-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)\n for <qemu-devel@nongnu.org>; Wed, 29 Apr 2026 18:33:41 +0000 (GMT)","from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1])\n by ppma23.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 63TINlNx004874\n for <qemu-devel@nongnu.org>; Wed, 29 Apr 2026 18:33:41 GMT","from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228])\n by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4ds9ehfgp9-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT)\n for <qemu-devel@nongnu.org>; Wed, 29 Apr 2026 18:33:40 +0000 (GMT)","from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com\n [10.20.54.105])\n by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63TIXaID16843218\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Wed, 29 Apr 2026 18:33:36 GMT","from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 2EB5D2004D;\n Wed, 29 Apr 2026 18:33:36 +0000 (GMT)","from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 4948A20040;\n Wed, 29 Apr 2026 18:33:34 +0000 (GMT)","from localhost.localdomain (unknown [9.39.31.77])\n by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP;\n Wed, 29 Apr 2026 18:33:33 +0000 (GMT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n :content-transfer-encoding:date:from:in-reply-to:message-id\n :mime-version:references:subject:to; s=pp1; bh=2Xqg4RFI/atH/tsbS\n PJi8b4xny2Q3jc7Mgr5yIFu4fk=; b=WwxYRG2gDbjJ1RKpwv/TuedEJgoAo/bfX\n bwfanjeXjtNKY1UrDZPqwEG198HuNDiklJ7y5cYagEaQbikVwZQktn2mpxYc/Kdw\n LfJLvprGwzQQ2ITM/TMuP3kfDKt37bCqBV0Fsno901mD2bHF8pzk+kB7gz4E0cQW\n 4mb4sCE+hOjZK2Ec3pyRQcuhvKYiqfbayfQrfQPDvStTKckabOUfALafNIslXHGb\n UqE+cFmkdDrylIEd2aTl65Ysc77ZT+IyYs+pjo7OVT5sqWUqg8cUJsR39nXSjHvF\n au+bOAgWZdQ7p0IIhwzLKlq1gbFolJ4y2nYP5XECON3q6nyPvFtmw==","From":"Harsh Prateek Bora <harshpb@linux.ibm.com>","To":"qemu-devel@nongnu.org","Cc":"Aditya Gupta <adityag@linux.ibm.com>,\n Hari Bathini <hbathini@linux.ibm.com>,\n Sourabh Jain <sourabhjain@linux.ibm.com>,\n Shivang Upadhyay <shivangu@linux.ibm.com>","Subject":"[PULL 03/13] ppc/pnv: Handle stash command in PowerNV SBE","Date":"Thu, 30 Apr 2026 00:02:53 +0530","Message-ID":"<20260429183310.12455-4-harshpb@linux.ibm.com>","X-Mailer":"git-send-email 2.52.0","In-Reply-To":"<20260429183310.12455-1-harshpb@linux.ibm.com>","References":"<20260429183310.12455-1-harshpb@linux.ibm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-TM-AS-GCONF":"00","X-Authority-Analysis":"v=2.4 cv=CIIamxrD c=1 sm=1 tr=0 ts=69f24f05 cx=c_pps\n a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17\n a=A5OVakUREuEA:10 a=f7IdgyKtn90A:10 a=VkNPw1HP01LnGYTKEx00:22\n a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VwQbUJbxAAAA:8\n a=VnNF1IyMAAAA:8 a=pGLkceISAAAA:8 a=lqnwqb0_oS2Hd41rSKUA:9","X-Proofpoint-ORIG-GUID":"IyHW8hFasyweVjpj3jU_rb9gqp8bGzG3","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDI5MDE4NCBTYWx0ZWRfXwlVD8ycvTrTB\n axEdjeT0By4F6L1STZzI+cwFfJW5Vh2R46mzhZLBiwyd4gVmxAV9Db04IsxMg1w//eY/rHr/TGf\n W/UNEjN+bHFfuhrIEQ7/fyv+QPCoMa2tqmobCWDfp8ics4wHum7BBWvIxgANI0ME45c3qE03gi3\n gYTsx7AMmCykJlyZMOw6HlG53VHtSMJoRlBqH+4AFllRgWKIAIZUExPQqvth0sfdY27OmItoAJT\n LTBq9e50SULEinFUX4KxLtppwVZsnaf12ov0fGlz4sNNofQFEPyfYh0+kj21YZ2Zts2hpDGmEMw\n QFSn9xN/bRe51MEmFsnpBLLeRyPIqDutCi60dBjMF4jTryfhgcOaNDXAUnNHqbI5C2CyiRvDAdh\n raHp0F7VmXH14rsHFL66XcHS2ERmRFefr2J7lmk7rMlRxsOcavZARNlxUohB7uqlGYl3MUk5dez\n Z6hZXrkI9pTS7/rmjBQ==","X-Proofpoint-GUID":"IyHW8hFasyweVjpj3jU_rb9gqp8bGzG3","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-29_01,2026-04-28_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n spamscore=0 phishscore=0 malwarescore=0 suspectscore=0 adultscore=0\n impostorscore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0\n priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604290184","Received-SPF":"pass client-ip=148.163.158.5;\n envelope-from=harshpb@linux.ibm.com;\n helo=mx0b-001b2d01.pphosted.com","X-Spam_score_int":"-26","X-Spam_score":"-2.7","X-Spam_bar":"--","X-Spam_report":"(-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7,\n RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"From: Aditya Gupta <adityag@linux.ibm.com>\n\nEarlier since the SBE_CMD_STASH_MPIPL_CONFIG command was not handled, so\nskiboot used to not get any response from SBE:\n\n    [  106.350742821,3] SBE: Message timeout [chip id = 0], cmd = d7, subcmd = 7\n    [  106.352067746,3] SBE: Failed to send stash MPIPL config [chip id = 0x0, rc = 254]\n\nFix this by handling the command in PowerNV SBE, and sending a response so\nskiboot knows SBE has handled the STASH command\n\nThe stashed skiboot base is later used to access the relocated MDST/MDDT\ntables when MPIPL is implemented.\n\nThe purpose of stashing relocated base address is explained in following\nskiboot commit:\n\n    author Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Fri Jul 12 16:47:51 2019 +0530\n    committer Oliver O'Halloran <oohall@gmail.com> Thu Aug 15 17:53:39 2019 +1000\n\n    SBE: Send OPAL relocated base address to SBE\n\n      OPAL relocates itself during boot. During memory preserving IPL hostboot needs\n      to access relocated OPAL base address to get MDST, MDDT tables. Hence send\n      relocated base address to SBE via 'stash MPIPL config' chip-op. During next\n      IPL SBE will send stashed data to hostboot... so that hostboot can access\n      these data.\n\nReviewed-by: Hari Bathini <hbathini@linux.ibm.com>\nReviewed-by: Sourabh Jain <sourabhjain@linux.ibm.com>\nSigned-off-by: Aditya Gupta <adityag@linux.ibm.com>\nTested-by: Shivang Upadhyay <shivangu@linux.ibm.com>\nLink: https://lore.kernel.org/qemu-devel/20260424083837.214947-4-adityag@linux.ibm.com\nSigned-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>\n---\n include/hw/ppc/pnv_mpipl.h |  5 +++++\n hw/ppc/pnv_sbe.c           | 38 ++++++++++++++++++++++++++++++++++++++\n 2 files changed, 43 insertions(+)","diff":"diff --git a/include/hw/ppc/pnv_mpipl.h b/include/hw/ppc/pnv_mpipl.h\nindex 61ef7ef8fe..d1d542b724 100644\n--- a/include/hw/ppc/pnv_mpipl.h\n+++ b/include/hw/ppc/pnv_mpipl.h\n@@ -8,11 +8,16 @@\n #define PNV_MPIPL_H\n \n #include <stdbool.h>\n+#include <stdint.h>\n+\n+#include \"exec/hwaddr.h\"\n \n typedef struct MpiplPreservedState MpiplPreservedState;\n \n /* Preserved state to be saved in PnvMachineState */\n struct MpiplPreservedState {\n+    /* skiboot_base will be valid only after OPAL sends relocated base to SBE */\n+    hwaddr     skiboot_base;\n     bool       is_next_boot_mpipl;\n };\n \ndiff --git a/hw/ppc/pnv_sbe.c b/hw/ppc/pnv_sbe.c\nindex 5a2b3342d1..90fc407d05 100644\n--- a/hw/ppc/pnv_sbe.c\n+++ b/hw/ppc/pnv_sbe.c\n@@ -233,8 +233,11 @@ static void sbe_timer(void *opaque)\n \n static void do_sbe_msg(PnvSBE *sbe)\n {\n+    PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine());\n+    MachineState *machine = MACHINE(pnv);\n     struct sbe_msg msg;\n     uint16_t cmd, ctrl_flags, seq_id;\n+    uint64_t mbox_val;\n     int i;\n \n     memset(&msg, 0, sizeof(msg));\n@@ -265,6 +268,41 @@ static void do_sbe_msg(PnvSBE *sbe)\n             timer_del(sbe->timer);\n         }\n         break;\n+    case SBE_CMD_STASH_MPIPL_CONFIG:\n+        /* key = sbe->mbox[1] */\n+        switch (sbe->mbox[1]) {\n+        case SBE_STASH_KEY_SKIBOOT_BASE:\n+            mbox_val = sbe->mbox[2];\n+            if (mbox_val >= machine->ram_size) {\n+                qemu_log_mask(LOG_GUEST_ERROR,\n+                  \"SBE: skiboot_base 0x%\" PRIx64 \\\n+                  \"exceeds RAM size 0x\" RAM_ADDR_FMT \"\\n\",\n+                  mbox_val, machine->ram_size);\n+                return;\n+            }\n+\n+            pnv->mpipl_state.skiboot_base = mbox_val;\n+            qemu_log_mask(LOG_UNIMP,\n+                \"Stashing skiboot base: 0x%\" HWADDR_PRIx \"\\n\",\n+                pnv->mpipl_state.skiboot_base);\n+\n+            /*\n+             * Set the response register.\n+             *\n+             * Currently setting the same sequence number in\n+             * response as we got in the request.\n+             */\n+            sbe->mbox[4] = sbe->mbox[0];    /* sequence number */\n+            pnv_sbe_set_host_doorbell(sbe,\n+                    sbe->host_doorbell | SBE_HOST_RESPONSE_WAITING);\n+\n+            break;\n+        default:\n+            qemu_log_mask(LOG_UNIMP,\n+                \"SBE: CMD_STASH_MPIPL_CONFIG: Unimplemented key: 0x\" TARGET_FMT_lx \"\\n\",\n+                sbe->mbox[1]);\n+        }\n+        break;\n     default:\n         qemu_log_mask(LOG_UNIMP, \"SBE Unimplemented command: 0x%x\\n\", cmd);\n     }\n","prefixes":["PULL","03/13"]}