Commit 6eebfe8a authored by Chris Wilson's avatar Chris Wilson

drm/i915/gtt: Use shallow dma pages for scratch

We only use the dma pages for scratch, and so do not need to allocate
the extra storage for the shadow page directory.

v2: Refrain from reintroducing I915_PDES
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190712075818.20616-1-chris@chris-wilson.co.uk
parent 3e1f0a51
This diff is collapsed.
...@@ -240,9 +240,6 @@ struct i915_page_dma { ...@@ -240,9 +240,6 @@ struct i915_page_dma {
}; };
}; };
#define px_base(px) (&(px)->base)
#define px_dma(px) (px_base(px)->daddr)
struct i915_page_table { struct i915_page_table {
struct i915_page_dma base; struct i915_page_dma base;
atomic_t used; atomic_t used;
...@@ -255,6 +252,20 @@ struct i915_page_directory { ...@@ -255,6 +252,20 @@ struct i915_page_directory {
void *entry[512]; void *entry[512];
}; };
#define __px_choose_expr(x, type, expr, other) \
__builtin_choose_expr( \
__builtin_types_compatible_p(typeof(x), type) || \
__builtin_types_compatible_p(typeof(x), const type), \
({ type __x = (type)(x); expr; }), \
other)
#define px_base(px) \
__px_choose_expr(px, struct i915_page_dma *, __x, \
__px_choose_expr(px, struct i915_page_table *, &__x->base, \
__px_choose_expr(px, struct i915_page_directory *, &__x->base, \
(void)0)))
#define px_dma(px) (px_base(px)->daddr)
struct i915_vma_ops { struct i915_vma_ops {
/* Map an object into an address space with the given cache flags. */ /* Map an object into an address space with the given cache flags. */
int (*bind_vma)(struct i915_vma *vma, int (*bind_vma)(struct i915_vma *vma,
...@@ -304,9 +315,9 @@ struct i915_address_space { ...@@ -304,9 +315,9 @@ struct i915_address_space {
u64 scratch_pte; u64 scratch_pte;
int scratch_order; int scratch_order;
struct i915_page_dma scratch_page; struct i915_page_dma scratch_page;
struct i915_page_table *scratch_pt; struct i915_page_dma scratch_pt;
struct i915_page_directory *scratch_pd; struct i915_page_dma scratch_pd;
struct i915_page_directory *scratch_pdp; /* GEN8+ & 48b PPGTT */ struct i915_page_dma scratch_pdp; /* GEN8+ & 48b PPGTT */
/** /**
* List of vma currently bound. * List of vma currently bound.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment