On Fri, Sep 21, 2018 at 08:02:00PM +1000, Paul Mackerras wrote: > This adds a one-reg register identifier which can be used to read and > set the virtual PTCR for the guest. This register identifies the > address and size of the virtual partition table for the guest, which > contains information about the nested guests under this guest. > > Migrating this value is the only extra requirement for migrating a > guest which has nested guests (assuming of course that the destination > host supports nested virtualization in the kvm-hv module). > > Signed-off-by: Paul Mackerras <paulus@xxxxxxxxxx> Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx> > --- > Documentation/virtual/kvm/api.txt | 1 + > arch/powerpc/include/uapi/asm/kvm.h | 1 + > arch/powerpc/kvm/book3s_hv.c | 6 ++++++ > 3 files changed, 8 insertions(+) > > diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt > index c664064..017d851 100644 > --- a/Documentation/virtual/kvm/api.txt > +++ b/Documentation/virtual/kvm/api.txt > @@ -1922,6 +1922,7 @@ registers, find a list below: > PPC | KVM_REG_PPC_TIDR | 64 > PPC | KVM_REG_PPC_PSSCR | 64 > PPC | KVM_REG_PPC_DEC_EXPIRY | 64 > + PPC | KVM_REG_PPC_PTCR | 64 > PPC | KVM_REG_PPC_TM_GPR0 | 64 > ... > PPC | KVM_REG_PPC_TM_GPR31 | 64 > diff --git a/arch/powerpc/include/uapi/asm/kvm.h b/arch/powerpc/include/uapi/asm/kvm.h > index 1b32b56..8c876c1 100644 > --- a/arch/powerpc/include/uapi/asm/kvm.h > +++ b/arch/powerpc/include/uapi/asm/kvm.h > @@ -634,6 +634,7 @@ struct kvm_ppc_cpu_char { > > #define KVM_REG_PPC_DEC_EXPIRY (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe) > #define KVM_REG_PPC_ONLINE (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xbf) > +#define KVM_REG_PPC_PTCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc0) > > /* Transactional Memory checkpointed state: > * This is all GPRs, all VSX regs and a subset of SPRs > diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c > index 71ed0cd..dcb922b 100644 > --- a/arch/powerpc/kvm/book3s_hv.c > +++ b/arch/powerpc/kvm/book3s_hv.c > @@ -1727,6 +1727,9 @@ static int kvmppc_get_one_reg_hv(struct kvm_vcpu *vcpu, u64 id, > case KVM_REG_PPC_ONLINE: > *val = get_reg_val(id, vcpu->arch.online); > break; > + case KVM_REG_PPC_PTCR: > + *val = get_reg_val(id, vcpu->kvm->arch.l1_ptcr); > + break; > default: > r = -EINVAL; > break; > @@ -1958,6 +1961,9 @@ static int kvmppc_set_one_reg_hv(struct kvm_vcpu *vcpu, u64 id, > atomic_dec(&vcpu->arch.vcore->online_count); > vcpu->arch.online = i; > break; > + case KVM_REG_PPC_PTCR: > + vcpu->kvm->arch.l1_ptcr = set_reg_val(id, *val); > + break; > default: > r = -EINVAL; > break; -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature