Am 23.06.2017 um 19:39 schrieb John Brooks: > amdgpu_ttm_placement_init() callers that are using both VRAM and GTT as > domains usually don't want visible VRAM as a busy placement. > > Signed-off-by: John Brooks <john at fastquake.com> NAK to this as well. Some callers of amdgpu_ttm_placement_init() have hard placement limitations that BOs *MUST* be in VRAM (VM page tables and old UVD hardware). So changing that here will just break those under memory pressure. Regards, Christian. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 751bc05..0ff555a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -138,7 +138,15 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev, > if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS) > places[c].flags |= TTM_PL_FLAG_CONTIGUOUS; > > - busy_places[bc++] = places[c++]; > + /* Don't set limited visible VRAM as a busy placement if we can > + * use GTT instead > + */ > + if (!((flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) && > + adev->mc.visible_vram_size < adev->mc.real_vram_size && > + (domain & AMDGPU_GEM_DOMAIN_GTT))) > + busy_places[bc++] = places[c]; > + > + c++; > } > > if (domain & AMDGPU_GEM_DOMAIN_GTT) {