Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp4048791imm; Mon, 6 Aug 2018 15:50:03 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdbIhzd/LVPiVwj3dJWyPnFMnrjaIHYoFAeyf+w8l1Zy7MpJM8aJmAxQJRroWPO1PX/vy/G X-Received: by 2002:a63:555:: with SMTP id 82-v6mr16576509pgf.25.1533595803322; Mon, 06 Aug 2018 15:50:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1533595803; cv=none; d=google.com; s=arc-20160816; b=dpXRmxwZc8zXeBjD4UTrpqqHx7QWOkU5JaEljvIO4CPWVn9wJkOcY3+1JSXsPW/80R GwUYI1E98imIuOgR1hQfG8WyRWwfMMjm4k8axg/NZ62FqsZuyypeDkehU8UGY902IBXG etKVC9dqM1vWf8HnkrBGZgTboedFZBC7EGVK1QU4SqzTbsl5xoKdm6GrR0nrbvLjqho6 1olFx8h3e6wk+VeHOz92KHPCfIlq4s/fgFleCIeCh7Xex4Tj0V82V3Rn9dNfh/aN3Frh KrUmELDVy5uFuGmgbfqPyehwTZ6dwXJx0lXVkBfgIsbTqFt0Cw94UzkZMqQVwZy033mk 3YnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=aBhq50ZEPxr6Q4VWiPtYNLI92BvxAyqP6ptJi8tmXtA=; b=vaZ3Y48zm4FMubYd/+Ion+rvHvB4XLceJByRMLpUVrW8Q5eaM4b21A7xIczzWMPFw1 uOlhFgXbZ/WDL+dYaEZPsF/Yvpo/LobS013hRiend7l5MS9KFl9/zxxsqlEDgPwkbGg2 JzRRz5yJ5zM7sC+8SbPjSR3rRrD4mqFYBy/vf6yYPS5d+XtqigKtWcwi1pICQrTXL5hg D09K0pYKQkv21hBhLFP7+B5rPfjIS9IKcmoE8I/WlEVoldLTddqFAK8dQlNgLyJXL8Wr W8PKkDtpMtXWhEiRr4s0oYWSmG2HR1Prge6oaVDUaXaI/fnrTsoeo2YJzoX1lacG4YBs FMeg== 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 v25-v6si13409207pgk.555.2018.08.06.15.49.34; Mon, 06 Aug 2018 15:50:03 -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 S1732661AbeHGA03 (ORCPT + 99 others); Mon, 6 Aug 2018 20:26:29 -0400 Received: from gate.crashing.org ([63.228.1.57]:50631 "EHLO gate.crashing.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727665AbeHGA03 (ORCPT ); Mon, 6 Aug 2018 20:26:29 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by gate.crashing.org (8.14.1/8.14.1) with ESMTP id w76MDuYl009510; Mon, 6 Aug 2018 17:13:57 -0500 Message-ID: <93518075238a07e9f011774d89bdc652c083f1ba.camel@kernel.crashing.org> Subject: Re: [RFC 0/4] Virtio uses DMA API for all devices From: Benjamin Herrenschmidt To: "Michael S. Tsirkin" 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 Date: Tue, 07 Aug 2018 08:13:56 +1000 In-Reply-To: <20180807002857-mutt-send-email-mst@kernel.org> References: <20180803070507.GA1344@infradead.org> <20180803220443-mutt-send-email-mst@kernel.org> <051fd78e15595b414839fa8f9d445b9f4d7576c6.camel@kernel.crashing.org> <20180805031046-mutt-send-email-mst@kernel.org> <20180806164106-mutt-send-email-mst@kernel.org> <20180806233024-mutt-send-email-mst@kernel.org> <0967fc30001323e6e38ed12c8dba8ee3d1aa13f5.camel@kernel.crashing.org> <20180807002857-mutt-send-email-mst@kernel.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.4 (3.28.4-1.fc28) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2018-08-07 at 00:46 +0300, Michael S. Tsirkin wrote: > On Tue, Aug 07, 2018 at 07:26:35AM +1000, Benjamin Herrenschmidt wrote: > > On Mon, 2018-08-06 at 23:35 +0300, Michael S. Tsirkin wrote: > > > > As I said replying to Christoph, we are "leaking" into the interface > > > > something here that is really what's the VM is doing to itself, which > > > > is to stash its memory away in an inaccessible place. > > > > > > > > Cheers, > > > > Ben. > > > > > > I think Christoph merely objects to the specific implementation. If > > > instead you do something like tweak dev->bus_dma_mask for the virtio > > > device I think he won't object. > > > > Well, we don't have "bus_dma_mask" yet ..or you mean dma_mask ? > > > > So, something like that would be a possibility, but the problem is that > > the current virtio (guest side) implementation doesn't honor this when > > not using dma ops and will not use dma ops if not using iommu, so back > > to square one. > > Well we have the RFC for that - the switch to using DMA ops unconditionally isn't > problematic itself IMHO, for now that RFC is blocked > by its perfromance overhead for now but Christoph says > he's trying to remove that for direct mappings, > so we should hopefully be able to get there in X weeks. That would be good yes. ../.. > > --- a/drivers/virtio/virtio_ring.c > > +++ b/drivers/virtio/virtio_ring.c > > @@ -155,7 +155,7 @@ static bool vring_use_dma_api(struct virtio_device > > *vdev) > > * the DMA API if we're a Xen guest, which at least allows > > * all of the sensible Xen configurations to work correctly. > > */ > > - if (xen_domain()) > > + if (xen_domain() || arch_virtio_direct_dma_ops(&vdev->dev)) > > return true; > > > > return false; > > Right but can't we fix the retpoline overhead such that > vring_use_dma_api will not be called on data path any longer, making > this a setup time check? Yes it needs to be a setup time check regardless actually ! The above is broken, sorry I was a bit quick here (too early in the morning... ugh). We don't want the arch to go override the dma ops every time that is callled. But yes, if we can fix the overhead, it becomes just a matter of setting up the "right" ops automatically. > > (Passing the dev allows the arch to know this is a virtio device in > > "direct" mode or whatever we want to call the !iommu case, and > > construct appropriate DMA ops for it, which aren't the same as the DMA > > ops of any other PCI device who *do* use the iommu). > > I think that's where Christoph might have specific ideas about it. OK well, assuming Christoph can solve the direct case in a way that also work for the virtio !iommu case, we still want some bit of logic somewhere that will "switch" to swiotlb based ops if the DMA mask is limited. You mentioned an RFC for that ? Do you happen to have a link ? It would be indeed ideal if all we had to do was setup some kind of bus_dma_mask on all PCI devices and have virtio automagically insert swiotlb when necessary. Cheers, Ben.