Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1370960imm; Wed, 1 Aug 2018 14:57:36 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeWwlPeiOK6Z8st+ffOdhxZhaJXKhLHGp1321LChvY6MVTuOeV1UqMX7ATxuwkS7VyOQNb5 X-Received: by 2002:a65:6411:: with SMTP id a17-v6mr91590pgv.287.1533160656207; Wed, 01 Aug 2018 14:57:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533160656; cv=none; d=google.com; s=arc-20160816; b=fFqVvPRktOFZ5/h42ZecWfejumorQ2uoRFg7LIwSsgZSNBNIC8BQCDCIEBWNcufd2F SpyiPC+pVP/GtJFll8Z383/UwL/8+cKK5YpN7Pf5H5gjNVgpQOaiCGWRrTjYVn2sZNwv Zd3FqmrsU9+Cv1aQtZJFRh80/kxq6QA11aBc4F/7D+VKuXbXH0MfTHpgn3fh01Iyi927 jCzfKS5zpSo6VUrTyVEZOOqJpDvcB4dbzVmX+KJBwsYOaLd9MM5Ghx1jpeff/v0uh2Xm wJTuSqEhYQexeirkWh3V8Dy0T3c1JY7F4mXRwOZc1FwON47HsXFp8kDnKohQVpbKt+FX Vt7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :arc-authentication-results; bh=U6UvXTfj94abCWK2YAvR7FFDrFlJOOmkTsGWAXfe21g=; b=uRoaTnPvbHgX3YJVsQUww91FN47RLijibQKgoZ1/96z+wH1cpq6uraDeg7yteCsfis Qlq0hla3hZ2Z2DwkIwfY3tUJCgT3M00l2IYejrOUsMqi+F0v6X2AQmmmiohK7YzCTC55 +WLNCawJjo3XxlQ3KpYbEdTucReue4P+fJTbyjjUsssV5QW3PUiMwVI2woC8e+b4XwQV HvQxo6BQdQhsfkNgOXyrB7KjWljwnQULHQcRnWSOWVnYRM3K0muoew7VQ7HbvYOczfpG 6jKJT0IlJ2zeLls45ktSadmfIhCRVhzfPGYMX9cv9su4jrA8xDgMNL2toKOvkL949dvr rzxg== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d9-v6si87878pgg.423.2018.08.01.14.57.21; Wed, 01 Aug 2018 14:57:36 -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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387418AbeHAXoM (ORCPT + 99 others); Wed, 1 Aug 2018 19:44:12 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:60362 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725956AbeHAXoM (ORCPT ); Wed, 1 Aug 2018 19:44:12 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A60084219DA9; Wed, 1 Aug 2018 21:56:18 +0000 (UTC) Received: from redhat.com (ovpn-121-8.rdu2.redhat.com [10.10.121.8]) by smtp.corp.redhat.com (Postfix) with SMTP id 8E8E02142F20; Wed, 1 Aug 2018 21:56:14 +0000 (UTC) Date: Thu, 2 Aug 2018 00:56:13 +0300 From: "Michael S. Tsirkin" To: Benjamin Herrenschmidt Cc: Christoph Hellwig , Will Deacon , Anshuman Khandual , virtualization@lists.linux-foundation.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, aik@ozlabs.ru, robh@kernel.org, joe@perches.com, elfring@users.sourceforge.net, david@gibson.dropbear.id.au, jasowang@redhat.com, mpe@ellerman.id.au, linuxram@us.ibm.com, haren@linux.vnet.ibm.com, paulus@samba.org, srikar@linux.vnet.ibm.com, robin.murphy@arm.com, jean-philippe.brucker@arm.com, marc.zyngier@arm.com Subject: Re: [RFC 0/4] Virtio uses DMA API for all devices Message-ID: <20180802003823-mutt-send-email-mst@kernel.org> References: <20180720035941.6844-1-khandual@linux.vnet.ibm.com> <20180727095804.GA25592@arm.com> <20180730093414.GD26245@infradead.org> <20180730125100-mutt-send-email-mst@kernel.org> <20180730111802.GA9830@infradead.org> <20180730155633-mutt-send-email-mst@kernel.org> <20180731173052.GA17153@infradead.org> <3d6e81511571260de1c8047aaffa8ac4df093d2e.camel@kernel.crashing.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3d6e81511571260de1c8047aaffa8ac4df093d2e.camel@kernel.crashing.org> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Wed, 01 Aug 2018 21:56:18 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Wed, 01 Aug 2018 21:56:18 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'mst@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jul 31, 2018 at 03:36:22PM -0500, Benjamin Herrenschmidt wrote: > On Tue, 2018-07-31 at 10:30 -0700, Christoph Hellwig wrote: > > > However the question people raise is that DMA API is already full of > > > arch-specific tricks the likes of which are outlined in your post linked > > > above. How is this one much worse? > > > > None of these warts is visible to the driver, they are all handled in > > the architecture (possibly on a per-bus basis). > > > > So for virtio we really need to decide if it has one set of behavior > > as specified in the virtio spec, or if it behaves exactly as if it > > was on a PCI bus, or in fact probably both as you lined up. But no > > magic arch specific behavior inbetween. > > The only arch specific behaviour is needed in the case where it doesn't > behave like PCI. In this case, the PCI DMA ops are not suitable, but in > our secure VMs, we still need to make it use swiotlb in order to bounce > through non-secure pages. > > It would be nice if "real PCI" was the default I think you are mixing "real PCI" which isn't coded up yet and IOMMU bypass which is. IOMMU bypass will maybe with time become unnecessary since it seems that one can just program an IOMMU in a bypass mode instead. It's hard to blame you since right now if you disable IOMMU bypass you get a real PCI mode. But they are distinct and to allow people to enable IOMMU by default we will need to teach someone (virtio or DMA API) about this mode that does follow translation and protection rules in the IOMMU but runs on a CPU and so does not need cache flushes and whatnot. OTOH real PCI mode as opposed to default hypervisor mode does not perform as well when what you actually have is a hypervisor. So we'll likely have a mix of these two modes for a while. > but it's not, VMs are > created in "legacy" mode all the times and we don't know at VM creation > time whether it will become a secure VM or not. The way our secure VMs > work is that they start as a normal VM, load a secure "payload" and > call the Ultravisor to "become" secure. > > So we're in a bit of a bind here. We need that one-liner optional arch > hook to make virtio use swiotlb in that "IOMMU bypass" case. > > Ben. And just to make sure I understand, on your platform DMA APIs do include some of the cache flushing tricks and this is why you don't want to declare iommu support in the hypervisor? -- MST