[PATCH 1/2] drm/amd/display: use pre-allocated temp structure for bounding box
Arnd Bergmann
arnd at arndb.de
Tue Jun 4 19:42:36 UTC 2024
On Tue, Jun 4, 2024, at 20:06, Alex Deucher wrote:
> This mirrors what the driver does for older DCN generations.
>
> Should fix:
>
> BUG: sleeping function called from invalid context at
> include/linux/sched/mm.h:306
> in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 449, name:
> kworker/u64:8
> preempt_count: 2, expected: 0
> RCU nest depth: 0, expected: 0
> Preemption disabled at:
> ffffffffc0ce1580>] dc_fpu_begin+0x30/0xd0 [amdgpu]
> CPU: 5 PID: 449 Comm: kworker/u64:8 Tainted: G W 6.8.0+
> #35
> Hardware name: System manufacturer System Product Name/ROG STRIX X570-E
> GAMING WIFI II, BIOS 4204 02/24/2022
> Workqueue: events_unbound async_run_entry_fn
>
> Fixes: 88c61827cedc ("drm/amd/display: dynamically allocate
> dml2_configuration_options structures")
> Tested-by: George Zhang <George.zhang at amd.com>
> Suggested-by: Hamza Mahfooz <hamza.mahfooz at amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: George Zhang <george.zhang at amd.com>
> Cc: Arnd Bergmann <arnd at arndb.de>
> Cc: harry.wentland at amd.com
> Cc: sunpeng.li at amd.com
> Cc: Rodrigo.Siqueira at amd.com
That looks nicer than all the other suggestions, thanks!
Acked-by: Arnd Bergmann <arnd at arndb.de>
One part sticks out though:
> @@ -2027,7 +2025,7 @@ static void dcn32_update_bw_bounding_box(struct
> dc *dc, struct clk_bw_params *bw
>
> DC_FP_END();
>
> - kfree(dml2_opt);
> + memcpy(&dc->dml2_options, dml2_opt, sizeof(dc->dml2_options));
> }
The driver did not copy the data back before, so this is a
change in behavior. Is that intentional or a mistake?
If the intention is to have the data copied back into
dc->dml2_options in the end, wouldn't it be easier to
just pass a pointer as in the old version before commit
e779f4587f61 ("drm/amd/display: Add handling for DC power
mode")?
Arnd
More information about the amd-gfx
mailing list