On 12/6/21 00:05, John David Anglin wrote: > On 2021-12-05 4:00 p.m., John David Anglin wrote: >>> Does it boot if you remove the __init in front of map_pages? >> I'll try. I thought of trying it but wasn't sure if map_pages() had to be an init routine or not. > This appears to fix boot. System booted okay about six times. Do you have huge pages enabled? If so you could try this patch (instead of markung map_pages __init): diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 1ae31db9988f..a9a510338ced 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c @@ -405,7 +405,7 @@ static void __init map_pages(unsigned long start_vaddr, } else if (!kernel_set_to_readonly) { /* still initializing, allow writing to RO memory */ prot = PAGE_KERNEL_RWX; - huge = true; + huge = false; } else if (address >= ro_start) { /* Code (ro) and Data areas */ prot = (address < ro_end) ? Maybe the whole kernel is initially mapped via one/multiple huge pages(s), and then we suddenly turn huge pages partly off. Therefore maybe not all TLB entries for the code of map_pages() is already loaded? On the other side the problem is somewhat similar to what I see with patching the kernel code in the fixmap code on PA1.x CPUs... it showed strange asm statements too.. Helge