On Sun, Jul 10, 2022 at 11:33:02PM +0800, guanghui.fgh wrote: > In short, this path work: > > 1.Before doing work for rebuiling crashkernel mem, the pgd is swapper_pg_dir > in [[[ttbr1]]] > > 2.Change the [[[ttbr0]]]to use idmap_pg_dir pgd > > 3.The [[[idmap_cpu_replace_ttbr1_with_flush_tlb]]] are mapped [[[only]]] > with idmap_pg_dir mapping in [[[ttbr0]]] > > 4.The [[[idmap_cpu_replace_ttbr1_with_flush_tlb]]] will flush tlb all, > switch [[[ttbr1]]] to use init_pg_dir pgd(and flush tlb all again). > There is no tlb conflict to swapper_pg_dir. > There is no tlb cache for swapper_pg_dir. > > 5.Woring with init_pg_dir pgd to access swapper_pg_dir pagetable with fix > mapping. And modify crashkernel mapping in the swapper_pg_dir without any > tlb conflict and flush. > > 6.When finishing the work, switch ttbr1 pgd to the origin swapper_pg_dir > with cpu_replace_ttbr1 function(similar to the above). I do not think that this complexity is justified. As I have stated on numerous occasions already, I would prefer that we leave the crashkernel mapped when rodata is not "full". That fixes your performance issue and matches what we do for module code, so I do not see a security argument against it. I do not plan to merge this patch as-is. Thanks, Will