Christophe Leroy <christophe.leroy@xxxxxx> writes: > A few changes to retrieve DAR and DSISR from struct regs > instead of retrieving them directly, as they may have > changed due to a TLB miss. > > Also modifies hash_page() and friends to work with virtual > data addresses instead of physical ones. > > Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx> > --- > arch/powerpc/kernel/entry_32.S | 4 +++ > arch/powerpc/kernel/head_32.S | 19 +++++++++++--- > arch/powerpc/kernel/head_32.h | 4 ++- > arch/powerpc/mm/book3s32/hash_low.S | 46 +++++++++++++++++++++------------- > arch/powerpc/mm/book3s32/mmu.c | 9 +++++-- > arch/powerpc/platforms/Kconfig.cputype | 2 ++ > 6 files changed, 61 insertions(+), 23 deletions(-) This is faulting with qemu mac99 model: Key type id_resolver registered Key type id_legacy registered BUG: Unable to handle kernel data access on read at 0x2f0db684 Faulting instruction address: 0x00004130 Oops: Kernel access of bad area, sig: 11 [#1] BE PAGE_SIZE=4K MMU=Hash PowerMac Modules linked in: CPU: 0 PID: 65 Comm: modprobe Not tainted 5.4.0-rc2-gcc49+ #63 NIP: 00004130 LR: 000008c8 CTR: b7eb86e0 REGS: f106de80 TRAP: 0300 Not tainted (5.4.0-rc2-gcc49+) MSR: 00003012 <FP,ME,DR,RI> CR: 4106df38 XER: 20000000 DAR: 2f0db684 DSISR: 40000000 GPR00: b7ec5d64 f106df38 00000000 bf988a70 00000000 2f0db540 b7ec3620 bf988d38 GPR08: 10000880 0000d032 72656773 f106df38 b7ed10ec 00000000 b7ed3d38 b7ee8900 GPR16: bf988d10 00000001 00000000 bf988d10 b7ec3620 bf988d50 b7ee76ec b7ee7320 GPR24: 10000878 00000000 b7ee8900 00000000 10029f00 10000879 b7ee7ff4 bf988d30 NIP [00004130] 0x4130 LR [000008c8] 0x8c8 Call Trace: [f106df38] [c0016224] ret_from_syscall+0x0/0x34 (unreliable) --- interrupt: c01 at 0xb7ed0f50 LR = 0xb7ec5d64 Instruction dump: db8300e0 XXXXXXXX XXXXXXXX XXXXXXXX fc00048e XXXXXXXX XXXXXXXX XXXXXXXX 60a52000 XXXXXXXX XXXXXXXX XXXXXXXX 80850144 XXXXXXXX XXXXXXXX XXXXXXXX ---[ end trace 265da51c6d8b86c5 ]--- I think I'll have to drop this series for now. cheers