diff options
author | Dave Airlie <airlied@linux.ie> | 2006-04-26 11:31:07 +0000 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2006-04-26 11:31:07 +0000 |
commit | c339b221d3f59130a39e63d4cec3de7e3de95bf3 (patch) | |
tree | 0ab04f9631f781088e0952d24ee4e48da51e264a /hw/xfree86/common/xf86pciBus.c | |
parent | 6d156c044085881c6ecbd8a13521c0a26df71c30 (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.c | 11 |
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 = |