Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp3599847pxb; Fri, 4 Feb 2022 12:04:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJzUcWJd1dShV6GgDXRptv5xhXdWBSZFiFRSS8ER7qfzwd/Ir5cOziQKz1sUN7r30AK2WCLZ X-Received: by 2002:a17:907:3f29:: with SMTP id hq41mr476497ejc.360.1644005053372; Fri, 04 Feb 2022 12:04:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644005053; cv=none; d=google.com; s=arc-20160816; b=WEUIjOo3CLtjolMGVbniEV85yOoOQzsswueLuykQGex8MlfOaNvw0xIjutYlZ4SiUj BCWONG3zjKp7vQMITbsnLhM9ANQdQbZFDcUv2HYYHd3TatPHX3lSjKKnPqB5CD26J7B3 NPo4aNmfQ8qsasBPgQF+xOCDuFs15HFS5xlxk/Zvhxth89DfoLVCjBJhMim0j8X+BODf WT6jjCyzSDrqAXqcu2ofnj5qVNJV3z3R/oF6ahPleaLzB/tKZDUQSs/6V0ktciovY6Cp 7UPg9I2Vq15rNB/jvqcOxJquHfVqtaGuQDPw/XtHuznZ0Y/mNshLzrQ2KXNbH3iQl/uz x5PQ== 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=lagUF/hPFWZEQhSlZcnZFa4GuKJdxTR/1fBbKvob8I4=; b=E5ZMCT6n7tYiXZIK2FxpZcO0HGs4/5f1oU6kxjs3EB1ciUhwA5EFyb4T4uiPrQzggq mXm3Mu2oKg1WsaSXIyIOoxfJ/L7uIQciC3e2KzP9bHCYzhBihc0yGLyhONyFCkuXCAbi 8SmQ+NmDAHnDieKO3NY/sbRVGdc4qphR4306JaLu0WFiDx00H8SveXsMb3fJ2zbBm9lk R28QQH/jn/v5ulQaHuF7H4bm2XAWbxOHJxBNpmU/+0fHVQ7DLATBYPN99WGPyrpyO8x3 Hf3/oRAwnh9cjw47jAjRh7chNAL1f6zAZhicnfbMcbNwck3KhhRtGgUz02hwcmNO3Akn Gyig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=lPk0VhbX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dd19si2109543ejc.732.2022.02.04.12.03.43; Fri, 04 Feb 2022 12:04:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=lPk0VhbX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376518AbiBDPys (ORCPT + 99 others); Fri, 4 Feb 2022 10:54:48 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:61566 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1376325AbiBDPyF (ORCPT ); Fri, 4 Feb 2022 10:54:05 -0500 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 214ES2b7023912; Fri, 4 Feb 2022 15:54:04 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=lagUF/hPFWZEQhSlZcnZFa4GuKJdxTR/1fBbKvob8I4=; b=lPk0VhbXTO+mjmLWSbDB+SoLyQlHOTsRYuecNKmmbGey0PCGvYD83qb8wD4GpDp/5DIR LldmKWgksUGhA50F3hSmJFGWS+I423yUeARVstJ95nXouqVbrlwrj/z9o2o+2Pl0vhbE +r8tTXSDZ/do8gUXqcYLAx6b0cZIEvbJuvAh4DhWvY4DF67T9+lxgrSWGg+vSwccAZrb A8kkuArL9oCsTdY9VZMC9eVXv3cCOsMPyIBRdi583DGL4awstWuEtqqgw0KxkSrWbU2x n7PR4KhGQw6hfMMIc9RUCqlCfsNvFCH/nvmW70hA/kxcKW3goyTl3+PUETqIjx3X/cIc NA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com with ESMTP id 3e0qxg0x1m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 04 Feb 2022 15:54:04 +0000 Received: from m0098416.ppops.net (m0098416.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 214Fs3nw022558; Fri, 4 Feb 2022 15:54:03 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0b-001b2d01.pphosted.com with ESMTP id 3e0qxg0x0y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 04 Feb 2022 15:54:03 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 214Fn7bg005898; Fri, 4 Feb 2022 15:54:01 GMT Received: from b06cxnps4074.portsmouth.uk.ibm.com (d06relay11.portsmouth.uk.ibm.com [9.149.109.196]) by ppma03ams.nl.ibm.com with ESMTP id 3e0r0spacp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 04 Feb 2022 15:54:01 +0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 214Frsa033554796 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 4 Feb 2022 15:53:54 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 46D97AE053; Fri, 4 Feb 2022 15:53:54 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B7EEFAE059; Fri, 4 Feb 2022 15:53:53 +0000 (GMT) Received: from p-imbrenda.bredband2.com (unknown [9.145.8.50]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Fri, 4 Feb 2022 15:53:53 +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 Subject: [PATCH v7 06/17] KVM: s390: pv: add export before import Date: Fri, 4 Feb 2022 16:53:38 +0100 Message-Id: <20220204155349.63238-7-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220204155349.63238-1-imbrenda@linux.ibm.com> References: <20220204155349.63238-1-imbrenda@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: DZ6YT4EeKFbkMf0hZRxj_su6o0GnDV6Z X-Proofpoint-ORIG-GUID: yxuKPiLai0SF194Od4fICWPvJqwjvFO1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-04_07,2022-02-03_01,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 mlxlogscore=999 clxscore=1015 lowpriorityscore=0 adultscore=0 mlxscore=0 spamscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202040088 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Due to upcoming changes, it will be possible to temporarily have multiple protected VMs in the same address space, although only one will be actually active. In that scenario, it is necessary to perform an export of every page that is to be imported, since the hardware does not allow a page belonging to a protected guest to be imported into a different protected guest. This also applies to pages that are shared, and thus accessible by the host. Signed-off-by: Claudio Imbrenda Reviewed-by: Janosch Frank --- arch/s390/kernel/uv.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c index 2754471cc789..e358b8bd864b 100644 --- a/arch/s390/kernel/uv.c +++ b/arch/s390/kernel/uv.c @@ -234,6 +234,12 @@ static int make_secure_pte(pte_t *ptep, unsigned long addr, return uvcb->rc == 0x10a ? -ENXIO : -EINVAL; } +static bool should_export_before_import(struct uv_cb_header *uvcb, struct mm_struct *mm) +{ + return uvcb->cmd != UVC_CMD_UNPIN_PAGE_SHARED && + atomic_read(&mm->context.protected_count) > 1; +} + /* * Requests the Ultravisor to make a page accessible to a guest. * If it's brought in the first time, it will be cleared. If @@ -277,6 +283,8 @@ int gmap_make_secure(struct gmap *gmap, unsigned long gaddr, void *uvcb) lock_page(page); ptep = get_locked_pte(gmap->mm, uaddr, &ptelock); + if (should_export_before_import(uvcb, gmap->mm)) + uv_convert_from_secure(page_to_phys(page)); rc = make_secure_pte(ptep, uaddr, page, uvcb); pte_unmap_unlock(ptep, ptelock); unlock_page(page); -- 2.34.1