drm/i915/selftests: handle allocation failures
If we have to contend with non-mappable LMEM, then we need to ensure the object fits within the mappable portion, like in the selftests, where we later try to CPU access the pages. However if it can't then we need to gracefully handle this, without throwing an error. Also it looks like TTM will return -ENOMEM, in ttm_bo_mem_space() after exhausting all possible placements. Signed-off-by: Matthew Auld <matthew.auld@intel.com> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Acked-by: Nirmoy Das <nirmoy.das@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220228123607.580432-3-matthew.auld@intel.com
This commit is contained in:
parent
503725c2d9
commit
6e0c5bf0cc
|
@ -1345,7 +1345,7 @@ try_again:
|
|||
|
||||
err = i915_gem_object_pin_pages_unlocked(obj);
|
||||
if (err) {
|
||||
if (err == -ENXIO || err == -E2BIG) {
|
||||
if (err == -ENXIO || err == -E2BIG || err == -ENOMEM) {
|
||||
i915_gem_object_put(obj);
|
||||
size >>= 1;
|
||||
goto try_again;
|
||||
|
|
|
@ -822,8 +822,14 @@ static int igt_lmem_create_with_ps(void *arg)
|
|||
|
||||
i915_gem_object_lock(obj, NULL);
|
||||
err = i915_gem_object_pin_pages(obj);
|
||||
if (err)
|
||||
if (err) {
|
||||
if (err == -ENXIO || err == -E2BIG || err == -ENOMEM) {
|
||||
pr_info("%s not enough lmem for ps(%u) err=%d\n",
|
||||
__func__, ps, err);
|
||||
err = 0;
|
||||
}
|
||||
goto out_put;
|
||||
}
|
||||
|
||||
daddr = i915_gem_object_get_dma_address(obj, 0);
|
||||
if (!IS_ALIGNED(daddr, ps)) {
|
||||
|
|
Loading…
Reference in New Issue