Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4610275pxv; Tue, 6 Jul 2021 05:15:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzllhNZsGowUPAoa6HXhMk8nbXon7GnX7c5kufiGMr/oN3FJJ67DpziFqJw0aS6OuCl17fX X-Received: by 2002:a05:6402:290c:: with SMTP id ee12mr22486398edb.161.1625573720605; Tue, 06 Jul 2021 05:15:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625573720; cv=none; d=google.com; s=arc-20160816; b=cN5NFo0tTXKE0WHGiJsWEhuNAavBvZKA3N0DB0nSvPHIHjHeAoVGog3fp0ZlK7eJIF c8sc0DGPsVl3mi+wl5TaWpkQEGwNTOYKMhI1VMc05ntXXA3qNx0yO4vWUfWBt2UUcInp KTpdPfxm2zFtsLMQTKPxkb1Dam52NLLEZhF+mdNiLuQSH1dP7S0SwLVAfsO+FOMe0E34 szuhvoGJUfDMm02lrXBg3aPn2fsKcMOnoQAQDMr+8GqmigRuH3PnZR9/m0l3XhC1ihj8 M2wS9+rKSWeglQPIQZO+Di3HGJOVbeInmdAjA9La8Ayd/P0ajj0SG05pU+ljsUxOLnYD zpQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:organization :from:references:cc:to:subject:dkim-signature; bh=ekaSBwRSsDtmUBzMzvteWh+vl9RVfK9dJAN2VWd9G3M=; b=FJEl9pECr6Q1T8BCIBR+49GMhG1/RSHgA16/ID8pTLKcOuMFGngIpSRc6tUcHH0nDx 4Xnnn3cfGRLdPx0IzM1Wh6noxHFM7PK0haOPj1EezVS8yK6voCDTyJVHWhrxUPDfSpU+ xb5kzpRTG4r1PpqcUilC2oaRLP/Xy4XG+HUBmKLZS2dYcRudARKX7RCwJEubfKApfRHA svAlkC4SicIkjoQTecua9M3aHa5EjPoKKhbrCCvS92zDxZKxX6aJjAhOCuKIGTGTh/rE A0Ox6/ZvMTnzW+yPY+5uS+yMU6Kl6rvOfGCurmg/aL2/Bdq6R98sJUplbvb77ose2l1F kang== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="Ze/bpwBc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k9si15982023edv.565.2021.07.06.05.14.57; Tue, 06 Jul 2021 05:15:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="Ze/bpwBc"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243964AbhGFMKT (ORCPT + 99 others); Tue, 6 Jul 2021 08:10:19 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:51461 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231548AbhGFL6A (ORCPT ); Tue, 6 Jul 2021 07:58:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1625572521; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ekaSBwRSsDtmUBzMzvteWh+vl9RVfK9dJAN2VWd9G3M=; b=Ze/bpwBcr10LHD8okdaKe99FOYHFrcoVKTP3ogZKT+jMUf5peiBcloldftZc13PVgzTKG4 qTmpa++mbAM1MoUP3tNOiFwFSm1JcZw9z6mICz0NDg6ZOKPFeYc0vEZm5DYbQwsFIV+mLl 7fbiNuYo5pEwBWgQ6r/tuzUeGU+pXak= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-299-ZbPvQcVfPqWA3Q9biudUjg-1; Tue, 06 Jul 2021 07:55:20 -0400 X-MC-Unique: ZbPvQcVfPqWA3Q9biudUjg-1 Received: by mail-wr1-f71.google.com with SMTP id g4-20020a5d64e40000b029013398ce8904so2407833wri.16 for ; Tue, 06 Jul 2021 04:55:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=ekaSBwRSsDtmUBzMzvteWh+vl9RVfK9dJAN2VWd9G3M=; b=N/oxh0FLKIlbqzpn0SROW2yYwThzE40tqqMGofOUeYt+mErA7e/nv2tUOGbalc78Gl OltQ8dWP6qRU4YnH9YAVydCA8oAeZMe3X266oXzkeehy0DYfMRTSXj+bLbikGlJ3OhnL SWxw11gJ56QhxzKWiF1nNLYFauvZjaesH6jwZh1JoBgphcZWNd7wJPsjQiK6eokfF8s6 WQaA9oMLHvGYBs7iIXbDtUijMHODgFVF8ahGppPQIrpOIeOOWONyP0GiEIfiuo73M6Bo wiI4DS0MEzjHUuj0GcM/YVZgzJpBIIQ4WokmQeNlPnpXMxGsRgckGC+wj3WW79cdI8Jd Vf5Q== X-Gm-Message-State: AOAM530GZQY2VlHJXwxrIh8Pio2Oiqldul9YbFa55gCkleReJsVM3z58 pkPEiyVh3RSpLG3vm3VL9xir9yfMbpt+iUB+9+Q+GUx9oUGzv1nCozzy1eKzhgi+7QSzaLgJH7c VzB56UeSOUI0QfRIZTrF6XuCHKSQP8LrUralIi89EJd7zz/cLiylMRBstTcv1ZITIrZ2IKqqG X-Received: by 2002:a1c:7510:: with SMTP id o16mr190052wmc.137.1625572518872; Tue, 06 Jul 2021 04:55:18 -0700 (PDT) X-Received: by 2002:a1c:7510:: with SMTP id o16mr190029wmc.137.1625572518636; Tue, 06 Jul 2021 04:55:18 -0700 (PDT) Received: from ?IPv6:2003:d8:2f0a:7f00:fad7:3bc9:69d:31f? (p200300d82f0a7f00fad73bc9069d031f.dip0.t-ipconnect.de. [2003:d8:2f0a:7f00:fad7:3bc9:69d:31f]) by smtp.gmail.com with ESMTPSA id i12sm1689249wrp.57.2021.07.06.04.55.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 06 Jul 2021 04:55:18 -0700 (PDT) Subject: Re: [PATCH] KVM: s390: Enable specification exception interpretation To: Janis Schoetterl-Glausch , Christian Borntraeger , Janosch Frank , Heiko Carstens , Vasily Gorbik Cc: Cornelia Huck , Claudio Imbrenda , "open list:KERNEL VIRTUAL MACHINE for s390 (KVM/s390)" , "open list:S390" , open list References: <20210706114714.3936825-1-scgl@linux.ibm.com> From: David Hildenbrand Organization: Red Hat Message-ID: <967b92c6-e7ab-2a58-57e6-2945b7ceb94e@redhat.com> Date: Tue, 6 Jul 2021 13:55:17 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210706114714.3936825-1-scgl@linux.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06.07.21 13:47, Janis Schoetterl-Glausch wrote: > When this feature is enabled the hardware is free to interpret > specification exceptions generated by the guest, instead of causing > program interruption interceptions. > > This benefits (test) programs that generate a lot of specification > exceptions (roughly 4x increase in exceptions/sec). > > Interceptions will occur as before if ICTL_PINT is set, > i.e. if guest debug is enabled. > > Signed-off-by: Janis Schoetterl-Glausch > --- > I'll additionally send kvm-unit-tests for testing this feature. > > arch/s390/include/asm/kvm_host.h | 1 + > arch/s390/kvm/kvm-s390.c | 2 ++ > arch/s390/kvm/vsie.c | 2 ++ > 3 files changed, 5 insertions(+) > > diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h > index 9b4473f76e56..3a5b5084cdbe 100644 > --- a/arch/s390/include/asm/kvm_host.h > +++ b/arch/s390/include/asm/kvm_host.h > @@ -244,6 +244,7 @@ struct kvm_s390_sie_block { > __u8 fpf; /* 0x0060 */ > #define ECB_GS 0x40 > #define ECB_TE 0x10 > +#define ECB_SPECI 0x08 > #define ECB_SRSI 0x04 > #define ECB_HOSTPROTINT 0x02 > __u8 ecb; /* 0x0061 */ > diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c > index b655a7d82bf0..aadd589a3755 100644 > --- a/arch/s390/kvm/kvm-s390.c > +++ b/arch/s390/kvm/kvm-s390.c > @@ -3200,6 +3200,8 @@ static int kvm_s390_vcpu_setup(struct kvm_vcpu *vcpu) > vcpu->arch.sie_block->ecb |= ECB_SRSI; > if (test_kvm_facility(vcpu->kvm, 73)) > vcpu->arch.sie_block->ecb |= ECB_TE; > + if (!kvm_is_ucontrol(vcpu->kvm)) > + vcpu->arch.sie_block->ecb |= ECB_SPECI; > > if (test_kvm_facility(vcpu->kvm, 8) && vcpu->kvm->arch.use_pfmfi) > vcpu->arch.sie_block->ecb2 |= ECB2_PFMFI; > diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > index 4002a24bc43a..acda4b6fc851 100644 > --- a/arch/s390/kvm/vsie.c > +++ b/arch/s390/kvm/vsie.c > @@ -510,6 +510,8 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) > prefix_unmapped(vsie_page); > scb_s->ecb |= ECB_TE; > } > + /* specification exception interpretation */ > + scb_s->ecb |= scb_o->ecb & ECB_SPECI; > /* branch prediction */ > if (test_kvm_facility(vcpu->kvm, 82)) > scb_s->fpf |= scb_o->fpf & FPF_BPBC; > I assume this is a new CPU feature, right? If so a) How can we check whether we can actually safely enable it. (which facility do we have to check) b) Do we have to handle vSIE? Do we have to indicate a CPU feature that unlocks this feature? -- Thanks, David / dhildenb