qemu-e2k/target-ppc
David Gibson 026bfd89cb pseries: Enable in-kernel H_LOGICAL_CI_{LOAD, STORE} implementations
qemu currently implements the hypercalls H_LOGICAL_CI_LOAD and
H_LOGICAL_CI_STORE as PAPR extensions.  These are used by the SLOF firmware
for IO, because performing cache inhibited MMIO accesses with the MMU off
(real mode) is very awkward on POWER.

This approach breaks when SLOF needs to access IO devices implemented
within KVM instead of in qemu.  The simplest example would be virtio-blk
using an iothread, because the iothread / dataplane mechanism relies on
an in-kernel implementation of the virtio queue notification MMIO.

To fix this, an in-kernel implementation of these hypercalls has been made,
(kernel commit 99342cf "kvmppc: Implement H_LOGICAL_CI_{LOAD,STORE} in KVM"
however, the hypercalls still need to be enabled from qemu.  This performs
the necessary calls to do so.

It would be nice to provide some warning if we encounter a problematic
device with a kernel which doesn't support the new calls.  Unfortunately,
I can't see a way to detect this case which won't either warn in far too
many cases that will probably work, or which is horribly invasive.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2015-06-03 23:56:55 +02:00
..
Makefile.objs target-ppc: Introduce DFP Helper Utilities 2014-06-16 13:24:29 +02:00
STATUS target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
arch_dump.c target-ppc: Set the correct endianness in ELF dump header 2014-06-16 13:24:36 +02:00
cpu-models.c target-ppc: Remove POWER5+ v0.0 that never existed 2015-03-25 22:49:46 +01:00
cpu-models.h target-ppc: Remove POWER5+ v0.0 that never existed 2015-03-25 22:49:46 +01:00
cpu-qom.h target-ppc: Use cpu_exec_interrupt qom hook 2014-09-25 18:54:22 +01:00
cpu.h Convert (ffs(val) - 1) to ctz32(val) 2015-04-28 15:36:08 +02:00
dfp_helper.c target-ppc: Fix compiler warning 2014-06-24 20:01:24 +04:00
excp_helper.c target-ppc: Use cpu_exec_interrupt qom hook 2014-09-25 18:54:22 +01:00
fpu_helper.c target-ppc: Eliminate set_fprf Argument From helper_compute_fprf 2015-01-07 16:16:25 +01:00
gdbstub.c target-ppc: Fix gdbstub for ppc64le-linux-user 2014-07-08 12:10:36 +02:00
helper.h target-ppc: Introduce tbegin 2015-01-07 16:16:27 +01:00
helper_regs.h PPC: Only enter MSR_POW when no interrupts pending 2014-04-08 11:20:05 +02:00
int_helper.c target-ppc: Fix vcmpbfp. Unordered Case 2014-11-04 23:26:15 +01:00
kvm-stub.c kvm/openpic: in-kernel mpic support 2013-07-01 01:11:14 +02:00
kvm.c pseries: Enable in-kernel H_LOGICAL_CI_{LOAD, STORE} implementations 2015-06-03 23:56:55 +02:00
kvm_ppc.c PPC: KVM: Compile fix for qemu_notify_event 2013-09-02 10:06:42 +02:00
kvm_ppc.h pseries: Enable in-kernel H_LOGICAL_CI_{LOAD, STORE} implementations 2015-06-03 23:56:55 +02:00
machine.c target-ppc: don't invalidate msr MSR_HVB bit in cpu_post_load 2015-04-17 11:44:01 +01:00
mem_helper.c target-ppc: Introduce tbegin 2015-01-07 16:16:27 +01:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
mfrom_table_gen.c fix spelling in target sub directory 2011-12-02 10:50:57 +00:00
misc_helper.c target-ppc: move sdr1 value change detection logic to helper_store_sdr1() 2015-03-09 15:00:05 +01:00
mmu-hash32.c qemu-log: add log category for MMU info 2014-12-16 18:43:19 +00:00
mmu-hash32.h target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook 2014-03-13 19:20:48 +01:00
mmu-hash64.c target-ppc: Fix warnings from Sparse 2015-03-09 15:00:08 +01:00
mmu-hash64.h target-ppc: Use right page size with hash table lookup 2015-03-09 14:59:53 +01:00
mmu_helper.c target-ppc: move sdr1 value change detection logic to helper_store_sdr1() 2015-03-09 15:00:05 +01:00
timebase_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
translate.c tcg: Change translator-side labels to a pointer 2015-03-13 12:28:18 -07:00
translate_init.c PPC: Introduce the Virtual Time Base (VTB) SPR register 2015-03-09 15:00:07 +01:00
user_only_helper.c cpu: Move exception_index field from CPU_COMMON to CPUState 2014-03-13 19:20:46 +01:00