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 Moolenaar 2004-08-29 19:07:14 +00:00
parent c6d8b958f1
commit d4da990081

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;