From: Omar Elghoul <oelghoul@linux.ibm.com>
To: Gerd Bayer <gbayer@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, mjrosato@linux.ibm.com,
alifm@linux.ibm.com, farman@linux.ibm.com, pasic@linux.ibm.com,
alex@shazbot.org, Gerd Bayer <gerd.bayer@de.ibm.com>
Subject: Re: [PATCH v7 2/4] s390/pci: Reuse FMB buffer and preserve state in device re-enablement
Date: Thu, 24 Sep 2026 12:47:52 -0400 [thread overview]
Message-ID: <4af9eb03-e14b-4cb4-986b-b7d9a51fb368@linux.ibm.com> (raw)
In-Reply-To: <8c1094dda46b18a8c4d12dafbfea94e89c0b0b85.camel@linux.ibm.com>
On 9/24/26 11:55 AM, Gerd Bayer wrote:
>
[...]
>>>
>>> I see a little imbalance of the semantics of "reenable" in
>>> zpci_fmb_reenable_device() vs. zpci_reenable_device():
>>> zpci_reenable_device() "just" enables + registers existing data
>>> structures with the underlying system - while
>>> zpci_fmb_reenable_device() does both the disablement + the enablement.
>>
>> Strictly speaking, the disablement step may not be necessary, provided
>> firmware starts the counters at zero upon changing an FMB address, which
>> does seem to be true in practice. The architecture doesn't explicitly
>> require that though, so I thought it's a reasonable safeguard to use it
>> as an intermediate step that signals firmware to stop counting before we
>> immediately restart measurement after.
>
> Initially, my point was purely "semantics":
> If it is enough for zpci_reenable_device() to do only "enabling"-kind
> of steps, why is zpci_fmb_reenable_device() then also doing some
> "disabling" (under certain conditions). In my eyes the "reenable" was
> actually a "conditional-toggling-on".
>
> And this then led me to checking the paths leading into
> zpci_reenable_device(). I found that all paths would call
> zpci_disable_device() before and that led me to the next question:
>
>>> Since zpci_disable_device() includes the disablement of FMB per
>>> architecture, I wonder if it would suffice to set zdev->fmb_enabled = 0
>>> in that function, and drop the explicit disable FMB there?
>>
>> The semantics of the FMB re-enable function were intended to allow us
>> to re-enable the FMB when we re-enable the device after FMB was
>> implicitly disabled via zpci_disable_device(), like you said. Prior to
>> this patch, there was a sort of "limbo" state where firmware thinks FMB
>> is disabled, but the kernel is unaware of it because it was implicit.
>>
>> For that same reason, I would prefer to not touch zpci_disable_device()
>> at all, neither explicitly disabling FMB nor setting fmb_enabled to 0.
>> The purpose of fmb_enabled variable is to allow us to restore the
>> original FMB enablement when we re-enable the device, and so we want to
>> preserve it here [1].
>
> OK, I see. The whole point was to preserve the FMB enabled state over
> disable/enable sequences on a zdev: Re-enable if (and only if) it was
> enabled before the sequence. So I agree, you must not set zdev-
>> fmb_enabled = 0 in zpci_disable_device(). But you can trust firmware
> to stop updating the FMB buffer (after the ominous grace-period) after
> zpci_disable_device() ran - the zpci_mod_fc() to set FMB to 0 is done
> implicitly in clp_disable_fh().
>
> And you wanted to reuse the zdev->fmb buffer if there ever was one
> allocated for the zdev. It just occurred to me, what good is the whole
> zdev_fmb_cache if the life-time of struct zpci_fmb buffers becomes
> almost as static as struct zpci_dev (short of those that never leave
> "STANDBY"). Couldn't we just kzalloc() a struct zpci_fmb right in
> zpci_create_device()?
We could allocate the FMB buffer in zpci_create_device(). But we cannot
use kzalloc() because the architecture requires it to be 16-byte-aligned
(and apparently on some models it can't even cross a 4K-boundary...) The
existing zpci_fmb struct is 80 bytes and is aligned to the nearest power
of 2 (128 bytes), which I presume is to satisfy this requirement.
Thanks
>
>
>>
>> Thanks
>>
>> [1]
>> https://lore.kernel.org/all/dae3c7cd-21aa-4263-bec5-792b018d21e2@linux.ibm.com/
>>
>>
>
> [...]
>
> Thank you,
> Gerd
next prev parent reply other threads:[~2026-09-24 16:48 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-22 19:51 [PATCH v7 0/4] vfio-pci/zdev: Improved zPCI Function Measurement Support 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 [this message]
2026-09-23 22:20 ` Matthew Rosato
2026-09-24 14:27 ` 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
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=4af9eb03-e14b-4cb4-986b-b7d9a51fb368@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=gerd.bayer@de.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®