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.
This commit is contained in:
Dave Airlie 2006-04-26 11:31:07 +00:00
parent 6d156c0440
commit c339b221d3
3 changed files with 23 additions and 3 deletions

View File

@ -1,3 +1,13 @@
2006-04-26 Dave Airlie <airlied@linux.ie>
* hw/xfree86/common/xf86pciBus.c:
* hw/xfree86/os-support/shared/stdResource.c:
(xf86StdAccResFromOS):
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.
2006-04-25 Eric Anholt <anholt@FreeBSD.org>
* exa/exa_migration.c: (exaPixmapSave), (exaMoveInPixmap),

View File

@ -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 =

View File

@ -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