mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
target/ppc: Handle NMI guest exit
Memory error such as bit flips that cannot be corrected by hardware are passed on to the kernel for handling. If the memory address in error belongs to guest then the guest kernel is responsible for taking suitable action. Patch [1] enhances KVM to exit guest with exit reason set to KVM_EXIT_NMI in such cases. This patch handles KVM_EXIT_NMI exit. [1] https://www.spinics.net/lists/kvm-ppc/msg12637.html (e20bbd3d and related commits) Signed-off-by: Aravinda Prasad <arawinda.p@gmail.com> Signed-off-by: Ganesh Goudar <ganeshgr@linux.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <20200130184423.20519-4-ganeshgr@linux.ibm.com> [dwg: #ifdefs to fix compile for 32-bit target] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
9d953ce447
commit
9ac703ac5f
6 changed files with 76 additions and 0 deletions
|
@ -1705,6 +1705,13 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
|
|||
ret = 0;
|
||||
break;
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
case KVM_EXIT_NMI:
|
||||
trace_kvm_handle_nmi_exception();
|
||||
ret = kvm_handle_nmi(cpu, run);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
fprintf(stderr, "KVM: unknown exit reason %d\n", run->exit_reason);
|
||||
ret = -1;
|
||||
|
@ -2800,6 +2807,17 @@ int kvm_arch_msi_data_to_gsi(uint32_t data)
|
|||
return data & 0xffff;
|
||||
}
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
int kvm_handle_nmi(PowerPCCPU *cpu, struct kvm_run *run)
|
||||
{
|
||||
cpu_synchronize_state(CPU(cpu));
|
||||
|
||||
spapr_mce_req_event(cpu);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int kvmppc_enable_hwrng(void)
|
||||
{
|
||||
if (!kvm_enabled() || !kvm_check_extension(kvm_state, KVM_CAP_PPC_HWRNG)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue