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:
parent
ec6c174ed5
commit
4624eed2f8
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user