Re: [PATCH 3/3] KVM: s390: Specify kvm->arch.sca as esca_block

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

 



On Wed, 14 May 2025 18:34:51 +0200
Christoph Schlameuss <schlameuss@xxxxxxxxxxxxx> wrote:

> We are no longer referencing a bsca_block in kvm->arch.sca. This will
> always be esca_block instead.
> By specifying the type of the sca as esca_block we can simplify access
> to the sca and get rid of some helpers while making the code clearer.
> 
> Signed-off-by: Christoph Schlameuss <schlameuss@xxxxxxxxxxxxx>

Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx>

> ---
>  arch/s390/include/asm/kvm_host.h |  4 ++--
>  arch/s390/kvm/gaccess.c          | 10 +++++-----
>  arch/s390/kvm/kvm-s390.c         |  4 ++--
>  arch/s390/kvm/kvm-s390.h         |  7 -------
>  4 files changed, 9 insertions(+), 16 deletions(-)
> 
> diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
> index d03e354a63d9c931522c1a1607eba8685c24527f..2a2b557357c8e40c82022eb338c3e98aa8f03a2b 100644
> --- a/arch/s390/include/asm/kvm_host.h
> +++ b/arch/s390/include/asm/kvm_host.h
> @@ -629,8 +629,8 @@ struct kvm_s390_pv {
>  	struct mmu_notifier mmu_notifier;
>  };
>  
> -struct kvm_arch{
> -	void *sca;
> +struct kvm_arch {
> +	struct esca_block *sca;
>  	rwlock_t sca_lock;
>  	debug_info_t *dbf;
>  	struct kvm_s390_float_interrupt float_int;
> diff --git a/arch/s390/kvm/gaccess.c b/arch/s390/kvm/gaccess.c
> index f6fded15633ad87f6b02c2c42aea35a3c9164253..ee37d397d9218a4d33c7a33bd877d0b974ca9003 100644
> --- a/arch/s390/kvm/gaccess.c
> +++ b/arch/s390/kvm/gaccess.c
> @@ -112,7 +112,7 @@ int ipte_lock_held(struct kvm *kvm)
>  		int rc;
>  
>  		read_lock(&kvm->arch.sca_lock);
> -		rc = kvm_s390_get_ipte_control(kvm)->kh != 0;
> +		rc = kvm->arch.sca->ipte_control.kh != 0;
>  		read_unlock(&kvm->arch.sca_lock);
>  		return rc;
>  	}
> @@ -129,7 +129,7 @@ static void ipte_lock_simple(struct kvm *kvm)
>  		goto out;
>  retry:
>  	read_lock(&kvm->arch.sca_lock);
> -	ic = kvm_s390_get_ipte_control(kvm);
> +	ic = &kvm->arch.sca->ipte_control;
>  	old = READ_ONCE(*ic);
>  	do {
>  		if (old.k) {
> @@ -154,7 +154,7 @@ static void ipte_unlock_simple(struct kvm *kvm)
>  	if (kvm->arch.ipte_lock_count)
>  		goto out;
>  	read_lock(&kvm->arch.sca_lock);
> -	ic = kvm_s390_get_ipte_control(kvm);
> +	ic = &kvm->arch.sca->ipte_control;
>  	old = READ_ONCE(*ic);
>  	do {
>  		new = old;
> @@ -172,7 +172,7 @@ static void ipte_lock_siif(struct kvm *kvm)
>  
>  retry:
>  	read_lock(&kvm->arch.sca_lock);
> -	ic = kvm_s390_get_ipte_control(kvm);
> +	ic = &kvm->arch.sca->ipte_control;
>  	old = READ_ONCE(*ic);
>  	do {
>  		if (old.kg) {
> @@ -192,7 +192,7 @@ static void ipte_unlock_siif(struct kvm *kvm)
>  	union ipte_control old, new, *ic;
>  
>  	read_lock(&kvm->arch.sca_lock);
> -	ic = kvm_s390_get_ipte_control(kvm);
> +	ic = &kvm->arch.sca->ipte_control;
>  	old = READ_ONCE(*ic);
>  	do {
>  		new = old;
> diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
> index d610447dbf2c1caa084bd98eabf19c4ca8f1e972..9af8fe93ed3f093f4cce16771d095c08f770d44d 100644
> --- a/arch/s390/kvm/kvm-s390.c
> +++ b/arch/s390/kvm/kvm-s390.c
> @@ -1964,7 +1964,7 @@ static int kvm_s390_get_topo_change_indication(struct kvm *kvm,
>  		return -ENXIO;
>  
>  	read_lock(&kvm->arch.sca_lock);
> -	topo = ((struct esca_block *)kvm->arch.sca)->utility.mtcr;
> +	topo = kvm->arch.sca->utility.mtcr;
>  	read_unlock(&kvm->arch.sca_lock);
>  
>  	return put_user(topo, (u8 __user *)attr->addr);
> @@ -3303,7 +3303,7 @@ static void kvm_s390_crypto_init(struct kvm *kvm)
>  
>  static void sca_dispose(struct kvm *kvm)
>  {
> -	free_pages_exact(kvm->arch.sca, sizeof(struct esca_block));
> +	free_pages_exact(kvm->arch.sca, sizeof(*kvm->arch.sca));
>  	kvm->arch.sca = NULL;
>  }
>  
> diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h
> index 2c8e177e4af8f2dab07fd42a904cefdea80f6855..0c5e8ae07b77648d554668cc0536607545636a68 100644
> --- a/arch/s390/kvm/kvm-s390.h
> +++ b/arch/s390/kvm/kvm-s390.h
> @@ -528,13 +528,6 @@ void kvm_s390_prepare_debug_exit(struct kvm_vcpu *vcpu);
>  int kvm_s390_handle_per_ifetch_icpt(struct kvm_vcpu *vcpu);
>  int kvm_s390_handle_per_event(struct kvm_vcpu *vcpu);
>  
> -/* support for Basic/Extended SCA handling */
> -static inline union ipte_control *kvm_s390_get_ipte_control(struct kvm *kvm)
> -{
> -	struct esca_block *sca = kvm->arch.sca; /* SCA version doesn't matter */
> -
> -	return &sca->ipte_control;
> -}
>  static inline int kvm_s390_use_sca_entries(void)
>  {
>  	/*
> 





[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