[Bug 1114846] New: ppc64 kernel breaks on P9 because of radix tree
http://bugzilla.suse.com/show_bug.cgi?id=1114846 Bug ID: 1114846 Summary: ppc64 kernel breaks on P9 because of radix tree Classification: openSUSE Product: openSUSE Tumbleweed Version: Current Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: Kernel Assignee: kernel-maintainers@forge.provo.novell.com Reporter: agraf@suse.com QA Contact: qa-bugs@suse.de CC: afaerber@suse.com, ihno@suse.com, msuchanek@suse.com, ro@suse.com, schwab@suse.com Found By: --- Blocker: --- When booting our TW kernel on a POWER9 system in bare metal or in KVM mode, it fails to boot because MMIO accesses break. The reason for that is that Cell support enables indirect MMIO support which hides bits in the address which does not work in Radix mode. For full details, I'll paste the email from Michael Ellermann. The easiest fix for this would be to disable Cell support in our BE kernel. That way we wouldn't be able to run on Cell systems (does anyone do that still?), but at least we would be able to fully leverage POWER9 and above machines. The alternative to this would be to disable Radix Tree support in our BE kernel. I doubt that's a good idea though. ---
qemu-system-ppc64 -nographic -cpu host -enable-kvm -kernel linux -vga none -drive file=linux,if=virtio,snapshot=on -m 1G
with the guest kernel taken from http://download.opensuse.org/ports/ppc/factory/repo/oss/boot/ppc64/linux
The same kernel compiled as ppc64le works correctly.
It looks like you've got CONFIG_PPC_INDIRECT_MMIO enabled, and looking at the code it simply can't work with Radix. It masks off some of the high bits of the address to use as a token, but those bits are used as part of the address with Radix. You can see in the reg dump that r4 = c00c000080000014 which is an address from ioremap(). But then we do: rldicl r10,r4,4,12 rotldi r10,r10,60 hwsync stb r3,0(r10) Which clears bits 59-48 leaving us with c000000080000014, which would be in the linear mapping except you mustn't have that much memory. But it's still the wrong address. You get PPC_INDIRECT_MMIO selected because you still build CELL support We might be able to rework the PPC_INDIRECT_MMIO stuff to work with Radix, but I'll have to see if there are enough bits left for its token thing. The other option is we make PPC_INDIRECT_MMIO depend on !RADIX. That might break Cell if you enable Radix, but possibly only on the IBM Cell Blades which you probably don't care about anymore. cheers -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.suse.com/show_bug.cgi?id=1114846
http://bugzilla.suse.com/show_bug.cgi?id=1114846#c1
--- Comment #1 from Michal Suchanek
http://bugzilla.suse.com/show_bug.cgi?id=1114846
Ihno Krumreich
http://bugzilla.suse.com/show_bug.cgi?id=1114846
http://bugzilla.suse.com/show_bug.cgi?id=1114846#c2
Michal Suchanek
participants (1)
-
bugzilla_noreply@novell.com