[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.