Rev 2340 | Rev 2351 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2340 | Rev 2344 | ||
---|---|---|---|
Line 51... | Line 51... | ||
51 | case I915_CACHE_NONE: |
51 | case I915_CACHE_NONE: |
52 | return AGP_USER_MEMORY; |
52 | return AGP_USER_MEMORY; |
53 | } |
53 | } |
54 | } |
54 | } |
Line -... | Line 55... | ||
- | 55 | ||
- | 56 | static bool do_idling(struct drm_i915_private *dev_priv) |
|
- | 57 | { |
|
- | 58 | bool ret = dev_priv->mm.interruptible; |
|
- | 59 | ||
- | 60 | if (unlikely(dev_priv->mm.gtt->do_idle_maps)) { |
|
- | 61 | dev_priv->mm.interruptible = false; |
|
- | 62 | if (i915_gpu_idle(dev_priv->dev)) { |
|
- | 63 | DRM_ERROR("Couldn't idle GPU\n"); |
|
- | 64 | /* Wait a bit, in hopes it avoids the hang */ |
|
55 | 65 | udelay(10); |
|
- | 66 | } |
|
- | 67 | } |
|
- | 68 | ||
- | 69 | return ret; |
|
- | 70 | } |
|
- | 71 | ||
- | 72 | static void undo_idling(struct drm_i915_private *dev_priv, bool interruptible) |
|
- | 73 | { |
|
- | 74 | if (unlikely(dev_priv->mm.gtt->do_idle_maps)) |
|
- | 75 | dev_priv->mm.interruptible = interruptible; |
|
Line -... | Line 76... | ||
- | 76 | } |
|
56 | #if 0 |
77 | |
57 | 78 | #if 0 |
|
58 | void i915_gem_restore_gtt_mappings(struct drm_device *dev) |
79 | void i915_gem_restore_gtt_mappings(struct drm_device *dev) |
59 | { |
80 | { |
Line 121... | Line 142... | ||
121 | obj->base.size >> PAGE_SHIFT, |
142 | obj->base.size >> PAGE_SHIFT, |
122 | obj->pages, |
143 | obj->pages, |
123 | agp_type); |
144 | agp_type); |
124 | } |
145 | } |
Line -... | Line 146... | ||
- | 146 | ||
- | 147 | #endif |
|
125 | 148 | ||
126 | void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj) |
149 | void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj) |
- | 150 | { |
|
- | 151 | struct drm_device *dev = obj->base.dev; |
|
- | 152 | struct drm_i915_private *dev_priv = dev->dev_private; |
|
- | 153 | bool interruptible; |
|
- | 154 | ||
- | 155 | interruptible = do_idling(dev_priv); |
|
127 | { |
156 | |
128 | intel_gtt_clear_range(obj->gtt_space->start >> PAGE_SHIFT, |
157 | intel_gtt_clear_range(obj->gtt_space->start >> PAGE_SHIFT, |
Line 129... | Line 158... | ||
129 | obj->base.size >> PAGE_SHIFT); |
158 | obj->base.size >> PAGE_SHIFT); |
130 | 159 | ||
131 | if (obj->sg_list) { |
160 | if (obj->sg_list) { |
132 | intel_gtt_unmap_memory(obj->sg_list, obj->num_sg); |
161 | // intel_gtt_unmap_memory(obj->sg_list, obj->num_sg); |
133 | obj->sg_list = NULL; |
- | |
Line -... | Line 162... | ||
- | 162 | obj->sg_list = NULL; |
|
134 | } |
163 | } |