All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ray Wu <ray.wu@amd.com>
To: <amd-gfx@lists.freedesktop.org>
Cc: Harry Wentland <harry.wentland@amd.com>,
	Leo Li <sunpeng.li@amd.com>,
	Aurabindo Pillai <aurabindo.pillai@amd.com>,
	Roman Li <roman.li@amd.com>, Wayne Lin <wayne.lin@amd.com>,
	Tom Chung <chiahsuan.chung@amd.com>,
	"Fangzhi Zuo" <jerry.zuo@amd.com>,
	Zaeem Mohamed <zaeem.mohamed@amd.com>,
	"Daniel Wheeler" <daniel.wheeler@amd.com>,
	Alex Hung <alex.hung@amd.com>, Roman Li <Roman.Li@amd.com>,
	Ray Wu <ray.wu@amd.com>
Subject: [PATCH 06/28] drm/amd/display: Fix invalid context error in dml helper
Date: Mon, 28 Apr 2025 21:50:36 +0800	[thread overview]
Message-ID: <20250428135514.20775-7-ray.wu@amd.com> (raw)
In-Reply-To: <20250428135514.20775-1-ray.wu@amd.com>

From: Roman Li <Roman.Li@amd.com>

[Why]
"BUG: sleeping function called from invalid context" error.
after:
"drm/amd/display: Protect FPU in dml2_validate()/dml21_validate()"

The populate_dml_plane_cfg_from_plane_state() uses the GFP_KERNEL flag
for memory allocation, which shouldn't be used in atomic contexts.

The allocation is needed only for using another helper function
get_scaler_data_for_plane().

[How]
Modify helpers to pass a pointer to scaler_data within existing context,
eliminating the need for dynamic memory allocation/deallocation
and copying.

Fixes: d1df16640462 ("drm/amd/display: Protect FPU in dml2_validate()/dml21_validate()")

Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Roman Li <Roman.Li@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
---
 .../amd/display/dc/dml2/dml2_translation_helper.c  | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c b/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
index 857ce1695fd5..5de775fd8fce 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
+++ b/drivers/gpu/drm/amd/display/dc/dml2/dml2_translation_helper.c
@@ -973,7 +973,9 @@ static void populate_dml_surface_cfg_from_plane_state(enum dml_project_id dml2_p
 	}
 }
 
