msi: Mask out multi-function flag from PCI_HEADER_TYPE in read_pci_mem_bar()
authorKeir Fraser <keir@xen.org>
Wed, 20 Oct 2010 07:40:44 +0000 (08:40 +0100)
committerKeir Fraser <keir@xen.org>
Wed, 20 Oct 2010 07:40:44 +0000 (08:40 +0100)
This leads to an erroneous WARN_ON and possibly other side effects. It
seems to me that even multi-function devices ought to enjoy the
privilege of MSI-X capabilities.

Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com>
xen/arch/x86/msi.c

index 2b8f94c993e2b09ca9167b54074537f32ae61953..88f3a3707ddc53bf0834cb3977a9122ab6de809c 100644 (file)
@@ -527,7 +527,7 @@ static u64 read_pci_mem_bar(u8 bus, u8 slot, u8 func, u8 bir)
     u8 limit;
     u32 addr;
 
-    switch ( pci_conf_read8(bus, slot, func, PCI_HEADER_TYPE) )
+    switch ( pci_conf_read8(bus, slot, func, PCI_HEADER_TYPE) & 0x7f )
     {
     case PCI_HEADER_TYPE_NORMAL:
         limit = 6;