Message ID | 20211208141613.7251-5-ramalingam.c@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Basic enabling of 64k page support | expand |
Hi Matt and Ram, On Wed, Dec 08, 2021 at 07:46:13PM +0530, Ramalingam C wrote: > From: Matthew Auld <matthew.auld@intel.com> > > If the device needs 64K minimum GTT pages for device local-memory, > like on XEHPSDV, then we need to fail the allocation if we can't > meet it, instead of falling back to 4K pages, otherwise we can't > safely support the insertion of device local-memory pages for > this vm, since the HW expects the correct physical alignment and > size for every PTE, if we mark the page-table as 64K GTT mode. > > v2: s/userpsace/userspace [Thomas] > > Signed-off-by: Matthew Auld <matthew.auld@intel.com> > Signed-off-by: Ramalingam C <ramalingam.c@intel.com> > Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Andi
diff --git a/drivers/gpu/drm/i915/gt/intel_gtt.c b/drivers/gpu/drm/i915/gt/intel_gtt.c index 1428e2b9075a..b30e4478f098 100644 --- a/drivers/gpu/drm/i915/gt/intel_gtt.c +++ b/drivers/gpu/drm/i915/gt/intel_gtt.c @@ -337,6 +337,18 @@ int setup_scratch_page(struct i915_address_space *vm) if (size == I915_GTT_PAGE_SIZE_4K) return -ENOMEM; + /* + * If we need 64K minimum GTT pages for device local-memory, + * like on XEHPSDV, then we need to fail the allocation here, + * otherwise we can't safely support the insertion of + * local-memory pages for this vm, since the HW expects the + * correct physical alignment and size when the page-table is + * operating in 64K GTT mode, which includes any scratch PTEs, + * since userspace can still touch them. + */ + if (HAS_64K_PAGES(vm->i915)) + return -ENOMEM; + size = I915_GTT_PAGE_SIZE_4K; } while (1); }