mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Christian König" <christian.koenig@amd.com>
To: Harry Wentland <harry.wentland@amd.com>,
	Alex Deucher <alexdeucher@gmail.com>,
	Lee Jones <lee.jones@linaro.org>
Cc: Leo Li <sunpeng.li@amd.com>, LKML <linux-kernel@vger.kernel.org>,
	amd-gfx list <amd-gfx@lists.freedesktop.org>,
	David Airlie <airlied@linux.ie>,
	Maling list - DRI developers  <dri-devel@lists.freedesktop.org>,
	Alex Deucher <alexander.deucher@amd.com>,
	Colin Ian King <colin.king@canonical.com>,
	Harry Wentland <hwentlan@amd.com>,
	"Kazlauskas, Nicholas" <nicholas.kazlauskas@amd.com>
Subject: Re: [PATCH 06/19] drm/amd/display/dc/calcs/dce_calcs: Move some large variables from the stack to the heap
Date: Fri, 19 Mar 2021 19:46:54 +0100	[thread overview]
Message-ID: <a74c5599-e519-2b02-f16b-31e352872a31@amd.com> (raw)
In-Reply-To: <2ec1225f-4bf1-41b7-0d00-2b11eab90c94@amd.com>



Am 19.03.21 um 19:26 schrieb Harry Wentland:
> On 2021-03-19 2:13 p.m., Alex Deucher wrote:
>> + Harry, Nick
>>
>> On Fri, Mar 19, 2021 at 4:24 AM Lee Jones <lee.jones@linaro.org> wrote:
>>>
>>> Fixes the following W=1 kernel build warning(s):
>>>
>>>   drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c: In 
>>> function ‘calculate_bandwidth’:
>>> drivers/gpu/drm/amd/amdgpu/../display/dc/calcs/dce_calcs.c:2016:1: 
>>> warning: the frame size of 1216 bytes is larger than 1024 bytes 
>>> [-Wframe-larger-than=]
>>>
>>> Cc: Harry Wentland <harry.wentland@amd.com>
>>> Cc: Leo Li <sunpeng.li@amd.com>
>>> Cc: Alex Deucher <alexander.deucher@amd.com>
>>> Cc: "Christian König" <christian.koenig@amd.com>
>>> Cc: David Airlie <airlied@linux.ie>
>>> Cc: Daniel Vetter <daniel@ffwll.ch>
>>> Cc: Colin Ian King <colin.king@canonical.com>
>>> Cc: amd-gfx@lists.freedesktop.org
>>> Cc: dri-devel@lists.freedesktop.org
>>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>>> ---
>>>   .../gpu/drm/amd/display/dc/calcs/dce_calcs.c  | 32 
>>> ++++++++++++++++---
>>>   1 file changed, 28 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c 
>>> b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
>>> index e633f8a51edb6..9d8f2505a61c2 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
>>> +++ b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c
>>> @@ -98,16 +98,16 @@ static void calculate_bandwidth(
>>>          int32_t num_cursor_lines;
>>>
>>>          int32_t i, j, k;
>>> -       struct bw_fixed yclk[3];
>>> -       struct bw_fixed sclk[8];
>>> +       struct bw_fixed *yclk;
>>> +       struct bw_fixed *sclk;
>>>          bool d0_underlay_enable;
>>>          bool d1_underlay_enable;
>>>          bool fbc_enabled;
>>>          bool lpt_enabled;
>>>          enum bw_defines sclk_message;
>>>          enum bw_defines yclk_message;
>>> -       enum bw_defines tiling_mode[maximum_number_of_surfaces];
>>> -       enum bw_defines surface_type[maximum_number_of_surfaces];
>>> +       enum bw_defines *tiling_mode;
>>> +       enum bw_defines *surface_type;
>>>          enum bw_defines voltage;
>>>          enum bw_defines pipe_check;
>>>          enum bw_defines hsr_check;
>>> @@ -122,6 +122,22 @@ static void calculate_bandwidth(
>>>          int32_t number_of_displays_enabled_with_margin = 0;
>>>          int32_t number_of_aligned_displays_with_no_margin = 0;
>>>
>>> +       yclk = kcalloc(3, sizeof(*yclk), GFP_KERNEL);
>>> +       if (!yclk)
>>> +               return;
>>> +
>>> +       sclk = kcalloc(8, sizeof(*sclk), GFP_KERNEL);
>>> +       if (!sclk)
>>> +               goto free_yclk;
>>> +
>>> +       tiling_mode = kcalloc(maximum_number_of_surfaces, 
>>> sizeof(*tiling_mode), GFP_KERNEL);
>>> +       if (!tiling_mode)
>>> +               goto free_sclk;
>>> +
>>> +       surface_type = kcalloc(maximum_number_of_surfaces, 
>>> sizeof(*surface_type), GFP_KERNEL);
>>> +       if (!surface_type)
>>> +               goto free_tiling_mode;
>>> +
>>
>>
>> Harry or Nick can correct me if I'm wrong, but for this patch and the
>> next one, I think this can be called from an atomic context.
>>
>
> From what I can see this doesn't seem the case. If I'm missing 
> something someone please correct me.

Have you taken into account that using FP functions require atomic 
context as well?

We had quite a bunch of problems with that and had to replace some 
GFP_KERNEL with GFP_ATOMIC in the DC code because of this.

Could of course be that this code here isn't affected by that, but 
better save than sorry.

Christian.

>
> This and the next (06/19) patch are both
> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
>
> Harry
>
>> Alex
>>
>>>          yclk[low] = vbios->low_yclk;
>>>          yclk[mid] = vbios->mid_yclk;
>>>          yclk[high] = vbios->high_yclk;
>>> @@ -2013,6 +2029,14 @@ static void calculate_bandwidth(
>>>                          }
>>>                  }
>>>          }
>>> +
>>> +       kfree(surface_type);
>>> +free_tiling_mode:
>>> +       kfree(tiling_mode);
>>> +free_yclk:
>>> +       kfree(yclk);
>>> +free_sclk:
>>> +       kfree(sclk);
>>>   }
>>>
>>> /*******************************************************************************
>>> -- 
>>> 2.27.0
>>>
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel>


  parent reply	other threads:[~2021-03-19 18:48 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-19  8:24 [RESEND 00/19] Rid GPU from W=1 warnings Lee Jones
2021-03-19  8:24 ` [PATCH 01/19] drm/nouveau/nvkm/subdev/bios/init: Demote obvious abuse of kernel-doc Lee Jones
2021-03-19  9:54   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 02/19] drm/nouveau/dispnv50/disp: Remove unused variable 'ret' Lee Jones
2021-03-19  8:24 ` [PATCH 03/19] drm/msm/dp/dp_display: Remove unused variable 'hpd' Lee Jones
2021-03-19  8:24 ` [PATCH 04/19] include: drm: drm_atomic: Make use of 'new_plane_state' Lee Jones
2021-03-19 13:52   ` Ville Syrjälä
2021-03-19  8:24 ` [PATCH 05/19] drm/nouveau/nvkm/subdev/volt/gk20a: Demote non-conformant kernel-doc headers Lee Jones
2021-03-19  9:55   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 06/19] drm/amd/display/dc/calcs/dce_calcs: Move some large variables from the stack to the heap Lee Jones
2021-03-19 18:13   ` Alex Deucher
2021-03-19 18:26     ` Harry Wentland
2021-03-19 18:31       ` Alex Deucher
2021-03-19 18:46       ` Christian König [this message]
2021-03-19 19:31         ` Alex Deucher
2021-03-19  8:24 ` [PATCH 07/19] drm/amd/display/dc/calcs/dce_calcs: Remove some large variables from the stack Lee Jones
2021-03-19  8:24 ` [PATCH 08/19] drm/amd/display/dc/dce80/dce80_resource: Make local functions static Lee Jones
2021-03-19 18:24   ` Alex Deucher
2021-03-19 18:25   ` Harry Wentland
2021-03-19  8:24 ` [PATCH 09/19] drm/nouveau/nvkm/engine/gr/gf100: Demote non-conformant kernel-doc header Lee Jones
2021-03-19  9:55   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 10/19] drm/nouveau/nouveau_bo: Remove unused variables 'dev' Lee Jones
2021-03-19  9:56   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 11/19] drm/nouveau/nouveau_display: Remove set but unused variable 'width' Lee Jones
2021-03-19  8:24 ` [PATCH 12/19] drm/nouveau/dispnv04/crtc: Demote non-conforming kernel-doc headers Lee Jones
2021-03-19  9:57   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 13/19] drm/nouveau/dispnv50/disp: Remove unused variable 'ret' from function returning void Lee Jones
2021-03-19  8:24 ` [PATCH 14/19] drm/nouveau/dispnv50/headc57d: Make local function 'headc57d_olut' static Lee Jones
2021-03-19  9:58   ` Karol Herbst
2021-03-19 17:36   ` Lyude Paul
2021-03-19  8:24 ` [PATCH 15/19] drm/nouveau/nv50_display: Remove superfluous prototype for local static functions Lee Jones
2021-03-19  9:56   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 16/19] drm/nouveau/dispnv50/disp: Include header containing our prototypes Lee Jones
2021-03-19  8:24 ` [PATCH 17/19] drm/nouveau/nouveau_ioc32: File headers are not good candidates for kernel-doc Lee Jones
2021-03-19  9:57   ` Karol Herbst
2021-03-19  8:24 ` [PATCH 18/19] drm/nouveau/nouveau_svm: Remove unused variable 'ret' from void function Lee Jones
2021-03-19  8:24 ` [PATCH 19/19] drm/nouveau/nouveau_ioc32: Demote kernel-doc abuse to standard comment block Lee Jones
2021-03-19  9:57   ` Karol Herbst
2021-03-24 10:36 ` [RESEND 00/19] Rid GPU from W=1 warnings Lee Jones
2021-03-30 15:19   ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a74c5599-e519-2b02-f16b-31e352872a31@amd.com \
    --to=christian.koenig@amd.com \
    --cc=airlied@linux.ie \
    --cc=alexander.deucher@amd.com \
    --cc=alexdeucher@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=colin.king@canonical.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=hwentlan@amd.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nicholas.kazlauskas@amd.com \
    --cc=sunpeng.li@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®