Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1835127imm; Thu, 23 Aug 2018 09:30:29 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxeJY6kkwXhLnFrrTXiqes/l7/evGiHo+bLpIMbgw99J2QAh0Xl0yyuSDPWoF1yHWMK7c/K X-Received: by 2002:a17:902:b193:: with SMTP id s19-v6mr23401702plr.217.1535041829518; Thu, 23 Aug 2018 09:30:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535041829; cv=none; d=google.com; s=arc-20160816; b=h8U3A3wlxJoHx/YZFzlFJfNE+0l8LRuO/8b9r1V8kOabPqIUflHGBuCyt+Tnk1z77j 69SaAnGC+UP8JJ6TnnEL4bI+Xpzv09zh85XHhpz9RjFseSUJZ4DGvV+yfy7b6wIf2n+b OAPGCPBiX6mrUIP501vyODNmbblaOBA0ni7fYCdD6CfIgAhaBLaT5JGUhEytWkTV/iMO FniICepGDJxqyPp/2w473J+o2+V4ZedAgUf4QgW7sZaAw4X1tMNPCF9rr8xDCOHTThTh kqG8R3g1oWRdN78SkinRBvNzgE+cuxS95yUJekbr2mZ2V7X8BLFmytWJEN5RJDxKQpHo do9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:message-id :content-language:in-reply-to:mime-version:user-agent:date:autocrypt :openpgp:from:references:cc:to:subject:arc-authentication-results; bh=VEobwR+fWrGSL7sBNWiDwu0IjM9WSXnZK2HDppumK7k=; b=f8BKQDcxFAzjkXTqti1SM2XXNHrG+Le6oBLYMCc4+MJCaWaIJYUrFda4LinJWNO7GX gqZmJ7NfN7yhQ4N55ozoMEo56UBYsDgWNyH8xqw7a3dssM3dh6PW45pCNMc7VCtfyeFc KEo76ow3mt2wVddsWGdrCFxqS/k/SBCYveMC9S6RMVkgfp3Y1GvScUVicRMXjgk+QnMo gkjB7OTc1PTfJ7K6t3pgUIcV442TibwrhOE+Q6oKUOSACmmNDwngswlNKjPgY1lj0C3E 6K254AFmx54BwQ1FH/uJqe3KnO5TeUR/gS4O3O9xCW1QPSrZSQ5WxvBzY0khf0yFss/z N6/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b62-v6si4797614pgc.491.2018.08.23.09.30.13; Thu, 23 Aug 2018 09:30:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728204AbeHWTN7 (ORCPT + 99 others); Thu, 23 Aug 2018 15:13:59 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:51494 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727128AbeHWTN7 (ORCPT ); Thu, 23 Aug 2018 15:13:59 -0400 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w7NFUXlT035086 for ; Thu, 23 Aug 2018 11:43:46 -0400 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0b-001b2d01.pphosted.com with ESMTP id 2m1xyyabu0-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 23 Aug 2018 11:43:46 -0400 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 23 Aug 2018 16:43:45 +0100 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 23 Aug 2018 16:43:42 +0100 Received: from d06av25.portsmouth.uk.ibm.com (d06av25.portsmouth.uk.ibm.com [9.149.105.61]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w7NFhfZd35127360 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 23 Aug 2018 15:43:41 GMT Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 77EC511C04C; Thu, 23 Aug 2018 18:43:40 +0100 (BST) Received: from d06av25.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 167D611C050; Thu, 23 Aug 2018 18:43:40 +0100 (BST) Received: from oc7330422307.ibm.com (unknown [9.152.224.87]) by d06av25.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 23 Aug 2018 18:43:39 +0100 (BST) Subject: Re: [PATCH v1] KVM: s390: store DXC/VXC in fpc on DATA/Vector-processing exceptions To: David Hildenbrand , linux-kernel@vger.kernel.org Cc: linux-s390@vger.kernel.org, Heiko Carstens , Martin Schwidefsky , Cornelia Huck , Janosch Frank , Hendrik Brueckner References: <20180822095310.29145-1-david@redhat.com> From: Christian Borntraeger Openpgp: preference=signencrypt Autocrypt: addr=borntraeger@de.ibm.com; prefer-encrypt=mutual; keydata= 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 syiRa+UVlsKmx1hsEg== Date: Thu, 23 Aug 2018 17:43:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20180822095310.29145-1-david@redhat.com> Content-Language: en-US X-TM-AS-GCONF: 00 x-cbid: 18082315-0020-0000-0000-000002BAC62E X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18082315-0021-0000-0000-000021082307 Message-Id: <7c7e52aa-7b07-d146-ac4e-2b1afea6a83d@de.ibm.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-08-23_07:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1808230162 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/22/2018 11:53 AM, David Hildenbrand wrote: > When DATA exceptions and vector-processing exceptions (program interrupts) > are injected, the DXC/VXC is also to be stored in the fpc, if AFP is > enabled in CR0. > > This can happen inside KVM when reinjecting an interrupt during program > interrupt intercepts. These are triggered for example when debugging the > guest (concurrent PER events result in an intercept instead of an > injection of such interrupts). > > Signed-off-by: David Hildenbrand > --- > > Only compile-tested. I checked the Linux code (arch/s390/kernel/traps.c) and Linux uses the FPC (and not the lowcore field) to decide about the signal (SIGFPE) and si_code. So we want to have the correct DXC/VXC value. Now, I wrote a short test program that does feenableexcept(FE_DIVBYZERO); and a division by zero. and attached gdb to that guest together with a breakpoint on the divide (and the instruction after). I get the pint exit for the instruction after (as it is suppressing) and at this point in time the guest fpc already contains the correct DXC value. So you patch will certainly not hurt, but it seems not necessary. Still trying to look further if I missed something. > > arch/s390/include/asm/ctl_reg.h | 1 + > arch/s390/kvm/interrupt.c | 8 ++++++++ > 2 files changed, 9 insertions(+) > > diff --git a/arch/s390/include/asm/ctl_reg.h b/arch/s390/include/asm/ctl_reg.h > index 4600453536c2..88f3f14baee9 100644 > --- a/arch/s390/include/asm/ctl_reg.h > +++ b/arch/s390/include/asm/ctl_reg.h > @@ -11,6 +11,7 @@ > #include > > #define CR0_CLOCK_COMPARATOR_SIGN _BITUL(63 - 10) > +#define CR0_AFP_REGISTER_CONTROL _BITUL(63 - 45) > #define CR0_EMERGENCY_SIGNAL_SUBMASK _BITUL(63 - 49) > #define CR0_EXTERNAL_CALL_SUBMASK _BITUL(63 - 50) > #define CR0_CLOCK_COMPARATOR_SUBMASK _BITUL(63 - 52) > diff --git a/arch/s390/kvm/interrupt.c b/arch/s390/kvm/interrupt.c > index fcb55b02990e..5b5754d8f460 100644 > --- a/arch/s390/kvm/interrupt.c > +++ b/arch/s390/kvm/interrupt.c > @@ -765,6 +765,14 @@ static int __must_check __deliver_prog(struct kvm_vcpu *vcpu) > break; > case PGM_VECTOR_PROCESSING: > case PGM_DATA: > + if (vcpu->arch.sie_block->gcr[0] & CR0_AFP_REGISTER_CONTROL) { > + /* make sure the new fpc will be lazily loaded */ > + save_fpu_regs(); > + /* the DXC/VXC cannot make the fpc invalid */ > + current->thread.fpu.fpc &= ~0xff00u; > + current->thread.fpu.fpc |= (pgm_info.data_exc_code << 8) > + & 0xff00u; maybe reuse FPC_DXC_MASK instead of 0xff00 ? > + } > rc = put_guest_lc(vcpu, pgm_info.data_exc_code, > (u32 *)__LC_DATA_EXC_CODE); > break; >