Received: by 2002:a5d:9c59:0:0:0:0:0 with SMTP id 25csp125527iof; Sun, 5 Jun 2022 23:07:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyi0tFRfN2QuvZGW6kHsToFY5+cXIEUI84v7D611espeVGHI8SsMG3893HwFmB9YezMqTVn X-Received: by 2002:a17:902:f682:b0:163:f4e9:5145 with SMTP id l2-20020a170902f68200b00163f4e95145mr22912662plg.63.1654495646130; Sun, 05 Jun 2022 23:07:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654495646; cv=none; d=google.com; s=arc-20160816; b=BQN+hZpnunGwPHCLUE8FVoL+gf9vVodqDjTLoth9S9VX+t1LcU6+6N+RIElRwNurVc i7vttmf+xCx6VBb3Kk9EKC3OjZrvW+58DdlXLdmcqhHQnPJcPjpvwor1zzZrOXybV0Lj UxRNI3LhG2uXc6xBtLJ73tfwnd58OguXKCqMizIJfeysEqyibI8vWw3HT0j+CVVi74uN osBniqxylF8KBUqnaUWZp/83prWVE5Iv6ywoOL04EKHZ2NVzWpOFj9MXcIlZxir9j6uG Ac6FBEi7n3YzsrDZWyPADtJC+RQ70VwxHUMejU2gi7VFbA3ivwixOsSNmusAfzpHWiU8 yN6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=B76ii6aGW9eLNBNEMMOE6K6NRx7mIr3K+oSU22gMg14=; b=UfB0ZeIRqi++W0n4nZKOAjy+piQ4UmStlFhn2vZk498v35qx3+sBE1Nf5YlVAH6XAh 1OXT01woeJ7VgTiKz3qTKl8D+bf/Ea6yzAPT9H4qM+ogTIGsBaDegpdQ55HwEjYLtMT7 5I7Yommj/THbTWXrlRkxpg64K3Zx0gUSl1BKtHXY+27ntvm760Q7vJEua8hvTNGTGIMG 40XQCAilmQY48THc0SAaVVa1xSCHscQCd4VaZkJb09oK9xr7VmzfeRZIWlH56lW/nwWQ IJa8k6sRfnNA10PRXFfgNM2NVv4ERGWiAfyQjTQItWWLk8c6h6q2i8K8tsdcEgtvX65q 48pA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=WQS2cPWR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id q3-20020a170902dac300b00163fc66aa07si22492733plx.9.2022.06.05.23.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jun 2022 23:07:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=WQS2cPWR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 8AC5C15240F; Sun, 5 Jun 2022 21:57:03 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241914AbiFCG5U (ORCPT + 99 others); Fri, 3 Jun 2022 02:57:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33504 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241769AbiFCG5D (ORCPT ); Fri, 3 Jun 2022 02:57:03 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4804F36; Thu, 2 Jun 2022 23:56:54 -0700 (PDT) Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2536hlGw031177; Fri, 3 Jun 2022 06:56:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=B76ii6aGW9eLNBNEMMOE6K6NRx7mIr3K+oSU22gMg14=; b=WQS2cPWRULH0Ur4dSh9pR7YslD1YnkNdIg7vDg5OHASGcGUoCqVsOBEu1B8xSg1e9/SB Yc9fD9otcsLT7sNsmr3MO/a6409ChvBXbxWgd4PofmeiHBAEgVXfd8Un9YO8vAfWZHcF 9+/xiyeczjiZmxh6oJzHOky9c3VcHpLx0f36AHy8Zw7k+/dX0p4EISQrGk2VSttZq7LV 63tE5qBItdtVApcCt96LgrnEFepsgoBsO9BcEkIQfk2NeNg02bIBKJSIDH72yISWnVQK FP8OYQwmXB52Ubn4pBeHgawkn2MHCMlTVtZ0W8js6cK096QqtM0kGDwNm3n4gfX319EL IQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gfd9r85rb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 Jun 2022 06:56:53 +0000 Received: from m0098393.ppops.net (m0098393.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 2536kDxx009902; Fri, 3 Jun 2022 06:56:53 GMT Received: from ppma02fra.de.ibm.com (47.49.7a9f.ip4.static.sl-reverse.com [159.122.73.71]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gfd9r85qp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 Jun 2022 06:56:53 +0000 Received: from pps.filterd (ppma02fra.de.ibm.com [127.0.0.1]) by ppma02fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 2536pKca027181; Fri, 3 Jun 2022 06:56:50 GMT Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by ppma02fra.de.ibm.com with ESMTP id 3gbcc6e3wh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 03 Jun 2022 06:56:50 +0000 Received: from d06av24.portsmouth.uk.ibm.com (mk.ibm.com [9.149.105.60]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 2536ulHo22282500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 3 Jun 2022 06:56:47 GMT Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7E9A14203F; Fri, 3 Jun 2022 06:56:47 +0000 (GMT) Received: from d06av24.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B58642042; Fri, 3 Jun 2022 06:56:47 +0000 (GMT) Received: from p-imbrenda.boeblingen.de.ibm.com (unknown [9.152.224.40]) by d06av24.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 3 Jun 2022 06:56:47 +0000 (GMT) From: Claudio Imbrenda To: kvm@vger.kernel.org Cc: borntraeger@de.ibm.com, frankja@linux.ibm.com, thuth@redhat.com, pasic@linux.ibm.com, david@redhat.com, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, scgl@linux.ibm.com, mimu@linux.ibm.com, nrb@linux.ibm.com Subject: [PATCH v11 03/19] KVM: s390: pv: handle secure storage exceptions for normal guests Date: Fri, 3 Jun 2022 08:56:29 +0200 Message-Id: <20220603065645.10019-4-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220603065645.10019-1-imbrenda@linux.ibm.com> References: <20220603065645.10019-1-imbrenda@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: qOPRGrEGTBTXrJU88kpjD_gblkSc-GB_ X-Proofpoint-GUID: 7-ZEXGxjAF--eAykZlV6mjS-Ldj0T7s4 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-06-03_01,2022-06-02_01,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 mlxlogscore=497 priorityscore=1501 impostorscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 phishscore=0 spamscore=0 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2206030027 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With upcoming patches, normal guests might touch secure pages. This patch extends the existing exception handler to convert the pages to non secure also when the exception is triggered by a normal guest. This can happen for example when a secure guest reboots; the first stage of a secure guest is non secure, and in general a secure guest can reboot into non-secure mode. If the secure memory of the previous boot has not been cleared up completely yet (which will be allowed to happen in an upcoming patch), a non-secure guest might touch secure memory, which will need to be handled properly. This means that gmap faults must be handled and not cause termination of the process. The handling is the same as userspace accesses, it's enough to translate the gmap address to a user address and then let the normal user fault code handle it. Signed-off-by: Claudio Imbrenda Reviewed-by: Janosch Frank --- arch/s390/mm/fault.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index af1ac49168fb..ee7871f770fb 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -754,6 +754,7 @@ void do_secure_storage_access(struct pt_regs *regs) struct vm_area_struct *vma; struct mm_struct *mm; struct page *page; + struct gmap *gmap; int rc; /* @@ -783,6 +784,17 @@ void do_secure_storage_access(struct pt_regs *regs) } switch (get_fault_type(regs)) { + case GMAP_FAULT: + mm = current->mm; + gmap = (struct gmap *)S390_lowcore.gmap; + mmap_read_lock(mm); + addr = __gmap_translate(gmap, addr); + mmap_read_unlock(mm); + if (IS_ERR_VALUE(addr)) { + do_fault_error(regs, VM_ACCESS_FLAGS, VM_FAULT_BADMAP); + break; + } + fallthrough; case USER_FAULT: mm = current->mm; mmap_read_lock(mm); @@ -811,7 +823,6 @@ void do_secure_storage_access(struct pt_regs *regs) if (rc) BUG(); break; - case GMAP_FAULT: default: do_fault_error(regs, VM_READ | VM_WRITE, VM_FAULT_BADMAP); WARN_ON_ONCE(1); -- 2.36.1