From a94ef50b1f6f66bca852efbd3ce9519b692869f2 Mon Sep 17 00:00:00 2001 From: marcel Date: Sun, 29 Aug 2004 19:07:14 +0000 Subject: In alpha_pci_alloc_resource(), when allocating a memory resource, do not set the virtual address to the bus address when the bus doesn't have either of the PCI_RF_DENSE or PCI_RF_BWX flags set. The TGA driver uses the virtual address to access the registers, which on some machines can cause a memory management fault. Map the bus address as K0SEG virtual memory instead. Note that with some hardware combinations involving the TGA2 adapter this change merely results that the memory management fault is replaced by a machine check. --- sys/alpha/pci/pcibus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sys/alpha') diff --git a/sys/alpha/pci/pcibus.c b/sys/alpha/pci/pcibus.c index a22acdc..a6102e4 100644 --- a/sys/alpha/pci/pcibus.c +++ b/sys/alpha/pci/pcibus.c @@ -262,7 +262,7 @@ alpha_pci_alloc_resource(device_t bus, device_t child, int type, int *rid, else if (flags & PCI_RF_BWX) va = ALPHAPCI_CVT_BWX(bus, rv->r_start); else - va = (void *) rv->r_start; /* maybe NULL? */ + va = (void *)ALPHA_PHYS_TO_K0SEG(rv->r_start); rman_set_virtual(rv, va); break; -- cgit v1.1