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


  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®