From: Alex Williamson <alex.williamson@redhat.com>
To: Vinayak Kale <vkale@nvidia.com>
Cc: qemu-devel@nongnu.org, targupta@nvidia.com, cjia@nvidia.com,
acurrid@nvidia.com, zhiw@nvidia.com, mst@redhat.com,
marcel.apfelbaum@gmail.com, avihaih@nvidia.com
Subject: Re: [PATCH] hw/pci: migration: Skip config space check for vendor specific capability during restore/load
Date: Tue, 30 Jan 2024 11:58:32 -0700 [thread overview]
Message-ID: <20240130115832.462e76b7.alex.williamson@redhat.com> (raw)
In-Reply-To: <4d6a45ed-ca8d-4e41-b536-c2502ff1ce8b@nvidia.com>
On Tue, 30 Jan 2024 23:32:26 +0530
Vinayak Kale <vkale@nvidia.com> wrote:
> Missed adding Michael, Marcel, Alex and Avihai earlier, apologies.
>
> Regards,
> Vinayak
>
> On 30/01/24 3:26 pm, Vinayak Kale wrote:
> > In case of migration, during restore operation, qemu checks the config space of the pci device with the config space
> > in the migration stream captured during save operation. In case of config space data mismatch, restore operation is failed.
> >
> > config space check is done in function get_pci_config_device(). By default VSC (vendor-specific-capability) in config space is checked.
> >
> > Ideally qemu should not check VSC during restore/load. This patch skips the check by not setting pdev->cmask[] for VSC offsets in pci_add_capability().
> > If cmask[] is not set for an offset, then qemu skips config space check for that offset.
> >
> > Signed-off-by: Vinayak Kale <vkale@nvidia.com>
> > ---
> > hw/pci/pci.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> > index 76080af580..32429109df 100644
> > --- a/hw/pci/pci.c
> > +++ b/hw/pci/pci.c
> > @@ -2485,8 +2485,11 @@ int pci_add_capability(PCIDevice *pdev, uint8_t cap_id,
> > memset(pdev->used + offset, 0xFF, QEMU_ALIGN_UP(size, 4));
> > /* Make capability read-only by default */
> > memset(pdev->wmask + offset, 0, size);
> > - /* Check capability by default */
> > - memset(pdev->cmask + offset, 0xFF, size);
> > +
> > + if (cap_id != PCI_CAP_ID_VNDR) {
> > + /* Check non-vendor specific capability by default */
> > + memset(pdev->cmask + offset, 0xFF, size);
> > + }
> > return offset;
> > }
> >
>
If there is a possibility that the data within the vendor specific cap
can be consumed by the driver or diagnostic tools, then it's part of
the device ABI and should be consistent across migration. A mismatch
can certainly cause a migration failure, but why shouldn't it?
This might be arguably ok (with more details) for a specific device,
but I don't think it can be the default given the arbitrary data
vendors can expose here. Also, if this one, why not also the vendor
specific extended capability? Thanks,
Alex
next prev parent reply other threads:[~2024-01-30 18:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-30 9:56 [PATCH] hw/pci: migration: Skip config space check for vendor specific capability during restore/load Vinayak Kale
2024-01-30 18:02 ` Vinayak Kale
2024-01-30 18:58 ` Alex Williamson [this message]
2024-01-31 9:52 ` Vinayak Kale
2024-01-31 17:38 ` Alex Williamson
2024-02-01 17:38 ` Vinayak Kale
2024-02-01 18:10 ` Michael S. Tsirkin
2024-02-02 0:03 ` Alex Williamson
2024-02-09 9:17 ` Vinayak Kale
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=20240130115832.462e76b7.alex.williamson@redhat.com \
--to=alex.williamson@redhat.com \
--cc=acurrid@nvidia.com \
--cc=avihaih@nvidia.com \
--cc=cjia@nvidia.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=targupta@nvidia.com \
--cc=vkale@nvidia.com \
--cc=zhiw@nvidia.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;
as well as URLs for NNTP newsgroup(s).