Re: [PATCH] powerpc/8xx: Fix permanently mapped IMMR region.

From: Michael Ellerman
Date: Mon Nov 18 2019 - 06:17:53 EST


Christophe Leroy <christophe.leroy@xxxxxx> writes:
> When not using large TLBs, the IMMR region is still
> mapped as a whole block in the FIXMAP area.
>
> Do not remove pages mapped in the FIXMAP region when
> initialising paging.
>
> Properly report that the IMMR region is block-mapped even
> when not using large TLBs.
>
> Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxx>
> ---
> arch/powerpc/mm/mem.c | 8 --------
> arch/powerpc/mm/nohash/8xx.c | 13 +++++++------
> 2 files changed, 7 insertions(+), 14 deletions(-)

This blows up pmac32_defconfig + qemu mac99 for me with:

NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 0 bytes, default 32
Trying to unpack rootfs image as initramfs...
BUG: Unable to handle kernel data access on write at 0xfffdf000
Faulting instruction address: 0xc001eb4c
Oops: Kernel access of bad area, sig: 11 [#1]
BE PAGE_SIZE=4K MMU=Hash PowerMac
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-rc2-gcc49+ #50
NIP: c001eb4c LR: c0394214 CTR: 00000080
REGS: ef0b5a70 TRAP: 0300 Not tainted (5.4.0-rc2-gcc49+)
MSR: 00009032 <EE,ME,IR,DR,RI> CR: 44088444 XER: 20000000
DAR: fffdf000 DSISR: 42000000
GPR00: 00000080 ef0b5b28 ef0b0000 fffdf000 ef2001e4 00000000 fffdeffc fffe0000
GPR08: ef2011e8 00000008 00000009 00000004 28088442 00000000 c0005734 00000000
GPR16: 00000000 00000000 00000000 00000000 c07f0000 c0735600 00000000 ef09f500
GPR24: fffdf000 00000000 00000000 00000000 fffdf000 ef0b5c38 00001000 00001000
NIP [c001eb4c] memcpy+0x88/0x10c
LR [c0394214] iov_iter_copy_from_user_atomic+0x1fc/0x468
Call Trace:
[ef0b5b28] [c0394060] iov_iter_copy_from_user_atomic+0x48/0x468 (unreliable)
[ef0b5b68] [c0131438] generic_perform_write+0xfc/0x218
[ef0b5bb8] [c01360bc] __generic_file_write_iter+0x134/0x26c
[ef0b5bf8] [c0136324] generic_file_write_iter+0x130/0x1d8
[ef0b5c28] [c01a1754] __vfs_write+0x170/0x220
[ef0b5ca8] [c01a34f0] vfs_write+0xcc/0x1e0
[ef0b5cd8] [c01a386c] ksys_write+0xd0/0x120
[ef0b5d08] [c08a03a4] xwrite+0x44/0xa4
[ef0b5d28] [c08a0b64] do_copy+0x94/0xdc
[ef0b5d48] [c08a0044] write_buffer+0x40/0x68
[ef0b5d68] [c08a00cc] flush_buffer+0x60/0xe4
[ef0b5d98] [c08e87bc] __gunzip+0x2f0/0x3d0
[ef0b5dd8] [c08a0974] unpack_to_rootfs+0x1d8/0x334
[ef0b5e38] [c08a1238] populate_rootfs+0x80/0x168
[ef0b5e68] [c0005494] do_one_initcall+0x58/0x1f4
[ef0b5ed8] [c089e918] kernel_init_freeable+0x198/0x29c
[ef0b5f18] [c000574c] kernel_init+0x18/0x110
[ef0b5f38] [c0016274] ret_from_kernel_thread+0x14/0x1c
Instruction dump:
4200fff0 5400f0bf 7c0903a6 41820010 85240004 95260004 4200fff8 54a0d97f
54a506fe 39600004 7c0903a6 4182004c <7c0b37ec> 80e40004 81040008 8124000c
---[ end trace 52276ec2410ac084 ]---


cheers