KVM: PPC: Book3S HV P9: Reflect userspace hcalls to hash guests to support PR KVM
The reflection of sc 1 interrupts from guest PR=1 to the guest kernel is required to support a hash guest running PR KVM where its guest is making hcalls with sc 1. In preparation for hash guest support, add this hcall reflection to the P9 path. The P7/8 path does this in its realmode hcall handler (sc_1_fast_return). Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210528090752.3542186-30-npiggin@gmail.com
This commit is contained in:
parent
6165d5dd99
commit
ac3c8b41c2
@ -1457,13 +1457,23 @@ static int kvmppc_handle_exit_hv(struct kvm_vcpu *vcpu,
|
||||
* Guest userspace executed sc 1. This can only be
|
||||
* reached by the P9 path because the old path
|
||||
* handles this case in realmode hcall handlers.
|
||||
*
|
||||
* Radix guests can not run PR KVM or nested HV hash
|
||||
* guests which might run PR KVM, so this is always
|
||||
* a privilege fault. Send a program check to guest
|
||||
* kernel.
|
||||
*/
|
||||
kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV);
|
||||
if (!kvmhv_vcpu_is_radix(vcpu)) {
|
||||
/*
|
||||
* A guest could be running PR KVM, so this
|
||||
* may be a PR KVM hcall. It must be reflected
|
||||
* to the guest kernel as a sc interrupt.
|
||||
*/
|
||||
kvmppc_core_queue_syscall(vcpu);
|
||||
} else {
|
||||
/*
|
||||
* Radix guests can not run PR KVM or nested HV
|
||||
* hash guests which might run PR KVM, so this
|
||||
* is always a privilege fault. Send a program
|
||||
* check to guest kernel.
|
||||
*/
|
||||
kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV);
|
||||
}
|
||||
r = RESUME_GUEST;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user