qemu-patch-raspberry4/hw/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
..
e500-ccsr.h ppc: do not use ../ in include files 2013-03-01 13:57:33 +01:00
e500.c machine: query kernel-irqchip property 2015-03-11 18:14:23 +01:00
e500.h PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
e500plat.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
mac.h block: Rename BlockDriverAIOCB* to BlockAIOCB* 2014-10-20 13:41:27 +02:00
mac_newworld.c Bugfixes and making SCSI adapters IOMMU-friendly. 2015-03-26 17:33:35 +00:00
mac_oldworld.c fw_cfg: factor out initialization of FW_CFG_ID (rev. number) 2015-03-25 13:37:10 +01:00
Makefile.objs spapr_drc: initial implementation of sPAPRDRConnector device 2015-06-03 23:56:52 +02:00
mpc8544_guts.c cpu: Replace cpu_single_env with CPUState current_cpu 2013-07-09 21:20:28 +02:00
mpc8544ds.c PPC: e500 pci host: Add support for ATMUs 2015-01-07 16:16:24 +01:00
ppc.c m48t59: let init functions return a Nvram object 2015-03-10 09:18:56 +00:00
ppc4xx_devs.c SCSI changes that enable sending vendor-specific commands via virtio-scsi. 2014-08-19 13:00:57 +01:00
ppc4xx_pci.c hw/pci/ppc4xx_pci.c: Remove unused pci4xx_cfgaddr_read/write/ops 2014-11-04 23:26:12 +01:00
ppc405.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
ppc405_boards.c m48t59: introduce new base-year qdev property 2015-03-10 09:18:56 +00:00
ppc405_uc.c memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
ppc440_bamboo.c hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
ppc_booke.c hw/ppc: Avoid shifting left into sign bit 2014-03-27 19:22:49 +04:00
ppce500_spin.c Convert (ffs(val) - 1) to ctz32(val) 2015-04-28 15:36:08 +02:00
prep.c m48t59: introduce new base-year qdev property 2015-03-10 09:18:56 +00:00
spapr.c pseries: Enable in-kernel H_LOGICAL_CI_{LOAD, STORE} implementations 2015-06-03 23:56:55 +02:00
spapr_drc.c spapr_drc: add spapr_drc_populate_dt() 2015-06-03 23:56:54 +02:00
spapr_events.c spapr_events: event-scan RTAS interface 2015-06-03 23:56:53 +02:00
spapr_hcall.c pseries: Switch VGA endian on H_SET_MODE 2015-03-09 15:00:03 +01:00
spapr_iommu.c hw/ppc/spapr_iommu: Fix the check for invalid upper bits in liobn 2015-06-03 23:56:51 +02:00
spapr_pci.c spapr_pci: emit hotplug add/remove events during hotplug 2015-06-03 23:56:55 +02:00
spapr_pci_vfio.c sPAPR: Implement sPAPRPHBClass EEH callbacks 2015-03-09 15:00:08 +01:00
spapr_rtas.c spapr_rtas: add ibm, configure-connector RTAS interface 2015-06-03 23:56:53 +02:00
spapr_rtc.c pseries: Export RTC time via QOM 2015-03-09 15:00:00 +01:00
spapr_vio.c spapr_vio: Introduce a liobn number generating macros 2015-06-03 23:56:50 +02:00
virtex_ml507.c hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00