Follow-up to Anton's H_SET_MODE patch, the host should be taken aware of guest endianess change.
The hcall H_SET_MODE/H_SET_MODE_RESOURCE_LE is processed in kvm and then propagated to the host. v2: taking in account the Paul Mackerras's comment, using H_TOO_HARD to propagate only H_SET_MODE_RESOURCE_LE to the host. Signed-off-by: Laurent Dufour <lduf...@linux.vnet.ibm.com> --- arch/powerpc/kvm/book3s_hv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index 998cad3..be0af39 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c @@ -523,14 +523,14 @@ static int kvmppc_h_set_mode(struct kvm_vcpu *vcpu, unsigned long mflags, kvm_for_each_vcpu(n, v, kvm) v->arch.intr_msr &= ~MSR_LE; kick_all_cpus_sync(); - return H_SUCCESS; + return H_TOO_HARD; /* propagating to the host */ case 1: kvm->arch.lpcr |= LPCR_ILE; kvm_for_each_vcpu(n, v, kvm) v->arch.intr_msr |= MSR_LE; kick_all_cpus_sync(); - return H_SUCCESS; + return H_TOO_HARD; /* propagating to the host */ default: return H_UNSUPPORTED_FLAG_START; @@ -599,6 +599,8 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu) kvmppc_get_gpr(vcpu, 5), kvmppc_get_gpr(vcpu, 6), kvmppc_get_gpr(vcpu, 7)); + if (ret == H_TOO_HARD) + return RESUME_HOST; break; case H_XIRR: _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev