mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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(-)
> 


      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®