
Hi Marc,
On Tue, Mar 19, 2024 at 09:43:03AM +0000, Marc Zyngier wrote:
This seems pretty reasonable, thanks for looking into this. However, I can't help but notice that this is done without any BBM, and no TLBI either.
Are we guaranteed that the updated page tables are not live at the point of update?
This means gd->arch.tlb_addr pointing to the live PTs during setup_pgtables().
In arch/arm/cpu/armv8, setup_all_pgtables() runs with SCTLR_ELx.M unset.
In arch/arm/cpu/armv8/fsl-layerscape, setup_pgtables() is called twice:
- early_mmu_setup() calls it with SCTLR_ELx.M unset; - final_mmu_setup() overwrites gd->arch.tlb_addr before calling it iff CFG_SYS_MEM_RESERVE_SECURE is defined i.e. if CONFIG_SYS_SOC="fsl-layerscape" so that <asm/arch-fsl-layerscape/config.h> gets auto-included through <include/config.h>.
So can CONFIG_FSL_LAYERSCAPE be set while CONFIG_SYS_SOC != "fsl-layerscape"?
I suppose Fabio and Stefano can answer this and/or help with ensuring that setup_pgtables() is never called on live PTs.
Thanks,