On Mon Jun 3, 2024 at 9:14 PM AEST, Shivaprasad G Bhat wrote: > The nestedv2 APIs has the guest state element defined for DEXCR > for the save-restore with L0. However, its ignored in the code. > > The patch takes care of this for the DEXCR GSID. > > Signed-off-by: Shivaprasad G Bhat <sbhat@xxxxxxxxxxxxx> > --- > arch/powerpc/include/asm/kvm_host.h | 1 + > arch/powerpc/kvm/book3s_hv.h | 1 + > arch/powerpc/kvm/book3s_hv_nestedv2.c | 6 ++++++ > 3 files changed, 8 insertions(+) > > diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h > index 8abac532146e..1e2fdcbecffd 100644 > --- a/arch/powerpc/include/asm/kvm_host.h > +++ b/arch/powerpc/include/asm/kvm_host.h > @@ -599,6 +599,7 @@ struct kvm_vcpu_arch { > ulong dawrx0; > ulong dawr1; > ulong dawrx1; > + ulong dexcr; > ulong ciabr; > ulong cfar; > ulong ppr; Actually I would reorder the patches so you introduce the KVM reg first, and put this hunk there. The nested v2 bits look okay. For them, Reviewed-by: Nicholas Piggin <npiggin@xxxxxxxxx> > diff --git a/arch/powerpc/kvm/book3s_hv.h b/arch/powerpc/kvm/book3s_hv.h > index 47b2c815641e..7b0fd282fe95 100644 > --- a/arch/powerpc/kvm/book3s_hv.h > +++ b/arch/powerpc/kvm/book3s_hv.h > @@ -116,6 +116,7 @@ KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr0, 64, KVMPPC_GSID_DAWR0) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawr1, 64, KVMPPC_GSID_DAWR1) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx0, 64, KVMPPC_GSID_DAWRX0) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dawrx1, 64, KVMPPC_GSID_DAWRX1) > +KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(dexcr, 64, KVMPPC_GSID_DEXCR) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ciabr, 64, KVMPPC_GSID_CIABR) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(wort, 64, KVMPPC_GSID_WORT) > KVMPPC_BOOK3S_HV_VCPU_ACCESSOR(ppr, 64, KVMPPC_GSID_PPR) > diff --git a/arch/powerpc/kvm/book3s_hv_nestedv2.c b/arch/powerpc/kvm/book3s_hv_nestedv2.c > index 1091f7a83b25..d207a6d936ff 100644 > --- a/arch/powerpc/kvm/book3s_hv_nestedv2.c > +++ b/arch/powerpc/kvm/book3s_hv_nestedv2.c > @@ -193,6 +193,9 @@ static int gs_msg_ops_vcpu_fill_info(struct kvmppc_gs_buff *gsb, > case KVMPPC_GSID_DAWRX1: > rc = kvmppc_gse_put_u32(gsb, iden, vcpu->arch.dawrx1); > break; > + case KVMPPC_GSID_DEXCR: > + rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.dexcr); > + break; > case KVMPPC_GSID_CIABR: > rc = kvmppc_gse_put_u64(gsb, iden, vcpu->arch.ciabr); > break; > @@ -441,6 +444,9 @@ static int gs_msg_ops_vcpu_refresh_info(struct kvmppc_gs_msg *gsm, > case KVMPPC_GSID_DAWRX1: > vcpu->arch.dawrx1 = kvmppc_gse_get_u32(gse); > break; > + case KVMPPC_GSID_DEXCR: > + vcpu->arch.dexcr = kvmppc_gse_get_u64(gse); > + break; > case KVMPPC_GSID_CIABR: > vcpu->arch.ciabr = kvmppc_gse_get_u64(gse); > break;