diff options
author | Michel Thierry <michel.thierry@intel.com> | 2015-03-16 12:00:54 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-03-20 06:48:17 -0400 |
commit | 07749ef32c4fd60334c2451739460dd1cf600281 (patch) | |
tree | dd743b70522044e23424e22c603f62f446e55f7c /drivers/gpu/drm/i915/i915_gem_gtt.h | |
parent | d2d9cbbd224f5fc9254c9952a78bd8cfed3b96f9 (diff) |
drm/i915: page table generalizations
No functional changes, but will improve code clarity and removed some
duplicated defines.
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_gem_gtt.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.h | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h index c9e93f5070bc..5ca7c5eff88b 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h | |||
@@ -36,13 +36,13 @@ | |||
36 | 36 | ||
37 | struct drm_i915_file_private; | 37 | struct drm_i915_file_private; |
38 | 38 | ||
39 | typedef uint32_t gen6_gtt_pte_t; | 39 | typedef uint32_t gen6_pte_t; |
40 | typedef uint64_t gen8_gtt_pte_t; | 40 | typedef uint64_t gen8_pte_t; |
41 | typedef gen8_gtt_pte_t gen8_ppgtt_pde_t; | 41 | typedef uint64_t gen8_pde_t; |
42 | 42 | ||
43 | #define gtt_total_entries(gtt) ((gtt).base.total >> PAGE_SHIFT) | 43 | #define gtt_total_entries(gtt) ((gtt).base.total >> PAGE_SHIFT) |
44 | 44 | ||
45 | #define I915_PPGTT_PT_ENTRIES (PAGE_SIZE / sizeof(gen6_gtt_pte_t)) | 45 | |
46 | /* gen6-hsw has bit 11-4 for physical addr bit 39-32 */ | 46 | /* gen6-hsw has bit 11-4 for physical addr bit 39-32 */ |
47 | #define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) | 47 | #define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) |
48 | #define GEN6_PTE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) | 48 | #define GEN6_PTE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) |
@@ -51,8 +51,13 @@ typedef gen8_gtt_pte_t gen8_ppgtt_pde_t; | |||
51 | #define GEN6_PTE_UNCACHED (1 << 1) | 51 | #define GEN6_PTE_UNCACHED (1 << 1) |
52 | #define GEN6_PTE_VALID (1 << 0) | 52 | #define GEN6_PTE_VALID (1 << 0) |
53 | 53 | ||
54 | #define GEN6_PPGTT_PD_ENTRIES 512 | 54 | #define I915_PTES(pte_len) (PAGE_SIZE / (pte_len)) |
55 | #define GEN6_PD_SIZE (GEN6_PPGTT_PD_ENTRIES * PAGE_SIZE) | 55 | #define I915_PTE_MASK(pte_len) (I915_PTES(pte_len) - 1) |
56 | #define I915_PDES 512 | ||
57 | #define I915_PDE_MASK (I915_PDES - 1) | ||
58 | |||
59 | #define GEN6_PTES I915_PTES(sizeof(gen6_pte_t)) | ||
60 | #define GEN6_PD_SIZE (I915_PDES * PAGE_SIZE) | ||
56 | #define GEN6_PD_ALIGN (PAGE_SIZE * 16) | 61 | #define GEN6_PD_ALIGN (PAGE_SIZE * 16) |
57 | #define GEN6_PDE_VALID (1 << 0) | 62 | #define GEN6_PDE_VALID (1 << 0) |
58 | 63 | ||
@@ -89,8 +94,7 @@ typedef gen8_gtt_pte_t gen8_ppgtt_pde_t; | |||
89 | #define GEN8_PTE_SHIFT 12 | 94 | #define GEN8_PTE_SHIFT 12 |
90 | #define GEN8_PTE_MASK 0x1ff | 95 | #define GEN8_PTE_MASK 0x1ff |
91 | #define GEN8_LEGACY_PDPES 4 | 96 | #define GEN8_LEGACY_PDPES 4 |
92 | #define GEN8_PTES_PER_PAGE (PAGE_SIZE / sizeof(gen8_gtt_pte_t)) | 97 | #define GEN8_PTES I915_PTES(sizeof(gen8_pte_t)) |
93 | #define GEN8_PDES_PER_PAGE (PAGE_SIZE / sizeof(gen8_ppgtt_pde_t)) | ||
94 | 98 | ||
95 | #define PPAT_UNCACHED_INDEX (_PAGE_PWT | _PAGE_PCD) | 99 | #define PPAT_UNCACHED_INDEX (_PAGE_PWT | _PAGE_PCD) |
96 | #define PPAT_CACHED_PDE_INDEX 0 /* WB LLC */ | 100 | #define PPAT_CACHED_PDE_INDEX 0 /* WB LLC */ |
@@ -199,7 +203,7 @@ struct i915_page_directory_entry { | |||
199 | dma_addr_t daddr; | 203 | dma_addr_t daddr; |
200 | }; | 204 | }; |
201 | 205 | ||
202 | struct i915_page_table_entry *page_table[GEN6_PPGTT_PD_ENTRIES]; /* PDEs */ | 206 | struct i915_page_table_entry *page_table[I915_PDES]; /* PDEs */ |
203 | }; | 207 | }; |
204 | 208 | ||
205 | struct i915_page_directory_pointer_entry { | 209 | struct i915_page_directory_pointer_entry { |
@@ -243,9 +247,9 @@ struct i915_address_space { | |||
243 | struct list_head inactive_list; | 247 | struct list_head inactive_list; |
244 | 248 | ||
245 | /* FIXME: Need a more generic return type */ | 249 | /* FIXME: Need a more generic return type */ |
246 | gen6_gtt_pte_t (*pte_encode)(dma_addr_t addr, | 250 | gen6_pte_t (*pte_encode)(dma_addr_t addr, |
247 | enum i915_cache_level level, | 251 | enum i915_cache_level level, |
248 | bool valid, u32 flags); /* Create a valid PTE */ | 252 | bool valid, u32 flags); /* Create a valid PTE */ |
249 | void (*clear_range)(struct i915_address_space *vm, | 253 | void (*clear_range)(struct i915_address_space *vm, |
250 | uint64_t start, | 254 | uint64_t start, |
251 | uint64_t length, | 255 | uint64_t length, |