i965gm devices cannot relocate objects above 4GiB. This situation was already being handled in the older shmem GEM object backend, but not in TTM for BO's that are allocated in system memory. Borrow the code from shmem so that TTM handles them in the same way. Signed-off-by: Adrian Larumbe <adrian.larumbe@xxxxxxxxxxxxx> --- drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c index 0332d5214aab..b232aed4927e 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c @@ -207,6 +207,11 @@ static int i915_ttm_tt_shmem_populate(struct ttm_device *bdev, return PTR_ERR(filp); mask = GFP_HIGHUSER | __GFP_RECLAIMABLE; + if (IS_I965GM(i915) || IS_I965G(i915)) { + /* 965gm cannot relocate objects above 4GiB. */ + mask &= ~__GFP_HIGHMEM; + mask |= __GFP_DMA32; + } mapping = filp->f_mapping; mapping_set_gfp_mask(mapping, mask); -- 2.37.0