Re: [RFC PATCH 29/32] KVM: PPC: Book3S HV: Add one-reg interface to virtual PTCR register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux