From: Omar Elghoul <oelghoul@linux.ibm.com>
To: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org
Cc: hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
borntraeger@linux.ibm.com, svens@linux.ibm.com,
schnelle@linux.ibm.com, mjrosato@linux.ibm.com,
alifm@linux.ibm.com, farman@linux.ibm.com, gbayer@linux.ibm.com,
pasic@linux.ibm.com, alex@shazbot.org
Subject: Re: [PATCH v7 0/4] vfio-pci/zdev: Improved zPCI Function Measurement Support
Date: Wed, 30 Sep 2026 13:48:42 -0400 [thread overview]
Message-ID: <04c262f6-988c-4105-8578-a482036d3e3b@linux.ibm.com> (raw)
In-Reply-To: <20260922195141.94548-1-oelghoul@linux.ibm.com>
Polite ping c:
Thanks
On 9/22/26 3:51 PM, Omar Elghoul wrote:
> Hi,
>
> This patch series improves support for function measurement for zPCI
> passthrough devices on s390.
>
> Changelog
> =========
> v6 -> v7:
> * Patch 2/4:
> - Don't re-enable FMB if it wasn't already enabled
>
> v5 -> v6:
> * Patch 2/4:
> - Rework the FMB re-enablement code to reuse the same buffer again
> - Make the FMB buffer persistent once allocated for as long as the
> device's lifetime to accommodate an architectural quirk
> * Patch 4/4:
> - Update the liveness check to use the new FMB enabled bool
>
> v4 -> v5:
> * Typo in the cover letter
> * Swap the ordering of patches 3/4 and 4/4 to ease merging (i.e., to
> ensure the three s390 patches are ordered before the VFIO patch)
> * Patch 2/4:
> - Drop the refactor of zpci_fmb_enable_device() and the separation of
> zpci_fmb_clear_iommu_ctrs() and zpci_fmb_do_enable()
> - Allocate a new buffer in zpci_fmb_reenable_device() rather than
> reusing the same buffer to avoid firmware edge cases
>
> * Patch 3/4 (previously 4/4):
> - Avoid reading from userspace while holding kzdev_lock unnecessarily
>
> * Patch 4/4 (previously 3/4):
> - Drop allowing usercopy of the FMB when initializing the kmem_cache
> - Avoid copying to userspace while holding fmb_lock unnecessarily
> - Restore the FMB bounce buffer to achieve this one
> - Clarify uAPI documentation and ensure it accurately describes the
> behavior of the VFIO features
>
> v3 -> v4:
> * Patch 2/4:
> - Replace mutex_lock/unlock in zpci_reenable_device() with a guard
>
> * Patch 3/4:
> - Allow usercopy of the FMB when initializing its kmem_cache
> - Move the guard in vfio_pci_zdev_feature_fmb_enable() lower to only
> protect the FMB
> - Ensure vfio_pci_zdev_feature_fmb_enable() fails on double-enable for
> consistency with the documentation
> - Eliminate the bounce buffer in vfio_pci_zdev_feature_fmb_read()
> - Replace the void pointer with __aligned_u64 in the FMB read uAPI
> structure
>
> v2 -> v3:
> * Patch 1/4 (new patch):
> - Fix race conditions in pcibios_enable/disable_device() with regard to
> the FMB enable/disable
> - Assert that fmb_lock is held within zpci_fmb_enable_device() and
> zpci_fmb_disable_device()
>
> * Patch 2/4 (previously 1/3):
> - Move the FMB enable logic into a static function zpci_fmb_do_enable()
> to reduce code duplication between zpci_fmb_enable_device() and
> zpci_fmb_reenable_device()
> - Reword commit message to use the imperative voice more consistently
>
> * Patch 3/4 (previously 2/3):
> - Split the previous VFIO feature into a SET-only and a GET-only feature
> for enabling/disabling and reading the FMB respectively
> - Remove FMB definitions from the VFIO uAPI and instead treat it as an
> opaque structure
>
> * Patch 4/4 (previously 3/3):
> - Clarify goto label name to reduce misunderstandings
>
> v1 -> v2:
> * Patch 1/3:
> - Address a possible race condition in zpci_reenable_device() caused by
> calling zpci_fmb_reenable_device() without holding fmb_lock
> - Assert that fmb_lock is held within zpci_fmb_reenable_device()
>
> * Patch 3/3:
> - Address a possible race condition in pci_perf_seq_write() caused by
> consuming zdev->kzdev without holding kzdev_lock
>
> Motivation
> ==========
> The firmware on s390x machines allows for tracking a variety of statistics
> relating to zPCI devices in a function measurement block (FMB). However,
> the kernel currently lacks a structured mechanism of sharing this
> information with userspace, beyond /sys/kernel/debug/pci/ID/statistics.
> This can lead to shortcomings when running a guest on KVM with PCI
> passthrough devices, as QEMU is unable to provide an accurate FMB snapshot
> to the guest.
>
> Proposal
> ========
> We propose adding a new VFIO device feature to zPCI passthrough devices,
> allowing userspace programs to read the latest FMB snapshot as it is
> written by the firmware. We ensure that function measurement enablement is
> preserved across device resets on the host. Furthermore, we guard against
> host tampering with the FMB via sysfs when the zPCI device is in
> passthrough to protect the VM's state.
>
> I'd appreciate some feedback on these patches.
>
> Thanks in advance.
>
> Omar Elghoul (4):
> s390/pci: Hold fmb_lock when enabling or disabling PCI devices
> s390/pci: Reuse FMB buffer and preserve state in device re-enablement
> s390/pci: Fence FMB enable/disable via debugfs for passthrough devices
> vfio-pci/zdev: Add VFIO FMB device features
>
> arch/s390/include/asm/pci.h | 2 +
> arch/s390/pci/pci.c | 85 +++++++++++++++++++++++++-------
> arch/s390/pci/pci_debug.c | 11 ++++-
> drivers/vfio/pci/vfio_pci_core.c | 4 ++
> drivers/vfio/pci/vfio_pci_priv.h | 18 +++++++
> drivers/vfio/pci/vfio_pci_zdev.c | 60 ++++++++++++++++++++++
> include/uapi/linux/vfio.h | 29 +++++++++++
> 7 files changed, 191 insertions(+), 18 deletions(-)
>
prev parent reply other threads:[~2026-09-30 17:48 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-22 19:51 Omar Elghoul
2026-09-22 19:51 ` [PATCH v7 1/4] s390/pci: Hold fmb_lock when enabling or disabling PCI devices Omar Elghoul
2026-09-22 19:51 ` [PATCH v7 2/4] s390/pci: Reuse FMB buffer and preserve state in device re-enablement Omar Elghoul
2026-09-23 15:09 ` Gerd Bayer
2026-09-23 16:37 ` Omar Elghoul
2026-09-24 15:55 ` Gerd Bayer
2026-09-24 16:47 ` Omar Elghoul
2026-09-23 22:20 ` Matthew Rosato
2026-09-24 14:27 ` Omar Elghoul
2026-09-30 18:57 ` Alex Williamson
2026-09-30 19:36 ` Omar Elghoul
2026-09-22 19:51 ` [PATCH v7 3/4] s390/pci: Fence FMB enable/disable via debugfs for passthrough devices Omar Elghoul
2026-09-22 19:51 ` [PATCH v7 4/4] vfio-pci/zdev: Add VFIO FMB device features Omar Elghoul
2026-09-30 18:57 ` Alex Williamson
2026-09-30 19:17 ` Matthew Rosato
2026-09-30 19:40 ` Omar Elghoul
2026-09-30 20:03 ` Alex Williamson
2026-09-30 17:48 ` Omar Elghoul [this message]
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=04c262f6-988c-4105-8578-a482036d3e3b@linux.ibm.com \
--to=oelghoul@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=alex@shazbot.org \
--cc=alifm@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=farman@linux.ibm.com \
--cc=gbayer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=schnelle@linux.ibm.com \
--cc=svens@linux.ibm.com \
/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
all inboxes | Powered by JetHome®