|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH][IOEMU] fix invisibility of PCI Option ROM
Hi,
This is the revised patch with Shimada-san's suggestions.
If 'lspci -v' command on Dom0 shows '[virtual]' as follows,
the option ROM can't be read by the guest.
$ lspci -v -s 0:1
...
[virtual] Expansion ROM at fdb00000 [disabled] [size=256K]
Thanks,
Kouya
Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
diff --git a/hw/pass-through.c b/hw/pass-through.c
index 77ab759..2aebf0c 100644
--- a/hw/pass-through.c
+++ b/hw/pass-through.c
@@ -1403,6 +1403,15 @@ static int pt_register_regions(struct pt_dev
*assigned_device)
/* Register expansion ROM address */
if ( pci_dev->rom_base_addr && pci_dev->rom_size )
{
+
+ /* Re-set BAR reported by OS, otherwise ROM can't be read. */
+ bar_data = pci_read_long(pci_dev, PCI_ROM_ADDRESS);
+ if ( (bar_data & PCI_ROM_ADDRESS_MASK) == 0 )
+ {
+ bar_data |= (pci_dev->rom_base_addr & PCI_ROM_ADDRESS_MASK);
+ pci_write_long(pci_dev, PCI_ROM_ADDRESS, bar_data);
+ }
+
assigned_device->bases[PCI_ROM_SLOT].e_physbase =
pci_dev->rom_base_addr;
assigned_device->bases[PCI_ROM_SLOT].access.maddr =
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|