Re: [PATCH 05/11] KVM: s390: Support Configuration z/Architecture Mode

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

 



On 28.08.2017 10:07, Christian Borntraeger wrote:
> From: "Jason J. Herne" <jjherne@xxxxxxxxxxxxxxxxxx>
> 
> kvm has always supported the concept of starting in z/Arch mode so let's
> reflect the feature bit to the guest.
> 
> Also, we change sigp set architecture to reject any request to change
> architecture modes.

Hm ... this seems to imply that CZAM is always set, but what about
running on old user space (possibly on old hw)? Old QEMU will not enable
CZAM.

And especially old user space will rely on SET ARCHITECTURE being
handled in the kernel.

I agree, that for QEMU we can always do that change (as we control which
features are indicated to the guest). But I am wondering if we would
have to stick to existing behavior unless test_kvm_facility(vcpu->kvm, 138).

> 
> Signed-off-by: Jason J. Herne <jjherne@xxxxxxxxxxxxxxxxxx>
> Reviewed-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
> ---
>  arch/s390/kvm/sigp.c             | 36 +++++++++++++++++-------------------
>  arch/s390/tools/gen_facilities.c |  1 +
>  2 files changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/s390/kvm/sigp.c b/arch/s390/kvm/sigp.c
> index 1a252f5..11d3845 100644
> --- a/arch/s390/kvm/sigp.c
> +++ b/arch/s390/kvm/sigp.c
> @@ -155,29 +155,26 @@ static int __sigp_stop_and_store_status(struct kvm_vcpu *vcpu,
>  	return rc;
>  }
>  
[...]

>  	}
> -	return rc;
> +
> +	*status_reg &= 0xffffffff00000000ULL;

s/ULL/UL/

> +
> +	/* Reject set arch order, with czam we're always in z/Arch mode. */
> +	*status_reg |= (all_stopped ? SIGP_STATUS_INVALID_PARAMETER :
> +					SIGP_STATUS_INCORRECT_STATE);
> +	return SIGP_CC_STATUS_STORED;
>  }
>  
>  static int __sigp_set_prefix(struct kvm_vcpu *vcpu, struct kvm_vcpu *dst_vcpu,
> @@ -446,7 +443,8 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu)
>  	switch (order_code) {
>  	case SIGP_SET_ARCHITECTURE:
>  		vcpu->stat.instruction_sigp_arch++;
> -		rc = __sigp_set_arch(vcpu, parameter);
> +		rc = __sigp_set_arch(vcpu, parameter,
> +				     &vcpu->run->s.regs.gprs[r1]);
>  		break;
>  	default:
>  		rc = handle_sigp_dst(vcpu, order_code, cpu_addr,
> diff --git a/arch/s390/tools/gen_facilities.c b/arch/s390/tools/gen_facilities.c
> index 025ea20..181db5b 100644
> --- a/arch/s390/tools/gen_facilities.c
> +++ b/arch/s390/tools/gen_facilities.c
> @@ -80,6 +80,7 @@ static struct facility_def facility_defs[] = {
>  			78, /* enhanced-DAT 2 */
>  			130, /* instruction-execution-protection */
>  			131, /* enhanced-SOP 2 and side-effect */
> +			138, /* configuration z/architecture mode (czam) */
>  			146, /* msa extension 8 */
>  			-1  /* END */
>  		}
> 


-- 

Thanks,

David
--
To unsubscribe from this list: send the line "unsubscribe linux-s390" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux