summaryrefslogtreecommitdiff
path: root/hw/xfree86/common/xf86pciBus.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2006-04-26 11:31:07 +0000
committerDave Airlie <airlied@linux.ie>2006-04-26 11:31:07 +0000
commitc339b221d3f59130a39e63d4cec3de7e3de95bf3 (patch)
tree0ab04f9631f781088e0952d24ee4e48da51e264a /hw/xfree86/common/xf86pciBus.c
parent6d156c044085881c6ecbd8a13521c0a26df71c30 (diff)
Bug #6750: This patch detects Intel bridges that are transparent but aren't
reported as such. From the Linux kernel fixups. This patch also removes the reserved BIOS area from the area to allocate resources in.
Diffstat (limited to 'hw/xfree86/common/xf86pciBus.c')
-rw-r--r--hw/xfree86/common/xf86pciBus.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
index e06dce524..af19b37eb 100644
--- a/hw/xfree86/common/xf86pciBus.c
+++ b/hw/xfree86/common/xf86pciBus.c
@@ -1774,7 +1774,16 @@ xf86GetPciBridgeInfo(void)
PciBus->brfunc = pcrp->funcnum;
PciBus->subclass = sub_class;
- PciBus->interface = pcrp->pci_prog_if;
+
+ /* The Intel bridges don't report as transparent
+ but guess what they are - from Linux kernel - airlied */
+ if ((pcrp->pci_vendor == PCI_VENDOR_INTEL) &&
+ ((pcrp->pci_device & 0xff00) == 0x2400)) {
+ xf86MsgVerb(X_INFO, 3, "Intel Bridge workaround enabled\n");
+ PciBus->interface = PCI_IF_BRIDGE_PCI_SUBTRACTIVE;
+ } else {
+ PciBus->interface = pcrp->pci_prog_if;
+ }
if (pBusInfo && pBusInfo->funcs->pciControlBridge)
PciBus->brcontrol =