From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6640D37997E; Wed, 29 Apr 2026 09:41:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.156.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777455683; cv=none; b=jkHweDj1hg4V+BLNTLHWfy037Uus7Arr+HNWmhX6t794B1n2T4NQzQLVC5I6nxzYaqHRbOgPDxyD19k0YSCIUcLTxXc1hziLM784ikgf9bOotWBpZ7QnSN9FnWNgBHVMs/AUvxXlRj036aES3rYJInCegDSrFX3ozd+YAnZqe+8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777455683; c=relaxed/simple; bh=aByppcgVW+Rs50xIBeIP+GnOwWLm1YQX9cHfm4y72wQ=; h=Message-ID:Subject:From:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=UoKU0UI6iuLZ5TTCYMd54CDXXgGM7DZJaompUq3WVR1ReRWHmnYip4ejzs7MpINg9cYMHEWykTU1eJVk2kiMhTbi1PcENAwHi50y7uiPWjWrRsfEPYy+qt9UPbWB+7g3T25hpGKxv/sDEltAaPBPpUl508AyY2AF8g6/3II4wuc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; spf=pass smtp.mailfrom=linux.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=KO/JflXI; arc=none smtp.client-ip=148.163.156.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.ibm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="KO/JflXI" 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 63SN5qiC1046341; Wed, 29 Apr 2026 09:41:15 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=9DV/px n3pjFB5pZ61jydtLiU4EwIf+ytGHQNat/RMv8=; b=KO/JflXIjKuov9FASnKh7T eJhnGa+OnVjBPA+jRu7H2RuZKtKADKQ8mN1m2fE0df48lGFrqEIs2hIcuFWeJdfp G/tb5n998aegKAiDTLtGlX0TjfNxboxdRqRvbl6MMjnjSSjk7sstO82BIQPL6Zh4 7wheuChyj+qlbjC2bgKBMHa1WfzQ8KFG7RctKTfX6NXt9k7e+2gXoPWWzSNyKlxw 6ftu06pnEdiv9ik1fFMXtlIbKsXwgJrrp/EF82lKclJAoMQsEhaYnZ++HZREqE4r ecelpWfn9gKbPmXQlzqBA+HtAP2RV6Pk3gIVp+AY9yj1B3X5zf34yfs7IlH6kuIA == 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 4drn44sw28-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 29 Apr 2026 09:41:15 +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 63T9choq032551; Wed, 29 Apr 2026 09:41:14 GMT Received: from smtprelay02.wdc07v.mail.ibm.com ([172.16.1.69]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dsa5gdjxb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 29 Apr 2026 09:41:14 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (smtpav03.wdc07v.mail.ibm.com [10.39.53.230]) by smtprelay02.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 63T9fDSY24445524 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 Apr 2026 09:41:13 GMT Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id EB83C5805A; Wed, 29 Apr 2026 09:41:12 +0000 (GMT) Received: from smtpav03.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3BA3858054; Wed, 29 Apr 2026 09:41:11 +0000 (GMT) Received: from [9.52.215.169] (unknown [9.52.215.169]) by smtpav03.wdc07v.mail.ibm.com (Postfix) with ESMTP; Wed, 29 Apr 2026 09:41:11 +0000 (GMT) Message-ID: <56bcc0f67c15ad01f6fff161164698f1689af0f1.camel@linux.ibm.com> Subject: Re: [PATCH v14 5/7] vfio-pci/zdev: Add a device feature for error information From: Niklas Schnelle To: Farhan Ali , linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org Cc: helgaas@kernel.org, lukas@wunner.de, alex@shazbot.org, clg@redhat.com, mjrosato@linux.ibm.com In-Reply-To: <20260421163031.704-6-alifm@linux.ibm.com> References: <20260421163031.704-1-alifm@linux.ibm.com> <20260421163031.704-6-alifm@linux.ibm.com> Autocrypt: addr=schnelle@linux.ibm.com; prefer-encrypt=mutual; keydata=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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Date: Wed, 29 Apr 2026 11:40:10 +0200 Precedence: bulk X-Mailing-List: linux-s390@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Evolution 3.58.3 (3.58.3-1.fc43) X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: qpKACrLnkAahoqtGh3gyEWcpiiQcaQBO X-Authority-Analysis: v=2.4 cv=Ft81OWrq c=1 sm=1 tr=0 ts=69f1d23b cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22 a=iQ6ETzBq9ecOQQE5vZCe:22 a=VnNF1IyMAAAA:8 a=lWuAaY__A_jS1gmM_q4A:9 a=QEXdDO2ut3YA:10 X-Proofpoint-GUID: qpKACrLnkAahoqtGh3gyEWcpiiQcaQBO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI5MDA5MyBTYWx0ZWRfX2Giaj06Brh76 hMSxz2/vsuQr08q3be0NeoEF9Il/nQcj/Ck3c5WDJkRIoSrqa21fWpsqdJRvRvra84fHTnU9oB6 IdCUVdYZ90CfE8A/Lfny0yiws61JPgzKQwSKfDKtT4kfpklJCNeTyZv2n5+jazPsn10E0TZIen8 SLIVrak2GrRSCLX5/OowCl02mSEhv+dh9gE8U5tKuqm40Qnjxt+EpQCd+G2eJae/h77SRsBKHe5 sgFXujD+sBEtfw6sG5ZjXIBrpchACxdr1nVnxAeLj+TrEtLk6Dc7SzGwxHMvSFRgOa3ijFpnUjT +ch+mMgQXnFIbdaK9nlAg8G/8dCP7Wqkysmbzolc+TowAnxYw2qlCR4d20AqSOQvHa9Q5R9EUnH cyhiw1XhCjjZUT/ic/3RrmmhXgmfTAdUcSmy+J/G5kYxi7Kf/C4O6jslzUtz+yIDKixZPLoOknX 252SpxWBoMllJrUI9Ug== 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-04-28_05,2026-04-28_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 bulkscore=0 spamscore=0 impostorscore=0 clxscore=1015 malwarescore=0 phishscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604290093 On Tue, 2026-04-21 at 09:30 -0700, Farhan Ali wrote: > For zPCI devices, we have platform specific error information. The platfo= rm > firmware provides this error information to the operating system in an > architecture specific mechanism. To enable recovery from userspace for > these devices, we want to expose this error information to userspace. Add= a > new device feature to expose this information. >=20 > Reviewed-by: Matthew Rosato > Signed-off-by: Farhan Ali > --- > arch/s390/include/asm/pci.h | 2 ++ > arch/s390/pci/pci_event.c | 19 ++++++++++++++++ > drivers/vfio/pci/vfio_pci_core.c | 2 ++ > drivers/vfio/pci/vfio_pci_priv.h | 9 ++++++++ > drivers/vfio/pci/vfio_pci_zdev.c | 39 ++++++++++++++++++++++++++++++++ > include/uapi/linux/vfio.h | 29 ++++++++++++++++++++++++ > 6 files changed, 100 insertions(+) >=20 > diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h > index 9a6a4eb9d7c1..b1858d512fec 100644 > --- a/arch/s390/include/asm/pci.h > +++ b/arch/s390/include/asm/pci.h > @@ -360,6 +360,8 @@ int zpci_clear_error_state(struct zpci_dev *zdev); > int zpci_reset_load_store_blocked(struct zpci_dev *zdev); > void zpci_start_mediated_recovery(struct zpci_dev *zdev); > void zpci_stop_mediated_recovery(struct zpci_dev *zdev); > +int zpci_get_pending_error(struct zpci_dev *zdev, > + struct zpci_ccdf_err *ccdf); > =20 > #ifdef CONFIG_NUMA > =20 > diff --git a/arch/s390/pci/pci_event.c b/arch/s390/pci/pci_event.c > index c279a9f50a64..227a939fcad3 100644 > --- a/arch/s390/pci/pci_event.c > +++ b/arch/s390/pci/pci_event.c > @@ -74,6 +74,25 @@ static void zpci_store_pci_error(struct pci_dev *pdev, > zdev->pending_errs.count++; > } > =20 > +int zpci_get_pending_error(struct zpci_dev *zdev, > + struct zpci_ccdf_err *ccdf) > +{ > + int head =3D 0; > + > + guard(mutex)(&zdev->pending_errs_lock); > + > + if (!zdev->pending_errs.count) > + return -ENOMSG; I think we may want to explicitly document that the feature ioctl fails with -ENOMSG if there are no more errors. > + > + head =3D zdev->pending_errs.head % ZPCI_ERR_PENDING_MAX; > + memcpy(ccdf, &zdev->pending_errs.err[head], > + sizeof(struct zpci_ccdf_err)); > + zdev->pending_errs.head++; > + zdev->pending_errs.count--; > + return 0; > +} --- snip --- > =20 > +int vfio_pci_zdev_feature_err(struct vfio_device *device, u32 flags, > + void __user *arg, size_t argsz) > +{ > + struct vfio_device_feature_zpci_err err =3D {}; > + struct vfio_pci_core_device *vdev; > + struct zpci_ccdf_err ccdf =3D {}; > + struct zpci_dev *zdev; > + int ret; > + > + vdev =3D container_of(device, struct vfio_pci_core_device, vdev); > + zdev =3D to_zpci(vdev->pdev); > + if (!zdev) > + return -ENODEV; > + > + ret =3D vfio_check_feature(flags, argsz, VFIO_DEVICE_FEATURE_GET, > + sizeof(err)); > + if (ret !=3D 1) > + return ret; > + > + ret =3D zpci_get_pending_error(zdev, &ccdf); > + if (ret) > + return ret; > + > + err.fh =3D ccdf.fh; > + err.fid =3D ccdf.fid; > + err.ett =3D ccdf.ett; > + err.mvn =3D ccdf.mvn; > + err.dmaas =3D ccdf.dmaas; > + err.q =3D ccdf.q; > + err.rw =3D ccdf.rw; > + err.faddr =3D ccdf.faddr; > + err.pec =3D ccdf.pec; I like this explicit approach and I think having all of the information available from the get got is a nice side effect also. > + > + if (copy_to_user(arg, &err, sizeof(err))) > + return -EFAULT; > + > + return 0; > +} > + > int vfio_pci_zdev_open_device(struct vfio_pci_core_device *vdev) > { > struct zpci_dev *zdev =3D to_zpci(vdev->pdev); > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h > index 5de618a3a5ee..e78f53ab561a 100644 > --- a/include/uapi/linux/vfio.h > +++ b/include/uapi/linux/vfio.h > @@ -1534,6 +1534,35 @@ struct vfio_device_feature_dma_buf { > */ > #define VFIO_DEVICE_FEATURE_MIG_PRECOPY_INFOv2 12 > =20 > +/** > + * VFIO_DEVICE_FEATURE_ZPCI_ERROR feature provides PCI error information= to > + * userspace for vfio-pci devices on s390x. On s390x, PCI error recovery In the kernel we use s390 while qemu uses s390x (and it really is 64 bit only for both) it's confusing but it is what it is. Stick to s390 here. > + * involves platform firmware and notification to operating system is do= ne "operating systems" (plural) or "the operating system" > + * by architecture specific mechanism. Exposing this information to > + * userspace allows it to take appropriate actions to handle an > + * error on the device. > + */ > + > +struct vfio_device_feature_zpci_err { > + __u32 flags; /* Indicate feature in non CCDF reserved space */ The "non CCDF" feels a bit subtle for marking this as a vfio-pci feature specific field. Maybe call it "vfio_feat_flags"? > + __u32 reserved1; > + __u32 fh; /* function handle */ > + __u32 fid; /* function id */ > + __u32 ett : 4; /* expected table type */ > + __u32 mvn : 12; /* MSI vector number */ > + __u32 dmaas : 8; /* DMA address space */ > + __u32 reserved2 : 6; > + __u32 q : 1; /* event qualifier */ > + __u32 rw : 1; /* read/write */ > + __u64 faddr; /* failing address */ > + __u32 reserved3; > + __u16 reserved4; > + __u16 pec; /* PCI event code */ > + __u8 reserved5[28]; /* Non CCDF reserved space */ While also vfio-pci specific for now, the reserved5 would potentially become CCDF if that ever grows. Maybe the comment could say "Allow for future expansion"? > +}; > + > +#define VFIO_DEVICE_FEATURE_ZPCI_ERROR 13 > + > /* -------- API for Type1 VFIO IOMMU -------- */ > =20 I like this new approach with returning one error ccdf at a time and then -ENOMSG when there are no more errors. Thanks Alex for the suggestion!=20 So feel free to add my: Reviewed-by: Niklas Schnelle Thanks, Niklas