Commit 8f2c59f0 authored by Ben Widawsky's avatar Ben Widawsky Committed by Daniel Vetter

drm/i915: Add dev to ppgtt

Some subsequent commits will need to know what generation we're running
on to do different pte encoding for the ppgtt. Since it's not much
hassle or overhead to store it in the ppgtt structure, do that.
Signed-off-by: default avatarBen Widawsky <ben@bwidawsk.net>
Reviewed-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 8693607a
...@@ -345,6 +345,7 @@ struct intel_device_info { ...@@ -345,6 +345,7 @@ struct intel_device_info {
#define I915_PPGTT_PD_ENTRIES 512 #define I915_PPGTT_PD_ENTRIES 512
#define I915_PPGTT_PT_ENTRIES 1024 #define I915_PPGTT_PT_ENTRIES 1024
struct i915_hw_ppgtt { struct i915_hw_ppgtt {
struct drm_device *dev;
unsigned num_pd_entries; unsigned num_pd_entries;
struct page **pt_pages; struct page **pt_pages;
uint32_t pd_offset; uint32_t pd_offset;
......
...@@ -77,6 +77,7 @@ int i915_gem_init_aliasing_ppgtt(struct drm_device *dev) ...@@ -77,6 +77,7 @@ int i915_gem_init_aliasing_ppgtt(struct drm_device *dev)
if (!ppgtt) if (!ppgtt)
return ret; return ret;
ppgtt->dev = dev;
ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES;
ppgtt->pt_pages = kzalloc(sizeof(struct page *)*ppgtt->num_pd_entries, ppgtt->pt_pages = kzalloc(sizeof(struct page *)*ppgtt->num_pd_entries,
GFP_KERNEL); GFP_KERNEL);
...@@ -218,7 +219,7 @@ void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, ...@@ -218,7 +219,7 @@ void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt,
switch (cache_level) { switch (cache_level) {
case I915_CACHE_LLC_MLC: case I915_CACHE_LLC_MLC:
/* Haswell doesn't set L3 this way */ /* Haswell doesn't set L3 this way */
if (IS_HASWELL(obj->base.dev)) if (IS_HASWELL(ppgtt->dev))
pte_flags |= GEN6_PTE_CACHE_LLC; pte_flags |= GEN6_PTE_CACHE_LLC;
else else
pte_flags |= GEN6_PTE_CACHE_LLC_MLC; pte_flags |= GEN6_PTE_CACHE_LLC_MLC;
...@@ -227,7 +228,7 @@ void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, ...@@ -227,7 +228,7 @@ void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt,
pte_flags |= GEN6_PTE_CACHE_LLC; pte_flags |= GEN6_PTE_CACHE_LLC;
break; break;
case I915_CACHE_NONE: case I915_CACHE_NONE:
if (IS_HASWELL(obj->base.dev)) if (IS_HASWELL(ppgtt->dev))
pte_flags |= HSW_PTE_UNCACHED; pte_flags |= HSW_PTE_UNCACHED;
else else
pte_flags |= GEN6_PTE_UNCACHED; pte_flags |= GEN6_PTE_UNCACHED;
......
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