HomeFreeBSD

gicv3: If the LPI is already allocated, remember it

Description

gicv3: If the LPI is already allocated, remember it

If the LPI Configuration Tabel has been pre-allocated by the boot
loader, then we have to remember PROPBASER and use it rather than
allocating memory for it ourselves. Linux provides us with a reserved
table that contains all the gicv3 allocations, so make sure what we read
from PROPBASER matches something in that table. Normally, bare metal
boot loaders leave the gic in a reset state. However, Linux brings it up
fully so it can do I/O to boot the next kernel via kexec. Since the
gicv3 PENDBASER can't be reset while running due to undefined behavior,
we must reuse what's there for both PENDBASER and PROPBASER.

With this commit, the workaround is complete. Details are at
https://lkml.iu.edu/hypermail/linux/kernel/1809.2/06246.html
and pointers in the thread.

Sponsored by: Netflix
Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D44038

(cherry picked from commit cb4a83cff01cdf871c78115c942c5b34412914d2)

Details

Provenance
impAuthored on Feb 28 2024, 2:09 PM
Reviewer
andrew
Differential Revision
D44038: gicv3: If the LPI is already allocated, remember it
Parents
rGb53202779c2e: gicv3: In its_init_cpu_lpi record each cpu's PENDBASER
Branches
Unknown
Tags
Unknown