On 2018-04-18 04:34 AM, Christian König wrote: > Am 18.04.2018 um 06:14 schrieb Alex Deucher: >> On Tue, Apr 17, 2018 at 8:40 PM, Samuel Li <Samuel.Li at amd.com> wrote: >>> It's auto by default. For CZ/ST, auto setting enables sg display >>> when vram size is small; otherwise still uses vram. >>> This patch fixed some potention hang issue introduced by change >>> "allow framebuffer in GART memory as well" due to CZ/ST hardware >>> limitation. >>> >>> v2: Change default setting to auto. >>> v3: Move some logic from amdgpu_display_framebuffer_domains() >>>     to pin function, suggested by Christian. >>> Signed-off-by: Samuel Li <Samuel.Li at amd.com> >>> --- >>>  drivers/gpu/drm/amd/amdgpu/amdgpu.h              | 2 ++ >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c      | 4 ++-- >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.h      | 2 +- >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c          | 4 ++++ >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c           | 2 +- >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_object.c       | 25 +++++++++++++++++++++-- >>>  drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c        | 2 +- >>>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 +-- >>>  8 files changed, 35 insertions(+), 9 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h [...] >> This is a bug fix and should be split out into a separate patch. >> >>> + >>> +      /* display buffer */ >>> +#if defined(CONFIG_DRM_AMD_DC) > > Please drop that #if, we certainly don't want this to be depend on any define. OK. > >>> +      if (adev->asic_type >= CHIP_CARRIZO && adev->asic_type < CHIP_RAVEN && >>> +          adev->flags & AMD_IS_APU && >>> +          amdgpu_device_asic_has_dc_support(adev->asic_type) && > > Those checks are static and don't depend on the BO. So they should be in amdgpu_display_supported_domains(). OK. That is going to be risky for the future though. Regards, Samuel Li > > Regards, > Christian. > >>> +          domain == (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) { >>> +              if (amdgpu_sg_display == 1) >>> +                      domain = AMDGPU_GEM_DOMAIN_GTT; >>> +              else if (amdgpu_sg_display == -1) { >>> +                      if (adev->gmc.real_vram_size < AMDGPU_SG_THRESHOLD) >>> +                              domain = AMDGPU_GEM_DOMAIN_GTT; >>> +                      else >>> +                              domain = AMDGPU_GEM_DOMAIN_VRAM; >>> +              } >> I thought we were dropping the module parameter. Also, we had talked >> about taking preferred domains into account here as well, but that can >> be a follow on patch. >> >> Alex >> >>> +      } >>> +#endif >>> >>>         if (bo->pin_count) { >>>                 uint32_t mem_type = bo->tbo.mem.mem_type; >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c >>> index 4b584cb7..cf0749f 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_prime.c >>> @@ -209,7 +209,7 @@ static int amdgpu_gem_begin_cpu_access(struct dma_buf *dma_buf, >>>         struct amdgpu_bo *bo = gem_to_amdgpu_bo(dma_buf->priv); >>>         struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); >>>         struct ttm_operation_ctx ctx = { true, false }; >>> -      u32 domain = amdgpu_display_framebuffer_domains(adev); >>> +      u32 domain = amdgpu_display_supported_domains(adev); >>>         int ret; >>>         bool reads = (direction == DMA_BIDIRECTIONAL || >>>                       direction == DMA_FROM_DEVICE); >>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> index 6f92a19..1f5603a 100644 >>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >>> @@ -3109,12 +3109,11 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane, >>>                 return r; >>> >>>         if (plane->type != DRM_PLANE_TYPE_CURSOR) >>> -              domain = amdgpu_display_framebuffer_domains(adev); >>> +              domain = amdgpu_display_supported_domains(adev); >>>         else >>>                 domain = AMDGPU_GEM_DOMAIN_VRAM; >>> >>>         r = amdgpu_bo_pin(rbo, domain, &afb->address); >>> - >>>         amdgpu_bo_unreserve(rbo); >>> >>>         if (unlikely(r != 0)) { >>> -- >>> 2.7.4 >>> >>> _______________________________________________ >>> amd-gfx mailing list >>> amd-gfx at lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx >