LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Chris Wilson <chris@chris-wilson.co.uk>
To: Daniel Vetter <daniel@ffwll.ch>, Steven Price <steven.price@arm.com>
Cc: David Airlie <airlied@linux.ie>,
	Alyssa Rosenzweig <alyssa@rosenzweig.io>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	Tomeu Vizoso <tomeu.vizoso@collabora.com>
Subject: Re: [PATCH] drm/panfrost: Use drm_gem_dump_map_offset()
Date: Mon, 13 May 2019 17:46:31 +0100
Message-ID: <155776599144.2165.15056323416635154840@skylake-alporthouse-com> (raw)
In-Reply-To: <0b7f0b7f-3e14-f5bb-368a-08037c2a8529@arm.com>

Quoting Steven Price (2019-05-13 16:14:01)
> On 13/05/2019 15:47, Chris Wilson wrote:
> > Quoting Daniel Vetter (2019-05-13 15:39:21)
> >> On Mon, May 13, 2019 at 03:32:44PM +0100, Steven Price wrote:
> >>> panfrost_ioctl_mmap_bo() contains a reimplementation of
> >>> drm_gem_dump_map_offset() but with a bug - it allows mapping imported
> >>> objects (without going through the exporter). Fix this by switching to
> >>> use the generic drm_gem_dump_map_offset() function instead which has the
> >>> bonus of simplifying the code.
> >>
> >> gem_dumb stuff is for kms drivers, panfrost is a render driver. We're
> >> generally trying to separate these two worlds somewhat cleanly.
> >>
> >> I think it'd be good to have a non-dumb version of this in the core, and
> >> use that. Or upgrade the dumb version to be that helper for everyone (and
> >> drop the _dumb).
> 
> I'm slightly confused by what you think is the best course of action here.
> 
> I can create a patch dropping the '_dumb' from drm_gem_dump_map_offset()
> if that's the objection. Or do you want a helper function with two
> callers (the 'dump' and the 'shmem' versions)?
> 
> > More specifically, since panfrost is using the drm_gem_shmem helper and
> > vm_ops, it too can provide the wrapper as it is the drm_gem_shmem layer
> > that implies that trying to mmap an imported object is an issue as that
> > is not a universal problem.
> mmap'ing an imported object isn't a problem as such. But rather than
> going behind the exporter's back we would need to call dma_buf_mmap() to
> ensure that the exporter can do whatever is necessary.
> 
> I could add a wrapper in drm_gem_shmem_helper, but I'm not sure what the
> benefit of a wrapper here is?

No, my point is that the pagefaulting is being provided by drm_gem_shmem
and that is relying on direct access to struct page, hence that is
imposing the restriction that it can only handle its own shmem objects.
The driver should not guess the helper, but ask the helper if it can
perform an mmap of this object, and since this object is not an shmem
object it will say no.

Different drivers can use their HW to fault in indirect access to dmabuf
(treating the dmabuf as a conveyance of a sglist and not struct page)
and so do not need to different/reject foreign objects from their
specialised mmap routines and are oblivious to them.
-Chris

      reply index

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-13 14:32 Steven Price
2019-05-13 14:39 ` Daniel Vetter
2019-05-13 14:47   ` Chris Wilson
2019-05-13 15:14     ` Steven Price
2019-05-13 16:46       ` Chris Wilson [this message]

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=155776599144.2165.15056323416635154840@skylake-alporthouse-com \
    --to=chris@chris-wilson.co.uk \
    --cc=airlied@linux.ie \
    --cc=alyssa@rosenzweig.io \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=steven.price@arm.com \
    --cc=tomeu.vizoso@collabora.com \
    /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

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git
	git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git
	git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git