mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-15 12:54:27 +00:00
physmem ram: Don't reserve excluded regions
These regions can conflict with I/O resources and prevent allocation of those regions by other drivers. It may make sense to reserve them after the boot-time probe of devices has concluded (or after an initial pass to reserve firmware-assigned resources before "wildcard" resources are allocated), but that would require additional changes. Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D43893
This commit is contained in:
parent
055c1fe230
commit
add99c9c4b
|
@ -582,7 +582,6 @@ ram_attach(device_t dev)
|
||||||
{
|
{
|
||||||
vm_paddr_t avail_list[PHYS_AVAIL_COUNT];
|
vm_paddr_t avail_list[PHYS_AVAIL_COUNT];
|
||||||
rman_res_t start, end;
|
rman_res_t start, end;
|
||||||
struct region *hwp;
|
|
||||||
int rid, i;
|
int rid, i;
|
||||||
|
|
||||||
rid = 0;
|
rid = 0;
|
||||||
|
@ -608,30 +607,6 @@ ram_attach(device_t dev)
|
||||||
rid++;
|
rid++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now, reserve the excluded memory regions. */
|
|
||||||
for (i = 0, hwp = exregions; i < excnt; i++, hwp++) {
|
|
||||||
start = hwp->addr;
|
|
||||||
end = hwp->addr + hwp->size;
|
|
||||||
|
|
||||||
if (bootverbose)
|
|
||||||
device_printf(dev,
|
|
||||||
"reserving excluded region: %jx-%jx\n",
|
|
||||||
(uintmax_t)start, (uintmax_t)(end - 1));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Best-effort attempt to reserve the range. This may fail, as
|
|
||||||
* sometimes the excluded ranges provided by the device tree
|
|
||||||
* will cover or overlap some I/O range.
|
|
||||||
*/
|
|
||||||
if (bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, start, end,
|
|
||||||
end - start, 0) == NULL) {
|
|
||||||
if (bootverbose)
|
|
||||||
device_printf(dev, "failed to reserve region\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
rid++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue