Le 28/03/2024 à 05:55, Rohan McLure a écrit : > Support page table check on all PowerPC platforms. This works by > serialising assignments, reassignments and clears of page table > entries at each level in order to ensure that anonymous mappings > have at most one writable consumer, and likewise that file-backed > mappings are not simultaneously also anonymous mappings. > > In order to support this infrastructure, a number of stubs must be > defined for all powerpc platforms. Additionally, seperate set_pte_at() > and set_pte_at_unchecked(), to allow for internal, uninstrumented mappings. I gave it a try on QEMU e500 (64 bits), and get the following Oops. What do I have to look for ? Freeing unused kernel image (initmem) memory: 2588K This architecture does not have kernel memory protection. Run /init as init process ------------[ cut here ]------------ kernel BUG at mm/page_table_check.c:119! Oops: Exception in kernel mode, sig: 5 [#1] BE PAGE_SIZE=4K SMP NR_CPUS=32 QEMU e500 Modules linked in: CPU: 0 PID: 1 Comm: init Not tainted 6.8.0-13732-gc5347beead0b-dirty #784 Hardware name: QEMU ppce500 e5500 0x80240020 QEMU e500 NIP: c0000000002951a0 LR: c0000000002951bc CTR: 0000000000000000 REGS: c0000000032e7440 TRAP: 0700 Not tainted (6.8.0-13732-gc5347beead0b-dirty) MSR: 0000000080029002 <CE,EE,ME> CR: 24044248 XER: 00000000 IRQMASK: 0 GPR00: c000000000029d90 c0000000032e76e0 c000000000d44000 c000000003017e18 GPR04: 00000000ffb11000 c000000007f16888 0000000fc324123d 0000000000000000 GPR08: 0000000000000000 0000000000000001 c000000001184000 0000000084004248 GPR12: 00000000000000c0 c0000000011b9000 c000000007f16888 c000000007f19000 GPR16: 0000000000001000 00003ffffffff000 0000000000000000 0000000000000000 GPR20: 0000400000000000 0000000000000000 0000000000000001 ffffc000ffb12000 GPR24: c000000007f19000 c000000006008000 c000000006008000 0000000000000030 GPR28: 0000000000000001 c00000000118afe8 c000000003017e18 0000000000000001 NIP [c0000000002951a0] __page_table_check_ptes_set+0x210/0x2ac LR [c0000000002951bc] __page_table_check_ptes_set+0x22c/0x2ac Call Trace: [c0000000032e76e0] [c0000000032e7790] 0xc0000000032e7790 (unreliable) [c0000000032e7730] [c000000000029d90] set_ptes+0x178/0x210 [c0000000032e7790] [c00000000024c72c] move_page_tables+0x298/0x750 [c0000000032e7870] [c0000000002a944c] shift_arg_pages+0x120/0x254 [c0000000032e79a0] [c0000000002a9f94] setup_arg_pages+0x244/0x418 [c0000000032e7b30] [c000000000331610] load_elf_binary+0x584/0x17d4 [c0000000032e7c30] [c0000000002aa3e8] bprm_execve+0x280/0x704 [c0000000032e7d00] [c0000000002ac158] kernel_execve+0x16c/0x214 [c0000000032e7d50] [c0000000000011c8] run_init_process+0x100/0x168 [c0000000032e7de0] [c00000000000214c] kernel_init+0x84/0x1f8 [c0000000032e7e50] [c000000000000594] ret_from_kernel_user_thread+0x14/0x1c --- interrupt: 0 at 0x0 Code: 81230004 7d2907b4 0b090000 7c0004ac 7d201828 31290001 7d20192d 40c2fff4 7c0004ac 2c090002 39200000 7d29e01e <0b090000> e93d0000 37ffffff 7fde4a14 ---[ end trace 0000000000000000 ]--- note: init[1] exited with irqs disabled Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000005 Rebooting in 180 seconds..