Re: [PATCH 3/7] KVM: s390: add MSA9 to cpumodel

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

 



On 17.04.19 17:28, Christian Borntraeger wrote:
> This enables stfle.155 and adds the subfunctions for KDSA. Bit 155 is
> added to the list of facilities that will be enabled when there is no
> cpu model involved as MSA9 requires no additional handling from
> userspace, e.g. for migration.
> 
> Please note that a cpu model enabled user space can and will have the
> final decision on the facility bits for a guests.
> 
> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> Acked-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
> Reviewed-by: Collin Walling <walling@xxxxxxxxxxxxx>
> ---
>  Documentation/virtual/kvm/devices/vm.txt |  3 ++-
>  arch/s390/include/asm/cpacf.h            |  1 +
>  arch/s390/include/uapi/asm/kvm.h         |  3 ++-
>  arch/s390/kvm/kvm-s390.c                 | 13 +++++++++++++
>  arch/s390/tools/gen_facilities.c         |  1 +
>  tools/arch/s390/include/uapi/asm/kvm.h   |  3 ++-
>  6 files changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/virtual/kvm/devices/vm.txt b/Documentation/virtual/kvm/devices/vm.txt
> index 95ca68d663a4..4ffb82b02468 100644
> --- a/Documentation/virtual/kvm/devices/vm.txt
> +++ b/Documentation/virtual/kvm/devices/vm.txt
> @@ -141,7 +141,8 @@ struct kvm_s390_vm_cpu_subfunc {
>         u8 pcc[16];           # valid with Message-Security-Assist-Extension 4
>         u8 ppno[16];          # valid with Message-Security-Assist-Extension 5
>         u8 kma[16];           # valid with Message-Security-Assist-Extension 8
> -       u8 reserved[1808];    # reserved for future instructions
> +       u8 kdsa[16];          # valid with Message-Security-Assist-Extension 9
> +       u8 reserved[1792];    # reserved for future instructions
>  };
>  
>  Parameters: address of a buffer to load the subfunction blocks from.
> diff --git a/arch/s390/include/asm/cpacf.h b/arch/s390/include/asm/cpacf.h
> index 3cc52e37b4b2..ce2770743cc5 100644
> --- a/arch/s390/include/asm/cpacf.h
> +++ b/arch/s390/include/asm/cpacf.h
> @@ -28,6 +28,7 @@
>  #define CPACF_KMCTR		0xb92d		/* MSA4 */
>  #define CPACF_PRNO		0xb93c		/* MSA5 */
>  #define CPACF_KMA		0xb929		/* MSA8 */
> +#define CPACF_KDSA		0xb93a		/* MSA9 */
>  
>  /*
>   * En/decryption modifier bits
> diff --git a/arch/s390/include/uapi/asm/kvm.h b/arch/s390/include/uapi/asm/kvm.h
> index 16511d97e8dc..09652eabe769 100644
> --- a/arch/s390/include/uapi/asm/kvm.h
> +++ b/arch/s390/include/uapi/asm/kvm.h
> @@ -152,7 +152,8 @@ struct kvm_s390_vm_cpu_subfunc {
>  	__u8 pcc[16];		/* with MSA4 */
>  	__u8 ppno[16];		/* with MSA5 */
>  	__u8 kma[16];		/* with MSA8 */
> -	__u8 reserved[1808];
> +	__u8 kdsa[16];		/* with MSA9 */
> +	__u8 reserved[1792];
>  };
>  
>  /* kvm attributes for crypto */
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index d3f3e63bb164..0dad61ccde3d 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -368,6 +368,10 @@ static void kvm_s390_cpu_feat_init(void)
>  		__cpacf_query(CPACF_KMA, (cpacf_mask_t *)
>  			      kvm_s390_available_subfunc.kma);
>  
> +	if (test_facility(155)) /* MSA9 */
> +		__cpacf_query(CPACF_KDSA, (cpacf_mask_t *)
> +			      kvm_s390_available_subfunc.kdsa);
> +
>  	if (MACHINE_HAS_ESOP)
>  		allow_cpu_feat(KVM_S390_VM_CPU_FEAT_ESOP);
>  	/*
> @@ -1331,6 +1335,9 @@ static int kvm_s390_set_processor_subfunc(struct kvm *kvm,
>  	VM_EVENT(kvm, 3, "SET: guest KMA    subfunc 0x%16.16lx.%16.16lx",
>  		 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[0],
>  		 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[1]);
> +	VM_EVENT(kvm, 3, "SET: guest KDSA   subfunc 0x%16.16lx.%16.16lx",
> +		 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[0],
> +		 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[1]);
>  
>  	return 0;
>  }
> @@ -1499,6 +1506,9 @@ static int kvm_s390_get_processor_subfunc(struct kvm *kvm,
>  	VM_EVENT(kvm, 3, "GET: guest KMA    subfunc 0x%16.16lx.%16.16lx",
>  		 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[0],
>  		 ((unsigned long *) &kvm->arch.model.subfuncs.kma)[1]);
> +	VM_EVENT(kvm, 3, "GET: guest KDSA   subfunc 0x%16.16lx.%16.16lx",
> +		 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[0],
> +		 ((unsigned long *) &kvm->arch.model.subfuncs.kdsa)[1]);
>  
>  	return 0;
>  }
> @@ -1554,6 +1564,9 @@ static int kvm_s390_get_machine_subfunc(struct kvm *kvm,
>  	VM_EVENT(kvm, 3, "GET: host  KMA    subfunc 0x%16.16lx.%16.16lx",
>  		 ((unsigned long *) &kvm_s390_available_subfunc.kma)[0],
>  		 ((unsigned long *) &kvm_s390_available_subfunc.kma)[1]);
> +	VM_EVENT(kvm, 3, "GET: host  KDSA   subfunc 0x%16.16lx.%16.16lx",
> +		 ((unsigned long *) &kvm_s390_available_subfunc.kdsa)[0],
> +		 ((unsigned long *) &kvm_s390_available_subfunc.kdsa)[1]);
>  
>  	return 0;
>  }
> diff --git a/arch/s390/tools/gen_facilities.c b/arch/s390/tools/gen_facilities.c
> index fd788e0f2e5b..e952cb3b75b2 100644
> --- a/arch/s390/tools/gen_facilities.c
> +++ b/arch/s390/tools/gen_facilities.c
> @@ -93,6 +93,7 @@ static struct facility_def facility_defs[] = {
>  			131, /* enhanced-SOP 2 and side-effect */
>  			139, /* multiple epoch facility */
>  			146, /* msa extension 8 */
> +			155, /* msa extension 9 */
>  			-1  /* END */
>  		}
>  	},
> diff --git a/tools/arch/s390/include/uapi/asm/kvm.h b/tools/arch/s390/include/uapi/asm/kvm.h
> index 16511d97e8dc..09652eabe769 100644
> --- a/tools/arch/s390/include/uapi/asm/kvm.h
> +++ b/tools/arch/s390/include/uapi/asm/kvm.h
> @@ -152,7 +152,8 @@ struct kvm_s390_vm_cpu_subfunc {
>  	__u8 pcc[16];		/* with MSA4 */
>  	__u8 ppno[16];		/* with MSA5 */
>  	__u8 kma[16];		/* with MSA8 */
> -	__u8 reserved[1808];
> +	__u8 kdsa[16];		/* with MSA9 */
> +	__u8 reserved[1792];
>  };
>  
>  /* kvm attributes for crypto */
> 

Reviewed-by: David Hildenbrand <david@xxxxxxxxxx>

-- 

Thanks,

David / dhildenb



[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