From: Ben Widawsky <ben@bwidawsk.net>
To: Chris Wilson <chris@chris-wilson.co.uk>,
Ben Widawsky <benjamin.widawsky@intel.com>,
Intel GFX <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 5/6] [v3] drm/i915: Use the new vm [un]bind functions
Date: Tue, 17 Sep 2013 17:02:03 -0700 [thread overview]
Message-ID: <20130918000203.GF6112@bwidawsk.net> (raw)
In-Reply-To: <20130917235720.GF24051@nuc-i3427.alporthouse.com>
On Wed, Sep 18, 2013 at 12:57:20AM +0100, Chris Wilson wrote:
> On Tue, Sep 17, 2013 at 04:48:50PM -0700, Ben Widawsky wrote:
> > On Wed, Sep 18, 2013 at 12:33:32AM +0100, Chris Wilson wrote:
> > > On Tue, Sep 17, 2013 at 04:14:43PM -0700, Ben Widawsky wrote:
> > > > On Tue, Sep 17, 2013 at 09:55:35PM +0100, Chris Wilson wrote:
> > > > > On Tue, Sep 17, 2013 at 10:01:33AM -0700, Ben Widawsky wrote:
> > > > > > @@ -1117,8 +1109,13 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
> > > > > > * batch" bit. Hence we need to pin secure batches into the global gtt.
> > > > > > * hsw should have this fixed, but let's be paranoid and do it
> > > > > > * unconditionally for now. */
> > > > > > - if (flags & I915_DISPATCH_SECURE && !batch_obj->has_global_gtt_mapping)
> > > > > > - i915_gem_gtt_bind_object(batch_obj, batch_obj->cache_level);
> > > > > > + if (flags & I915_DISPATCH_SECURE &&
> > > > > > + !batch_obj->has_global_gtt_mapping) {
> > > > > > + const struct i915_address_space *ggtt = obj_to_ggtt(batch_obj);
> > > > > > + struct i915_vma *vma = i915_gem_obj_to_ggtt(batch_obj);
> > > > > > + BUG_ON(!vma);
> > > > > > + ggtt->bind_vma(vma, batch_obj->cache_level, GLOBAL_BIND);
> > > > > > + }
> > > > >
> > > > > The issue here is that if we don't set the USE_PPGTT/USE_SECURE flag in
> > > > > the dispatch, the CS will use the GGTT (hence our binding) but so we
> > > > > then need to use the GGTT offset for the dispatch as well.
> > > > >
> > > > > Is that as concisely as we can write bind_to_ggtt? :(
> > > > > -Chris
> > > > >
> > > >
> > > > Resuming the conversation started on irc... what do you want from me?
> > >
> > > I think we need to pass the ggtt offset to dispatch for
> > > I915_DISPATCH_SECURE -- which offset to use might even depend upon the
> > > implementation and hw generation in intel_ringbuffer.c. But at the very
> > > least, I think SNB/IVB will be executing the wrong address come full
> > > ppgtt.
> > >
> > > dev_priv->ggtt.base.bind_vma(i915_gem_obj_to_ggtt(batch_obj),
> > > batch_obj->cache_level,
> > > GLOBAL_BIND);
> > >
> > > #define i915_vm_bind(vm__, vma__, cache_level__, flags__) \
> > > (vm__)->bind_vma((vma__), (cache_level__), (flags__))
> > >
> > > i915_vm_bind(&dev_priv->ggtt.base,
> > > i915_gem_obj_to_ggtt(batch_obj),
> > > batch_obj->cache_level,
> > > GLOBAL_BIND);
> > > -Chris
> > >
> >
> > I915_DISPATCH_SECURE is a special case. If we see the flag, we look up
> > the GGTT offset as opposed to the offset in the VM being used at
> > execbuf. We can either bind the batchbuffer into both the PPGTT, and
> > GGTT, or it's only even in the GGTT - in either case, we'll have to have
> > done the bind (and found space in the drm_mm). It just seems like this
> > is duplicating the already existing i915_gem_object_bind_to_vm code
> > that's in place.
> >
> > Sorry if I am not following what you're asking. I'm just failing to see
> > a problem, or maybe you're just trying to solve problems that I haven't
> > yet conceived; or solved in a different way. It's pretty darn hard to
> > discuss this given the piecemeal nature of the thing.
>
> The code does
>
> exec_start = i915_gem_obj_offset(batch_obj, vm) +
> args->batch_start_offset;
> exec_len = args->batch_len;
> ...
> ret = ring->dispatch_execbuffer(ring,
> exec_start, exec_len,
> flags);
> if (ret)
> goto err;
>
> So we lookup the address of the batch buffer in the wrong vm for
> I915_DISPATCH_SECURE.
> -Chris
>
But this is very easily solved, no?
http://cgit.freedesktop.org/~bwidawsk/drm-intel/tree/drivers/gpu/drm/i915/i915_gem_execbuffer.c?h=ppgtt#n1083
--
Ben Widawsky, Intel Open Source Technology Center
next prev parent reply other threads:[~2013-09-18 0:02 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-14 22:03 [PATCH 1/6] drm/i915: trace vm eviction instead of everything Ben Widawsky
2013-09-14 22:03 ` [PATCH 2/6] drm/i915: Provide a cheap ggtt vma lookup Ben Widawsky
2013-09-14 22:03 ` [PATCH 3/6] drm/i915: Convert active API to VMA Ben Widawsky
2013-09-14 22:03 ` [PATCH 4/6] drm/i915: Add bind/unbind object functions to VM Ben Widawsky
2013-09-16 9:25 ` Chris Wilson
2013-09-16 18:23 ` Ben Widawsky
2013-09-16 22:05 ` Daniel Vetter
2013-09-16 22:18 ` Chris Wilson
2013-09-16 22:20 ` Daniel Vetter
2013-09-16 22:13 ` Chris Wilson
2013-09-17 5:44 ` Ben Widawsky
2013-09-17 7:49 ` Chris Wilson
2013-09-17 17:00 ` [PATCH 4/6] [v5] " Ben Widawsky
2013-09-14 22:03 ` [PATCH 5/6] drm/i915: Use the new vm [un]bind functions Ben Widawsky
2013-09-16 7:37 ` Chris Wilson
2013-09-16 18:31 ` Ben Widawsky
2013-09-17 17:01 ` [PATCH 5/6] [v3] " Ben Widawsky
2013-09-17 20:55 ` Chris Wilson
2013-09-17 23:14 ` Ben Widawsky
2013-09-17 23:33 ` Chris Wilson
2013-09-17 23:48 ` Ben Widawsky
2013-09-17 23:57 ` Chris Wilson
2013-09-18 0:02 ` Ben Widawsky [this message]
2013-09-18 8:30 ` Chris Wilson
2013-09-18 14:47 ` Ben Widawsky
2013-09-18 14:53 ` Chris Wilson
2013-09-18 15:48 ` Ben Widawsky
2013-09-18 15:59 ` Chris Wilson
2013-09-18 16:11 ` Ben Widawsky
2013-09-18 16:15 ` Chris Wilson
2013-09-18 16:20 ` Daniel Vetter
2013-09-18 16:37 ` Ben Widawsky
2013-09-19 0:12 ` [PATCH] [v4] " Ben Widawsky
2013-09-19 9:13 ` Chris Wilson
2013-09-19 14:15 ` [PATCH] [v5] " Ben Widawsky
2013-09-19 14:26 ` Chris Wilson
2013-09-19 14:41 ` [PATCH] [v6] " Ben Widawsky
2013-09-19 14:45 ` [PATCH] [v7] " Ben Widawsky
2013-09-20 4:06 ` [PATCH] " Ben Widawsky
2013-09-20 10:43 ` Chris Wilson
2013-09-20 13:24 ` Daniel Vetter
2013-09-20 13:26 ` Daniel Vetter
2013-09-20 13:29 ` Chris Wilson
2013-09-20 20:44 ` Ben Widawsky
2013-09-20 20:55 ` Chris Wilson
2013-09-20 21:08 ` Ben Widawsky
2013-09-20 21:22 ` Daniel Vetter
2013-09-22 18:46 ` [PATCH] [v9] " Ben Widawsky
2013-09-23 8:39 ` Chris Wilson
2013-09-23 22:00 ` Ben Widawsky
2013-09-23 22:10 ` Chris Wilson
2013-09-19 14:47 ` [PATCH] [v6] " Chris Wilson
2013-09-19 17:41 ` Ben Widawsky
2013-09-19 18:36 ` Daniel Vetter
2013-09-14 22:03 ` [PATCH 6/6] drm/i915: eliminate vm->insert_entries() Ben Widawsky
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=20130918000203.GF6112@bwidawsk.net \
--to=ben@bwidawsk.net \
--cc=benjamin.widawsky@intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.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