* [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.