summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--hw/xfree86/common/xf86pciBus.c11
-rw-r--r--hw/xfree86/os-support/shared/stdResource.c5
3 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ce62cd5a..637c62b5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2006-04-28 Adam Jackson <ajax@freedesktop.org>
+ * hw/xfree86/common/xf86pciBus.c:
+ * hw/xfree86/os-support/shared/stdResource.c:
+ Bug #6750: Fixup for quirky Intel bridges. (Dave Airlie)
+
+2006-04-28 Adam Jackson <ajax@freedesktop.org>
+
* hw/xfree86/os-support/bus/Pci.c:
* hw/xfree86/os-support/bus/Pci.h:
* hw/xfree86/os-support/bus/linuxPci.c:
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 =
diff --git a/hw/xfree86/os-support/shared/stdResource.c b/hw/xfree86/os-support/shared/stdResource.c
index 859997309..83ad0bb42 100644
--- a/hw/xfree86/os-support/shared/stdResource.c
+++ b/hw/xfree86/os-support/shared/stdResource.c
@@ -150,10 +150,11 @@ xf86StdAccResFromOS(resPtr ret)
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
ret = xf86AddResToList(ret, &range, -1);
-#endif
+ /* airlied - remove BIOS range it shouldn't be here
+ this should use E820 - or THE OS */
RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
ret = xf86AddResToList(ret, &range, -1);
-
+#endif
/*
* Fallback would be to claim well known ports in the 0x0 - 0x3ff range
* along with their sparse I/O aliases, but that's too imprecise. Instead