-static void get_scaler_data_for_plane(const struct dc_plane_state *in, struct dc_state *context, struct scaler_data *out)
+static struct scaler_data *get_scaler_data_for_plane(
+		const struct dc_plane_state *in,
+		struct dc_state *context)
 {
 	int i;
 	struct pipe_ctx *temp_pipe = &context->res_ctx.temp_pipe;
@@ -994,7 +996,7 @@ static void get_scaler_data_for_plane(const struct dc_plane_state *in, struct dc
 	}
 
 	ASSERT(i < MAX_PIPES);
-	memcpy(out, &temp_pipe->plane_res.scl_data, sizeof(*out));
+	return &temp_pipe->plane_res.scl_data;
 }
 
 static void populate_dummy_dml_plane_cfg(struct dml_plane_cfg_st *out, unsigned int location,
@@ -1057,11 +1059,7 @@ static void populate_dml_plane_cfg_from_plane_state(struct dml_plane_cfg_st *out
 						    const struct dc_plane_state *in, struct dc_state *context,
 						    const struct soc_bounding_box_st *soc)
 {
-	struct scaler_data *scaler_data = kzalloc(sizeof(*scaler_data), GFP_KERNEL);
-	if (!scaler_data)
-		return;
-
-	get_scaler_data_for_plane(in, context, scaler_data);
+	struct scaler_data *scaler_data = get_scaler_data_for_plane(in, context);
 
 	out->CursorBPP[location] = dml_cur_32bit;
 	out->CursorWidth[location] = 256;
@@ -1126,8 +1124,6 @@ static void populate_dml_plane_cfg_from_plane_state(struct dml_plane_cfg_st *out
 	out->DynamicMetadataTransmittedBytes[location] = 0;
 
 	out->NumberOfCursors[location] = 1;
-
-	kfree(scaler_data);
 }
 
 static unsigned int map_stream_to_dml_display_cfg(const struct dml2_context *dml2,
-- 
2.43.0


  parent reply	other threads:[~2025-04-28 13:56 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-28 13:50 [PATCH 00/28] DC Patches May 05 2025 Ray Wu
2025-04-28 13:50 ` [PATCH 01/28] drm/amd/display: Update IPS sequential_ono requirement checks Ray Wu
2025-04-28 13:50 ` [PATCH 02/28] drm/amd/display: Refactoring DSC enum dsc_bits_per_comp Ray Wu
2025-04-28 13:50 ` [PATCH 03/28] drm/amd/display: Promote DAL to 3.2.330 Ray Wu
2025-04-28 13:50 ` [PATCH 04/28] drm/amd/display: Always Scale Flag Ray Wu
2025-04-28 13:50 ` [PATCH 05/28] drm/amd/display: Remove redundant null check Ray Wu
2025-04-28 13:50 ` Ray Wu [this message]
2025-04-28 13:50 ` [PATCH 07/28] drm/amd/display: Prepare for Fused I2C-over-AUX Ray Wu
2025-04-28 13:50 ` [PATCH 08/28] Revert "drm/amd/display: Refactor SubVP cursor limiting logic" Ray Wu
2025-04-28 13:50 ` [PATCH 09/28] drm/amd/display: allow dscclk disable Ray Wu
2025-04-28 13:50 ` [PATCH 10/28] drm/amd/display: more liberal vmin/vmax update for freesync Ray Wu
2025-04-28 13:50 ` [PATCH 11/28] drm/amd/display: disable DPP RCG before DPP CLK enable Ray Wu
2025-04-28 13:50 ` [PATCH 12/28] drm/amd/display: [FW Promotion] Release 0.1.8.0 Ray Wu
2025-04-28 13:50 ` [PATCH 13/28] drm/amd/display: Promote DAL to 3.2.331 Ray Wu
2025-04-28 13:50 ` [PATCH 14/28] drm/amd/display: Allow 0 dtbclk for DCN35 and above Ray Wu
2025-04-28 13:50 ` [PATCH 15/28] Revert "drm/amd/display: turn off eDP lcdvdd and backlight if not required" Ray Wu
2025-04-28 13:50 ` [PATCH 16/28] drm/amd/display: Add skip rIOMMU dc config option Ray Wu
2025-04-28 13:50 ` [PATCH 17/28] drm/amd/display: Send IPSExit unconditionally Ray Wu
2025-04-28 13:50 ` [PATCH 18/28] drm/amd/display: Remove unnecessary DC_FP_START/DC_FP_END Ray Wu
2025-04-29 15:04   ` Alex Deucher
2025-04-29 16:01     ` Alex Hung
2025-04-29 16:03       ` Alex Deucher
2025-04-28 13:50 ` [PATCH 19/28] drm/amd/display: Call FP Protect Before Mode Programming/Mode Support Ray Wu
2025-04-28 13:50 ` [PATCH 20/28] drm/amd/display: DML21 Fixes Ray Wu
2025-04-28 13:50 ` [PATCH 21/28] drm/amd/display: Refactor SubVP cursor limiting logic Ray Wu
2025-04-28 13:50 ` [PATCH 22/28] drm/amd/display: Shift DMUB AUX reply command if necessary Ray Wu
2025-04-28 13:50 ` [PATCH 23/28] drm/amd/display: Fix the checking condition in dmub aux handling Ray Wu
2025-04-28 13:50 ` [PATCH 24/28] drm/amd/display: Remove incorrect checking in dmub aux handler Ray Wu
2025-04-28 13:50 ` [PATCH 25/28] drm/amd/display: Copy AUX read reply data whenever length > 0 Ray Wu
2025-04-28 13:50 ` [PATCH 26/28] drm/amd/display: Fix wrong handling for AUX_DEFER case Ray Wu
2025-04-28 13:50 ` [PATCH 27/28] drm/amd/display: Assign preferred stream encoder instance to dpia Ray Wu
2025-04-28 13:50 ` [PATCH 28/28] drm/amd/display: Only wait for required free space in DMUB mailbox Ray Wu
2025-05-05 13:13 ` [PATCH 00/28] DC Patches May 05 2025 Wheeler, Daniel

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=20250428135514.20775-7-ray.wu@amd.com \
    --to=ray.wu@amd.com \
    --cc=alex.hung@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=aurabindo.pillai@amd.com \
    --cc=chiahsuan.chung@amd.com \
    --cc=daniel.wheeler@amd.com \
    --cc=harry.wentland@amd.com \
    --cc=jerry.zuo@amd.com \
    --cc=roman.li@amd.com \
    --cc=sunpeng.li@amd.com \
    --cc=wayne.lin@amd.com \
    --cc=zaeem.mohamed@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 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.