qemu-patch-raspberry4/hw/ppc
Fabiano Rosas f0638a0b6b spapr: Handle HPT allocation failure in nested guest
The nested KVM code does not yet support HPT guests. Calling the
KVM_CAP_PPC_ALLOC_HTAB ioctl currently leads to KVM setting the guest
as HPT and erroneously executing code in L1 that should only run in
hypervisor mode, leading to an exception in the L1 vcpu thread when it
enters the nested guest.

This can be reproduced with -machine max-cpu-compat=power8 in the L2
guest command line.

The KVM code has since been modified to fail the ioctl when running in
a nested environment so QEMU needs to be able to handle that. This
patch provides an error message informing the user about the lack of
support for HPT in nested guests.

Reported-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Signed-off-by: Fabiano Rosas <farosas@linux.ibm.com>
Message-Id: <20200911043123.204162-1-farosas@linux.ibm.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2020-10-09 10:15:06 +11:00
..
e500-ccsr.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
e500.c ppc/e500: Use start-powered-off CPUState property 2020-09-08 10:08:43 +10:00
e500.h Use OBJECT_DECLARE_TYPE when possible 2020-09-18 14:12:32 -04:00
e500plat.c ppc/e500: use memdev for RAM 2020-02-19 16:50:00 +00:00
fdt.c target/ppc: Split page size information into a separate allocation 2018-04-27 18:05:22 +10:00
fw_cfg.c hw/ppc: Implement fw_cfg_arch_key_name() 2019-05-23 14:10:31 +02:00
Kconfig ppc/pnv: Fix PCI_EXPRESS dependency 2020-02-21 09:15:03 +11:00
mac.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
mac_newworld.c load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
mac_oldworld.c load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
meson.build ppc: introducing spapr_numa.c NUMA code helper 2020-09-08 10:08:43 +10:00
mpc8544_guts.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
mpc8544ds.c ppc/e500: use memdev for RAM 2020-02-19 16:50:00 +00:00
pnv.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
pnv_bmc.c ppc/pnv: Add a HIOMAP erase command 2020-09-08 10:08:42 +10:00
pnv_core.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
pnv_homer.c ppc/pnv: change the PowerNV machine devices to be non user creatable 2020-02-02 14:07:57 +11:00
pnv_lpc.c ppc/pnv: Fix TypeInfo of PnvLpcController abstract class 2020-09-08 10:08:42 +10:00
pnv_occ.c ppc/pnv: change the PowerNV machine devices to be non user creatable 2020-02-02 14:07:57 +11:00
pnv_pnor.c ppc/pnv: improve error logging when a PNOR update fails 2020-02-02 14:07:57 +11:00
pnv_psi.c ppc/pnv: Make PSI device types not user creatable 2020-07-20 09:21:39 +10:00
pnv_xscom.c ppc/pnv: Introduce PnvChipClass::xscom_pcba() method 2019-12-17 10:59:11 +11:00
ppc.c hw/ppc/prep: Remove the deprecated "prep" machine and the OpenHackware BIOS 2020-02-02 14:07:57 +11:00
ppc4xx_devs.c bamboo, sam460ex: Tidy up error message for unsupported RAM size 2020-04-29 08:01:52 +02:00
ppc4xx_pci.c Pull request trivial patches 20200919 2020-09-22 15:42:23 +01:00
ppc405.h ppc4xx: Export ECB and PLB emulation 2017-09-08 09:30:55 +10:00
ppc405_boards.c ppc/ppc405_boards: Remove unnecessary NULL check 2020-03-24 11:56:37 +11:00
ppc405_uc.c Include hw/boards.h a bit less 2019-08-16 13:31:53 +02:00
ppc440.h ppc440_uc: Basic emulation of PPC440 DMA controller 2018-07-03 09:56:52 +10:00
ppc440_bamboo.c load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
ppc440_pcix.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
ppc440_uc.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
ppc_booke.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
ppce500_spin.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
prep.c sysbus: Convert to sysbus_realize() etc. with Coccinelle 2020-06-15 22:05:28 +02:00
prep_systemio.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
rs6000_mc.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
sam460ex.c load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00
spapr.c spapr: Handle HPT allocation failure in nested guest 2020-10-09 10:15:06 +11:00
spapr_caps.c spapr: Forbid nested KVM-HV in pre-power9 compat mode 2020-08-12 13:16:27 +10:00
spapr_cpu_core.c ppc/spapr: Use start-powered-off CPUState property 2020-09-08 10:08:43 +10:00
spapr_drc.c qom: Change object_get_canonical_path_component() not to malloc 2020-07-21 16:23:43 +02:00
spapr_events.c ppc/spapr: Don't kill the guest if a recovered FWNMI machine check delivery fails 2020-04-07 08:55:10 +10:00
spapr_hcall.c spapr: move h_home_node_associativity to spapr_numa.c 2020-09-08 10:37:32 +10:00
spapr_iommu.c qdev: Convert bus-less devices to qdev_realize() with Coccinelle 2020-06-15 22:06:04 +02:00
spapr_irq.c spapr/xive: Use the xics flag to check for XIVE-only IRQ backends 2020-09-08 10:08:42 +10:00
spapr_numa.c spapr_numa: use spapr_numa_get_vcpu_assoc() in home_node hcall 2020-09-08 11:34:30 +10:00
spapr_nvdimm.c spapr: introduce SpaprMachineState::numa_assoc_array 2020-09-08 10:08:43 +10:00
spapr_ovec.c spapr: Rename DT functions to newer naming convention 2020-03-17 17:00:19 +11:00
spapr_pci.c ppc/pseries: enable big-endian-framebuffer quirk for bochs-display and virtio-vga 2020-09-29 10:08:25 +02:00
spapr_pci_nvlink2.c spapr_numa: move NVLink2 associativity handling to spapr_numa.c 2020-09-08 10:08:43 +10:00
spapr_pci_vfio.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
spapr_rng.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
spapr_rtas.c pseries: fix kvmppc_set_fwnmi() 2020-07-27 11:09:25 +10:00
spapr_rtas_ddw.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
spapr_rtc.c qom: Drop parameter @errp of object_property_add() & friends 2020-05-15 07:07:58 +02:00
spapr_tpm_proxy.c qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
spapr_vio.c spapr: Fix typos in comments and macro indentation 2020-06-26 09:22:30 +10:00
trace-events trace-events: Fix attribution of trace points to source 2020-09-09 17:17:58 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
virtex_ml507.c load_elf: Remove unused address variables from callers 2020-09-25 16:52:08 -07:00