[Intel-gfx] [PATCH v3] drm/i915: Avoid writing relocs with addresses in non-canonical form
Chris Wilson
chris at chris-wilson.co.uk
Fri Dec 18 08:31:08 PST 2015
On Fri, Dec 11, 2015 at 03:13:37PM +0100, Michał Winiarski wrote:
> According to bspec, some parts of HW require the addresses to be in
> a canonical form, where bits [63:48] == [47]. Let's convert addresses to
> canonical form prior to relocating and return converted offsets to
> userspace. We also need to make sure that userspace is using addresses
> in canonical form in case of softpin.
>
> v2: Whitespace fixup, gen8_canonical_addr description (Chris, Ville)
> v3: Rebase on top of softpin, fix a hole in relocate_entry,
> s/expect/require (Chris)
>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Michel Thierry <michel.thierry at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 9 +++++++--
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 21 +++++++++++++++------
> drivers/gpu/drm/i915/i915_gem_gtt.h | 12 ++++++++++++
> 3 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 8e2acde..b83207b 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3482,12 +3482,17 @@ i915_gem_object_bind_to_vm(struct drm_i915_gem_object *obj,
>
> if (flags & PIN_OFFSET_FIXED) {
> uint64_t offset = flags & PIN_OFFSET_MASK;
> + uint64_t noncanonical_offset = offset & ((1ULL << 48) - 1);
No. Core GEM doesn't care about canonical addresses, it just operates
with respect to the drm_mm range manager.
More importantly you missed that the only chance we have to validate the
user parameters is during validate_exec_list().
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list