
On Thu, Oct 28, 2021 at 3:19 PM Marc Zyngier maz@kernel.org wrote:
On Thu, 28 Oct 2021 10:20:53 +0100, Bharat Gooty bharat.gooty@broadcom.com wrote:
For GIC V3, once the LPI tables are programmed, we can not update it, unless we do a reset.
Please tell me something I don't know...
For GIC V3 , once the Locality specific peripheral interrupts (LPI) table
is programmed and enabled, unless the GIC is reset, we can not re-program the LPI tables. For these reasons, reserve the memory and program the GIC redistributor PROPBASER and LPI_PENDBASE registers. If we do not program the LPI table in the bootloader, during the Linux boot, Linux will allocate the LPI table memory. Assume you want to boot a new kernel and do the kexec kernel. For the kexec kernel boot, Linux will again allocate the LPI table memory. But writing to the GIC registers will fail. As the LPI for the redistributors is already enabled by the previous Linux kernel, unless we do GIC reset, we can not update the LPI tables.
For the kexec kernel, where the reboot does not happen, in this case, during the new kernel boot, the new LPI tables address will not be
updated.
Since July 2018, the Linux kernel is perfectly able to deal with this without any extra support. It will communicate the reservation to the secondary kernel, and the secondary kernel will happily use this.
Can you specify the kernel version and the GIC versions which were used?
For these reasons, We allocate the LPI table memory in u-boot and reserve that memory.
What sort of antiquated kernel are you using? And even if you are running something that predates the kernel changes, reserving the memory in the DT serves the same purpose. Why the custom node declaring the allocation?
Tried using LTS 5.4 and 5.9 Linux kernels. Problem is updating the GIC V3
registers with the new LPI table memory after enabling the LPI for the redistributors.
And since your kernel is able to kexec, it obviously knows about the
reservation/pre-programming trick. This hardly makes any sense.
M.
-- Without deviation from the norm, progress is not possible.