On 29.06.2011, at 12:16, Paul Mackerras wrote:
Commit 69acc0d3ba ("KVM: PPC: Resolve real-mode handlers through
function exports") resulted in vcpu->arch.trampoline_lowmem and
vcpu->arch.trampoline_enter ending up with kernel virtual addresses
rather than physical addresses. This is OK on 64-bit Book3S machines,
which ignore the top 4 bits of the effective address in real mode,
but on 32-bit Book3S machines, accessing these addresses in real mode
causes machine check interrupts, as the hardware uses the whole
effective address as the physical address in real mode.
=20
This fixes the problem by using __pa() to convert these addresses
to physical addresses.
Ouch. Thanks for the catch! I really need to include book3s_32 in my =
automated testing :(.
Alex