* [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB @ 2021-08-26 18:07 Rajib Mahapatra 2021-08-26 18:18 ` Deucher, Alexander 0 siblings, 1 reply; 4+ messages in thread From: Rajib Mahapatra @ 2021-08-26 18:07 UTC (permalink / raw) To: Harry Wentland, Nicholas Kazlauskas, Alex Deucher, hersenxs.wu Cc: amd-gfx, Rajib Mahapatra [Why] In lower carve out (<= 32 MB) devices, it was unable to pin framebuffer in VRAM domain for some BO allocations. The device shows below error logs and sometimes it reboots too. amdgpu 0000:02:00.0: amdgpu: 00000000d721431c pin failed [drm:dm_plane_helper_prepare_fb] *ERROR* Failed to pin framebuffer with error -12 [How] Place the domain as GTT when VRAM size <= 32 MB. Signed-off-by: Rajib Mahapatra <rajib.mahapatra@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index dc3c6b3a00e5..d719be448eec 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -236,6 +236,7 @@ extern int amdgpu_num_kcq; #define AMDGPU_VM_MAX_NUM_CTX 4096 #define AMDGPU_SG_THRESHOLD (256*1024*1024) +#define AMDGPU_VRAM_MIN_THRESHOLD (32*1024*1024) #define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */ #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 #define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 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 e1e57e7465a7..f71391599be1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7106,8 +7106,16 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane, return r; } - if (plane->type != DRM_PLANE_TYPE_CURSOR) + if (plane->type != DRM_PLANE_TYPE_CURSOR) { domain = amdgpu_display_supported_domains(adev, rbo->flags); + /* + * Handle devices with lower carve out. + */ + if (adev->gmc.real_vram_size <= AMDGPU_VRAM_MIN_THRESHOLD) { + domain |= (domain & AMDGPU_GEM_DOMAIN_GTT) ? domain : + AMDGPU_GEM_DOMAIN_GTT; + } + } else domain = AMDGPU_GEM_DOMAIN_VRAM; -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB 2021-08-26 18:07 [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB Rajib Mahapatra @ 2021-08-26 18:18 ` Deucher, Alexander 2021-08-27 4:37 ` Mahapatra, Rajib 0 siblings, 1 reply; 4+ messages in thread From: Deucher, Alexander @ 2021-08-26 18:18 UTC (permalink / raw) To: Mahapatra, Rajib, Wentland, Harry, Kazlauskas, Nicholas, Wu, Hersen Cc: amd-gfx [-- Attachment #1: Type: text/plain, Size: 2971 bytes --] [Public] I think this may have already been fixed with this patch: https://gitlab.freedesktop.org/agd5f/linux/-/commit/2a7b9a8437130fd328001f4edfac8eec98dfe298 Alex ________________________________ From: Mahapatra, Rajib <Rajib.Mahapatra@amd.com> Sent: Thursday, August 26, 2021 2:07 PM To: Wentland, Harry <Harry.Wentland@amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Wu, Hersen <hersenxs.wu@amd.com> Cc: amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; Mahapatra, Rajib <Rajib.Mahapatra@amd.com> Subject: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB [Why] In lower carve out (<= 32 MB) devices, it was unable to pin framebuffer in VRAM domain for some BO allocations. The device shows below error logs and sometimes it reboots too. amdgpu 0000:02:00.0: amdgpu: 00000000d721431c pin failed [drm:dm_plane_helper_prepare_fb] *ERROR* Failed to pin framebuffer with error -12 [How] Place the domain as GTT when VRAM size <= 32 MB. Signed-off-by: Rajib Mahapatra <rajib.mahapatra@amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index dc3c6b3a00e5..d719be448eec 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -236,6 +236,7 @@ extern int amdgpu_num_kcq; #define AMDGPU_VM_MAX_NUM_CTX 4096 #define AMDGPU_SG_THRESHOLD (256*1024*1024) +#define AMDGPU_VRAM_MIN_THRESHOLD (32*1024*1024) #define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */ #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 #define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 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 e1e57e7465a7..f71391599be1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7106,8 +7106,16 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane, return r; } - if (plane->type != DRM_PLANE_TYPE_CURSOR) + if (plane->type != DRM_PLANE_TYPE_CURSOR) { domain = amdgpu_display_supported_domains(adev, rbo->flags); + /* + * Handle devices with lower carve out. + */ + if (adev->gmc.real_vram_size <= AMDGPU_VRAM_MIN_THRESHOLD) { + domain |= (domain & AMDGPU_GEM_DOMAIN_GTT) ? domain : + AMDGPU_GEM_DOMAIN_GTT; + } + } else domain = AMDGPU_GEM_DOMAIN_VRAM; -- 2.25.1 [-- Attachment #2: Type: text/html, Size: 6257 bytes --] ^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB 2021-08-26 18:18 ` Deucher, Alexander @ 2021-08-27 4:37 ` Mahapatra, Rajib 2021-08-27 4:57 ` Alex Deucher 0 siblings, 1 reply; 4+ messages in thread From: Mahapatra, Rajib @ 2021-08-27 4:37 UTC (permalink / raw) To: Deucher, Alexander, Wentland, Harry, Kazlauskas, Nicholas, Wu, Hersen Cc: amd-gfx [-- Attachment #1: Type: text/plain, Size: 3763 bytes --] [Public] Thanks Alex for your reply. The patch is not fixing our issue. Thanks -Rajib From: Deucher, Alexander <Alexander.Deucher@amd.com> Sent: Thursday, August 26, 2021 11:48 PM To: Mahapatra, Rajib <Rajib.Mahapatra@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com>; Wu, Hersen <hersenxs.wu@amd.com> Cc: amd-gfx@lists.freedesktop.org Subject: Re: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB [Public] I think this may have already been fixed with this patch: https://gitlab.freedesktop.org/agd5f/linux/-/commit/2a7b9a8437130fd328001f4edfac8eec98dfe298 Alex ________________________________ From: Mahapatra, Rajib <Rajib.Mahapatra@amd.com<mailto:Rajib.Mahapatra@amd.com>> Sent: Thursday, August 26, 2021 2:07 PM To: Wentland, Harry <Harry.Wentland@amd.com<mailto:Harry.Wentland@amd.com>>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com<mailto:Nicholas.Kazlauskas@amd.com>>; Deucher, Alexander <Alexander.Deucher@amd.com<mailto:Alexander.Deucher@amd.com>>; Wu, Hersen <hersenxs.wu@amd.com<mailto:hersenxs.wu@amd.com>> Cc: amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org> <amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org>>; Mahapatra, Rajib <Rajib.Mahapatra@amd.com<mailto:Rajib.Mahapatra@amd.com>> Subject: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB [Why] In lower carve out (<= 32 MB) devices, it was unable to pin framebuffer in VRAM domain for some BO allocations. The device shows below error logs and sometimes it reboots too. amdgpu 0000:02:00.0: amdgpu: 00000000d721431c pin failed [drm:dm_plane_helper_prepare_fb] *ERROR* Failed to pin framebuffer with error -12 [How] Place the domain as GTT when VRAM size <= 32 MB. Signed-off-by: Rajib Mahapatra <rajib.mahapatra@amd.com<mailto:rajib.mahapatra@amd.com>> --- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index dc3c6b3a00e5..d719be448eec 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -236,6 +236,7 @@ extern int amdgpu_num_kcq; #define AMDGPU_VM_MAX_NUM_CTX 4096 #define AMDGPU_SG_THRESHOLD (256*1024*1024) +#define AMDGPU_VRAM_MIN_THRESHOLD (32*1024*1024) #define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */ #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 #define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */ 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 e1e57e7465a7..f71391599be1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7106,8 +7106,16 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane, return r; } - if (plane->type != DRM_PLANE_TYPE_CURSOR) + if (plane->type != DRM_PLANE_TYPE_CURSOR) { domain = amdgpu_display_supported_domains(adev, rbo->flags); + /* + * Handle devices with lower carve out. + */ + if (adev->gmc.real_vram_size <= AMDGPU_VRAM_MIN_THRESHOLD) { + domain |= (domain & AMDGPU_GEM_DOMAIN_GTT) ? domain : + AMDGPU_GEM_DOMAIN_GTT; + } + } else domain = AMDGPU_GEM_DOMAIN_VRAM; -- 2.25.1 [-- Attachment #2: Type: text/html, Size: 9588 bytes --] ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB 2021-08-27 4:37 ` Mahapatra, Rajib @ 2021-08-27 4:57 ` Alex Deucher 0 siblings, 0 replies; 4+ messages in thread From: Alex Deucher @ 2021-08-27 4:57 UTC (permalink / raw) To: Mahapatra, Rajib Cc: Deucher, Alexander, Wentland, Harry, Kazlauskas, Nicholas, Wu, Hersen, amd-gfx On Fri, Aug 27, 2021 at 12:38 AM Mahapatra, Rajib <Rajib.Mahapatra@amd.com> wrote: > > [Public] > > > > Thanks Alex for your reply. > > The patch is not fixing our issue. > What exactly is going wrong? I don't see what this patch fixes. amdgpu_display_supported_domains() already sets domain to AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT if the asic can support display from system memory and the buffer is suitable for display. If amdgpu_display_supported_domains() only returns AMDGPU_GEM_DOMAIN_VRAM, then you shouldn't be adding AMDGPU_GEM_DOMAIN_GTT because the buffer is not suitable for display for some reason. If you force AMDGPU_GEM_DOMAIN_GTT in this case, you will get hangs on most chips. Alex > > > Thanks > > -Rajib > > > > From: Deucher, Alexander <Alexander.Deucher@amd.com> > Sent: Thursday, August 26, 2021 11:48 PM > To: Mahapatra, Rajib <Rajib.Mahapatra@amd.com>; Wentland, Harry <Harry.Wentland@amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com>; Wu, Hersen <hersenxs.wu@amd.com> > Cc: amd-gfx@lists.freedesktop.org > Subject: Re: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB > > > > [Public] > > > > I think this may have already been fixed with this patch: > > https://gitlab.freedesktop.org/agd5f/linux/-/commit/2a7b9a8437130fd328001f4edfac8eec98dfe298 > > > > Alex > > > > ________________________________ > > From: Mahapatra, Rajib <Rajib.Mahapatra@amd.com> > Sent: Thursday, August 26, 2021 2:07 PM > To: Wentland, Harry <Harry.Wentland@amd.com>; Kazlauskas, Nicholas <Nicholas.Kazlauskas@amd.com>; Deucher, Alexander <Alexander.Deucher@amd.com>; Wu, Hersen <hersenxs.wu@amd.com> > Cc: amd-gfx@lists.freedesktop.org <amd-gfx@lists.freedesktop.org>; Mahapatra, Rajib <Rajib.Mahapatra@amd.com> > Subject: [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB > > > > [Why] > In lower carve out (<= 32 MB) devices, it was unable to pin framebuffer in > VRAM domain for some BO allocations. The device shows below error logs and > sometimes it reboots too. > > amdgpu 0000:02:00.0: amdgpu: 00000000d721431c pin failed > [drm:dm_plane_helper_prepare_fb] *ERROR* Failed to pin framebuffer with error -12 > > [How] > Place the domain as GTT when VRAM size <= 32 MB. > > Signed-off-by: Rajib Mahapatra <rajib.mahapatra@amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 + > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++- > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index dc3c6b3a00e5..d719be448eec 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -236,6 +236,7 @@ extern int amdgpu_num_kcq; > > #define AMDGPU_VM_MAX_NUM_CTX 4096 > #define AMDGPU_SG_THRESHOLD (256*1024*1024) > +#define AMDGPU_VRAM_MIN_THRESHOLD (32*1024*1024) > #define AMDGPU_DEFAULT_GTT_SIZE_MB 3072ULL /* 3GB by default */ > #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 > #define AMDGPU_MAX_USEC_TIMEOUT 100000 /* 100 ms */ > 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 e1e57e7465a7..f71391599be1 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -7106,8 +7106,16 @@ static int dm_plane_helper_prepare_fb(struct drm_plane *plane, > return r; > } > > - if (plane->type != DRM_PLANE_TYPE_CURSOR) > + if (plane->type != DRM_PLANE_TYPE_CURSOR) { > domain = amdgpu_display_supported_domains(adev, rbo->flags); > + /* > + * Handle devices with lower carve out. > + */ > + if (adev->gmc.real_vram_size <= AMDGPU_VRAM_MIN_THRESHOLD) { > + domain |= (domain & AMDGPU_GEM_DOMAIN_GTT) ? domain : > + AMDGPU_GEM_DOMAIN_GTT; > + } > + } > else > domain = AMDGPU_GEM_DOMAIN_VRAM; > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-08-27 4:57 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-08-26 18:07 [PATCH] drm/amd/display: Set the domain as GTT when VRAM size <= 32 MB Rajib Mahapatra 2021-08-26 18:18 ` Deucher, Alexander 2021-08-27 4:37 ` Mahapatra, Rajib 2021-08-27 4:57 ` Alex Deucher
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.