|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 2/3] xen/igd: don't register rom bar twice
This also fixes a failed assertion in pci [1] for Qemu
version 10 and higher when passing through an Intel
IGD with an option ROM to the guest.
[1] f6fc01c ("hw/pci: Assert a bar is not registered multiple times")
Fixes: 881213f ("xen, gfx passthrough: retrieve VGA BIOS to work")
Signed-off-by: Chuck Zmudzinski <brchuckz@xxxxxxx>
---
Changes in v2:
- get 'pcibus_t romsize' instead of 'PCIIORegion region'
- move definition of romsize to the top of the function
and make it constant
- add stable to Cc list
hw/xen/xen_pt.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 474606e..8b30b61 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -459,6 +459,7 @@ static int xen_pt_register_regions(XenPCIPassthroughState
*s, uint16_t *cmd)
{
int i = 0;
XenHostPCIDevice *d = &s->real_device;
+ const pcibus_t romsize = s->dev.io_regions[PCI_ROM_SLOT].size;
/* Register PIO/MMIO BARs */
for (i = 0; i < PCI_ROM_SLOT; i++) {
@@ -495,7 +496,7 @@ static int xen_pt_register_regions(XenPCIPassthroughState
*s, uint16_t *cmd)
}
/* Register expansion ROM address */
- if (d->rom.base_addr && d->rom.size) {
+ if (!romsize && d->rom.base_addr && d->rom.size) {
uint32_t bar_data = 0;
/* Re-set BAR reported by OS, otherwise ROM can't be read. */
--
2.52.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |