From: "Michael S. Tsirkin" <mst@redhat.com>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Sriram Yagnaraman" <sriram.yagnaraman@est.tech>,
"Jason Wang" <jasowang@redhat.com>,
"Keith Busch" <kbusch@kernel.org>,
"Klaus Jensen" <its@irrelevant.dk>,
qemu-devel@nongnu.org, qemu-block@nongnu.org
Subject: Re: [PATCH v4 9/9] hw/nvme: Refer to dev->exp.sriov_pf.num_vfs
Date: Wed, 14 Feb 2024 10:46:03 -0500 [thread overview]
Message-ID: <20240214103705-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <c7369ada-96b1-41ad-b141-ff7f1e1dc291@daynix.com>
On Wed, Feb 14, 2024 at 11:09:50PM +0900, Akihiko Odaki wrote:
> On 2024/02/14 16:07, Michael S. Tsirkin wrote:
> > On Wed, Feb 14, 2024 at 02:13:47PM +0900, Akihiko Odaki wrote:
> > > NumVFs may not equal to the current effective number of VFs because VF
> > > Enable is cleared, NumVFs is set after VF Enable is set, or NumVFs is
> > > greater than TotalVFs.
> > >
> > > Fixes: 11871f53ef8e ("hw/nvme: Add support for the Virtualization Management command")
> > > Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> >
> > I don't get what this is saying about VF enable.
> > This code will not trigger on numVFs write when VF enable is set.
> > Generally this commit makes no sense on its own, squash it with
> > the pci core change pls.
>
> This code is meant to run when it is clearing VF Enable, and its
> functionality is to change the state of VFs currently enabled so that we can
> disable them.
>
> However, NumVFs does not necessarily represent VFs currently being enabled,
> and have a different value in the case described above.
Ah so in this case, if numvfs is changed and then VFs are disabled,
we will not call nvme_virt_set_state? OK, it should say this in commit log.
And then, what happens?
> Such cases exist
> even before the earlier patches and this fix is independently meaningful.
yes but the previous patch causes a regression without this one.
squash it.
> >
> > > ---
> > > hw/nvme/ctrl.c | 5 ++---
> > > 1 file changed, 2 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> > > index f8df622fe590..daedda5d326f 100644
> > > --- a/hw/nvme/ctrl.c
> > > +++ b/hw/nvme/ctrl.c
> > > @@ -8481,7 +8481,7 @@ static void nvme_sriov_pre_write_ctrl(PCIDevice *dev, uint32_t address,
> > > NvmeSecCtrlEntry *sctrl;
> > > uint16_t sriov_cap = dev->exp.sriov_cap;
> > > uint32_t off = address - sriov_cap;
> > > - int i, num_vfs;
> > > + int i;
> > > if (!sriov_cap) {
> > > return;
> > > @@ -8489,8 +8489,7 @@ static void nvme_sriov_pre_write_ctrl(PCIDevice *dev, uint32_t address,
> > > if (range_covers_byte(off, len, PCI_SRIOV_CTRL)) {
> > > if (!(val & PCI_SRIOV_CTRL_VFE)) {
> > > - num_vfs = pci_get_word(dev->config + sriov_cap + PCI_SRIOV_NUM_VF);
> > > - for (i = 0; i < num_vfs; i++) {
> > > + for (i = 0; i < dev->exp.sriov_pf.num_vfs; i++) {
If the assumption you now make is that num_vfs only changes
when VFs are disabled, we should add a comment documenting this.
In fact, I think there's a nicer way to do this:
static void nvme_pci_write_config(PCIDevice *dev, uint32_t address,
uint32_t val, int len)
{
int old_num_vfs = dev->exp.sriov_pf.num_vfs;
pci_default_write_config(dev, address, val, len);
pcie_cap_flr_write_config(dev, address, val, len);
nvme_sriov_pre_write_ctrl(dev, address, val, len, old_num_vfs);
}
and now, nvme_sriov_pre_write_ctrl can compare:
if (old_num_vfs && !dev->exp.sriov_pf.num_vfs)
disable everything
this, without bothering with detail of SRIOV capability.
No?
> > > sctrl = &n->sec_ctrl_list.sec[i];
> > > nvme_virt_set_state(n, le16_to_cpu(sctrl->scid), false);
> > > }
> > >
> > > --
> > > 2.43.0
> >
next prev parent reply other threads:[~2024-02-14 15:46 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 5:13 [PATCH v4 0/9] hw/pci: SR-IOV related fixes and improvements Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 1/9] hw/pci: Use -1 as a default value for rombar Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 2/9] hw/pci: Determine if rombar is explicitly enabled Akihiko Odaki
2024-02-14 6:49 ` Michael S. Tsirkin
2024-02-14 5:13 ` [PATCH v4 3/9] vfio: Avoid inspecting option QDict for rombar Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 4/9] hw/qdev: Remove opts member Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 5/9] pcie_sriov: Validate NumVFs Akihiko Odaki
2024-02-14 6:52 ` Michael S. Tsirkin
2024-02-14 14:49 ` Akihiko Odaki
2024-02-14 15:54 ` Michael S. Tsirkin
2024-02-14 16:22 ` Akihiko Odaki
2024-02-14 8:58 ` Michael Tokarev
2024-02-14 14:54 ` Akihiko Odaki
2024-02-14 15:53 ` Michael Tokarev
2024-02-14 15:55 ` Michael S. Tsirkin
2024-02-17 11:32 ` Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 6/9] pcie_sriov: Reuse SR-IOV VF device instances Akihiko Odaki
2024-02-14 7:54 ` Michael S. Tsirkin
2024-02-14 14:44 ` Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 7/9] pcie_sriov: Release VFs failed to realize Akihiko Odaki
2024-02-14 7:54 ` Michael S. Tsirkin
2024-02-14 7:58 ` Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 8/9] pcie_sriov: Do not reset NumVFs after unregistering VFs Akihiko Odaki
2024-02-14 6:53 ` Michael S. Tsirkin
2024-02-14 14:32 ` Akihiko Odaki
2024-02-14 15:51 ` Michael S. Tsirkin
2024-02-14 16:10 ` Akihiko Odaki
2024-02-14 5:13 ` [PATCH v4 9/9] hw/nvme: Refer to dev->exp.sriov_pf.num_vfs Akihiko Odaki
2024-02-14 7:07 ` Michael S. Tsirkin
2024-02-14 14:09 ` Akihiko Odaki
2024-02-14 15:46 ` Michael S. Tsirkin [this message]
2024-02-14 16:07 ` Akihiko Odaki
2024-02-14 16:34 ` Michael S. Tsirkin
2024-02-14 16:51 ` Akihiko Odaki
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=20240214103705-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=akihiko.odaki@daynix.com \
--cc=alex.williamson@redhat.com \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=eduardo@habkost.net \
--cc=its@irrelevant.dk \
--cc=jasowang@redhat.com \
--cc=kbusch@kernel.org \
--cc=marcel.apfelbaum@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sriram.yagnaraman@est.tech \
/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;
as well as URLs for NNTP newsgroup(s).