Re: [PATCH 1/2] drm/amd/display: increase max surfaces in line with planes and streams

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Zaeem,

Thanks for explaining their relationship.

So IIUC, current DM implementation for dc_surface_updates array is wrong, since it's taking MAX_SURFACES (=3) for allocation but MAX_PLANES (=6) as the upper bound of size of the dc_surface_updates array, as you can see in this allocation and after an iteration from 0 to `plane_count`:

https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c#L9861

Another question to understand what would be the right fix for the implementation above-mentioned: with the cursor overlay mode, it means we are using one of the overlay planes for this cursor overlay mode (one from the "max_slave_planes") or this cursor plane is an extra plane, which means, for some drivers, one primary plane + two overlay planes + one plane for cursor overlay mode (max 4 planes) ?

BR,

Melissa

On 27/09/2024 14:40, Mohamed, Zaeem wrote:
[AMD Official Use Only - AMD Internal Distribution Only]

Hi Melissa,

MAX_SURFACE_NUM and MAX_PLANES both represent the upper bound of planes that are supported by HW. It is best to replace MAX_SURFACE_NUM with MAX_PLANES to remove redundancy. MAX_SURFACES is used to represent the upper bound of surfaces that can be piped to a single CRTC. Keep MAX_SURFACES as is to keep stack size down, and replace MAX_SURFACE_NUM with MAX_PLANES.

Thanks,
Zaeem


-----Original Message-----
From: dri-devel <dri-devel-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Melissa Wen
Sent: Wednesday, September 25, 2024 11:37 AM
To: harry.wentland@xxxxxxx; sunpeng.li@xxxxxxx; Rodrigo.Siqueira@xxxxxxx; alexander.deucher@xxxxxxx; christian.koenig@xxxxxxx; Xinhui.Pan@xxxxxxx; airlied@xxxxxxxxx; daniel@xxxxxxxx
Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx
Subject: [PATCH 1/2] drm/amd/display: increase max surfaces in line with planes and streams

091a97e542cf ("drm/amd/display: Fix warning. Set MAX_SURFACES to 3") reduced the max number of surfaces since, at that time, there was no use for more. However, HW and driver evolves and there are now driver versions that allow two overlay planes (max_slave_planes). Moreover, commit 3cfd03b79425 ("drm/amd/display: update max streams per surface") states 6 is the max surfaces supported asics can have. Therefore, update MAX_SURFACES to match MAX_SURFACE_NUM, MAX_PLANES and MAX_STREAMS.

It also addresses array-index-out-of-bounds reported in the link.

Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3594
Signed-off-by: Melissa Wen <mwen@xxxxxxxxxx>
---
  drivers/gpu/drm/amd/display/dc/dc.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
index 3992ad73165b..08b00b263533 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -57,7 +57,7 @@ struct dmub_notification;

  #define DC_VER "3.2.301"

-#define MAX_SURFACES 3
+#define MAX_SURFACES 6
  #define MAX_PLANES 6
  #define MAX_STREAMS 6
  #define MIN_VIEWPORT_SIZE 12
--
2.45.2





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux