Akihiko Odaki <akihiko.od...@daynix.com> writes: > 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. > > If a user explicitly set UINT32_MAX, we still cannot distinguish that > from the implicit default. However, it is unlikely to be a problem as > nobody would type literal UINT32_MAX (0xffffffff or 4294967295) by > chance. > > Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com>
Not exactly elegant, but I believe we have similar "default value means not set by user (good enough because the default value is sufficiently odd)" logic elsewhere. Reviewed-by: Markus Armbruster <arm...@redhat.com>