If the LPI 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 allocates, so make sure what we read from PROPBASER matches
something in that table. Normally, the boot loader would leave the gic
in a reset state. However, Linux brings it up fully so it can do I/O to
boot the next kernel (us in this case). Since the gicv3 can't be
restarted due to undefined behavior, we have to use the mapping we
discover.
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