diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2010-02-19 05:52:00 -0500 |
|---|---|---|
| committer | Eric Anholt <eric@anholt.net> | 2010-02-26 16:23:21 -0500 |
| commit | 4df2faf4512c2e2ffa6793e055c73a4e7b8b5e36 (patch) | |
| tree | 8cda947d8231745aa91085e36b210d5bb8d7651b /drivers/gpu | |
| parent | 63560396536e9eb8858826fcbfc14d4015a41a95 (diff) | |
drm/i915: reuse i915_gpu_idle helper
We have it, so use it. This required moving the function to avoid
a forward declaration.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 56 |
1 files changed, 25 insertions, 31 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 4b6d427ff7cd..2571d1f543ef 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -2095,11 +2095,34 @@ i915_gem_find_inactive_object(struct drm_device *dev, int min_size) | |||
| 2095 | } | 2095 | } |
| 2096 | 2096 | ||
| 2097 | static int | 2097 | static int |
| 2098 | i915_gpu_idle(struct drm_device *dev) | ||
| 2099 | { | ||
| 2100 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
| 2101 | bool lists_empty; | ||
| 2102 | uint32_t seqno; | ||
| 2103 | |||
| 2104 | spin_lock(&dev_priv->mm.active_list_lock); | ||
| 2105 | lists_empty = list_empty(&dev_priv->mm.flushing_list) && | ||
| 2106 | list_empty(&dev_priv->mm.active_list); | ||
| 2107 | spin_unlock(&dev_priv->mm.active_list_lock); | ||
| 2108 | |||
| 2109 | if (lists_empty) | ||
| 2110 | return 0; | ||
| 2111 | |||
| 2112 | /* Flush everything onto the inactive list. */ | ||
| 2113 | i915_gem_flush(dev, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); | ||
| 2114 | seqno = i915_add_request(dev, NULL, I915_GEM_GPU_DOMAINS); | ||
| 2115 | if (seqno == 0) | ||
| 2116 | return -ENOMEM; | ||
| 2117 | |||
| 2118 | return i915_wait_request(dev, seqno); | ||
| 2119 | } | ||
| 2120 | |||
| 2121 | static int | ||
| 2098 | i915_gem_evict_everything(struct drm_device *dev) | 2122 | i915_gem_evict_everything(struct drm_device *dev) |
| 2099 | { | 2123 | { |
| 2100 | drm_i915_private_t *dev_priv = dev->dev_private; | 2124 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 2101 | int ret; | 2125 | int ret; |
| 2102 | uint32_t seqno; | ||
| 2103 | bool lists_empty; | 2126 | bool lists_empty; |
| 2104 | 2127 | ||
| 2105 | spin_lock(&dev_priv->mm.active_list_lock); | 2128 | spin_lock(&dev_priv->mm.active_list_lock); |
| @@ -2112,12 +2135,7 @@ i915_gem_evict_everything(struct drm_device *dev) | |||
| 2112 | return -ENOSPC; | 2135 | return -ENOSPC; |
| 2113 | 2136 | ||
| 2114 | /* Flush everything (on to the inactive lists) and evict */ | 2137 | /* Flush everything (on to the inactive lists) and evict */ |
| 2115 | i915_gem_flush(dev, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); | 2138 | ret = i915_gpu_idle(dev); |
| 2116 | seqno = i915_add_request(dev, NULL, I915_GEM_GPU_DOMAINS); | ||
| 2117 | if (seqno == 0) | ||
| 2118 | return -ENOMEM; | ||
| 2119 | |||
| 2120 | ret = i915_wait_request(dev, seqno); | ||
| 2121 | if (ret) | 2139 | if (ret) |
| 2122 | return ret; | 2140 | return ret; |
| 2123 | 2141 | ||
| @@ -4475,30 +4493,6 @@ i915_gem_evict_from_inactive_list(struct drm_device *dev) | |||
| 4475 | return 0; | 4493 | return 0; |
| 4476 | } | 4494 | } |
| 4477 | 4495 | ||
| 4478 | static int | ||
| 4479 | i915_gpu_idle(struct drm_device *dev) | ||
| 4480 | { | ||
| 4481 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
| 4482 | bool lists_empty; | ||
| 4483 | uint32_t seqno; | ||
| 4484 | |||
| 4485 | spin_lock(&dev_priv->mm.active_list_lock); | ||
| 4486 | lists_empty = list_empty(&dev_priv->mm.flushing_list) && | ||
| 4487 | list_empty(&dev_priv->mm.active_list); | ||
| 4488 | spin_unlock(&dev_priv->mm.active_list_lock); | ||
| 4489 | |||
| 4490 | if (lists_empty) | ||
| 4491 | return 0; | ||
| 4492 | |||
| 4493 | /* Flush everything onto the inactive list. */ | ||
| 4494 | i915_gem_flush(dev, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS); | ||
| 4495 | seqno = i915_add_request(dev, NULL, I915_GEM_GPU_DOMAINS); | ||
| 4496 | if (seqno == 0) | ||
| 4497 | return -ENOMEM; | ||
| 4498 | |||
| 4499 | return i915_wait_request(dev, seqno); | ||
| 4500 | } | ||
| 4501 | |||
| 4502 | int | 4496 | int |
| 4503 | i915_gem_idle(struct drm_device *dev) | 4497 | i915_gem_idle(struct drm_device *dev) |
| 4504 | { | 4498 | { |
