qemu/include/hw/ppc
Amit Machhiwal 1d7e6318af spapr: nested: Add support for DPDES SPR in GSB for TCG L0
The DPDES support for doorbell emulation and handling for KVM on PAPR
guests was added in Linux via [1]. Subsequently, a new GSB (Guest State
Buffer) element for DPDES was added in Linux; the same has been missing
in TCG L0 implementation. Add support for DPDES register's APIv2 GSB
element and required handling in `spapr_nested.c`.

Currently, booting a KVM guest inside a QEMU TCG guest fails with the
following crash. The crash occurs while handling the GUEST_RUN_VCPU
hcall made in TCG L0. In the hcall handling path, map_and_getset_state()
calls getset_state(), which, in turn, calls guest_state_request_check()
to validate the GSR (Guest State Request) elements. During this process,
guest_state_request_check() iterates over the GSR elements and receives
a NULL return code from guest_state_element_type_find() for the type
variable corresponding to the DPDES register's elemetn ID (which was
unknown to TCG L0). Subsequently, getset_state() returns H_P3,
ultimately leading to the hcall failure and causing the KVM guest to
crash.

  KVM: unknown exit, hardware reason ffffffffffffffea
  [ ... KVM register dump ... ]

Fix this by adding the required support in TCG L0 implementation of
APIv2.

[1] https://lore.kernel.org/all/20240605113913.83715-1-gautam@linux.ibm.com/

Fixes: 4a575f9a05 ("spapr: nested: Initialize the GSB elements lookup table.")
Suggested-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Signed-off-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
2024-11-04 09:13:01 +10:00
..
fdt.h hw/ppc: Clean up local variable shadowing in _FDT helper routine 2023-09-29 10:07:17 +02:00
mac_dbdma.h mac_dbdma: Remove leftover dma_memory_unmap calls 2024-09-18 09:31:56 +01:00
openpic.h ppc: spelling fixes 2023-09-20 07:54:34 +03:00
openpic_kvm.h openpic: move KVM-specific declarations into separate openpic_kvm.h file 2018-03-06 13:16:29 +11:00
pnv.h ppc/pnv: Add an LPAR per core machine option 2024-07-26 09:21:06 +10:00
pnv_adu.h ppc/pnv: Implement ADU access to LPC space 2024-07-26 09:21:06 +10:00
pnv_chip.h pnv/xive: Support cache flush and queue sync inject with notifications 2024-07-26 09:51:20 +10:00
pnv_chiptod.h ppc/pnv: Implement the ChipTOD to Core transfer 2024-02-23 23:24:43 +10:00
pnv_core.h ppc/pnv: Add an LPAR per core machine option 2024-07-26 09:21:06 +10:00
pnv_homer.h include/hw/ppc include/hw/pci-host: Drop extra typedefs 2023-01-20 07:25:22 +01:00
pnv_i2c.h ppc/pnv: Add an I2C controller model 2023-11-07 15:49:41 -03:00
pnv_lpc.h ppc/pnv: Implement ADU access to LPC space 2024-07-26 09:21:06 +10:00
pnv_n1_chiplet.h hw/ppc: Add N1 chiplet model 2024-02-23 23:24:42 +10:00
pnv_nest_pervasive.h hw/ppc: Add pnv nest pervasive common chiplet model 2024-02-23 23:24:42 +10:00
pnv_occ.h include/hw/ppc: Supply a few missing includes 2023-01-20 07:25:14 +01:00
pnv_pnor.h include/hw/ppc: Supply a few missing includes 2023-01-20 07:25:14 +01:00
pnv_psi.h hw/ppc: Avoid using Monitor in pnv_psi_pic_print_info() 2024-06-19 12:40:49 +02:00
pnv_sbe.h include/hw/ppc: Supply a few missing includes 2023-01-20 07:25:14 +01:00
pnv_xive.h hw/ppc: Avoid using Monitor in pnv_xive2_pic_print_info() 2024-06-19 12:40:49 +02:00
pnv_xscom.h hw/ssi: Add SPI model 2024-07-26 09:21:06 +10:00
ppc.h target/ppc: Move PowerPCCPUClass definition to 'cpu.h' 2023-11-07 12:13:28 +01:00
ppc4xx.h hw/ppc/ppc4xx_pci: Extract PCI host definitions to hw/pci-host/ppc4xx.h 2024-02-22 12:47:40 +01:00
ppc_e500.h intc/openpic: Build openpic only once 2013-07-09 21:33:02 +02:00
spapr.h ppc/spapr: remove deprecated machine pseries-2.9 2024-11-04 09:10:29 +10:00
spapr_cpu_core.h ppc/spapr: remove deprecated machine pseries-2.12 2024-11-04 09:10:32 +10:00
spapr_drc.h spapr: rollback 'unplug timeout' for CPU hotunplugs 2021-04-12 12:27:14 +10:00
spapr_irq.h hw/ppc: Avoid using Monitor in spapr_irq_print_info() 2024-06-19 12:40:49 +02:00
spapr_nested.h spapr: nested: Add support for DPDES SPR in GSB for TCG L0 2024-11-04 09:13:01 +10:00
spapr_numa.h spapr: move FORM1 verifications to post CAS 2021-09-30 12:26:06 +10:00
spapr_nvdimm.h spapr: nvdimm: Implement H_SCM_FLUSH hcall 2022-02-18 08:34:14 +01:00
spapr_ovec.h spapr_numa.c: FORM2 NUMA affinity support 2021-09-30 12:26:06 +10:00
spapr_tpm_proxy.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
spapr_vio.h dma: Let ld*_dma() propagate MemTxResult 2021-12-31 01:05:27 +01:00
spapr_xive.h spapr/xive: Make spapr_xive_pic_print_info() static 2021-01-06 11:09:59 +11:00
vof.h hw/ppc/vof: Do not include the full "cpu.h" 2022-12-21 14:17:55 -03:00
xics.h hw/ppc: Avoid using Monitor in ics_pic_print_info() 2024-06-19 12:40:49 +02:00
xics_spapr.h spapr/xics: Drop unused argument to xics_kvm_has_broken_disconnect() 2020-12-14 15:50:55 +11:00
xive.h hw/ppc: Avoid using Monitor in xive_source_pic_print_info() 2024-06-19 12:40:49 +02:00
xive2.h include/hw/ppc: Supply a few missing includes 2023-01-20 07:25:14 +01:00
xive2_regs.h pnv/xive2: Dump more END state with 'info pic' 2024-07-26 09:51:33 +10:00
xive_regs.h hw/ppc: Avoid using Monitor in xive_end_eas_pic_print_info() 2024-06-19 12:40:49 +02:00