相关文章推荐
飘逸的热带鱼  ·  java - Convert ...·  1 年前    · 
满身肌肉的人字拖  ·  33·  1 年前    · 
Currently there is no way to distinguish the case that rombar is
explicitly specified as 1 and the case that rombar is not specified.
Set rombar UINT32_MAX by default to distinguish these cases just as it
is done for addr and romsize. It was confirmed that changing the default
value to UINT32_MAX will not change the behavior by looking at
occurences of rom_bar.
$ git grep -w rom_bar
hw/display/qxl.c:328:    QXLRom *rom = memory_region_get_ram_ptr(&d->rom_bar);
hw/display/qxl.c:431:    qxl_set_dirty(&qxl->rom_bar, 0, qxl->rom_size);
hw/display/qxl.c:1048:    QXLRom *rom = 
memory_region_get_ram_ptr(&qxl->rom_bar);
hw/display/qxl.c:2131:    memory_region_init_rom(&qxl->rom_bar, OBJECT(qxl), 
"qxl.vrom",
hw/display/qxl.c:2154: PCI_BASE_ADDRESS_SPACE_MEMORY, &qxl->rom_bar);
hw/display/qxl.h:101:    MemoryRegion       rom_bar;
hw/pci/pci.c:74:    DEFINE_PROP_UINT32("rombar",  PCIDevice, rom_bar, 1),
hw/pci/pci.c:2329:    if (!pdev->rom_bar) {
hw/vfio/pci.c:1019:    if (vdev->pdev.romfile || !vdev->pdev.rom_bar) {
hw/xen/xen_pt_load_rom.c:29:    if (dev->romfile || !dev->rom_bar) {
include/hw/pci/pci_device.h:150:    uint32_t rom_bar;
rom_bar refers to a different variable in qxl. It is only tested if
the value is 0 or not in the other places.
This changes the semantics of UINT32_MAX, which has always been a valid
value to explicitly say rombar is enabled to denote the implicit default
value. Nobody should have been set UINT32_MAX to rombar however,
considering that its meaning was no different from 1 and typing a
literal UINT32_MAX (0xffffffff or 4294967295) is more troublesome.
Signed-off-by: Akihiko Odaki <[email protected]>
 hw/pci/pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 84df07a2789b..cb5ac46e9f27 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, UINT32_MAX),
-    DEFINE_PROP_UINT32("rombar",  PCIDevice, rom_bar, 1),
+    DEFINE_PROP_UINT32("rombar",  PCIDevice, rom_bar, UINT32_MAX),
     DEFINE_PROP_BIT("multifunction", PCIDevice, cap_present,
                     QEMU_PCI_CAP_MULTIFUNCTION_BITNR, false),
     DEFINE_PROP_BIT("x-pcie-lnksta-dllla", PCIDevice, cap_present,
2.43.2
[Next in Thread]
  • [PATCH v7 04/16] pcie_sriov: Do not reset NumVFs after disabling VFs, (continued)
  • [PATCH v7 04/16] pcie_sriov: Do not reset NumVFs after disabling VFs, Akihiko Odaki, 2024/02/24
  • [PATCH v7 05/16] hw/pci: Always call pcie_sriov_pf_reset(), Akihiko Odaki, 2024/02/24
  • [PATCH v7 06/16] hw/pci: Rename has_power to enabled, Akihiko Odaki, 2024/02/24
  • [PATCH v7 07/16] pcie_sriov: Do not manually unrealize, Akihiko Odaki, 2024/02/24
  • [PATCH v7 08/16] pcie_sriov: Reuse SR-IOV VF device instances, Akihiko Odaki, 2024/02/24
  • [PATCH v7 09/16] pcie_sriov: Release VFs failed to realize, Akihiko Odaki, 2024/02/24
  • [PATCH v7 10/16] pcie_sriov: Remove num_vfs from PCIESriovPF, Akihiko Odaki, 2024/02/24
  • [PATCH v7 11/16] pcie_sriov: Register VFs after migration, Akihiko Odaki, 2024/02/24
  • [PATCH v7 12/16] hw/pci: Replace -1 with UINT32_MAX for romsize, Akihiko Odaki, 2024/02/24
  • Re: [PATCH v7 12/16] hw/pci: Replace -1 with UINT32_MAX for romsize, Markus Armbruster, 2024/02/28
  • [PATCH v7 13/16] hw/pci: Use UINT32_MAX as a default value for rombar, Akihiko Odaki <=
  • [PATCH v7 14/16] hw/pci: Determine if rombar is explicitly enabled, Akihiko Odaki, 2024/02/24
  • Re: [PATCH v7 14/16] hw/pci: Determine if rombar is explicitly enabled, Markus Armbruster, 2024/02/28
  • [PATCH v7 15/16] vfio: Avoid inspecting option QDict for rombar, Akihiko Odaki, 2024/02/24
  • Re: [PATCH v7 15/16] vfio: Avoid inspecting option QDict for rombar, Markus Armbruster, 2024/02/28
  • [PATCH v7 16/16] hw/qdev: Remove opts member, Akihiko Odaki, 2024/02/24
  •