From nobody Sat May 30 17:43:43 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=1778569972; cv=none; d=zohomail.com; s=zohoarc; b=a7Epsp13LgZBSnjYvhrSrwkqyOcGpKvL587vl+2c6kvGH5ObaR1plr39lZoeiTVItXSyo9/m72fLPk2vFbVZqDfcatqWybnfpozD8yt33YVUH29uC6uT1F1fNe1hH+dfy2NhgoROq0za2WuDEuG+M7riHmCt9B491bsIi5UCG4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778569972; 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=wyMUXuVoe5YB9/GolFFQ9m0XvZYCncQp31ovl4uyYoY=; b=ZESwF6plpgirXQykMc1l8ByoAMPa2iXyAHq/tosPs1gQNjcrkQyNdpUsp3J87giSRPDFV482SURjoSdh3S6uf6WcTVRUbUHKrtRQhBNrRPL/3MZwN9Pk3gGJI0K4yx7KM/AWV6Tl/m04sum0sWS3LJrO+tuif1LIma77dTZLm40= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778569972478230.34897402628792; Tue, 12 May 2026 00:12:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhHu-0002eR-DB; Tue, 12 May 2026 03:12:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHW-0002cD-1e; Tue, 12 May 2026 03:11: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 1wMhHR-0002Kr-N8; Tue, 12 May 2026 03:11:51 -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 64BK6lJt3185046; Tue, 12 May 2026 07:11:47 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv59w00-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:47 +0000 (GMT) Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64C79eTD012634; Tue, 12 May 2026 07:11:46 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgt356-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:45 +0000 (GMT) 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 64C7BeZg54264264 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:40 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 09FA32004D; Tue, 12 May 2026 07:11:40 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ABAAC2004B; Tue, 12 May 2026 07:11:37 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:37 +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=wyMUXuVoe5YB9/Gol FFQ9m0XvZYCncQp31ovl4uyYoY=; b=Ci6LPvGtJXhiKpRQuRp7AkcI0C847cMSj S4FVtP6h5gyBWnOOMYXHmuwGUGGqMiVEkyChY8YCq7obk38HTMTrWo4U+SY+B3FW BkmgIjee4CZJylqe366vGRXlTDDeAfbYjAItOUJoJr+qwl79d4YCyaCys6bsSV82 Iy3/GsOtww7A4wRUmwL8oYWOwnoX0ZqTXm13fetdoEjWZm/9Tm8olKmuRfwAYkWO jl61ehFJZgRoPW3FQxpbQHS7q9m3lHvKhrIAfFjMhbCqnA8m84GplAXx/JmJBcRJ JdyK+aeBIhKHEUkAkc0b7B4zE2+bWX5B6HYyrdVNaa0zU7Jh1wl5Q== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 1/6] ppc/spapr: Add VFIO EEH error injection backend Date: Tue, 12 May 2026 12:41:06 +0530 Message-ID: <20260512071112.9675-2-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@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=cPHQdFeN c=1 sm=1 tr=0 ts=6a02d2b3 cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=qkVa7TRde7xkgx6zoNMA:9 X-Proofpoint-ORIG-GUID: N0eF2iJzsFhCQH-XsKmSirCvGNnG3EDp X-Proofpoint-GUID: wto3MF6PJQ7VwY97uO1ZRAVYbs5xvuDu X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfXy/GGn4299E/D jfawnyJJrk1BoBCaZOy0WHdYQullIWwVaHVtyxaechCipvY6IPz759m9dqluFoI27cmYVz/T/0Z 4WNcGww1JKamCCjkrTfoalItrg78G7wfuTe7z9MJ63HuR/mUDFSnqn437TZ+23Q7AJ9wXnsRq98 WJy5tdaqNQY4nQKVD9n8XNyW7cSLfKYgYORWsziIgRbwGE8e4+3OP0oCG4qIASzoirt1c4IaJF6 UJxCx+rQfxeEdEyQPGbAmZIYq64Qd1YIR/i6F7arFJu+6/Mj/5Ho1wMF9L+GMZqsd6gv7SVMOZ8 QVXdy/SeIHATCp8TinKnQH342BDX7AL6q/dVizRf5JWE+4REnnnixtQ6XlKhVrxWq3yIwDFlmdZ /39uV0UO3xNG1jvpiu+kpxwL9iarGQSQ4I6SX3S1dI/0pvu/zyJMzl485fO113I8ApUsSSEHqut 1h3CmTpFT3yVDlOnb7w== 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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1011 spamscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=nnmlinux@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778569974394158500 Content-Type: text/plain; charset="utf-8" Introduce 'spapr_phb_vfio_errinjct()' to inject PCI PHB error events via the VFIO passthrough backend. This function translates RTAS error injection parameters into VFIO EEH injection commands suitable for hardware emulation. The patch adds: - A minimal 'enum rtas_err_type' for error types used in VFIO path - EEH function code macros ('EEH_ERR_FUNC_...') - Backend stub and integration into 'spapr_pci_vfio.c' - Necessary header declarations for interfacing This forms the foundational layer for PCI error injection testing using VFIO passthrough devices on pseries guests. Signed-off-by: Narayana Murty N --- hw/ppc/spapr_pci_vfio.c | 53 +++++++++++++++++++++++++++++++++++++ include/hw/pci-host/spapr.h | 7 +++++ include/hw/ppc/spapr.h | 44 ++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c index a748a0bf4c..ed0b22a84a 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio.c @@ -317,6 +317,55 @@ int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb) return RTAS_OUT_SUCCESS; } =20 +int spapr_phb_vfio_errinjct(SpaprPhbState *sphb, + uint32_t func, uint64_t addr, + uint64_t mask, uint32_t type) +{ + VFIOLegacyContainer *container =3D vfio_eeh_as_container(&sphb->iommu_= as); + struct vfio_eeh_pe_op op =3D { + .op =3D VFIO_EEH_PE_INJECT_ERR, + .argsz =3D sizeof(op), + }; + + /* Set error type, address, and mask */ + op.err.type =3D type; + op.err.addr =3D addr; + op.err.mask =3D mask; + + /* Validate and set function code */ + switch (func) { + case EEH_ERR_FUNC_LD_MEM_ADDR: + case EEH_ERR_FUNC_LD_MEM_DATA: + case EEH_ERR_FUNC_LD_IO_ADDR: + case EEH_ERR_FUNC_LD_IO_DATA: + case EEH_ERR_FUNC_LD_CFG_ADDR: + case EEH_ERR_FUNC_LD_CFG_DATA: + case EEH_ERR_FUNC_ST_MEM_ADDR: + case EEH_ERR_FUNC_ST_MEM_DATA: + case EEH_ERR_FUNC_ST_IO_ADDR: + case EEH_ERR_FUNC_ST_IO_DATA: + case EEH_ERR_FUNC_ST_CFG_ADDR: + case EEH_ERR_FUNC_ST_CFG_DATA: + case EEH_ERR_FUNC_DMA_RD_ADDR: + case EEH_ERR_FUNC_DMA_RD_DATA: + case EEH_ERR_FUNC_DMA_RD_MASTER: + case EEH_ERR_FUNC_DMA_RD_TARGET: + case EEH_ERR_FUNC_DMA_WR_ADDR: + case EEH_ERR_FUNC_DMA_WR_DATA: + case EEH_ERR_FUNC_DMA_WR_MASTER: + op.err.func =3D func; + break; + default: + return RTAS_OUT_PARAM_ERROR; + } + + /* Perform the ioctl to inject the error */ + if (ioctl(container->fd, VFIO_EEH_PE_OP, &op) < 0) { + return RTAS_OUT_HW_ERROR; + } + + return RTAS_OUT_SUCCESS; +} #else =20 bool spapr_phb_eeh_available(SpaprPhbState *sphb) @@ -349,4 +398,8 @@ int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb) return RTAS_OUT_NOT_SUPPORTED; } =20 +int spapr_phb_vfio_errinjct(SpaprPhbState *sphb, int option) +{ + return RTAS_OUT_NOT_SUPPORTED; +} #endif /* CONFIG_VFIO_PCI */ diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h index 0db87f1281..417d1f6c31 100644 --- a/include/hw/pci-host/spapr.h +++ b/include/hw/pci-host/spapr.h @@ -125,6 +125,8 @@ int spapr_phb_vfio_eeh_get_state(SpaprPhbState *sphb, i= nt *state); int spapr_phb_vfio_eeh_reset(SpaprPhbState *sphb, int option); int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb); void spapr_phb_vfio_reset(DeviceState *qdev); +int spapr_phb_vfio_errinjct(SpaprPhbState *sphb, uint32_t func, + uint64_t addr, uint64_t mask, uint32_t type); #else static inline bool spapr_phb_eeh_available(SpaprPhbState *sphb) { @@ -151,6 +153,11 @@ static inline int spapr_phb_vfio_eeh_configure(SpaprPh= bState *sphb) static inline void spapr_phb_vfio_reset(DeviceState *qdev) { } +static inline int spapr_phb_vfio_errinjct(SpaprPhbState *sphb, uint32_t fu= nc, + uint64_t addr, uint64_t mask, uint32_t = type) +{ + return RTAS_OUT_HW_ERROR; +} #endif =20 void spapr_phb_dma_reset(SpaprPhbState *sphb); diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 9acda15d4f..fadb7cf7d9 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -682,6 +682,50 @@ void push_sregs_to_kvm_pr(SpaprMachineState *spapr); #define RTAS_EEH_PE_UNAVAIL_INFO 1000 #define RTAS_EEH_PE_RECOVER_INFO 0 =20 +/* EEH error types and functions */ +#define EEH_ERR_FUNC_MIN 0 +#define EEH_ERR_FUNC_LD_MEM_ADDR 0 /* Memory load */ +#define EEH_ERR_FUNC_LD_MEM_DATA 1 +#define EEH_ERR_FUNC_LD_IO_ADDR 2 /* IO load */ +#define EEH_ERR_FUNC_LD_IO_DATA 3 +#define EEH_ERR_FUNC_LD_CFG_ADDR 4 /* Config load */ +#define EEH_ERR_FUNC_LD_CFG_DATA 5 +#define EEH_ERR_FUNC_ST_MEM_ADDR 6 /* Memory store */ +#define EEH_ERR_FUNC_ST_MEM_DATA 7 +#define EEH_ERR_FUNC_ST_IO_ADDR 8 /* IO store */ +#define EEH_ERR_FUNC_ST_IO_DATA 9 +#define EEH_ERR_FUNC_ST_CFG_ADDR 10 /* Config store */ +#define EEH_ERR_FUNC_ST_CFG_DATA 11 +#define EEH_ERR_FUNC_DMA_RD_ADDR 12 /* DMA read */ +#define EEH_ERR_FUNC_DMA_RD_DATA 13 +#define EEH_ERR_FUNC_DMA_RD_MASTER 14 +#define EEH_ERR_FUNC_DMA_RD_TARGET 15 +#define EEH_ERR_FUNC_DMA_WR_ADDR 16 /* DMA write */ +#define EEH_ERR_FUNC_DMA_WR_DATA 17 +#define EEH_ERR_FUNC_DMA_WR_MASTER 18 +#define EEH_ERR_FUNC_DMA_WR_TARGET 19 +#define EEH_ERR_FUNC_MAX EEH_ERR_FUNC_DMA_WR_TARGET + +/* RTAS PCI Error Injection Token Types */ +enum rtas_err_type { + RTAS_ERR_TYPE_FATAL =3D 0x1, + RTAS_ERR_TYPE_RECOVERED_RANDOM_EVENT =3D 0x2, + RTAS_ERR_TYPE_RECOVERED_SPECIAL_EVENT =3D 0x3, + RTAS_ERR_TYPE_CORRUPTED_PAGE =3D 0x4, + RTAS_ERR_TYPE_CORRUPTED_SLB =3D 0x5, + RTAS_ERR_TYPE_TRANSLATOR_FAILURE =3D 0x6, + RTAS_ERR_TYPE_IOA_BUS_ERROR =3D 0x7, + RTAS_ERR_TYPE_PLATFORM_SPECIFIC =3D 0x8, + RTAS_ERR_TYPE_CORRUPTED_DCACHE_START =3D 0x9, + RTAS_ERR_TYPE_CORRUPTED_DCACHE_END =3D 0xA, + RTAS_ERR_TYPE_CORRUPTED_ICACHE_START =3D 0xB, + RTAS_ERR_TYPE_CORRUPTED_ICACHE_END =3D 0xC, + RTAS_ERR_TYPE_CORRUPTED_TLB_START =3D 0xD, + RTAS_ERR_TYPE_CORRUPTED_TLB_END =3D 0xE, + RTAS_ERR_TYPE_IOA_BUS_ERROR_64 =3D 0xF, + RTAS_ERR_TYPE_UPSTREAM_IO_ERROR =3D 0x10 +}; + /* ibm,set-slot-reset */ #define RTAS_SLOT_RESET_DEACTIVATE 0 #define RTAS_SLOT_RESET_HOT 1 --=20 2.54.0 From nobody Sat May 30 17:43:43 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=1778569979; cv=none; d=zohomail.com; s=zohoarc; b=KasMVdYIm8k3BbqHN7r30xdf8GN18FVLly8dCUcZhNgxImUMSm/buq2p/gbbL2NZ/sS1KixzlEVz4G7EoACKa4yodPnMvQoh/zdfv593SQKM3+yktfezg9Aw7jXlNkcr0wxbOGOyKbIEpTsv+XzrzHBGhsp/MlViyP/vXweazI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778569979; 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=wKHK1qFn7LvxLFbfm/QQMufczV2QVHsm81ygBpG9oc0=; b=IRKPxWFnxof9IqH3yhJgKLpfxdAu8A839Bik/GHYgl+F14yW9y4KroxSCjOXoA+InUADq5pETnQKtYJmouvCBoI3piB755iNqo9mkScUMosd6SbWsdRqf6FU41yssSPf5cP2wQzJQFVscijW8c3GuRADzfCBIly7pgn0IjguW9w= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778569979770626.7694159773113; Tue, 12 May 2026 00:12:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhII-0002hd-HV; Tue, 12 May 2026 03:12:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHZ-0002cF-3x; Tue, 12 May 2026 03:11:59 -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 1wMhHS-0002LC-Fz; Tue, 12 May 2026 03:11:56 -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 64BK7OsG2761003; Tue, 12 May 2026 07:11:49 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 4e3nv6hsbb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:48 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64C79MaZ018714; Tue, 12 May 2026 07:11:48 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgj2uk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:48 +0000 (GMT) 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 64C7BhrW47645086 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:43 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 039F320043; Tue, 12 May 2026 07:11:43 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6DA2D20040; Tue, 12 May 2026 07:11:40 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:40 +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=wKHK1qFn7LvxLFbfm /QQMufczV2QVHsm81ygBpG9oc0=; b=L6St8naVw3TxsU0LwwUpUyTHEZiZW93m5 zz/Vd/NdhiS/U+Ak1igNSemjIfBp3D85M6mjsM/JIorXAhFQ90FPFZfOBLtZgSen +FvYE+VbEHLScfdedne9yZDzYbGW1SdnWzp6Jc5Dckf4LzBWqlkrf+1pbjyvGY64 UplufTbU+BWkFTygjHf2ytpfbs5+PebZuDDmwfYOmnyTu9q8t5WOZ8AvP7XhEVxm 2iJc7vAHAN9e7EmzuAwHk8XwW9bxb3aJAie1Xg7xphnoHIUGHp0sSbSRmw/K4iMj NG0z1EkCyu2U/QQk0S5njhGA/THjma/3nnsQt9E5TSouxYk5IdvHQ== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 2/6] ppc/spapr: Add ibm,errinjct RTAS call handler Date: Tue, 12 May 2026 12:41:07 +0530 Message-ID: <20260512071112.9675-3-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: -mSDdoXoqW16MU4xQgPTIe8563NmcIG- X-Proofpoint-GUID: MIZ6oBy9KwkibBE4HtwfLI5OXmjZo_-3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfX4Cd7yArAmmcg EFoBatl+mTyqJBkPxbHskQG0dZ7utcBkqZSUs1IBgYyaxv2pD7hKZ2yqbfC5icVjV0h/67ZP1U/ 8Vl9PNizvDLPEGw+CySomsRea/1HWr97u3wjZZwnsWJnbf12seSqGWCVYZQOxfZKEyqTp5L3MXr oY2rYogGLaoMsg7v8rk6hN2Q2dOwu8KehBfDuMa9esnJit/2fHX2HL6QyKp/iIUDiskOfkx+k7Z hp0XSKIYPMtTcFabDEx43q3HscXZdESbCKBW8W8tzQBoQBI0dCbqsuRJZF5W/OauJpZFtfw86Ap p6QNignBLgF0eV+rZ3+81roGLP3nJw2PfH1CiEIb4tZBGQy7/dN8Ts25gK6fejoFws/etF66llC WVj3Ed1/hDFP8r6Ry0o4oilCXjLQaRx58NKMG54wnka8es5saqxEvlkS6KWuV3t6wVLh0dmZTEI LO3vUp0zz5tGazdOgBg== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a02d2b5 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=_MNm8bNPt0bhIkh_LCUA: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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1011 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=nnmlinux@linux.ibm.com; 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, 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778569983441154100 Content-Type: text/plain; charset="utf-8" Implements the 'ibm,errinjct' RTAS call for PHB-level PCI error injection via firmware. This handler decodes the RTAS parameter buffer, validates arguments, and delegates the injection to the backend. The patch includes: - 'rtas_ibm_errinjct()' handler implementation - Registration of 'RTAS_IBM_ERRINJCT' token - RTAS error codes for result reporting - Helper macros used exclusively in RTAS code path Enables guest-initiated error injection for improved test coverage and diagnostics in EEH emulation flows. Signed-off-by: Narayana Murty N --- hw/ppc/spapr_pci.c | 153 +++++++++++++++++++++++++++++++++++++++++ include/hw/ppc/spapr.h | 6 +- 2 files changed, 158 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index c1d4b7806e..82de04186e 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -704,6 +704,156 @@ param_error_exit: rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); } =20 +static int parse_and_verify_recovered_special_event(target_ulong param_buf, + uint64_t *addr) { + uint32_t mode =3D rtas_ld(param_buf, 0); + if (mode !=3D EEH_ERR_EVENT_MODE_MIN && mode !=3D EEH_ERR_EVENT_MODE_M= AX) { + return RTAS_OUT_PARAM_ERROR; + } + *addr =3D ((uint64_t)mode) << 32; + qemu_log("RTAS: recovered-special-event: mode=3D%u\n", mode); + return RTAS_OUT_SUCCESS; +} + +static int parse_and_verify_corrupted_page(target_ulong param_buf, + uint64_t *addr) { + *addr =3D ((uint64_t)rtas_ld(param_buf, 0) << 32) | rtas_ld(param_buf,= 1); + qemu_log("RTAS: corrupted-page: addr=3D0x%lx\n", *addr); + return (*addr) ? RTAS_OUT_SUCCESS : RTAS_OUT_PARAM_ERROR; +} + +static int parse_and_verify_ioa_bus_error(target_ulong param_buf, + bool is_64bit, + uint64_t *addr, uint64_t *mask, + uint64_t *buid, uint32_t *func) +{ + if (is_64bit) { + *addr =3D ((uint64_t)rtas_ld(param_buf, 0) << 32) | rtas_ld(param_= buf, 1); + *mask =3D ((uint64_t)rtas_ld(param_buf, 2) << 32) | rtas_ld(param_= buf, 3); + *buid =3D ((uint64_t)rtas_ld(param_buf, 5) << 32) | rtas_ld(param_= buf, 6); + *func =3D rtas_ld(param_buf, 7); + } else { + *addr =3D rtas_ld(param_buf, 0); + *mask =3D rtas_ld(param_buf, 1); + *buid =3D ((uint64_t)rtas_ld(param_buf, 3) << 32) | rtas_ld(param_= buf, 4); + *func =3D rtas_ld(param_buf, 5); + } + + return RTAS_OUT_SUCCESS; +} + +static int parse_and_verify_corrupted_dcache(target_ulong param_buf, + uint64_t *addr) +{ + uint32_t action =3D rtas_ld(param_buf, 0); + uint32_t nature =3D rtas_ld(param_buf, 1); + *addr =3D ((uint64_t)action << 32) | nature; + + return (action <=3D 2 && nature <=3D 2) ? RTAS_OUT_SUCCESS + : RTAS_OUT_PARAM_ERROR; +} + +static int parse_and_verify_corrupted_icache(target_ulong param_buf, + uint64_t *addr) +{ + uint32_t action =3D rtas_ld(param_buf, 0); + uint32_t nature =3D rtas_ld(param_buf, 1); + *addr =3D ((uint64_t)action << 32) | nature; + + return (action <=3D 3 && nature <=3D 2) ? RTAS_OUT_SUCCESS + : RTAS_OUT_PARAM_ERROR; +} + +static int parse_and_verify_corrupted_tlb(target_ulong param_buf, + uint64_t *addr) +{ + uint32_t nature =3D rtas_ld(param_buf, 0); + *addr =3D ((uint64_t)nature << 32); + + return (nature <=3D 2) ? RTAS_OUT_SUCCESS : RTAS_OUT_PARAM_ERROR; +} + +static void rtas_ibm_errinjct(PowerPCCPU *cpu, SpaprMachineState *spapr, + uint32_t token, uint32_t nargs, + target_ulong args, uint32_t nret, + target_ulong rets) +{ + SpaprPhbState *sphb; + target_ulong param_buf; + uint64_t addr =3D 0, mask =3D 0, buid =3D 0; + uint32_t func =3D 0; + uint32_t type, o_token; + int ret =3D -1; + + if ((nargs !=3D 3) || (nret !=3D 1)) { + goto param_error_exit; + } + + type =3D rtas_ld(args, 0); + o_token =3D rtas_ld(args, 1); + param_buf =3D rtas_ld(args, 2); + + if (o_token !=3D spapr->errinjct_token) { + goto param_error_exit; + } + + sphb =3D QLIST_FIRST(&spapr->phbs); + if (!sphb) { + goto param_error_exit; + } + + switch (type) { + case RTAS_ERR_TYPE_IOA_BUS_ERROR: + ret =3D parse_and_verify_ioa_bus_error(param_buf, false, &addr, + &mask, &buid, &func); + break; + case RTAS_ERR_TYPE_IOA_BUS_ERROR_64: + ret =3D parse_and_verify_ioa_bus_error(param_buf, true, &addr, + &mask, &buid, &func); + break; + case RTAS_ERR_TYPE_CORRUPTED_PAGE: + ret =3D parse_and_verify_corrupted_page(param_buf, &addr); + break; + case RTAS_ERR_TYPE_RECOVERED_SPECIAL_EVENT: + ret =3D parse_and_verify_recovered_special_event(param_buf, &addr); + break; + case RTAS_ERR_TYPE_CORRUPTED_DCACHE_START: + case RTAS_ERR_TYPE_CORRUPTED_DCACHE_END: + ret =3D parse_and_verify_corrupted_dcache(param_buf, &addr); + mask =3D 0; + break; + case RTAS_ERR_TYPE_CORRUPTED_ICACHE_START: + case RTAS_ERR_TYPE_CORRUPTED_ICACHE_END: + ret =3D parse_and_verify_corrupted_icache(param_buf, &addr); + mask =3D 0; + break; + case RTAS_ERR_TYPE_CORRUPTED_TLB_START: + case RTAS_ERR_TYPE_CORRUPTED_TLB_END: + ret =3D parse_and_verify_corrupted_tlb(param_buf, &addr); + mask =3D 0; + break; + default: + ret =3D RTAS_OUT_PARAM_ERROR; + break; + } + + if (ret !=3D RTAS_OUT_SUCCESS) { + goto param_error_exit; + } + + ret =3D spapr_phb_vfio_errinjct(sphb, func, addr, mask, type); + if (ret < 0) { + rtas_st(rets, 0, RTAS_OUT_HW_ERROR); + return; + } + + rtas_st(rets, 0, RTAS_OUT_SUCCESS); + return; + +param_error_exit: + rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); +} + static void pci_spapr_set_irq(void *opaque, int irq_num, int level) { /* @@ -2380,6 +2530,9 @@ void spapr_pci_rtas_init(void) spapr_rtas_register(RTAS_IBM_SLOT_ERROR_DETAIL, "ibm,slot-error-detail", rtas_ibm_slot_error_detail); + spapr_rtas_register(RTAS_IBM_ERRINJCT, + "ibm,errinjct", + rtas_ibm_errinjct); } =20 static void spapr_pci_register_types(void) diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index fadb7cf7d9..512dd038ec 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -706,6 +706,9 @@ void push_sregs_to_kvm_pr(SpaprMachineState *spapr); #define EEH_ERR_FUNC_DMA_WR_TARGET 19 #define EEH_ERR_FUNC_MAX EEH_ERR_FUNC_DMA_WR_TARGET =20 +#define EEH_ERR_EVENT_MODE_MIN 1 +#define EEH_ERR_EVENT_MODE_MAX 2 + /* RTAS PCI Error Injection Token Types */ enum rtas_err_type { RTAS_ERR_TYPE_FATAL =3D 0x1, @@ -808,8 +811,9 @@ enum rtas_err_type { #define RTAS_IBM_NMI_REGISTER (RTAS_TOKEN_BASE + 0x2B) #define RTAS_IBM_NMI_INTERLOCK (RTAS_TOKEN_BASE + 0x2C) #define RTAS_CONFIGURE_KERNEL_DUMP (RTAS_TOKEN_BASE + 0x2D) +#define RTAS_IBM_ERRINJCT (RTAS_TOKEN_BASE + 0x2E) =20 -#define RTAS_TOKEN_MAX (RTAS_TOKEN_BASE + 0x2E) +#define RTAS_TOKEN_MAX (RTAS_TOKEN_BASE + 0x2F) =20 /* RTAS ibm,get-system-parameter token values */ #define RTAS_SYSPARM_SPLPAR_CHARACTERISTICS 20 --=20 2.54.0 From nobody Sat May 30 17:43:43 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=1778570017; cv=none; d=zohomail.com; s=zohoarc; b=KjRSp8C8a7rVK0Ih6QEF9oNISBizQTmODCJPWDTfs1tQ7MIcPsbEdTXxbF/B4ktf4+PNErkpFVNBJhXCJro5IhK07bV0ywnL7SN1jVHha/cf7E+BA8y0EkrnnaLCKDay4BtVJYreUtHhzE8zP7QUFftqcmNZhbpfQHTAHbO6htM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778570017; 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=FYkrxgvs8FxfNX9idQPHewaspppgsiXg86tr9Po6a8M=; b=gud4k8QYD0GDHqgx8GwdUTMtewb+gS8KLWD7X3Z1m958Vm0137cGQGax5DWQMhaqctuuJuJ1bhxVmIlqPzymAaQhdDXi/RfNrixvA4nyl4p/JoD2snf3EF/Q09tsU9Ky2DUwYOnTUsZS2OgZfWgv+9Tz+MEFR02sPzkRzIXuWwI= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778570017218213.4900527736371; Tue, 12 May 2026 00:13:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhIJ-0002jE-6Y; Tue, 12 May 2026 03:12:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHZ-0002cG-3A; Tue, 12 May 2026 03:11: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 1wMhHW-0002Ud-7p; Tue, 12 May 2026 03:11:56 -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 64BK7anU2611849; Tue, 12 May 2026 07:11:52 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 4e3nvdsvxv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:51 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64C79Nxs015807; Tue, 12 May 2026 07:11:50 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgj31t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:50 +0000 (GMT) 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 64C7BkNd57278832 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:46 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E5EEA2004D; Tue, 12 May 2026 07:11:45 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 75FDB20040; Tue, 12 May 2026 07:11:43 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:43 +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=FYkrxgvs8FxfNX9id QPHewaspppgsiXg86tr9Po6a8M=; b=o8CiEa3HgBeWeobnWVW2FkSaHZSaLblre jBGbYsjc8OZkh7/ZI9xLwCSLSE+aWgJDOxiA1CWiD3VyEC+Q/mTYDCJfxc6vjfBw ZBalXst/CCBWOVa19s5kiGq9wYUP4wxyHpgOc1p2Ys5WvCQraDocj6JpjvXvdTEO Bj0stdU/AXD8ozlsKYfHxOotK42v49+atKk5z9O/aI7XQYFbKqqDnCQLPzsX1XH6 hHxzjV4OK0zPiJzJC2WfRmAakXlsCx0FIXmfzYkhnct4b6OPPq8blvozmQWRpRYx Fq93HhpSeDT8Yybueu8hz5/gsRFYKDIICgyM32cewxKVsqlHLDoQg== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 3/6] ppc/spapr: Add support for 'ibm, open-errinjct' and 'ibm, close-errinjct' Date: Tue, 12 May 2026 12:41:08 +0530 Message-ID: <20260512071112.9675-4-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@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=Y/XIdBeN c=1 sm=1 tr=0 ts=6a02d2b8 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=U7nrCbtTmkRpXpFmAIza:22 a=VnNF1IyMAAAA:8 a=376oZdPSatvzr_fvEE0A:9 X-Proofpoint-GUID: o_q3lYtFotldUdS0OKEMQ7k-ogDP-eNJ X-Proofpoint-ORIG-GUID: PxJxzCdXWm1xfoqIbVeVBBEEN8C98yWy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfXxpK5+yG6SAtX kCM+SPC2zMMUaQZQupyaSpXsHg0Hx7QnnfgSi4+No3r1PWD3STywRLw4rNLoMyIqrKfAP3yJw+x V/Xxzi05g4tCb91o7pXqcQ5P7kQuT+qQKDAkoecie7CkSimLBcYr8jTo723/lJjae8AMUNnmScn 3IBIYl5onMbJbLTCWKQr+w0FG3d+2ZZH2qFDjrRALr6S6GoTZ4R/042/JaAqAkryBzMrrcMKoE0 kZH5LkCYSXIVCkA0/J58gOPPshb92kNJ7paebEbwmHDPpUVM9Ba0kHRv8DEELRnnrqAL2rUa4yK L60diTRViLWU6z9+SoUVm2HaOSEVZBHEM1FWjOpGdz924tBVcIdUvfu/U5EQfeBUDKsrQ4YbE8h D3rXc6HOhh5T/wpYcYsOEv0mXDzpipQ9t1nLMliW9vj3fLUBu7M7qswYMvJwnoTX6AMRc8AqjlB +aKF2Zf6s+4y/bXYlog== 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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 priorityscore=1501 lowpriorityscore=0 phishscore=0 malwarescore=0 suspectscore=0 bulkscore=0 spamscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=nnmlinux@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778570018040158500 Content-Type: text/plain; charset="utf-8" Add support for the 'ibm,open-errinjct' and 'ibm,close-errinjct' RTAS calls. These handlers manage exclusive access to error injection facilities through a simple session-based mechanism. Updates include: - Implementation of rtas_ibm_open_errinjct() and rtas_ibm_close_errinjct() - Tracking field 'spapr->errinjct_token' in SpaprMachineState - New token definitions for the above RTAS calls - Return codes for already open or invalid close conditions This ensures that only one guest process can actively perform error injection at a time, improving reliability and preventing conflicts. Signed-off-by: Narayana Murty N --- hw/ppc/spapr_pci.c | 65 ++++++++++++++++++++++++++++++++++++++++++ include/hw/ppc/spapr.h | 9 +++++- 2 files changed, 73 insertions(+), 1 deletion(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 82de04186e..b00f71d92a 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -854,6 +854,65 @@ param_error_exit: rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); } =20 +static void rtas_ibm_open_errinjct(PowerPCCPU *cpu, + SpaprMachineState *spapr, + uint32_t token, + uint32_t nargs, + target_ulong args, + uint32_t nret, + target_ulong rets) +{ + /* Validate argument count */ + if ((nargs !=3D 0) || (nret !=3D 2)) { + rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); + return; + } + + if (spapr->errinjct_token) { + /* Already open: return token=3D0 and code=3DALREADY_OPEN */ + rtas_st(rets, 0, 0); + rtas_st(rets, 1, RTAS_OUT_ALREADY_OPEN); + return; + } + + spapr->errinjct_token =3D 1; + + /* + * Unlike most RTAS calls, ibm,open-errinjct returns + * the session token in the first output parameter + * and the status in the second. + */ + rtas_st(rets, 0, spapr->errinjct_token); + rtas_st(rets, 1, RTAS_OUT_SUCCESS); +} + +static void rtas_ibm_close_errinjct(PowerPCCPU *cpu, + SpaprMachineState *spapr, + uint32_t token, + uint32_t nargs, + target_ulong args, + uint32_t nret, + target_ulong rets) +{ + uint32_t o_token; + + if ((nargs !=3D 1) || (nret !=3D 1)) { + rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); + return; + } + + o_token =3D rtas_ld(args, 0); + + if (o_token !=3D spapr->errinjct_token) { + rtas_st(rets, 0, RTAS_OUT_NOT_OPEN); + return; + } + + spapr->errinjct_token =3D 0; + + rtas_st(rets, 0, RTAS_OUT_SUCCESS); +} + static void pci_spapr_set_irq(void *opaque, int irq_num, int level) { /* @@ -2533,6 +2592,12 @@ void spapr_pci_rtas_init(void) spapr_rtas_register(RTAS_IBM_ERRINJCT, "ibm,errinjct", rtas_ibm_errinjct); + spapr_rtas_register(RTAS_IBM_OPEN_ERRINJCT, + "ibm,open-errinjct", + rtas_ibm_open_errinjct); + spapr_rtas_register(RTAS_IBM_CLOSE_ERRINJCT, + "ibm,close-errinjct", + rtas_ibm_close_errinjct); } =20 static void spapr_pci_register_types(void) diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 512dd038ec..6c87f94e1d 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -274,6 +274,8 @@ struct SpaprMachineState { bool fadump_registered; bool fadump_dump_active; FadumpMemStruct registered_fdm; + + uint32_t errinjct_token; }; =20 #define H_SUCCESS 0 @@ -746,6 +748,9 @@ enum rtas_err_type { #define RTAS_OUT_PARAM_ERROR -3 #define RTAS_OUT_NOT_SUPPORTED -3 #define RTAS_OUT_NO_SUCH_INDICATOR -3 +#define RTAS_OUT_ALREADY_OPEN -4 +#define RTAS_OUT_NOT_OPEN -5 +#define RTAS_OUT_CLOSE_ERROR -6 #define RTAS_OUT_DUMP_ALREADY_REGISTERED -9 #define RTAS_OUT_DUMP_ACTIVE -10 #define RTAS_OUT_NOT_AUTHORIZED -9002 @@ -812,8 +817,10 @@ enum rtas_err_type { #define RTAS_IBM_NMI_INTERLOCK (RTAS_TOKEN_BASE + 0x2C) #define RTAS_CONFIGURE_KERNEL_DUMP (RTAS_TOKEN_BASE + 0x2D) #define RTAS_IBM_ERRINJCT (RTAS_TOKEN_BASE + 0x2E) +#define RTAS_IBM_OPEN_ERRINJCT (RTAS_TOKEN_BASE + 0x2F) +#define RTAS_IBM_CLOSE_ERRINJCT (RTAS_TOKEN_BASE + 0x30) =20 -#define RTAS_TOKEN_MAX (RTAS_TOKEN_BASE + 0x2F) +#define RTAS_TOKEN_MAX (RTAS_TOKEN_BASE + 0x31) =20 /* RTAS ibm,get-system-parameter token values */ #define RTAS_SYSPARM_SPLPAR_CHARACTERISTICS 20 --=20 2.54.0 From nobody Sat May 30 17:43:43 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=1778569976; cv=none; d=zohomail.com; s=zohoarc; b=DIn+rhr1NFkI7JccZUAN2HS2ga98UVYVcHaRv0nD9uWk+8wQ9xSjg5vlZuLAgM2VYCM4SSi70eLLaqeg9DeArr6upKYjYwoOWJ70gdQ01E58sjZb9MmFG0tYHqrnN+RpcLmR89jh1+u0fv6mQFBNM5akapeHhVEEA1n8RH+Eh/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778569976; 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=nWGxl4Ceh9AbrghqMSsTySbVESl8QiNAXUM20ljfeCg=; b=C7Fxj8zUrLb7QC4GrLr585Tvtdk62JsPfOYlYfOagMathJYlvTSFuWxKHiaSiJsz5g7F0Ulo9l8de98ZM0fLjcLSK5+DK86/GAk5kv1of13pzibtGwU4AVXjLG3D+cR5/x80BvsKAE6WDFXc4EeMzg9IfXQdBetMiVYE/4DzqM4= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778569976596250.38584014610785; Tue, 12 May 2026 00:12:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhIM-0002m5-6S; Tue, 12 May 2026 03:12:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHc-0002cN-HW; Tue, 12 May 2026 03:12:04 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHZ-0002aX-6p; Tue, 12 May 2026 03:11:59 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64BK7UVN2761190; Tue, 12 May 2026 07:11:55 GMT Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4e3nv6hsbr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:54 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64C79Re8011709; Tue, 12 May 2026 07:11:54 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4e3nfga2sa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:54 +0000 (GMT) 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 64C7BnUc8454496 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:49 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9C73120040; Tue, 12 May 2026 07:11:49 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 74FAF20043; Tue, 12 May 2026 07:11:46 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:46 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=nWGxl4Ceh9AbrghqM SsTySbVESl8QiNAXUM20ljfeCg=; b=MwIWGUjYSstTIw63BiH24YDpqqrv75G3m pjx5qLMproDcUZUmcydwh4VdjdmV8GmJZpkf+Qf0o3n6hxEJUm+E9gEIIc+hVOyY XOOugRWC9zJbflP+GaUDFUW0H0vW12ImE/Nu6svTXwGbTZ33ellgmswK8q6DXlo4 OCpf94HVBROAPOZnsBQgDMsgBTQE+ZXNFReaMNTgm9/fNnAJpCnSKcEPQgcR0xmh vetT/QZ8bY2LE8FAfRbXS2DSEp56JI/qPX2XSqe9SCK7LCbbIstPjNmK30YT+iyR MgTwxbPXOBxTVl86WDIFrqLfJByA1vj6hXz+Ck+LkgADJeCeXo5kA== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 4/6] ppc/spapr: Advertise RTAS error injection call support via FDT property Date: Tue, 12 May 2026 12:41:09 +0530 Message-ID: <20260512071112.9675-5-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: Fk-lfxXlCxccF85Mq1j7WQdukcrAkGML X-Proofpoint-GUID: G-Pn5RjoYImno6hXHZueHwVuxEFY7rJO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfX7ga23+OeenDS AzHoWnTcaW7EUBDbeIsJK+ac2sFBBmnYtlsgRpb05+wDXxasFCNuUnCp0d0h1LYazK1K9+qrkBI 84FtbZeuTdATGfQGlEd78F8PuIsW6qDrt/LQ9VJYtb3Z0f4itW4RegTp0yZeXL1LKuk2EWp0DnO lwTyGgtVGMuxF1LbETBv6HjJUHxsInag4KY/0SoKY1rcWKv4IpOAzTnIlhA0aFGfuoK+RIBlD8w Xu4ZBl26rcCROHFsg5r5a8FG1lfq8NSoGUd5fat4VrTSueh6mnB78E5h3xa5T2gxs0jCCb27k1N +jRWQuvhHmsDJLrDV0S2iPJ8dYuW5Edq6lcJny3h+JpOhiiZRoS4z8PdBiYhMkS1KZ+H2Ud7pvc qzZvFdzsgH3ze/y5QeQA/DxIGUKDR3HchdD9+0JYzGTsl4khDNGVJR9eu4FH6dM+h0bz2tlGO0t C9KEUxEi+Gf5d65OSmw== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a02d2bb cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=nNPvQeRNBT9IKkD_gJkA: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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=nnmlinux@linux.ibm.com; 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, 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778569978004158500 Content-Type: text/plain; charset="utf-8" Advertise RTAS error injection call support to guests through a new "ibm,errinjct-tokens" property under the RTAS node in the device tree. This patch introduces: - spapr_get_errinject_tokens(), which retrieves or constructs a blob of supported error injection tokens from the host or fallback data. - Integration of "ibm,errinjct-tokens" into the RTAS FDT node. - Addition of "ibm,open-errinjct" and "ibm,close-errinjct" properties to advertise open/close handlers for error injection sessions. The ibm,errinjct-tokens property allows guests to programmatically discover supported RTAS error injection facilities, enabling safe and dynamic usage. The helper routine allocates memory for the token blob, which the caller must free once it has been added to the FDT. If the device-tree file (/proc/device-tree/rtas/ibm,errinjct-tokens) is not available, a static fallback blob is generated internally. Signed-off-by: Narayana Murty N --- hw/ppc/spapr.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index d40af312fa..bf6c838e0a 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -115,6 +115,8 @@ =20 #define PHANDLE_INTC 0x00001111 =20 +#define ERR_BLOB_MAX 512 + /* These two functions implement the VCPU id numbering: one to compute them * all and one to identify thread 0 of a VCORE. Any change to the first one * is likely to have an impact on the second one, so let's keep them close. @@ -968,10 +970,104 @@ static void spapr_dt_rtas_fadump(SpaprMachineState *= spapr, void *fdt, int rtas) } } =20 +/* + * spapr_get_errinject_tokens: + * --------------------------- + * Retrieve or construct a binary blob representing supported RTAS error + * injection tokens. If the host device-tree path + * "/proc/device-tree/rtas/ibm,errinjct-tokens" exists, it is read directl= y. + * Otherwise, a static fallback list of tokens is generated. + * + * The caller receives a dynamically allocated buffer in @out_buf and + * its size in @out_size, both of which must be freed by the caller + * once used. + * + * Returns: + * 0 (EXIT_SUCCESS) - on success + * -EIO, -ENOMEM - on failure + */ +static int spapr_get_errinject_tokens(char **out_buf, size_t *out_size) +{ + char *path =3D NULL, *buf =3D NULL; + gsize len =3D 0; + uint8_t errinjct_blob[ERR_BLOB_MAX]; + + static const struct { + const char *name; + enum rtas_err_type token; + } errinjct_tokens[] =3D { + { "recovered-special-event", RTAS_ERR_TYPE_RECOVERED_SPECIAL_EVENT= }, + { "corrupted-page", RTAS_ERR_TYPE_CORRUPTED_PAGE }, + { "ioa-bus-error", RTAS_ERR_TYPE_IOA_BUS_ERROR }, + { "corrupted-dcache-start", RTAS_ERR_TYPE_CORRUPTED_DCACHE_START = }, + { "corrupted-dcache-end", RTAS_ERR_TYPE_CORRUPTED_DCACHE_END }, + { "corrupted-icache-start", RTAS_ERR_TYPE_CORRUPTED_ICACHE_START = }, + { "corrupted-icache-end", RTAS_ERR_TYPE_CORRUPTED_ICACHE_END }, + { "corrupted-tlb-start", RTAS_ERR_TYPE_CORRUPTED_TLB_START }, + { "corrupted-tlb-end", RTAS_ERR_TYPE_CORRUPTED_TLB_END }, + { "ioa-bus-error-64", RTAS_ERR_TYPE_IOA_BUS_ERROR_64 }, + }; + + path =3D g_strdup("/proc/device-tree/rtas/ibm,errinjct-tokens"); + + if (g_file_test(path, G_FILE_TEST_EXISTS)) { + qemu_log("RTAS: Found %s\n", path); + + if (!g_file_get_contents(path, &buf, &len, NULL)) { + error_report("RTAS: Failed to read %s", path); + g_free(path); + return -EIO; + } + + qemu_log("RTAS: Read %zu bytes from device-tree\n", len); + *out_buf =3D buf; + *out_size =3D len; + g_free(path); + return EXIT_SUCCESS; + } + + qemu_log("RTAS: %s not found, building fallback blob\n", path); + g_free(path); + len =3D 0; + + for (int i =3D 0; i < G_N_ELEMENTS(errinjct_tokens); i++) { + const char *name =3D errinjct_tokens[i].name; + size_t str_len =3D strlen(name) + 1; + + if (len + str_len + sizeof(uint32_t) > sizeof(errinjct_blob)) { + error_report("RTAS: Too many tokens for static buffer"); + return -ENOMEM; + } + + memcpy(&errinjct_blob[len], name, str_len); + len +=3D str_len; + + uint32_t be_token =3D cpu_to_be32(errinjct_tokens[i].token); + memcpy(&errinjct_blob[len], &be_token, sizeof(be_token)); + len +=3D sizeof(be_token); + } + + buf =3D g_malloc(len); + if (!buf) { + error_report("RTAS: Failed to allocate %zu bytes for blob", len); + return -ENOMEM; + } + + memcpy(buf, errinjct_blob, len); + *out_buf =3D buf; + *out_size =3D len; + + qemu_log("RTAS: Fallback blob built (%zu bytes)\n", len); + return EXIT_SUCCESS; +} + + static void spapr_dt_rtas(SpaprMachineState *spapr, void *fdt) { MachineState *ms =3D MACHINE(spapr); int rtas; + size_t size_tokens =3D 0; + g_autofree char *errinject_tokens; GString *hypertas =3D g_string_sized_new(256); GString *qemu_hypertas =3D g_string_sized_new(256); uint64_t max_device_addr =3D 0; @@ -1080,6 +1176,16 @@ static void spapr_dt_rtas(SpaprMachineState *spapr, = void *fdt) */ _FDT(fdt_setprop(fdt, rtas, "ibm,extended-os-term", NULL, 0)); =20 + if (!spapr_get_errinject_tokens(&errinject_tokens, &size_tokens)) { + _FDT(fdt_setprop(fdt, rtas, "ibm,errinjct-tokens", + errinject_tokens, size_tokens)); + + _FDT(fdt_setprop_string(fdt, rtas, "ibm,open-errinjct", + "ibm,open-errinjct")); + _FDT(fdt_setprop_string(fdt, rtas, "ibm,close-errinjct", + "ibm,close-errinjct")); + } + _FDT(fdt_setprop(fdt, rtas, "ibm,lrdr-capacity", lrdr_capacity, sizeof(lrdr_capacity))); =20 --=20 2.54.0 From nobody Sat May 30 17:43:43 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=1778570055; cv=none; d=zohomail.com; s=zohoarc; b=kSx+nbdNoDosAxKV76Iwy7xVkzOmaSS8ZYnD0ACU9mCYxrj+xZXSlT+j9Lh45V6DcFnMIt9GvVQsSZ54YPxZp7WJmfubW9iylLxutfYYE+Tan8PknthRk8ijCfABLMHtLjiGQpexyVEHMyvKqiIkBp6i4Df54gUMX8si8vqdgzo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778570055; 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=NT7/BzFaSt0PGWjC7EzZEGgjIuk6ErHcC/mLQ+QDjVs=; b=mNyVSV6YNw1l4+PKwsTBsedEH0uvJ6jUvw0Zq9PhXApX49s5u6Or+rSnuCCsH8oKshcxMK0tQfCq/oxB5Vu3OP2SPabHsQ31Q8PQZCSUAAzs+unAZEVcjigMv8S0cFYrxVzS8PYLY/2MeU0K9yBT/9sCo/tFupwZTPsHlr+gpOM= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778570055071348.30156121509924; Tue, 12 May 2026 00:14:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhIJ-0002jg-G3; Tue, 12 May 2026 03:12:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHh-0002cd-EU; Tue, 12 May 2026 03:12:12 -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 1wMhHc-0002jl-K2; Tue, 12 May 2026 03:12:04 -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 64BK7B1n2760204; Tue, 12 May 2026 07:11: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 4e3nv6hsby-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11: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.7/8.18.1.7) with ESMTP id 64C79PSC012545; Tue, 12 May 2026 07:11:57 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgt35w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:11:57 +0000 (GMT) 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 64C7BrWG59703676 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:53 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E6AC22004D; Tue, 12 May 2026 07:11:52 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3BDB120040; Tue, 12 May 2026 07:11:50 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:49 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=NT7/BzFaSt0PGWjC7 EzZEGgjIuk6ErHcC/mLQ+QDjVs=; b=MzfUAYZLvOtASU33raI/TOH0uRgCGTQ6W D4pJqwhkJcTihScrHpDQ4xSAEYcQ2xpocGs9iF3dCH61o+LsUPdGO9SqQbCaaDa8 oU1G9eseHqIxhz7oAWzpYdf9DkPOBeAwT/64ptVeTse9m1KCE1yL4gXTg0N5C1Ue AJPZZgky9oBDcQmL0gpJoQPf+ON/oeL2tFRoey7m3jjITVnOBpITGBp6GW3yBtdw XevJJNlV5Q3g5iB7/doLmoOJQiz4uCs2xUokoK78TjRKZou1BRFeS0P61+cXo64n vbl6aLomOFsqr8cHjnY2yX/AprPF8Cy7ULBcgPPyzuKhgjvn8J5ZQ== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 5/6] hw/ppc: Rename spapr_pci_vfio.c to spapr_pci_vfio_eeh.c Date: Tue, 12 May 2026 12:41:10 +0530 Message-ID: <20260512071112.9675-6-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 X-Proofpoint-Reinject: loops=2 maxloops=12 X-Proofpoint-ORIG-GUID: Y2qpYFKvYX3xOiLKnxy0g3ZN4Ur3l6RK X-Proofpoint-GUID: j8PWzHs7n37R7-GwJTARJ3ZUFzN-WVx9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfX0UhE7FEz7AHR K0/D+U7iXEANeQQv9eD3vdW/OKkYHwp0x7ED3UMsmfXbfzdaqgduo2t+VtE1O32zP0qkJQpVcV4 p8pFVAlLee5ka0TRrIn6ku1Lcfl78HRnWAy6xf8Y6LIi8RXRjKcMFgNc+pvwl3W/rWzfhb06cnt WF+jcTCqoi7ZqM6Dvpzrvue8j/+4ot2oMrzb5NyDGMchZRPS/nX0ZFUZNGlGiowtsY33GieH+cF I/UmFwRWZi+JQZDbUzMAnvAbo2R6ES221Cq/hb9RYhk8ktXuQ/KJ1vTbHC/M0wbsALBGxkQxnN+ e6i+9MVJQjl3pqb0kEC6FefdIzs0WBSZnvnSDXJxMrbdHYjUFXSYWzfU/ovVI7yp5B4xj1/jEpp Y/EZq69umLEy/wytoWnKt/Yz/KKWpvMmcPLft+lzcBM+sDYEpQubH3A3cQ7ks3lQM4NXYnfArx+ gfA7QQCl40sZj86svfw== X-Authority-Analysis: v=2.4 cv=P8UKQCAu c=1 sm=1 tr=0 ts=6a02d2be cx=c_pps a=5BHTudwdYE3Te8bg5FgnPg==:117 a=5BHTudwdYE3Te8bg5FgnPg==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=RzCfie-kr_QcCd8fBx8p:22 a=VnNF1IyMAAAA:8 a=HwzBOX78but4wOTT2bgA: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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 phishscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.158.5; envelope-from=nnmlinux@linux.ibm.com; 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, 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778570056314158500 Content-Type: text/plain; charset="utf-8" The file spapr_pci_vfio.c contains exclusively EEH (Enhanced Error Handling) related functions for VFIO devices on sPAPR platforms. To better reflect its specific purpose and improve code organization, this commit: 1. Renames spapr_pci_vfio.c to spapr_pci_vfio_eeh.c 2. Moves spapr_phb_vfio_eeh_reenable() from spapr_pci_vfio_eeh.c to spapr_pci.c, as it's a general PHB operation not specific to VFIO EEH error injection/recovery After this change, spapr_pci_vfio_eeh.c contains only the core VFIO EEH error handling functions, making the file's purpose more focused and clear. This is a refactoring change with no functional impact. Signed-off-by: Narayana Murty N --- hw/ppc/Kconfig | 2 +- hw/ppc/meson.build | 2 +- hw/ppc/spapr_pci.c | 14 ++++++++++++++ hw/ppc/{spapr_pci_vfio.c =3D> spapr_pci_vfio_eeh.c} | 12 +----------- include/hw/pci-host/spapr.h | 1 + 5 files changed, 18 insertions(+), 13 deletions(-) rename hw/ppc/{spapr_pci_vfio.c =3D> spapr_pci_vfio_eeh.c} (96%) diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig index 347dcce690..886ce71ef8 100644 --- a/hw/ppc/Kconfig +++ b/hw/ppc/Kconfig @@ -6,7 +6,7 @@ config PSERIES imply PCI_DEVICES imply TEST_DEVICES imply VIRTIO_VGA - imply VFIO_PCI if LINUX # needed by spapr_pci_vfio.c + imply VFIO_PCI if LINUX # needed by spapr_pci_vfio_eeh.c select NVDIMM select DIMM select PCI diff --git a/hw/ppc/meson.build b/hw/ppc/meson.build index 37aa535db2..7cf0226b5e 100644 --- a/hw/ppc/meson.build +++ b/hw/ppc/meson.build @@ -35,7 +35,7 @@ ppc_ss.add(when: ['CONFIG_PSERIES', 'CONFIG_TCG'], if_tru= e: files( ppc_ss.add(when: 'CONFIG_SPAPR_RNG', if_true: files('spapr_rng.c')) if host_os =3D=3D 'linux' ppc_ss.add(when: 'CONFIG_PSERIES', if_true: files( - 'spapr_pci_vfio.c', + 'spapr_pci_vfio_eeh.c', )) endif =20 diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index b00f71d92a..fcb7b850c0 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -2215,6 +2215,20 @@ void spapr_phb_dma_reset(SpaprPhbState *sphb) tcet->def_win =3D true; } =20 +void spapr_phb_vfio_reset(DeviceState *qdev) +{ + /* + * The PE might be in frozen state. To reenable the EEH + * functionality on it will clean the frozen state, which + * ensures that the contained PCI devices will work properly + * after reboot. + */ + spapr_phb_vfio_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev)); +} + + + + static void spapr_phb_reset(DeviceState *qdev) { SpaprPhbState *sphb =3D SPAPR_PCI_HOST_BRIDGE(qdev); diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio_eeh.c similarity index 96% rename from hw/ppc/spapr_pci_vfio.c rename to hw/ppc/spapr_pci_vfio_eeh.c index ed0b22a84a..c00cf1d24b 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio_eeh.c @@ -131,21 +131,11 @@ bool spapr_phb_eeh_available(SpaprPhbState *sphb) return vfio_eeh_as_ok(&sphb->iommu_as); } =20 -static void spapr_phb_vfio_eeh_reenable(SpaprPhbState *sphb) +void spapr_phb_vfio_eeh_reenable(SpaprPhbState *sphb) { vfio_eeh_as_op(&sphb->iommu_as, VFIO_EEH_PE_ENABLE); } =20 -void spapr_phb_vfio_reset(DeviceState *qdev) -{ - /* - * The PE might be in frozen state. To reenable the EEH - * functionality on it will clean the frozen state, which - * ensures that the contained PCI devices will work properly - * after reboot. - */ - spapr_phb_vfio_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev)); -} =20 static void spapr_eeh_pci_find_device(PCIBus *bus, PCIDevice *pdev, void *opaque) diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h index 417d1f6c31..5ca122a5f1 100644 --- a/include/hw/pci-host/spapr.h +++ b/include/hw/pci-host/spapr.h @@ -125,6 +125,7 @@ int spapr_phb_vfio_eeh_get_state(SpaprPhbState *sphb, i= nt *state); int spapr_phb_vfio_eeh_reset(SpaprPhbState *sphb, int option); int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb); void spapr_phb_vfio_reset(DeviceState *qdev); +void spapr_phb_vfio_eeh_reenable(SpaprPhbState *sphb); int spapr_phb_vfio_errinjct(SpaprPhbState *sphb, uint32_t func, uint64_t addr, uint64_t mask, uint32_t type); #else --=20 2.54.0 From nobody Sat May 30 17:43:43 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=1778570008; cv=none; d=zohomail.com; s=zohoarc; b=aYfJXdZ1kQEJ5YHccoR/0IdugUFngxfnSmdEmRG1C/qVsBkYbgw3iJOERvTmgbXWauJTTh8Tz6OeLWQLYTR9+pnH7jv2gmXplOnvQ0lXJLSXPnjFH3/k4bVHYnM/a71yrH/OUtqdnwrY3BA0q8ONHtS8KAsQ743R92e1O9ZO8VM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778570008; 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=fLZtxzPiE//1Grmg/9b6/lfDSHW7DBwxC8JordvpkLM=; b=MYtVQYFVexUO8g5uBSdTGBduG0GKBHbO2+MKRMeHYKg0sucjMNW8dK76ZhN6wMYuWhyqAHW8T4hb/ahNgO5faD83SivnOtYkw09aEDDdodQ8xjyFDyRLy4sc4t6Vb2u/3K0Ptvbwa1HOkHWIE/FDcnrCUnxdUglpXBP1lge5fAM= 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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778570008743843.9309752501504; Tue, 12 May 2026 00:13:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wMhIO-0002mp-Fw; Tue, 12 May 2026 03:12:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wMhHm-0002dF-13; Tue, 12 May 2026 03:12:15 -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 1wMhHh-0002kR-Gr; Tue, 12 May 2026 03:12:07 -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 64BK74u53187026; Tue, 12 May 2026 07:12:02 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 4e3nv59w0q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:12:01 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id 64C79NY0015801; Tue, 12 May 2026 07:12:00 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 4e3nfgj32c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 May 2026 07:12:00 +0000 (GMT) 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 64C7Buni14942588 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 May 2026 07:11:56 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EFF162004B; Tue, 12 May 2026 07:11:55 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 54FB520040; Tue, 12 May 2026 07:11:53 +0000 (GMT) Received: from dhcp-9-123-10-31.bl1-in.ibm.com (unknown [9.123.10.31]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 May 2026 07:11:53 +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=fLZtxzPiE//1Grmg/ 9b6/lfDSHW7DBwxC8JordvpkLM=; b=FW6Li3lhI08Pzn4Szpu3e9jkDqSioRpfI ccLPg4QDbg0w7rPyLKFYFKU1ev7l7p7vkWscA9cYMIp3wOu1NHiPC1kOw/5YDt2A MMdsV3c8zO7wObAiRA0q+QUu7VZPywGcsNL9WRToe4GGW+ZS9cSVPt/j0YtIyYyk br5ia7gIWpiTGPN+JGkgy8EXhn+f/lpfD/mmJrykgG7wjrJvZ7qC3ruLptdVQIDb g5OEEzBGSYszseZV6nVHnd/iv7EFOT/WEbx7DVrYj5c9nTLepUJXeA48PiPucnas +rc8Cr3SUHDJGl7qOQZ1FTep+msErznPTYLymMKOhmNKt9FFSX2Fw== From: Narayana Murty N To: qemu-ppc@nongnu.org, qemu-devel@nongnu.org Cc: npiggin@gmail.com, harshpb@linux.ibm.com, mahesh@linux.ibm.com, ganeshgr@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com, anushree.mathur@linux.vnet.ibm.com Subject: [PATCH 6/6] MAINTAINERS: Add entry for sPAPR PCI VFIO EEH support Date: Tue, 12 May 2026 12:41:11 +0530 Message-ID: <20260512071112.9675-7-nnmlinux@linux.ibm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260512071112.9675-1-nnmlinux@linux.ibm.com> References: <20260512071112.9675-1-nnmlinux@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=cPHQdFeN c=1 sm=1 tr=0 ts=6a02d2c2 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=NGcC8JguVDcA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=69wJf7TsAAAA:8 a=pGLkceISAAAA:8 a=VcH14TYERV92i4gI124A:9 a=Fg1AiH1G6rFz08G2ETeA:22 X-Proofpoint-ORIG-GUID: cObGPxUKHxuvu71j0orKDsyLCfRH_LKM X-Proofpoint-GUID: xWivlGz2FkggdEksivLu6IcRzzXZRnzN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTEyMDA2OCBTYWx0ZWRfX+CC6gRgpKoNA 69nvhspeT20ikfQ2L/q2lQ/II5z4FdABYkUtQ/jW11Ijw4DbL1fmJeP8xEJd0LtdvR5ExKbF/i4 T8imnEpc4TzQmr+v+Qr1YokK+Z9QLQhlcPIB1XA/HjHfUIesz3Wvz1Aowje9/xo3TI3n+u40k9b V4Lap0clFGNlVpEILCo2wnwoLcmKt0SN667yAMaUjRqMWv8ZwHtgczVxs5WBAJ0WLbrBHnwAWaz aHMSkUGVQ8vDWaLlj45e53jBSrXDp78+0rC9EPpys7Ig6sAMB3d71O18BAg+oyi8G8obkRRiXs/ q7ASgMK+BCll8S464Xo2fIoxvPLzf8WXp59um1DUieoKM/+CIIgRhxsI4XD4Y7CZmrqHWYyFU9S sooUxxu2xbQhw5V9X7ZEp2NlMOk+6QOd9QBuK4iKgahn8vqFErh/LqqhcTEQdQLbVY+Lsj2x4+n mF5l9jaYaTNqvnOMjAA== 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-05-11_05,2026-05-08_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605120068 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=lists1p.gnu.org; Received-SPF: pass client-ip=148.163.156.1; envelope-from=nnmlinux@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1778570009787154100 Content-Type: text/plain; charset="utf-8" Add a dedicated MAINTAINERS entry for hw/ppc/spapr_pci_vfio_eeh.c, which implements Extended Error Handling (EEH) support for VFIO-based PCI devices on PowerPC sPAPR platforms. EEH provides error detection, isolation, and recovery mechanisms for PCI devices, allowing the system to handle and recover from hardware errors without requiring a full system reboot. Signed-off-by: Narayana Murty N --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 9d3d645953..03a638cab1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1656,6 +1656,12 @@ F: tests/functional/ppc64/test_pseries.py F: tests/functional/ppc64/test_hv.py F: tests/functional/ppc64/test_tuxrun.py =20 +sPAPR PCI VFIO Extended Error handling (EEH) +M: Narayana Murty +L: qemu-ppc@nongnu.org +S: Maintained +F: hw/ppc/spapr_pci_vfio_eeh.c + PowerNV (Non-Virtualized) M: Nicholas Piggin R: Aditya Gupta --=20 2.54.0