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:
John Baldwin 2024-02-14 14:07:33 -08:00
parent 055c1fe230
commit add99c9c4b

View File

@ -582,7 +582,6 @@ ram_attach(device_t dev)
{
vm_paddr_t avail_list[PHYS_AVAIL_COUNT];
rman_res_t start, end;
struct region *hwp;
int rid, i;
rid = 0;
@ -608,30 +607,6 @@ ram_attach(device_t dev)
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);
}