The reflection of sc 1 hcalls from PR=1 userspace is required to support PR KVM. Radix guests don't support PR KVM nor do they support nested hash guests, so this sc 1 reflection can be removed from radix guests. Cause a privileged program check instead, which is less surprising. Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> --- arch/powerpc/kvm/book3s_hv.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index ae5ad93a623f..f4d6ec6c4710 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -1403,11 +1403,20 @@ static int kvmppc_handle_exit_hv(struct kvm_vcpu *vcpu, int i; if (unlikely(vcpu->arch.shregs.msr & MSR_PR)) { - /* - * Guest userspace executed sc 1, reflect it back as a - * syscall as it may be a PR KVM hcall. - */ - kvmppc_core_queue_syscall(vcpu); + if (!kvmhv_vcpu_is_radix(vcpu)) { + /* + * Guest userspace executed sc 1, reflect it + * back as a syscall as it may be a PR KVM + * hcall. + */ + kvmppc_core_queue_syscall(vcpu); + } else { + /* + * radix guests can not run PR KVM so send a + * program check. + */ + kvmppc_core_queue_program(vcpu, SRR1_PROGPRIV); + } r = RESUME_GUEST; break; } -- 2.23.0