Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp464531pxb; Wed, 18 Aug 2021 06:32:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxhcTqUHyxu84mKkac7wrJwwSgET2JaeFLCWgCYz6UMwfXypz7/eEhvfMbF7QYO0KCg6w1R X-Received: by 2002:a05:6402:1908:: with SMTP id e8mr10240973edz.283.1629293561348; Wed, 18 Aug 2021 06:32:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629293561; cv=none; d=google.com; s=arc-20160816; b=BirMv6oEBO4ir4TbNDTx+rKtdOew5spHZMzBEhXjatbvwKBbniAixSANSKjffdxvja kRLRYFFbDSMJSTaQAP4eZ5oTi38jTPj9j1kI3rHESt3qw1lBAv+UgoG0+AlI569jLwp9 oInXq4oGyhE+OdAdmatk6sfSvJkoefACkrUMzulyojayWo4GzkH1qsTRYDJ2gD5HW+AB 6bI39rp6N3yRCnKTxmDsIj5n1jmp4tLwAX93ZnMuh9LxgrGmsGBdHE0PufqLjBM6JXxb 9TbWaqHUjheoFv5w73j/ha0DQyhdkXG+GmZM/h5uZEHQqFCLpYjPdYdZeJMv76vjvKuU UJCg== 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=bLN7wlEN7OAEA+iCFVqMEJ2dhP7gA+zizO6j6AfuPIE=; b=CU/wIiYpnvEUcN9SV6VEvVlh9qR9eEnoFfIpymFzN0a7bcp9XvEIf71ZSlcnG+2TL6 b4SOkPu7IS3jv9oYsg2Q+Uv2Qf4vqSeI3YnrI8BC2qajg8lfYuF3pso4hBeObEsgKcAM 6F8c2WyPB8AOXGH3B80vMBUswxmv7DMRII0zcMzSgWBqdvdoiEH7NlKoS6k4fdvHWtZ1 FqihQerntVBX4qkmgL4QI0QnTcicLCnuc3vssuD1n1dJx4H4Pm2aQSWMIm9qyTsdPaj5 b4qMGXzkLHs6Ffm2CPQUcSHxGXgyZENwW23+g1t0/dno9dtD7F6w9kdmfPKC/XMtflPt kqGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=rBP7ua3w; 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=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ca23si6091088edb.455.2021.08.18.06.32.16; Wed, 18 Aug 2021 06:32:41 -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=@ibm.com header.s=pp1 header.b=rBP7ua3w; 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=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237931AbhHRN2S (ORCPT + 99 others); Wed, 18 Aug 2021 09:28:18 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:15122 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237255AbhHRN1K (ORCPT ); Wed, 18 Aug 2021 09:27:10 -0400 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 17ID3wPd133203; Wed, 18 Aug 2021 09:26:36 -0400 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=bLN7wlEN7OAEA+iCFVqMEJ2dhP7gA+zizO6j6AfuPIE=; b=rBP7ua3wMG63RgfrkVT5YRKkBrJEt2sVUmVcNUDU9l8WO6XqK6vBGC0DUCUWSN/QFPgO etZBjuaJaPMNG7YjYJGK9QR5P+bvT3ri1XrGvzD6bhUGE7HeUrB2cZJsxm03/uwP+RTa GAxRZ5UC0QjWhL/yMGi1vplfDdpdBzr1r3dly5YcJfS8DSnqM66VqSvHR8hkHfKtJKCL NYzKfDS0l407hLSbivtB3mPYc45HWs4MVoKMTnVTJ0oR8UGNxF1D2idM1DK2lI0GpFnz ex3Gp6datQ3ERIi2rIAV9PZ4FqFORy5b4NHaN/l3+SHUIbWFK3Z2erbLxRX6hbWArwY/ 5A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 3agc2gphnf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 09:26:35 -0400 Received: from m0098393.ppops.net (m0098393.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.43/8.16.0.43) with SMTP id 17IDEGVf024455; Wed, 18 Aug 2021 09:26:35 -0400 Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 3agc2gphku-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 09:26:35 -0400 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 17IDE9o6022987; Wed, 18 Aug 2021 13:26:32 GMT Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by ppma03ams.nl.ibm.com with ESMTP id 3ae5f8enbx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Aug 2021 13:26:32 +0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 17IDQSgT52363666 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Aug 2021 13:26:28 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7170B4C059; Wed, 18 Aug 2021 13:26:28 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E1AE04C064; Wed, 18 Aug 2021 13:26:27 +0000 (GMT) Received: from p-imbrenda.bredband2.com (unknown [9.145.14.177]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Wed, 18 Aug 2021 13:26:27 +0000 (GMT) From: Claudio Imbrenda To: kvm@vger.kernel.org Cc: cohuck@redhat.com, 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, Ulrich.Weigand@de.ibm.com Subject: [PATCH v4 11/14] KVM: s390: pv: add export before import Date: Wed, 18 Aug 2021 15:26:17 +0200 Message-Id: <20210818132620.46770-12-imbrenda@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210818132620.46770-1-imbrenda@linux.ibm.com> References: <20210818132620.46770-1-imbrenda@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: C9bX-yKubwh7u2PetiEVlRm7cCuFDHVL X-Proofpoint-GUID: eu9pFRx2Prh3PdmlMWDxxipd_eQPYwKo X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.391,18.0.790 definitions=2021-08-18_04:2021-08-17,2021-08-18 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 mlxscore=0 mlxlogscore=999 clxscore=1015 lowpriorityscore=0 bulkscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108180082 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 89ba36a5b4bb..bc79085d7152 100644 --- a/arch/s390/kernel/uv.c +++ b/arch/s390/kernel/uv.c @@ -249,6 +249,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.is_protected) > 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 @@ -292,6 +298,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.31.1