mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.ibm.com>
To: Omar Elghoul <oelghoul@linux.ibm.com>,
	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, alifm@linux.ibm.com,
	farman@linux.ibm.com, gbayer@linux.ibm.com, pasic@linux.ibm.com,
	alex@shazbot.org
Subject: Re: [PATCH v6 2/4] s390/pci: Reuse FMB buffer and preserve state in device re-enablement
Date: Thu, 17 Sep 2026 11:28:25 -0400	[thread overview]
Message-ID: <dae3c7cd-21aa-4263-bec5-792b018d21e2@linux.ibm.com> (raw)
In-Reply-To: <85cb647d-b1c8-4804-b206-2cae1e03e20d@linux.ibm.com>

On 9/17/26 9:32 AM, Omar Elghoul wrote:
> On 9/16/26 10:21 PM, Matthew Rosato wrote:
>>
>>> +int zpci_fmb_reenable_device(struct zpci_dev *zdev)
>>> +{
>>> +    u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_SET_MEASURE);
>>> +    struct zpci_fib fib = {0};
>>> +    u8 cc, status;
>>> +
>>> +    lockdep_assert_held(&zdev->fmb_lock);
>>> +
>>> +    if (!zdev->fmb_enabled)
>>> +        return zpci_fmb_enable_device(zdev);
>>
>> Sashiko has a point here, won't all paths that call zpci_reenable_device
>> now unconditionally turn on FMB here even if it was purposely disabled?
>>
>> The pattern of callers for zpci_reenable_device() is:
>>
>> zpci_disable_device()
>> ...
>> zpci_reenable_device()
>>
>> We only care to re-enable the FMB during device re-enable if the device
>> had FMB enabled at the time zpci_disable_device() was called.
> 
> The way I thought of it was pcibios_enable_device() already enables
> measurement, so we might as well ensure it is enabled when the zdev is

Yes, FMB starts enabled by default but then it could be disabled
intentionally via sysfs; if a recovery action occurs on the device
sometime after I manually disabled FMB for a device, I'd expect it to
still be disabled after the recovery action but AFAICT with this
codepath it will always get re-enabled.

Completely removing the device and re-introducing it to the system is a
different matter; in that case yeah we'd be back to FMB-enabled because
that's our default starting state via pcibios_enable_device().

> re-enabled. That default state is also helpful for the later patches
> because kvm_s390_pci_register_kvm() calls zpci_reenable_device().
> 
> But I guess if we didn't want to conflate the two, we could also add an
> unconditional zpci_fmb_reenable_device() within the KVM register hook,
> to run after the zpci_reenable_device(), whichever you'd prefer.

Do we even want it to be part of the KVM register hook at all, or could
we leave it off until we get a VFIO_DEVICE_FEATURE_ZPCI_FMB_ENABLE?

That way if a guest isn't using FMB (we never intercepted the associated
MPCIFC to enable measurement), QEMU would never issue
VFIO_DEVICE_FEATURE_ZPCI_FMB_ENABLE and then we just leave the host FMB off.

In practice, yes, FMB is always on by default for a linux guest today
but if we were to ever move to a model where we make it opt-in, it would
be nice to only enable the host FMB when the guest actually wants it.

  reply	other threads:[~2026-09-17 15:28 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16 21:32 [PATCH v6 0/4] vfio-pci/zdev: Improved zPCI Function Measurement Support Omar Elghoul
2026-09-16 21:32 ` [PATCH v6 1/4] s390/pci: Hold fmb_lock when enabling or disabling PCI devices Omar Elghoul
2026-09-17  2:21   ` Matthew Rosato
2026-09-16 21:32 ` [PATCH v6 2/4] s390/pci: Reuse FMB buffer and preserve state in device re-enablement Omar Elghoul
2026-09-17  2:21   ` Matthew Rosato
2026-09-17 13:32     ` Omar Elghoul
2026-09-17 15:28       ` Matthew Rosato [this message]
2026-09-17 16:38         ` Omar Elghoul
2026-09-16 21:32 ` [PATCH v6 3/4] s390/pci: Fence FMB enable/disable via debugfs for passthrough devices Omar Elghoul
2026-09-17  2:23   ` Matthew Rosato
2026-09-16 21:32 ` [PATCH v6 4/4] vfio-pci/zdev: Add VFIO FMB device features Omar Elghoul

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=dae3c7cd-21aa-4263-bec5-792b018d21e2@linux.ibm.com \
    --to=mjrosato@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=oelghoul@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®