Michael, ping. Le 07/12/2021 à 07:10, Christophe Leroy a écrit : > Allthough kernel text is always mapped with BATs, we still have > inittext mapped with pages, so TLB miss handling is required > when CONFIG_DEBUG_PAGEALLOC or CONFIG_KFENCE is set. > > The final solution should be to set a BAT that also maps inittext > but that BAT then needs to be cleared at end of init, and it will > require more changes to be able to do it properly. > > As DEBUG_PAGEALLOC or KFENCE are debugging, performance is not a big > deal so let's fix it simply for now to enable easy stable application. > > Reported-by: Maxime Bizon <mbizon@xxxxxxxxxx> > Fixes: 035b19a15a98 ("powerpc/32s: Always map kernel text and rodata with BATs") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> > --- > arch/powerpc/kernel/head_book3s_32.S | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/kernel/head_book3s_32.S b/arch/powerpc/kernel/head_book3s_32.S > index 68e5c0a7e99d..2e2a8211b17b 100644 > --- a/arch/powerpc/kernel/head_book3s_32.S > +++ b/arch/powerpc/kernel/head_book3s_32.S > @@ -421,14 +421,14 @@ InstructionTLBMiss: > */ > /* Get PTE (linux-style) and check access */ > mfspr r3,SPRN_IMISS > -#ifdef CONFIG_MODULES > +#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) > lis r1, TASK_SIZE@h /* check if kernel address */ > cmplw 0,r1,r3 > #endif > mfspr r2, SPRN_SDR1 > li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER > rlwinm r2, r2, 28, 0xfffff000 > -#ifdef CONFIG_MODULES > +#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) > bgt- 112f > lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ > li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC