AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel-/w4YWyX8dFk@public.gmane.org>
To: Jerome Glisse <jglisse-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	christian.koenig-5C7GfCeVMHo@public.gmane.org,
	linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 4/8] dma-buf: add peer2peer flag
Date: Tue, 3 Apr 2018 20:08:32 +0200	[thread overview]
Message-ID: <20180403180832.GZ3881@phenom.ffwll.local> (raw)
In-Reply-To: <20180403170645.GB5935-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On Tue, Apr 03, 2018 at 01:06:45PM -0400, Jerome Glisse wrote:
> On Tue, Apr 03, 2018 at 11:09:09AM +0200, Daniel Vetter wrote:
> > On Thu, Mar 29, 2018 at 01:34:24PM +0200, Christian König wrote:
> > > Am 29.03.2018 um 08:57 schrieb Daniel Vetter:
> > > > On Sun, Mar 25, 2018 at 12:59:56PM +0200, Christian König wrote:
> > > > > Add a peer2peer flag noting that the importer can deal with device
> > > > > resources which are not backed by pages.
> > > > > 
> > > > > Signed-off-by: Christian König <christian.koenig@amd.com>
> > > > Um strictly speaking they all should, but ttm never bothered to use the
> > > > real interfaces but just hacked around the provided sg list, grabbing the
> > > > underlying struct pages, then rebuilding&remapping the sg list again.
> > > 
> > > Actually that isn't correct. TTM converts them to a dma address array
> > > because drivers need it like this (at least nouveau, radeon and amdgpu).
> > > 
> > > I've fixed radeon and amdgpu to be able to deal without it and mailed with
> > > Ben about nouveau, but the outcome is they don't really know.
> > > 
> > > TTM itself doesn't have any need for the pages on imported BOs (you can't
> > > mmap them anyway), the real underlying problem is that sg tables doesn't
> > > provide what drivers need.
> > > 
> > > I think we could rather easily fix sg tables, but that is a totally separate
> > > task.
> > 
> > Looking at patch 8, the sg table seems perfectly sufficient to convey the
> > right dma addresses to the importer. Ofcourse the exporter has to set up
> > the right kind of iommu mappings to make this work.
> > 
> > > > The entire point of using sg lists was exactly to allow this use case of
> > > > peer2peer dma (or well in general have special exporters which managed
> > > > memory/IO ranges not backed by struct page). So essentially you're having
> > > > a "I'm totally not broken flag" here.
> > > 
> > > No, independent of needed struct page pointers we need to note if the
> > > exporter can handle peer2peer stuff from the hardware side in general.
> > > 
> > > So what I've did is just to set peer2peer allowed on the importer because of
> > > the driver needs and clear it in the exporter if the hardware can't handle
> > > that.
> > 
> > The only thing the importer seems to do is call the
> > pci_peer_traffic_supported, which the exporter could call too. What am I
> > missing (since the sturct_page stuff sounds like it's fixed already by
> > you)?
> > -Daniel
> 
> AFAIK Logan patchset require to register and initialize struct page
> for the device memory you want to map (export from exporter point of
> view).
> 
> With GPU this isn't something we want, struct page is >~= 2^6 so for
> 4GB GPU = 2^6*2^32/2^12 = 2^26 = 64MB of RAM
> 8GB GPU = 2^6*2^33/2^12 = 2^27 = 128MB of RAM
> 16GB GPU = 2^6*2^34/2^12 = 2^28 = 256MB of RAM
> 32GB GPU = 2^6*2^34/2^12 = 2^29 = 512MB of RAM
> 
> All this is mostly wasted as only a small sub-set (that can not be
> constraint to specific range) will ever be exported at any point in
> time. For GPU work load this is hardly justifiable, even for HMM i
> do not plan to register all those pages.
> 
> Hence why i argue that dma_map_resource() like use by Christian is
> good enough for us. People that care about SG can fix that but i
> rather not have to depend on that and waste system memory.

I did not mean you should dma_map_sg/page. I just meant that using
dma_map_resource to fill only the dma address part of the sg table seems
perfectly sufficient. And that's exactly why the importer gets an already
mapped sg table, so that it doesn't have to call dma_map_sg on something
that dma_map_sg can't handle.

Assuming you get an sg table that's been mapping by calling dma_map_sg was
always a bit a case of bending the abstraction to avoid typing code. The
only thing an importer ever should have done is look at the dma addresses
in that sg table, nothing else.

