public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Farhan Ali <alifm@linux.ibm.com>
To: Niklas Schnelle <schnelle@linux.ibm.com>,
	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, stable@vger.kernel.org, mjrosato@linux.ibm.com,
	julianr@linux.ibm.com
Subject: Re: [PATCH v8 7/9] vfio-pci/zdev: Add a device feature for error information
Date: Tue, 27 Jan 2026 13:44:11 -0800	[thread overview]
Message-ID: <88289f74-3d4f-4dd9-8f2a-8871d150fd50@linux.ibm.com> (raw)
In-Reply-To: <74ce68664925fa4cc4207c97d431b851b8ec8afc.camel@linux.ibm.com>


On 1/27/2026 2:53 AM, Niklas Schnelle wrote:
> On Thu, 2026-01-22 at 11:44 -0800, Farhan Ali wrote:
>> For zPCI devices, we have platform specific error information. The platform
>> 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.
>>
>> Signed-off-by: Farhan Ali <alifm@linux.ibm.com>
>> ---
>>   drivers/vfio/pci/vfio_pci_core.c |  2 ++
>>   drivers/vfio/pci/vfio_pci_priv.h |  9 ++++++++
>>   drivers/vfio/pci/vfio_pci_zdev.c | 35 ++++++++++++++++++++++++++++++++
>>   include/uapi/linux/vfio.h        | 16 +++++++++++++++
>>   4 files changed, 62 insertions(+)
>>
> --- snip ---
>>   
>> +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;
>> +	struct vfio_pci_core_device *vdev;
>> +	struct zpci_dev *zdev;
>> +	int head = 0;
>> +	int ret;
>> +
>> +	vdev = container_of(device, struct vfio_pci_core_device, vdev);
>> +	zdev = to_zpci(vdev->pdev);
>> +	if (!zdev)
>> +		return -ENODEV;
>> +
>> +	ret = vfio_check_feature(flags, argsz, VFIO_DEVICE_FEATURE_GET,
>> +				 sizeof(err));
>> +	if (ret != 1)
>> +		return ret;
>> +
>> +	mutex_lock(&zdev->pending_errs_lock);
>> +	if (zdev->pending_errs.count) {
>> +		head = zdev->pending_errs.head % ZPCI_ERR_PENDING_MAX;
>> +		err.pec = zdev->pending_errs.err[head].pec;
> In the previous patch you saved the entire struct zpci_ccdf_err now you
> only copy out and expose the PCI event code, though? If you do want to
> only expose that the commit message should state this and the reason
> for this restriction. Additionally I think the struct
> vfio_device_feature_zpci_err should include a mechanism (version +
> size?) to allow upgrading it to the full error information in the
> future.

I think having explicit version variable in the struct should be 
sufficient (the __pad can be replaced with version). I don't think we 
need explicit size variable? I have looked at some of the capability 
structures in vfio_zdev.h, as examples and so we could use a similar 
approach here when we need to extend the vfio_device_feature_zpci_err?

Though I don't see any other vfio device feature structure being 
explicitly versioned. I am open to any guidance/suggestions on the best 
practices on how to we version VFIO device feature structs.


>
> Then again why not just expose the entire CCDF? It's an architected
> data structure without and if you add it at the end of struct
> vfio_device_feature_zpci_err and add a size you should even be able to
> handle if it ever needs to grow. Of course you'd have to create a copy
> of the struct to use the the uAPI types so I'd probably also add a
> BUILD_BUG_ON() check on matching size. Or am I missing a reason to keep
> just the PEC?

I wanted to keep the information exposed to userspace minimal. The CCDF 
exposes far more information and may not be needed by userspace/VM. 
Today the PEC is sufficient for user space(QEMU) to take bubble up to a 
VM. I also wanted to avoid having a copy of the struct in 2 places.

Thanks

Farhan

>> +		zdev->pending_errs.head++;
>> +		zdev->pending_errs.count--;
>> +		err.pending_errors = zdev->pending_errs.count;
>> +	}
>> +	mutex_unlock(&zdev->pending_errs_lock);
>> +
>> +	if (copy_to_user(arg, &err, sizeof(err)))
>> +		return -EFAULT;
>> +
>> +	return 0;
>> +}
>> +

  reply	other threads:[~2026-01-27 21:44 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-22 19:44 [PATCH v8 0/9] Error recovery for vfio-pci devices on s390x Farhan Ali
2026-01-22 19:44 ` [PATCH v8 1/9] PCI: Allow per function PCI slots Farhan Ali
2026-01-22 19:44 ` [PATCH v8 2/9] s390/pci: Add architecture specific resource/bus address translation Farhan Ali
2026-01-22 19:44 ` [PATCH v8 3/9] PCI: Avoid saving config space state if inaccessible Farhan Ali
2026-01-26 21:00   ` Niklas Schnelle
2026-02-07  0:39   ` Bjorn Helgaas
2026-02-09 18:20     ` Farhan Ali
2026-01-22 19:44 ` [PATCH v8 4/9] PCI: Add additional checks for flr reset Farhan Ali
2026-01-26 13:11   ` Julian Ruess
2026-01-22 19:44 ` [PATCH v8 5/9] s390/pci: Update the logic for detecting passthrough device Farhan Ali
2026-01-22 19:44 ` [PATCH v8 6/9] s390/pci: Store PCI error information for passthrough devices Farhan Ali
2026-01-22 19:44 ` [PATCH v8 7/9] vfio-pci/zdev: Add a device feature for error information Farhan Ali
2026-01-27 10:53   ` Niklas Schnelle
2026-01-27 21:44     ` Farhan Ali [this message]
2026-01-22 19:44 ` [PATCH v8 8/9] vfio: Add a reset_done callback for vfio-pci driver Farhan Ali
2026-01-27 11:02   ` Niklas Schnelle
2026-01-22 19:44 ` [PATCH v8 9/9] vfio: Remove the pcie check for VFIO_PCI_ERR_IRQ_INDEX Farhan Ali
2026-01-26 15:31   ` Julian Ruess
2026-01-26 17:38     ` Farhan Ali
2026-01-27  8:15   ` Julian Ruess
2026-01-27 11:16   ` Niklas Schnelle
2026-02-06 19:03 ` [PATCH v8 0/9] Error recovery for vfio-pci devices on s390x Farhan Ali

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=88289f74-3d4f-4dd9-8f2a-8871d150fd50@linux.ibm.com \
    --to=alifm@linux.ibm.com \
    --cc=alex@shazbot.org \
    --cc=clg@redhat.com \
    --cc=helgaas@kernel.org \
    --cc=julianr@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=mjrosato@linux.ibm.com \
    --cc=schnelle@linux.ibm.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox