mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
![]() 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:
|
||
---|---|---|
.. | ||
fdt.h | ||
mac_dbdma.h | ||
openpic.h | ||
openpic_kvm.h | ||
pnv.h | ||
pnv_adu.h | ||
pnv_chip.h | ||
pnv_chiptod.h | ||
pnv_core.h | ||
pnv_homer.h | ||
pnv_i2c.h | ||
pnv_lpc.h | ||
pnv_n1_chiplet.h | ||
pnv_nest_pervasive.h | ||
pnv_occ.h | ||
pnv_pnor.h | ||
pnv_psi.h | ||
pnv_sbe.h | ||
pnv_xive.h | ||
pnv_xscom.h | ||
ppc.h | ||
ppc4xx.h | ||
ppc_e500.h | ||
spapr.h | ||
spapr_cpu_core.h | ||
spapr_drc.h | ||
spapr_irq.h | ||
spapr_nested.h | ||
spapr_numa.h | ||
spapr_nvdimm.h | ||
spapr_ovec.h | ||
spapr_tpm_proxy.h | ||
spapr_vio.h | ||
spapr_xive.h | ||
vof.h | ||
xics.h | ||
xics_spapr.h | ||
xive.h | ||
xive2.h | ||
xive2_regs.h | ||
xive_regs.h |