drm/i915: Bail if we attempt to allocate pages for a purged object
Move the existing checking inside bind_to_gtt() to the more appropriate layer in order to prevent recreation of the pages after they have been explicitly truncated. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Родитель
dd624afd53
Коммит
43e28f092b
|
@ -1828,6 +1828,11 @@ i915_gem_object_get_pages(struct drm_i915_gem_object *obj)
|
|||
if (obj->pages)
|
||||
return 0;
|
||||
|
||||
if (obj->madv != I915_MADV_WILLNEED) {
|
||||
DRM_ERROR("Attempting to obtain a purgeable object\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
BUG_ON(obj->pages_pin_count);
|
||||
|
||||
ret = ops->get_pages(obj);
|
||||
|
@ -2440,7 +2445,7 @@ int
|
|||
i915_gem_object_unbind(struct drm_i915_gem_object *obj)
|
||||
{
|
||||
drm_i915_private_t *dev_priv = obj->base.dev->dev_private;
|
||||
int ret = 0;
|
||||
int ret;
|
||||
|
||||
if (obj->gtt_space == NULL)
|
||||
return 0;
|
||||
|
@ -2880,11 +2885,6 @@ i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj,
|
|||
bool mappable, fenceable;
|
||||
int ret;
|
||||
|
||||
if (obj->madv != I915_MADV_WILLNEED) {
|
||||
DRM_ERROR("Attempting to bind a purgeable object\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fence_size = i915_gem_get_gtt_size(dev,
|
||||
obj->base.size,
|
||||
obj->tiling_mode);
|
||||
|
|
Загрузка…
Ссылка в новой задаче