From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Report context GTT size
Date: Fri, 16 Oct 2015 17:34:55 +0100 [thread overview]
Message-ID: <5621272F.6090809@linux.intel.com> (raw)
In-Reply-To: <1444828631-14533-1-git-send-email-chris@chris-wilson.co.uk>
On 14/10/15 14:17, Chris Wilson wrote:
> Since the beginning we have conflated the size of the global GTT with
> that of the per-process context sizes. In recent times (gen8+), those
> are no longer the same where the global GTT is limited to 2/4GiB but the
> per-process GTT may be anything up to 256TiB. Userspace knows nothing of
> this discrepancy and outside of one or two hacks, uses the getaperture
> ioctl to determine the maximum size it can use. Let's leave that as
> reporting the global GTT and use the context reporting method to
> describe the per-process value (which naturally fallsback to reporting
> the aliasing or global on older platforms, so userspace can always use
> this method where available).
>
> Testcase: igt/gem_userptr_blits/minor-normal-sync
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90065
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gem_context.c | 8 ++++++++
> include/uapi/drm/i915_drm.h | 5 +++--
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
> index 339a9d628f1e..cecb156c6f76 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -1087,6 +1087,14 @@ int i915_gem_context_getparam_ioctl(struct drm_device *dev, void *data,
> case I915_CONTEXT_PARAM_NO_ZEROMAP:
> args->value = ctx->flags & CONTEXT_NO_ZEROMAP;
> break;
> + case I915_CONTEXT_PARAM_GTT_SIZE:
> + if (ctx->ppgtt)
> + args->value = ctx->ppgtt->base.total;
> + else if (to_i915(dev)->mm.aliasing_ppgtt)
> + args->value = to_i915(dev)->mm.aliasing_ppgtt->base.total;
> + else
> + args->value = to_i915(dev)->gtt.base.total;
> + break;
> default:
> ret = -EINVAL;
> break;
> diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h
> index 83f60f01dca2..3f334967aa1b 100644
> --- a/include/uapi/drm/i915_drm.h
> +++ b/include/uapi/drm/i915_drm.h
> @@ -1130,8 +1130,9 @@ struct drm_i915_gem_context_param {
> __u32 ctx_id;
> __u32 size;
> __u64 param;
> -#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
> -#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
> +#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
> +#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
> +#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
> __u64 value;
> };
Implementation looks fine,
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
I have a slight unknown relating to how long would this ABI be useful.
If things are moving towards SVM, and the fact pre-gen8 platforms can
already use get_aperture, would that make it a bit short lived?
And get_aperture would even be a better place for this if PPGTT size
will always be the same for all clients.
Only if we consider that one day we might want to regulate available
address space available to clients (so implement also a setter for the
context param), then per-ctx makes sense. (If again, SVM does not make
this irrelevant.)
This address space limiting kind of sounds interesting, together with
the incoming GPU scheduling priorities, but then for the both I am not
sure if an appropriate mechanism could be constructed to use it in a
classical Unix sense, where you could set limits and inherit them from
parent to child. To construct some sort of a launcher with lower
priority / memory use.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-10-16 16:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-14 13:17 [PATCH] drm/i915: Report context GTT size Chris Wilson
2015-10-16 13:22 ` Chris Wilson
2015-10-16 16:34 ` Tvrtko Ursulin [this message]
2015-10-16 17:31 ` Chris Wilson
2015-10-19 10:17 ` Daniel Vetter
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=5621272F.6090809@linux.intel.com \
--to=tvrtko.ursulin@linux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.