[AMD Official Use Only - AMD Internal Distribution Only] Hi, A patch addressing this will be sent out soon. Thanks, Zaeem -----Original Message----- From: Melissa Wen <mwen@xxxxxxxxxx> Sent: Tuesday, October 22, 2024 11:58 AM To: Mohamed, Zaeem <Zaeem.Mohamed@xxxxxxx>; Wentland, Harry <Harry.Wentland@xxxxxxx>; Li, Sun peng (Leo) <Sunpeng.Li@xxxxxxx>; Siqueira, Rodrigo <Rodrigo.Siqueira@xxxxxxx>; Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Koenig, Christian <Christian.Koenig@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; airlied@xxxxxxxxx; daniel@xxxxxxxx Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx Subject: Re: [PATCH 1/2] drm/amd/display: increase max surfaces in line with planes and streams Hi, Gentle ping to land the fix for the kernel crash. If faster, I can send a new version increasing max surfaces to 4 as previously discussed. There are now two bug reports for the same issue: - https://gitlab.freedesktop.org/drm/amd/-/issues/3693 - https://gitlab.freedesktop.org/drm/amd/-/issues/3594 Best Regards, Melissa On 27/09/2024 15:20, Melissa Wen wrote: > 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/disp > lay/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 >> >