From d4da990081886c28dd972863840dfd6d6b9b4ad4 Mon Sep 17 00:00:00 2001 From: Marcel Moolenaar Date: Sun, 29 Aug 2004 19:07:14 +0000 Subject: [PATCH] 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(-) diff --git a/sys/alpha/pci/pcibus.c b/sys/alpha/pci/pcibus.c index a22acdcfaf7..a6102e40f55 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;