[PATCH] Fix detection of multi-function cards
Bryce Harrington
bryce at canonical.com
Wed Dec 1 18:42:14 PST 2010
Bit 7 of the pci device header type is an indicator of multi-function
devices, so needs to be masked when examining the bridge type.
Thanks go to Chih-Pin Wu for finding the bug and its fix.
Signed-off-by: Bryce Harrington <bryce at canonical.com>
---
src/common_bridge.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/common_bridge.c b/src/common_bridge.c
index f37420f..bba9d62 100644
--- a/src/common_bridge.c
+++ b/src/common_bridge.c
@@ -294,7 +294,7 @@ pci_device_get_bridge_buses(struct pci_device * dev, int *primary_bus,
case 0x04:
if (priv->bridge.pci == NULL)
read_bridge_info(priv);
- if (priv->header_type == 0x01) {
+ if ((priv->header_type & 0x7f) == 0x01) {
*primary_bus = priv->bridge.pci->primary_bus;
*secondary_bus = priv->bridge.pci->secondary_bus;
*subordinate_bus = priv->bridge.pci->subordinate_bus;
@@ -308,7 +308,7 @@ pci_device_get_bridge_buses(struct pci_device * dev, int *primary_bus,
case 0x07:
if (priv->bridge.pcmcia == NULL)
read_bridge_info(priv);
- if (priv->header_type == 0x02) {
+ if ((priv->header_type & 0x7f) == 0x02) {
*primary_bus = priv->bridge.pcmcia->primary_bus;
*secondary_bus = priv->bridge.pcmcia->card_bus;
*subordinate_bus = priv->bridge.pcmcia->subordinate_bus;
--
1.7.1
More information about the xorg-devel
mailing list