Commit 8cb59788 authored by Alexander Graf's avatar Alexander Graf Committed by Scott Wood

PPC: ePAPR: Fix hypercall on LE guest

We get an array of instructions from the hypervisor via device tree that
we write into a buffer that gets executed whenever we want to make an
ePAPR compliant hypercall.

However, the hypervisor passes us these instructions in BE order which
we have to manually convert to LE when we want to run them in LE mode.

With this fixup in place, I can successfully run LE kernels with KVM
PV enabled on PR KVM.
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent 1be62c6c
...@@ -48,9 +48,10 @@ static int __init early_init_dt_scan_epapr(unsigned long node, ...@@ -48,9 +48,10 @@ static int __init early_init_dt_scan_epapr(unsigned long node,
return -1; return -1;
for (i = 0; i < (len / 4); i++) { for (i = 0; i < (len / 4); i++) {
patch_instruction(epapr_hypercall_start + i, insts[i]); u32 inst = be32_to_cpu(insts[i]);
patch_instruction(epapr_hypercall_start + i, inst);
#if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64) #if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64)
patch_instruction(epapr_ev_idle_start + i, insts[i]); patch_instruction(epapr_ev_idle_start + i, inst);
#endif #endif
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment