Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp566393imm; Wed, 1 Aug 2018 01:18:33 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeGzaw9tsAbEdpjRJd8gHWXQ2Zurw1Ww5IjqGbhIRdtfGPQH4tSAP0oS7X6sj2evqnsFmX+ X-Received: by 2002:a17:902:7596:: with SMTP id j22-v6mr9656495pll.282.1533111513169; Wed, 01 Aug 2018 01:18:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533111513; cv=none; d=google.com; s=arc-20160816; b=flvL1zHTgrdHo6rAoJNk3qB4Q0VChOiYTPxWdLyVKR/G7BggJtfCDRWd090qK2RbWa tXjbUvth0U7XLSb0PA2UnBCynLcl+nAqw3/R96OxymB1vxGLWrduBWIBOzzqPhX5sMjI QqBduKjSo6Jh7iW5s3vczp+A7lQQdJqWkCbYIpr/+29/5kwvjPuO09Yll2gD2jPZ4vfx b2tdzG4Awcq2SzVveadn/038Vej/GQuJpBaWZE9J4cxmuv3szLpvUIWgec5Q5PxklStp 9gDqspalesMHN8hrNdn5MwgsKi0yynz4nUPHtZYay/1Y8keycAyiahIbFTBQSOQ6xAIl R/MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=qavFMtJ4eVeWfbjPyJWeYRKLzr7vm5qGFbNvfdEEh1s=; b=MQWMB8bi3TtmhAvsVpg3am/2fe8scg5hvu2KIwBaZhT1/0ajiFHZbnL6w9U40CBWnG TPnfNAwZEuIxlnURaF2BXamYElOPuQWDtiMbgPTbLwz5qMhREAkZCmkS6cBFK3t03yhd nnH0YIJ16J7NZVN9IfCivIe108wAR/hjCf+c39gdQVw4hBnPaY8eQ5umquSL/Q6BRiLN A5qJg7M3dAE9pdZJwn/KU+boRwwa4AKGWFr+wfsnWEChGm3ZLQJ3Kt8ktU7yv5j2g3ZL veGs9t8tLzAlEmz8PF0Y0sC587fQXTgV21CZJwySE8bShgP+Pp1rwKnu68nhonaXbtUo dyfA== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bi1-v6si14476256plb.399.2018.08.01.01.18.18; Wed, 01 Aug 2018 01:18:33 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388425AbeHAKBH (ORCPT + 99 others); Wed, 1 Aug 2018 06:01:07 -0400 Received: from foss.arm.com ([217.140.101.70]:36868 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387719AbeHAKBH (ORCPT ); Wed, 1 Aug 2018 06:01:07 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id ACF187A9; Wed, 1 Aug 2018 01:16:36 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 716773F5B3; Wed, 1 Aug 2018 01:16:36 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id 7F9831AE3096; Wed, 1 Aug 2018 09:16:38 +0100 (BST) Date: Wed, 1 Aug 2018 09:16:38 +0100 From: Will Deacon To: Benjamin Herrenschmidt Cc: Christoph Hellwig , "Michael S. Tsirkin" , 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: <20180801081637.GA14438@arm.com> 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> User-Agent: Mutt/1.5.23 (2014-03-12) 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. On arm/arm64, the problem we have is that legacy virtio devices on the MMIO transport (so definitely not PCI) have historically been advertised by qemu as not being cache coherent, but because the virtio core has bypassed DMA ops then everything has happened to work. If we blindly enable the arch DMA ops, we'll plumb in the non-coherent ops and start getting data corruption, so we do need a way to quirk virtio as being "always coherent" if we want to use the DMA ops (which we do, because our emulation platforms have an IOMMU for all virtio devices). Will