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.
This commit is contained in:
marcel 2004-08-29 19:07:14 +00:00
parent ec6c174ed5
commit 4624eed2f8

View File

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