Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp836130ybv; Thu, 20 Feb 2020 08:08:45 -0800 (PST) X-Google-Smtp-Source: APXvYqzopD3PUk5A2RMMfHrID9b8JOnWplnZ+wXFovOjyvxs/gTTt5KF0TYH5/9lS7PLTsgquW1o X-Received: by 2002:a9d:7083:: with SMTP id l3mr23045503otj.193.1582214924897; Thu, 20 Feb 2020 08:08:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582214924; cv=none; d=google.com; s=arc-20160816; b=DzlLcXg4PMjdN6BdkkvOvS2BCICg+2xxwqbj4pSByQ5MSKa+j0K1fv6e61hGI933lf CcHF7oaMFGiKF7i90OPQqkA/wnMlZzw4RY13/Na+pliI9s9itPW87col9VsZC54g1qjT bPcDtZljsjIZj2ikL4B58Unuc+0DTKAnIy8MeEFeahC79zy8BcuGNCO+p0snkALlYM8u mlKlzjyFFUr7Z+r7JX8AH/VG8lh0ISzpb/VsPqSpC0kuQGqkHl0eyJTcBg6H73gCLyme 7sbtuRN3fub6YY2gc3q5fBfrs9v1TRY+pNZk/72wllPLOGWc5FnvG/U3j7eAskxqFyY6 2JNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from; bh=wBkiGlK1hEiqN5OlU/G20tFIdAedR+zi6FRZ67VDwm8=; b=pGJi8vUT12EQDCzt6/ruPDgBpGVqeAM9dFl4Nma3hLhAZo9dH5xvxBko1tADpO7AJh +pgp3347OhiPQ+AowujZePwMi7XZNnVymsfhDDyTkEMIHatKjLa3EP9rLk6RJjOJmZux w09CgO81v8iFUm8pJLtljX3Wc7XUzLW1uKd6hWZ1xeoIx7aE90AD8s31z0Ah79gmWl5P tLnbuEZCoim45Mn+eopzuFjBqT3J37YxwcO4+cnKD/DOgvE9Y2H5rVAa7zDIMMivuJh1 X6BSjClMlxS6OUyY6LR0jsS3UgrbjRr6+/kQQd0QjjRoz8h3wF/K+ZAu0DUAJN/fCMHq F+2g== 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 v23si1771692oto.81.2020.02.20.08.08.31; Thu, 20 Feb 2020 08:08:44 -0800 (PST) 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 S1728634AbgBTQGs (ORCPT + 99 others); Thu, 20 Feb 2020 11:06:48 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:13266 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728585AbgBTQGr (ORCPT ); Thu, 20 Feb 2020 11:06:47 -0500 Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 01KG3lgI020667 for ; Thu, 20 Feb 2020 11:06:46 -0500 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 2y8ubxd47k-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 20 Feb 2020 11:06:46 -0500 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 20 Feb 2020 16:06:44 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 20 Feb 2020 16:06:39 -0000 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 01KG6c9347644754 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 20 Feb 2020 16:06:38 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6A21CAE04D; Thu, 20 Feb 2020 16:06:38 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD1F8AE053; Thu, 20 Feb 2020 16:06:37 +0000 (GMT) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Thu, 20 Feb 2020 16:06:37 +0000 (GMT) From: Halil Pasic To: "Michael S. Tsirkin" , Jason Wang , Marek Szyprowski , Robin Murphy , Christoph Hellwig Cc: Halil Pasic , linux-s390@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, Christian Borntraeger , Janosch Frank , Viktor Mihajlovski , Cornelia Huck , Ram Pai , Thiago Jung Bauermann , David Gibson , "Lendacky, Thomas" , Michael Mueller Subject: [PATCH 2/2] virtio: let virtio use DMA API when guest RAM is protected Date: Thu, 20 Feb 2020 17:06:06 +0100 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200220160606.53156-1-pasic@linux.ibm.com> References: <20200220160606.53156-1-pasic@linux.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 20022016-0008-0000-0000-00000354D0D9 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 20022016-0009-0000-0000-00004A75E158 Message-Id: <20200220160606.53156-3-pasic@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.572 definitions=2020-02-20_04:2020-02-19,2020-02-20 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 lowpriorityscore=0 phishscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2001150001 definitions=main-2002200118 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the advanced guest memory protection technologies (AMD SEV, powerpc secure guest technology and s390 Protected VMs) abuse the VIRTIO_F_IOMMU_PLATFORM flag to make virtio core use the DMA API, which is in turn necessary, to make IO work with guest memory protection. But VIRTIO_F_IOMMU_PLATFORM a.k.a. VIRTIO_F_ACCESS_PLATFORM is really a different beast: with virtio devices whose implementation runs on an SMP CPU we are still fine with doing all the usual optimizations, it is just that we need to make sure that the memory protection mechanism does not get in the way. The VIRTIO_F_ACCESS_PLATFORM mandates more work on the side of the guest (and possibly he host side as well) than we actually need. An additional benefit of teaching the guest to make the right decision (and use DMA API) on it's own is: removing the need, to mandate special VM configuration for guests that may run with protection. This is especially interesting for s390 as VIRTIO_F_IOMMU_PLATFORM pushes all the virtio control structures into the first 2G of guest memory: something we don't necessarily want to do per-default. Signed-off-by: Halil Pasic Tested-by: Ram Pai Tested-by: Michael Mueller --- drivers/virtio/virtio_ring.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 867c7ebd3f10..fafc8f924955 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -243,6 +243,9 @@ static bool vring_use_dma_api(struct virtio_device *vdev) if (!virtio_has_iommu_quirk(vdev)) return true; + if (force_dma_unencrypted(&vdev->dev)) + return true; + /* Otherwise, we are left to guess. */ /* * In theory, it's possible to have a buggy QEMU-supposed -- 2.17.1