And p2p seems to perfectly fit into this (surprise, it was meant to).
That's why I suggested we annotate the broken importers who assume the sg
table is mapped using dma_map_sg or has a struct_page backing the memory
(but there doesn't seem to be any left it seems) instead of annotating the
ones that aren't broken with a flag that's confusing - you could also have
a dma-buf sgt that points at some other memory that doesn't have struct
pages backing it.

Aside: At least internally in i915 we've been using this forever for our
own private/stolen memory. Unfortunately no other device can access that
range of memory, which is why we don't allow it to be imported to anything
but i915 itself. But if that hw restriction doesn't exist, it'd would
work.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2018-04-03 18:08 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-25 10:59 [PATCH 1/8] lib/scatterlist: add sg_set_dma_addr() helper Christian König
2018-03-25 10:59 ` [PATCH 4/8] dma-buf: add peer2peer flag Christian König
     [not found]   ` <20180325110000.2238-4-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-03-29  6:57     ` Daniel Vetter
     [not found]       ` <20180329065753.GD3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-03-29 11:34         ` Christian König
     [not found]           ` <8b823458-8bdc-3217-572b-509a28aae742-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-04-03  9:09             ` Daniel Vetter
     [not found]               ` <20180403090909.GN3881-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-03 17:06                 ` Jerome Glisse
     [not found]                   ` <20180403170645.GB5935-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-04-03 18:08                     ` Daniel Vetter [this message]
2018-04-16 12:39                       ` Christoph Hellwig
     [not found]                         ` <20180416123937.GA9073-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-16 13:38                           ` Daniel Vetter
2018-04-19  8:16                             ` Christoph Hellwig
     [not found]                               ` <20180419081657.GA16735-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-20  7:13                                 ` Daniel Vetter
     [not found]                                   ` <20180420071312.GF31310-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-20  8:58                                     ` Christian König
2018-04-20 10:17                                       ` Christoph Hellwig
     [not found]                                         ` <20180420101755.GA11400-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-20 10:44                                           ` Christian König
2018-04-20 12:46                                             ` Christoph Hellwig
2018-04-20 15:21                                               ` [Linaro-mm-sig] " Daniel Vetter
2018-04-24 18:48                                                 ` Christoph Hellwig
2018-04-24 19:32                                                   ` Daniel Vetter
2018-04-25  5:48                                                     ` Christoph Hellwig
     [not found]                                                       ` <20180425054855.GA17038-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-25  6:10                                                         ` Alex Deucher
2018-04-25  6:13                                                       ` Daniel Vetter
2018-04-25  6:23                                                         ` Daniel Vetter
2018-04-25  6:43                                                           ` Christoph Hellwig
     [not found]                                                             ` <20180425064335.GB28100-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-25  7:02                                                               ` Daniel Vetter
2018-04-25  7:09                                                                 ` Christoph Hellwig
     [not found]                                                                   ` <20180425070905.GA24827-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-25  7:30                                                                     ` Daniel Vetter
2018-04-25  7:56                                                                       ` Thierry Reding
2018-04-25  8:55                                                                         ` Christoph Hellwig
2018-04-25  7:43                                                                   ` Thierry Reding
2018-04-25  7:41                                                             ` Thierry Reding
2018-04-25  8:54                                                               ` noveau vs arm dma ops Christoph Hellwig
2018-04-25  9:25                                                                 ` Russell King - ARM Linux
2018-04-25 10:04                                                                 ` Daniel Vetter
2018-04-25 15:33                                                                   ` Christoph Hellwig
     [not found]                                                                     ` <20180425153312.GD27076-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-25 21:35                                                                       ` Daniel Vetter
2018-04-25 23:26                                                                         ` Russell King - ARM Linux
     [not found]                                                                           ` <20180425232646.GR16141-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org>
2018-04-26  9:17                                                                             ` Daniel Vetter
2018-04-26  9:09                                                                         ` Christoph Hellwig
     [not found]                                                                           ` <20180426090942.GA18811-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-26  9:45                                                                             ` Daniel Vetter
2018-04-26 11:12                                                                           ` Russell King - ARM Linux
2018-04-25 22:54                                                                     ` Russell King - ARM Linux
2018-04-26  9:13                                                                       ` Christoph Hellwig
2018-04-26  9:20                                                                       ` [Linaro-mm-sig] " Daniel Vetter
     [not found]                                                                         ` <CAKMK7uG9R6paoP4BmvqDVUP_4Db4Dz8MSXeLwUBMYaORa5-kVw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-26  9:24                                                                           ` Christoph Hellwig
2018-04-26  9:39                                                                             ` Daniel Vetter
     [not found]                                                         ` <CAKMK7uEFitkNQrD6cLX5Txe11XhVO=LC4YKJXH=VNdq+CY=DjQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-04-25  6:24                                                           ` [Linaro-mm-sig] [PATCH 4/8] dma-buf: add peer2peer flag Alex Deucher
2018-04-25  6:41                                                             ` Christoph Hellwig
     [not found]                                                               ` <20180425064118.GA28100-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-04-25 17:44                                                                 ` Alex Deucher
2018-04-25 18:38                                                                   ` Dan Williams
2018-05-04 12:45                                                                   ` Lucas Stach
     [not found] ` <20180325110000.2238-1-christian.koenig-5C7GfCeVMHo@public.gmane.org>
2018-03-25 10:59   ` [PATCH 2/8] PCI: Add pci_find_common_upstream_dev() Christian König
2018-03-28 12:38     ` Christoph Hellwig
     [not found]       ` <20180328123830.GB25060-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2018-03-28 15:07         ` Christian König
2018-03-28 15:47           ` Logan Gunthorpe
2018-03-28 16:02             ` Christian König
2018-03-28 16:25               ` Logan Gunthorpe
     [not found]                 ` <16c7bef8-5f03-9e89-1f50-b62fb139a36f-OTvnGxWRz7hWk0Htik3J/w@public.gmane.org>
2018-03-28 18:28                   ` Christian König
2018-03-28 18:57                     ` Logan Gunthorpe
     [not found]                       ` <e751cd28-f115-569f-5248-d24f30dee3cb-OTvnGxWRz7hWk0Htik3J/w@public.gmane.org>
2018-03-28 19:44                         ` Christian König
2018-03-28 19:53                           ` Logan Gunthorpe
2018-03-29 11:44                             ` Christian König
2018-03-29 15:45                               ` Logan Gunthorpe
     [not found]                                 ` <98ce6cfd-bcf3-811e-a0f1-757b60da467a-OTvnGxWRz7hWk0Htik3J/w@public.gmane.org>
2018-03-29 16:10                                   ` Christian König
2018-03-29 16:25                                     ` Logan Gunthorpe
2018-03-29 18:15                                       ` Christian König
2018-03-30  1:58                                       ` Jerome Glisse
2018-03-30  6:33                                         ` Christoph Hellwig
2018-03-30 15:25                                           ` Jerome Glisse
2018-03-30 18:46                                         ` Logan Gunthorpe
2018-03-30 19:45                                           ` Jerome Glisse
2018-04-02 17:02                                             ` Logan Gunthorpe
2018-04-02 17:20                                               ` Jerome Glisse
2018-04-02 17:37                                                 ` Logan Gunthorpe
2018-04-02 19:16                                                   ` Jerome Glisse
2018-04-02 19:32                                                     ` Logan Gunthorpe
2018-04-02 19:45                                                       ` Jerome Glisse
     [not found]                             ` <CADnq5_P-z=Noos_jaME9_CERri3C-m2hPPvx2bArr36O=1FnrA@mail.gmail.com>
2018-03-29 14:37                               ` Alex Deucher
2018-03-25 10:59   ` [PATCH 3/8] PCI: Add pci_peer_traffic_supported() Christian König
2018-03-25 10:59   ` [PATCH 5/8] drm/amdgpu: print DMA-buf status in debugfs Christian König
2018-03-25 10:59   ` [PATCH 6/8] drm/amdgpu: note that we can handle peer2peer DMA-buf Christian König
2018-03-25 10:59   ` [PATCH 7/8] drm/amdgpu: add amdgpu_gem_attach Christian König
2018-03-25 11:00   ` [PATCH 8/8] drm/amdgpu: add support for exporting VRAM using DMA-buf Christian König
2018-03-28 12:37 ` [PATCH 1/8] lib/scatterlist: add sg_set_dma_addr() helper Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180403180832.GZ3881@phenom.ffwll.local \
    --to=daniel-/w4ywyx8dfk@public.gmane.org \
    --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=christian.koenig-5C7GfCeVMHo@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=jglisse-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox