From c883a5231eb5513d6e9c9babb654c150c37ec1f9 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sun, 10 Apr 2011 16:40:43 +0000 Subject: Extend the PCI memory address space to 36-bit. The first BIOSen that assign addresses >4GB to 64-bit BARs have started to appear. But as long as machines still support running 32-bit operating systems we don't expect to see BARs that aren't addressable using PAE. Fixes a panic reported by william@. ok deraadt@ --- sys/arch/amd64/pci/pci_machdep.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'sys/arch') diff --git a/sys/arch/amd64/pci/pci_machdep.c b/sys/arch/amd64/pci/pci_machdep.c index 9aeadf8ea66..f6a4bb449cd 100644 --- a/sys/arch/amd64/pci/pci_machdep.c +++ b/sys/arch/amd64/pci/pci_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.c,v 1.41 2011/04/02 18:16:50 oga Exp $ */ +/* $OpenBSD: pci_machdep.c,v 1.42 2011/04/10 16:40:42 kettenis Exp $ */ /* $NetBSD: pci_machdep.c,v 1.3 2003/05/07 21:33:58 fvdl Exp $ */ /*- @@ -444,7 +444,13 @@ pci_init_extents(void) } if (pcimem_ex == NULL) { - pcimem_ex = extent_create("pcimem", 0, 0xffffffff, M_DEVBUF, + /* + * Cover the 36-bit address space addressable by PAE + * here. As long as vendors continue to support + * 32-bit operating systems, we should never see BARs + * outside that region. + */ + pcimem_ex = extent_create("pcimem", 0, 0xfffffffff, M_DEVBUF, NULL, 0, EX_NOWAIT); if (pcimem_ex == NULL) return; -- cgit v1.2.3