Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 166034
b: refs/heads/master
c: 9731129
h: refs/heads/master
v: v3
  • Loading branch information
Chris Wilson committed Sep 23, 2009
1 parent 5d3aacf commit 153c336
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2d7ef395b310e17c86fa6190f21ea1f2eccae5d1
refs/heads/master: 9731129c5e3077d0c2da13479f91c3a07e341f70
40 changes: 7 additions & 33 deletions trunk/drivers/gpu/drm/i915/i915_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -2078,27 +2078,14 @@ i915_gem_evict_everything(struct drm_device *dev)
int ret;
bool lists_empty;

DRM_INFO("GTT full, evicting everything: "
"%d objects [%d pinned], "
"%d object bytes [%d pinned], "
"%d/%d gtt bytes\n",
atomic_read(&dev->object_count),
atomic_read(&dev->pin_count),
atomic_read(&dev->object_memory),
atomic_read(&dev->pin_memory),
atomic_read(&dev->gtt_memory),
dev->gtt_total);

spin_lock(&dev_priv->mm.active_list_lock);
lists_empty = (list_empty(&dev_priv->mm.inactive_list) &&
list_empty(&dev_priv->mm.flushing_list) &&
list_empty(&dev_priv->mm.active_list));
spin_unlock(&dev_priv->mm.active_list_lock);

if (lists_empty) {
DRM_ERROR("GTT full, but lists empty!\n");
if (lists_empty)
return -ENOSPC;
}

/* Flush everything (on to the inactive lists) and evict */
i915_gem_flush(dev, I915_GEM_GPU_DOMAINS, I915_GEM_GPU_DOMAINS);
Expand Down Expand Up @@ -2209,10 +2196,9 @@ i915_gem_evict_something(struct drm_device *dev, int min_size)
* large enough to swap out for the new one, so just evict
* everything and start again. (This should be rare.)
*/
if (!list_empty (&dev_priv->mm.inactive_list)) {
DRM_INFO("GTT full, evicting inactive buffers\n");
if (!list_empty (&dev_priv->mm.inactive_list))
return i915_gem_evict_from_inactive_list(dev);
} else
else
return i915_gem_evict_everything(dev);
}
}
Expand All @@ -2237,7 +2223,6 @@ i915_gem_object_get_pages(struct drm_gem_object *obj)
BUG_ON(obj_priv->pages != NULL);
obj_priv->pages = drm_calloc_large(page_count, sizeof(struct page *));
if (obj_priv->pages == NULL) {
DRM_ERROR("Failed to allocate page list\n");
obj_priv->pages_refcount--;
return -ENOMEM;
}
Expand Down Expand Up @@ -2605,11 +2590,9 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
DRM_INFO("%s: GTT full, evicting something\n", __func__);
#endif
ret = i915_gem_evict_something(dev, obj->size);
if (ret != 0) {
if (ret != -ERESTARTSYS)
DRM_ERROR("Failed to evict a buffer %d\n", ret);
if (ret)
return ret;
}

goto search_free;
}

Expand All @@ -2634,9 +2617,6 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
/* first try to clear up some space from the GTT */
ret = i915_gem_evict_something(dev, obj->size);
if (ret) {
if (ret != -ERESTARTSYS)
DRM_ERROR("Failed to allocate space for backing pages %d\n", ret);

/* now try to shrink everyone else */
if (! retry_alloc) {
retry_alloc = true;
Expand Down Expand Up @@ -2666,11 +2646,8 @@ i915_gem_object_bind_to_gtt(struct drm_gem_object *obj, unsigned alignment)
obj_priv->gtt_space = NULL;

ret = i915_gem_evict_something(dev, obj->size);
if (ret) {
if (ret != -ERESTARTSYS)
DRM_ERROR("Failed to allocate space to bind AGP: %d\n", ret);
if (ret)
return ret;
}

goto search_free;
}
Expand Down Expand Up @@ -3870,11 +3847,8 @@ i915_gem_object_pin(struct drm_gem_object *obj, uint32_t alignment)
i915_verify_inactive(dev, __FILE__, __LINE__);
if (obj_priv->gtt_space == NULL) {
ret = i915_gem_object_bind_to_gtt(obj, alignment);
if (ret != 0) {
if (ret != -EBUSY && ret != -ERESTARTSYS)
DRM_ERROR("Failure to bind: %d\n", ret);
if (ret)
return ret;
}
}
/*
* Pre-965 chips need a fence register set up in order to
Expand Down

0 comments on commit 153c336

Please sign in to comment.