All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@ziepe.ca>
To: "Nelson, Shannon" <shannon.nelson@amd.com>
Cc: alex.williamson@redhat.com, kevin.tian@intel.com,
	reinette.chatre@intel.com, tglx@linutronix.de,
	kvm@vger.kernel.org, brett.creeley@amd.com,
	linux-kernel@vger.kernel.org, Leon Romanovsky <leonro@nvidia.com>
Subject: Re: [PATCH vfio] vfio/pci: remove msi domain on msi disable
Date: Mon, 18 Sep 2023 20:32:19 -0300	[thread overview]
Message-ID: <20230918233219.GO13795@ziepe.ca> (raw)
In-Reply-To: <acfa5d59-242b-4b31-a3ef-b4163972f26b@amd.com>

On Mon, Sep 18, 2023 at 10:48:54AM -0700, Nelson, Shannon wrote:

> In our case, the VF device's msix count value found in PCI config space is
> changed by device configuration management outside of the baremetal host and
> read by the QEMU instance when it starts up, and then read by the vfio PCI
> core when QEMU requests the first IRQ.  

Oh, you definitely can't do that!

PCI config space is not allowed to change outside the OS's view and we
added sriov_set_msix_vec_count() specifically as a way to provide the
necessary synchronization between all the parts.

Randomly changing, what should be immutable, parts of the config space
from under a running OS is just non-compliant PCI behavior.

> The msix vectors are freed, but the msi_domain is not, and the msi_domain
> holds the MSIx count that it read when it was created.  If the device's MSIx
> count is increased, the next QEMU session will see the new number in PCI
> config space and try to use that new larger number, but the msi_domain is
> still using the smaller hwsize and the QEMU IRQ setup fails in
> msi_insert_desc().

Correct, devices are not allowed to change these parameters
autonomously, so there is no reason to accommodate this.

> This patch adds a msi_remove_device_irq_domain() call when the irqs are
> disabled in order to force a new read on the next IRQ allocation cycle. This
> is limited to only the vfio use of the msi_domain.

Definately no.
 
> I suppose we could add this to the trailing end of callbacks in our own
> driver, but this looks more like a generic vfio/msi issue than a driver
> specific thing.

Certainly not.
 
> The other possibility is to force the user to always do a bind cycle between
> QEMU sessions using the VF.  This seems to be unnecessary overhead and was
> not necessary when using the v6.1 kernel.  To the user, this looks like a
> regression - this is how it was reported to me.

You need to use sriov_set_msix_vec_count() and only
sriov_set_msix_vec_count() to change this parameter or I expect you
will constantly experience problems.

Jason

  reply	other threads:[~2023-09-18 23:32 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-14 19:14 [PATCH vfio] vfio/pci: remove msi domain on msi disable Shannon Nelson
2023-09-18 14:17 ` Jason Gunthorpe
2023-09-18 17:48   ` Nelson, Shannon
2023-09-18 23:32     ` Jason Gunthorpe [this message]
2023-09-19  0:13       ` Nelson, Shannon
2023-09-18 18:43   ` Thomas Gleixner
2023-09-18 23:37     ` Jason Gunthorpe
2023-09-18 23:47       ` Thomas Gleixner
2023-09-19  0:02         ` Jason Gunthorpe
2023-09-19  0:25           ` Thomas Gleixner
2023-09-19  0:32             ` Jason Gunthorpe
2023-09-19  0:57               ` Thomas Gleixner
  -- strict thread matches above, loose matches on Subject: below --
2023-09-15  7:38 kernel test robot
2023-09-15 14:22 kernel test robot
2023-09-28  1:52 ` Liu, Yujie

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=20230918233219.GO13795@ziepe.ca \
    --to=jgg@ziepe.ca \
    --cc=alex.williamson@redhat.com \
    --cc=brett.creeley@amd.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=leonro@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=reinette.chatre@intel.com \
    --cc=shannon.nelson@amd.com \
    --cc=tglx@linutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.