mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
hw/pci: Use -1 as the default value for rombar
vfio_pci_size_rom() distinguishes whether rombar is explicitly set to 1 by checking dev->opts, bypassing the QOM property infrastructure. Use -1 as the default value for rombar to tell if the user explicitly set it to 1. The property is also converted from unsigned to signed. -1 is signed so it is safe to give it a new meaning. The values in [2 ^ 31, 2 ^ 32) become invalid, but nobody should have typed these values by chance. Suggested-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-ID: <20250104-reuse-v18-13-c349eafd8673@daynix.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
3f8bcbba3b
commit
a7a3784128
3 changed files with 4 additions and 5 deletions
|
@ -85,7 +85,7 @@ static const 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_INT32("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,
|
||||
|
|
|
@ -1012,7 +1012,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;
|
||||
|
||||
|
@ -1046,12 +1045,12 @@ static void vfio_pci_size_rom(VFIOPCIDevice *vdev)
|
|||
}
|
||||
|
||||
if (vfio_opt_rom_in_denylist(vdev)) {
|
||||
if (dev->opts && qdict_haskey(dev->opts, "rombar")) {
|
||||
if (vdev->pdev.rom_bar > 0) {
|
||||
warn_report("Device at %s is known to cause system instability"
|
||||
" issues during option rom execution",
|
||||
vdev->vbasedev.name);
|
||||
error_printf("Proceeding anyway since user specified"
|
||||
" non zero value for rombar\n");
|
||||
" positive value for rombar\n");
|
||||
} else {
|
||||
warn_report("Rom loading for device at %s has been disabled"
|
||||
" due to system instability issues",
|
||||
|
|
|
@ -148,7 +148,7 @@ struct PCIDevice {
|
|||
uint32_t romsize;
|
||||
bool has_rom;
|
||||
MemoryRegion rom;
|
||||
uint32_t rom_bar;
|
||||
int32_t rom_bar;
|
||||
|
||||
/* INTx routing notifier */
|
||||
PCIINTxRoutingNotifier intx_routing_notifier;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue