diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-03-29 19:59:50 -0400 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-05-10 16:56:43 -0400 |
commit | 93dfb40cd887c4f39e38f047c4d9ea0b7188a58a (patch) | |
tree | f10a6ac6b5e02361f6045795babbb81d5755ce90 /drivers/gpu | |
parent | e76d3630810b0ac5b07aa7ef28428c1bc2d10861 (diff) |
drm/i915: Rename agp_type to cache_level
... to clarify just how we use it inside the driver and remove the
confusion of the poorly matching agp_type names. We still need to
translate through agp_type for interface into the fake AGP driver.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.c | 35 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 4 |
6 files changed, 48 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 289dcbc81054..52d2306249cb 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -106,11 +106,12 @@ static const char *get_tiling_flag(struct drm_i915_gem_object *obj) | |||
106 | } | 106 | } |
107 | } | 107 | } |
108 | 108 | ||
109 | static const char *agp_type_str(int type) | 109 | static const char *cache_level_str(int type) |
110 | { | 110 | { |
111 | switch (type) { | 111 | switch (type) { |
112 | case 0: return " uncached"; | 112 | case I915_CACHE_NONE: return " uncached"; |
113 | case 1: return " snooped"; | 113 | case I915_CACHE_LLC: return " snooped (LLC)"; |
114 | case I915_CACHE_LLC_MLC: return " snooped (LLC+MLC)"; | ||
114 | default: return ""; | 115 | default: return ""; |
115 | } | 116 | } |
116 | } | 117 | } |
@@ -127,7 +128,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) | |||
127 | obj->base.write_domain, | 128 | obj->base.write_domain, |
128 | obj->last_rendering_seqno, | 129 | obj->last_rendering_seqno, |
129 | obj->last_fenced_seqno, | 130 | obj->last_fenced_seqno, |
130 | agp_type_str(obj->agp_type == AGP_USER_CACHED_MEMORY), | 131 | cache_level_str(obj->cache_level), |
131 | obj->dirty ? " dirty" : "", | 132 | obj->dirty ? " dirty" : "", |
132 | obj->madv == I915_MADV_DONTNEED ? " purgeable" : ""); | 133 | obj->madv == I915_MADV_DONTNEED ? " purgeable" : ""); |
133 | if (obj->base.name) | 134 | if (obj->base.name) |
@@ -714,7 +715,7 @@ static void print_error_buffers(struct seq_file *m, | |||
714 | dirty_flag(err->dirty), | 715 | dirty_flag(err->dirty), |
715 | purgeable_flag(err->purgeable), | 716 | purgeable_flag(err->purgeable), |
716 | ring_str(err->ring), | 717 | ring_str(err->ring), |
717 | agp_type_str(err->agp_type)); | 718 | cache_level_str(err->cache_level)); |
718 | 719 | ||
719 | if (err->name) | 720 | if (err->name) |
720 | seq_printf(m, " (name: %d)", err->name); | 721 | seq_printf(m, " (name: %d)", err->name); |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 3778b238356b..7a791f8a92bb 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -188,7 +188,7 @@ struct drm_i915_error_state { | |||
188 | u32 dirty:1; | 188 | u32 dirty:1; |
189 | u32 purgeable:1; | 189 | u32 purgeable:1; |
190 | u32 ring:4; | 190 | u32 ring:4; |
191 | u32 agp_type:1; | 191 | u32 cache_level:2; |
192 | } *active_bo, *pinned_bo; | 192 | } *active_bo, *pinned_bo; |
193 | u32 active_bo_count, pinned_bo_count; | 193 | u32 active_bo_count, pinned_bo_count; |
194 | struct intel_overlay_error_state *overlay; | 194 | struct intel_overlay_error_state *overlay; |
@@ -711,6 +711,12 @@ typedef struct drm_i915_private { | |||
711 | struct drm_property *broadcast_rgb_property; | 711 | struct drm_property *broadcast_rgb_property; |
712 | } drm_i915_private_t; | 712 | } drm_i915_private_t; |
713 | 713 | ||
714 | enum i915_cache_level { | ||
715 | I915_CACHE_NONE, | ||
716 | I915_CACHE_LLC, | ||
717 | I915_CACHE_LLC_MLC, /* gen6+ */ | ||
718 | }; | ||
719 | |||
714 | struct drm_i915_gem_object { | 720 | struct drm_i915_gem_object { |
715 | struct drm_gem_object base; | 721 | struct drm_gem_object base; |
716 | 722 | ||
@@ -797,6 +803,8 @@ struct drm_i915_gem_object { | |||
797 | unsigned int pending_fenced_gpu_access:1; | 803 | unsigned int pending_fenced_gpu_access:1; |
798 | unsigned int fenced_gpu_access:1; | 804 | unsigned int fenced_gpu_access:1; |
799 | 805 | ||
806 | unsigned int cache_level:2; | ||
807 | |||
800 | struct page **pages; | 808 | struct page **pages; |
801 | 809 | ||
802 | /** | 810 | /** |
@@ -833,8 +841,6 @@ struct drm_i915_gem_object { | |||
833 | /** Record of address bit 17 of each page at last unbind. */ | 841 | /** Record of address bit 17 of each page at last unbind. */ |
834 | unsigned long *bit_17; | 842 | unsigned long *bit_17; |
835 | 843 | ||
836 | /** AGP mapping type (AGP_USER_MEMORY or AGP_USER_CACHED_MEMORY */ | ||
837 | uint32_t agp_type; | ||
838 | 844 | ||
839 | /** | 845 | /** |
840 | * If present, while GEM_DOMAIN_CPU is in the read domain this array | 846 | * If present, while GEM_DOMAIN_CPU is in the read domain this array |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 7ce3f353af33..264bec8f1f1d 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -3569,7 +3569,7 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | |||
3569 | obj->base.write_domain = I915_GEM_DOMAIN_CPU; | 3569 | obj->base.write_domain = I915_GEM_DOMAIN_CPU; |
3570 | obj->base.read_domains = I915_GEM_DOMAIN_CPU; | 3570 | obj->base.read_domains = I915_GEM_DOMAIN_CPU; |
3571 | 3571 | ||
3572 | obj->agp_type = AGP_USER_MEMORY; | 3572 | obj->cache_level = I915_CACHE_NONE; |
3573 | obj->base.driver_private = NULL; | 3573 | obj->base.driver_private = NULL; |
3574 | obj->fence_reg = I915_FENCE_REG_NONE; | 3574 | obj->fence_reg = I915_FENCE_REG_NONE; |
3575 | INIT_LIST_HEAD(&obj->mm_list); | 3575 | INIT_LIST_HEAD(&obj->mm_list); |
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index b0abdc64aa9f..e46b645773cf 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c | |||
@@ -29,6 +29,26 @@ | |||
29 | #include "i915_trace.h" | 29 | #include "i915_trace.h" |
30 | #include "intel_drv.h" | 30 | #include "intel_drv.h" |
31 | 31 | ||
32 | /* XXX kill agp_type! */ | ||
33 | static unsigned int cache_level_to_agp_type(struct drm_device *dev, | ||
34 | enum i915_cache_level cache_level) | ||
35 | { | ||
36 | switch (cache_level) { | ||
37 | case I915_CACHE_LLC_MLC: | ||
38 | if (INTEL_INFO(dev)->gen >= 6) | ||
39 | return AGP_USER_CACHED_MEMORY_LLC_MLC; | ||
40 | /* Older chipsets do not have this extra level of CPU | ||
41 | * cacheing, so fallthrough and request the PTE simply | ||
42 | * as cached. | ||
43 | */ | ||
44 | case I915_CACHE_LLC: | ||
45 | return AGP_USER_CACHED_MEMORY; | ||
46 | default: | ||
47 | case I915_CACHE_NONE: | ||
48 | return AGP_USER_MEMORY; | ||
49 | } | ||
50 | } | ||
51 | |||
32 | void i915_gem_restore_gtt_mappings(struct drm_device *dev) | 52 | void i915_gem_restore_gtt_mappings(struct drm_device *dev) |
33 | { | 53 | { |
34 | struct drm_i915_private *dev_priv = dev->dev_private; | 54 | struct drm_i915_private *dev_priv = dev->dev_private; |
@@ -39,6 +59,9 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) | |||
39 | (dev_priv->mm.gtt_end - dev_priv->mm.gtt_start) / PAGE_SIZE); | 59 | (dev_priv->mm.gtt_end - dev_priv->mm.gtt_start) / PAGE_SIZE); |
40 | 60 | ||
41 | list_for_each_entry(obj, &dev_priv->mm.gtt_list, gtt_list) { | 61 | list_for_each_entry(obj, &dev_priv->mm.gtt_list, gtt_list) { |
62 | unsigned int agp_type = | ||
63 | cache_level_to_agp_type(dev, obj->cache_level); | ||
64 | |||
42 | i915_gem_clflush_object(obj); | 65 | i915_gem_clflush_object(obj); |
43 | 66 | ||
44 | if (dev_priv->mm.gtt->needs_dmar) { | 67 | if (dev_priv->mm.gtt->needs_dmar) { |
@@ -46,15 +69,14 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) | |||
46 | 69 | ||
47 | intel_gtt_insert_sg_entries(obj->sg_list, | 70 | intel_gtt_insert_sg_entries(obj->sg_list, |
48 | obj->num_sg, | 71 | obj->num_sg, |
49 | obj->gtt_space->start | 72 | obj->gtt_space->start >> PAGE_SHIFT, |
50 | >> PAGE_SHIFT, | 73 | agp_type); |
51 | obj->agp_type); | ||
52 | } else | 74 | } else |
53 | intel_gtt_insert_pages(obj->gtt_space->start | 75 | intel_gtt_insert_pages(obj->gtt_space->start |
54 | >> PAGE_SHIFT, | 76 | >> PAGE_SHIFT, |
55 | obj->base.size >> PAGE_SHIFT, | 77 | obj->base.size >> PAGE_SHIFT, |
56 | obj->pages, | 78 | obj->pages, |
57 | obj->agp_type); | 79 | agp_type); |
58 | } | 80 | } |
59 | 81 | ||
60 | intel_gtt_chipset_flush(); | 82 | intel_gtt_chipset_flush(); |
@@ -64,6 +86,7 @@ int i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj) | |||
64 | { | 86 | { |
65 | struct drm_device *dev = obj->base.dev; | 87 | struct drm_device *dev = obj->base.dev; |
66 | struct drm_i915_private *dev_priv = dev->dev_private; | 88 | struct drm_i915_private *dev_priv = dev->dev_private; |
89 | unsigned int agp_type = cache_level_to_agp_type(dev, obj->cache_level); | ||
67 | int ret; | 90 | int ret; |
68 | 91 | ||
69 | if (dev_priv->mm.gtt->needs_dmar) { | 92 | if (dev_priv->mm.gtt->needs_dmar) { |
@@ -77,12 +100,12 @@ int i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj) | |||
77 | intel_gtt_insert_sg_entries(obj->sg_list, | 100 | intel_gtt_insert_sg_entries(obj->sg_list, |
78 | obj->num_sg, | 101 | obj->num_sg, |
79 | obj->gtt_space->start >> PAGE_SHIFT, | 102 | obj->gtt_space->start >> PAGE_SHIFT, |
80 | obj->agp_type); | 103 | agp_type); |
81 | } else | 104 | } else |
82 | intel_gtt_insert_pages(obj->gtt_space->start >> PAGE_SHIFT, | 105 | intel_gtt_insert_pages(obj->gtt_space->start >> PAGE_SHIFT, |
83 | obj->base.size >> PAGE_SHIFT, | 106 | obj->base.size >> PAGE_SHIFT, |
84 | obj->pages, | 107 | obj->pages, |
85 | obj->agp_type); | 108 | agp_type); |
86 | 109 | ||
87 | return 0; | 110 | return 0; |
88 | } | 111 | } |
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 46ccfc814ea7..6225c336de30 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c | |||
@@ -676,7 +676,7 @@ static u32 capture_bo_list(struct drm_i915_error_buffer *err, | |||
676 | err->dirty = obj->dirty; | 676 | err->dirty = obj->dirty; |
677 | err->purgeable = obj->madv != I915_MADV_WILLNEED; | 677 | err->purgeable = obj->madv != I915_MADV_WILLNEED; |
678 | err->ring = obj->ring ? obj->ring->id : 0; | 678 | err->ring = obj->ring ? obj->ring->id : 0; |
679 | err->agp_type = obj->agp_type == AGP_USER_CACHED_MEMORY; | 679 | err->cache_level = obj->cache_level; |
680 | 680 | ||
681 | if (++i == count) | 681 | if (++i == count) |
682 | break; | 682 | break; |
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index 07e59072e129..bf63869f6a07 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -236,7 +236,7 @@ init_pipe_control(struct intel_ring_buffer *ring) | |||
236 | ret = -ENOMEM; | 236 | ret = -ENOMEM; |
237 | goto err; | 237 | goto err; |
238 | } | 238 | } |
239 | obj->agp_type = AGP_USER_CACHED_MEMORY; | 239 | obj->cache_level = I915_CACHE_LLC; |
240 | 240 | ||
241 | ret = i915_gem_object_pin(obj, 4096, true); | 241 | ret = i915_gem_object_pin(obj, 4096, true); |
242 | if (ret) | 242 | if (ret) |
@@ -759,7 +759,7 @@ static int init_status_page(struct intel_ring_buffer *ring) | |||
759 | ret = -ENOMEM; | 759 | ret = -ENOMEM; |
760 | goto err; | 760 | goto err; |
761 | } | 761 | } |
762 | obj->agp_type = AGP_USER_CACHED_MEMORY; | 762 | obj->cache_level = I915_CACHE_LLC; |
763 | 763 | ||
764 | ret = i915_gem_object_pin(obj, 4096, true); | 764 | ret = i915_gem_object_pin(obj, 4096, true); |
765 | if (ret != 0) { | 765 | if (ret != 0) { |