From: Akihiko Odaki <akihiko.odaki@daynix.com>
To: "Michael S. Tsirkin" <mst@redhat.com>,
"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>,
"Jason Wang" <jasowang@redhat.com>,
"Sriram Yagnaraman" <sriram.yagnaraman@est.tech>,
"Keith Busch" <kbusch@kernel.org>,
"Klaus Jensen" <its@irrelevant.dk>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org,
Yui Washizu <yui.washidu@gmail.com>,
Akihiko Odaki <akihiko.odaki@daynix.com>
Subject: [PATCH 01/14] vfio: Avoid inspecting option QDict for rombar
Date: Sat, 02 Dec 2023 17:00:24 +0900 [thread overview]
Message-ID: <20231202-sriov-v1-1-32b3570f7bd6@daynix.com> (raw)
In-Reply-To: <20231202-sriov-v1-0-32b3570f7bd6@daynix.com>
vfio determines if rombar is explicitly enabled by inspecting QDict.
Inspecting QDict is not nice because QDict is untyped and depends on the
details on the external interface.
Instead of inspecting QDict, inspect PCIDevice::rom_bar.
PCIDevice::rom_bar is changed to have -1 by the default to tell rombar
is explicitly enabled. It is consistent with other properties like addr
and romsize.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
include/hw/pci/pci_device.h | 5 +++++
hw/pci/pci.c | 2 +-
hw/vfio/pci.c | 3 +--
3 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h
index d3dd0f64b2..5b6436992f 100644
--- a/include/hw/pci/pci_device.h
+++ b/include/hw/pci/pci_device.h
@@ -205,6 +205,11 @@ static inline uint16_t pci_get_bdf(PCIDevice *dev)
return PCI_BUILD_BDF(pci_bus_num(pci_get_bus(dev)), dev->devfn);
}
+static inline bool pci_rom_bar_explicitly_enabled(PCIDevice *dev)
+{
+ return d->rom_bar && d->rom_bar != -1;
+}
+
uint16_t pci_requester_id(PCIDevice *dev);
/* DMA access functions */
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index c49417abb2..53c59a5b9f 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -71,7 +71,7 @@ static Property pci_props[] = {
DEFINE_PROP_PCI_DEVFN("addr", PCIDevice, devfn, -1),
DEFINE_PROP_STRING("romfile", PCIDevice, romfile),
DEFINE_PROP_UINT32("romsize", PCIDevice, romsize, -1),
- DEFINE_PROP_UINT32("rombar", PCIDevice, rom_bar, 1),
+ DEFINE_PROP_UINT32("rombar", PCIDevice, rom_bar, -1),
DEFINE_PROP_BIT("multifunction", PCIDevice, cap_present,
QEMU_PCI_CAP_MULTIFUNCTION_BITNR, false),
DEFINE_PROP_BIT("x-pcie-lnksta-dllla", PCIDevice, cap_present,
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index c62c02f7b6..bc29ce9194 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -1008,7 +1008,6 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
{
uint32_t orig, size = cpu_to_le32((uint32_t)PCI_ROM_ADDRESS_MASK);
off_t offset = vdev->config_offset + PCI_ROM_ADDRESS;
- DeviceState *dev = DEVICE(vdev);
char *name;
int fd = vdev->vbasedev.fd;
@@ -1042,7 +1041,7 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
}
if (vfio_opt_rom_in_denylist(vdev)) {
- if (dev->opts && qdict_haskey(dev->opts, "rombar")) {
+ if (pci_rom_bar_explicitly_enabled(&vdev->pdev)) {
warn_report("Device at %s is known to cause system instability"
" issues during option rom execution",
vdev->vbasedev.name);
--
2.43.0
next prev parent reply other threads:[~2023-12-02 8:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-02 8:00 [PATCH 00/14] virtio-net: add support for SR-IOV emulation Akihiko Odaki
2023-12-02 8:00 ` Akihiko Odaki [this message]
2023-12-02 8:00 ` [PATCH 02/14] hw/qdev: Remove opts member Akihiko Odaki
2023-12-02 8:00 ` [PATCH 03/14] qdev: Add DeviceClass::hide() Akihiko Odaki
2023-12-02 8:00 ` [PATCH 04/14] hw/pci: Add pci-failover Akihiko Odaki
2023-12-02 8:00 ` [PATCH 05/14] virtio-net: Implement pci-failover Akihiko Odaki
2023-12-02 8:00 ` [PATCH 06/14] qdev: Remove DeviceListener::hide_device() Akihiko Odaki
2023-12-02 8:00 ` [PATCH 07/14] hw/pci: Add hide() Akihiko Odaki
2023-12-02 8:00 ` [PATCH 08/14] qdev: Add qdev_device_new_from_qdict() Akihiko Odaki
2023-12-02 8:00 ` [PATCH 09/14] hw/pci: Do not add ROM BAR for SR-IOV VF Akihiko Odaki
2023-12-02 8:00 ` [PATCH 10/14] msix: Call pcie_sriov_vf_register_bar() " Akihiko Odaki
2023-12-02 8:00 ` [PATCH 11/14] pcie_sriov: Release VFs failed to realize Akihiko Odaki
2023-12-02 8:00 ` [PATCH 12/14] pcie_sriov: Allow to specify VF device options Akihiko Odaki
2023-12-02 8:00 ` [PATCH 13/14] virtio-pci: add SR-IOV capability Akihiko Odaki
2023-12-02 8:00 ` [PATCH 14/14] virtio-net: Add " Akihiko Odaki
2023-12-02 8:08 ` [PATCH 00/14] virtio-net: add support for SR-IOV emulation Akihiko Odaki
2023-12-04 9:04 ` Yui Washizu
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=20231202-sriov-v1-1-32b3570f7bd6@daynix.com \
--to=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=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sriram.yagnaraman@est.tech \
--cc=yui.washidu@gmail.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).