arm64/gicv3: correct the size of the distributor resource

Use the GICD_SIZE macro (0x10000), which is half the size of the current
fixed-sized mapping (128 * 1024 == 0x20000).

In ARM64 Hyper-V instances, it seems the Distributor's registers are
located immediately preceding a range of physical memory in the bus
address space. Thus, when ram0 is attaching and attempts to reserve
SYS_RES_MEMORY resources corresponding to its physmem ranges, it fails,
because the first 0x10000 bytes of this range are already owned by gic0.

PR:		270415
Reported by:	whu
Tested by:	whu
Differential Revision:	https://reviews.freebsd.org/D39260
This commit is contained in:
Mitchell Horne 2023-03-31 12:32:39 -03:00
parent 1a3cb489e5
commit 3462c371c2

View File

@ -215,7 +215,7 @@ gic_v3_acpi_identify(driver_t *driver, device_t parent)
/* Add the MADT data */
BUS_SET_RESOURCE(parent, dev, SYS_RES_MEMORY, 0,
madt_data.dist->BaseAddress, 128 * 1024);
madt_data.dist->BaseAddress, GICD_SIZE);
madt_data.dev = dev;
madt_data.rdist_use_gicc = false;