* [PATCH 0/3] drm: Remove unused *drm parameter
[not found] <CGME20260706134549eucas1p20eedf2d3287d95687eaaa8a201679083@eucas1p2.samsung.com>
@ 2026-07-06 13:34 ` Jan Niedziolka
2026-07-06 13:34 ` [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function Jan Niedziolka
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Jan Niedziolka @ 2026-07-06 13:34 UTC (permalink / raw)
To: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
k.tegowski
Cc: dri-devel, linux-kernel, a.fijalko, bartlomiej.k, Jan Niedziolka
Commit 0e691bc73026 ("drm: Remove use of drm_mode_object") introduced changes
which caused *dev parameter to be unused in function body yet left over in
function's (drm_mode_create and drm_mode_destroy) signature.
This patchset revolves around removing this parameter, cleaning those functions
references and also providing minimal logging (as it's best to not introduce
breaking changes in functions that old, only drm_notice() logging is done instead
of proper error handling or at least error code returning).
Jan Niedziolka (3):
gpu/drm: Remove unused *dev parameter from drm_mode_destroy function
gpu/drm: Remove unused 'drm device *dev' parameter from
drm_mode_create()
gpu/drm: Add drm_notice logging when drm_mode_create fails
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 +-
.../drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +-
drivers/gpu/drm/drm_client_modeset.c | 8 ++--
drivers/gpu/drm/drm_connector.c | 2 +-
drivers/gpu/drm/drm_crtc.c | 4 +-
drivers/gpu/drm/drm_crtc_helper.c | 2 +-
drivers/gpu/drm/drm_edid.c | 12 ++---
drivers/gpu/drm/drm_modes.c | 34 ++++++++------
drivers/gpu/drm/exynos/exynos_dp.c | 47 +++++++++++++++++++
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 2 +-
drivers/gpu/drm/gma500/psb_intel_sdvo.c | 3 +-
drivers/gpu/drm/gud/gud_connector.c | 2 +-
drivers/gpu/drm/i915/display/intel_panel.c | 4 +-
drivers/gpu/drm/i915/display/intel_tv.c | 2 +-
drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 2 +-
drivers/gpu/drm/panel/panel-edp.c | 2 +-
.../drm/panel/panel-olimex-lcd-olinuxino.c | 2 +-
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 2 +-
drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c | 2 +-
drivers/gpu/drm/panel/panel-seiko-43wvf1g.c | 2 +-
drivers/gpu/drm/panel/panel-simple.c | 2 +-
.../gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
drivers/gpu/drm/tests/drm_kunit_helpers.c | 2 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
drivers/gpu/drm/xen/xen_drm_front_conn.c | 2 +-
include/drm/drm_modes.h | 4 +-
28 files changed, 104 insertions(+), 54 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function
2026-07-06 13:34 ` [PATCH 0/3] drm: Remove unused *drm parameter Jan Niedziolka
@ 2026-07-06 13:34 ` Jan Niedziolka
2026-07-06 13:55 ` sashiko-bot
2026-07-06 13:34 ` [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create() Jan Niedziolka
2026-07-06 13:34 ` [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails Jan Niedziolka
2 siblings, 1 reply; 7+ messages in thread
From: Jan Niedziolka @ 2026-07-06 13:34 UTC (permalink / raw)
To: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
k.tegowski
Cc: dri-devel, linux-kernel, a.fijalko, bartlomiej.k, Jan Niedziolka
Get rid of unused 'struct drm_device *dev' parameter from drm_mode_destroy()
prototype and definition.
Keep drm_mode_destroy() comment up to date - remove unnecessary *dev record.
Also, fix all drm_mode_destroy() calls where *dev argument is used.
Fixes: 0e691bc73026 ("drm: Remove use of drm_mode_object")
Signed-off-by: Jan Niedziolka <j.niedziolka@samsung.com>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++--
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +-
drivers/gpu/drm/drm_client_modeset.c | 8 ++++----
drivers/gpu/drm/drm_connector.c | 2 +-
drivers/gpu/drm/drm_crtc.c | 2 +-
drivers/gpu/drm/drm_crtc_helper.c | 2 +-
drivers/gpu/drm/drm_edid.c | 8 ++++----
drivers/gpu/drm/drm_modes.c | 11 +++++------
drivers/gpu/drm/gma500/psb_intel_sdvo.c | 3 +--
drivers/gpu/drm/i915/display/intel_panel.c | 4 ++--
drivers/gpu/drm/msm/dsi/dsi_host.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 2 +-
drivers/gpu/drm/tests/drm_kunit_helpers.c | 2 +-
drivers/gpu/drm/vboxvideo/vbox_mode.c | 2 +-
include/drm/drm_modes.h | 2 +-
16 files changed, 28 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 97ab1e83b318..b919efd8f42b 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8562,7 +8562,7 @@ enum drm_mode_status amdgpu_dm_connector_mode_valid(struct drm_connector *connec
stream = create_validate_stream_for_sink(connector, test_mode,
to_dm_connector_state(connector->state),
NULL);
- drm_mode_destroy(connector->dev, test_mode);
+ drm_mode_destroy(test_mode);
if (stream) {
dc_stream_release(stream);
result = MODE_OK;
@@ -9217,7 +9217,7 @@ static uint add_fs_modes(struct amdgpu_dm_connector *aconnector)
drm_mode_probed_add(&aconnector->base, new_mode);
new_modes_count += 1;
} else
- drm_mode_destroy(aconnector->base.dev, new_mode);
+ drm_mode_destroy(new_mode);
}
out:
return new_modes_count;
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
index 36c07b71fe04..b971f2bcfa26 100644
--- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
+++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
@@ -1913,7 +1913,7 @@ cdns_mhdp_bridge_atomic_destroy_state(struct drm_bridge *bridge,
cdns_mhdp_state = to_cdns_mhdp_bridge_state(state);
if (cdns_mhdp_state->current_mode) {
- drm_mode_destroy(bridge->dev, cdns_mhdp_state->current_mode);
+ drm_mode_destroy(cdns_mhdp_state->current_mode);
cdns_mhdp_state->current_mode = NULL;
}
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 0080a8e9556a..66f17a386198 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -79,7 +79,7 @@ static void drm_client_modeset_release(struct drm_client_dev *client)
drm_client_for_each_modeset(modeset, client) {
int i;
- drm_mode_destroy(client->dev, modeset->mode);
+ drm_mode_destroy(modeset->mode);
modeset->mode = NULL;
modeset->fb = NULL;
@@ -272,7 +272,7 @@ static void mode_replace(struct drm_device *dev,
const struct drm_display_mode **dst,
const struct drm_display_mode *src)
{
- drm_mode_destroy(dev, (struct drm_display_mode *)*dst);
+ drm_mode_destroy((struct drm_display_mode *)*dst);
*dst = src ? drm_mode_duplicate(dev, src) : NULL;
}
@@ -367,7 +367,7 @@ static bool drm_client_target_cloned(struct drm_device *dev,
if (!modes[i])
can_clone = false;
}
- drm_mode_destroy(dev, dmt_mode);
+ drm_mode_destroy(dmt_mode);
if (can_clone) {
drm_dbg_kms(dev, "can clone using 1024x768\n");
@@ -913,7 +913,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
break;
}
- drm_mode_destroy(dev, modeset->mode);
+ drm_mode_destroy(modeset->mode);
modeset->mode = drm_mode_duplicate(dev, mode);
if (!modeset->mode) {
ret = -ENOMEM;
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index 3fa4d2082cd7..6825cd4e9001 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -706,7 +706,7 @@ static void drm_mode_remove(struct drm_connector *connector,
struct drm_display_mode *mode)
{
list_del(&mode->head);
- drm_mode_destroy(connector->dev, mode);
+ drm_mode_destroy(mode);
}
/**
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 63ead8ba6756..22039a553a24 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -897,7 +897,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
}
}
kfree(connector_set);
- drm_mode_destroy(dev, mode);
+ drm_mode_destroy(mode);
/* In case we need to retry... */
connector_set = NULL;
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 4a8cfe046e4a..084417791a28 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -421,7 +421,7 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
/* FIXME: add subpixel order */
done:
- drm_mode_destroy(dev, adjusted_mode);
+ drm_mode_destroy(adjusted_mode);
if (!ret) {
crtc->enabled = saved_enabled;
drm_mode_copy(&crtc->mode, &saved_mode);
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 404208bf23a6..7f456e9c27a5 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3361,7 +3361,7 @@ drm_gtf2_mode(struct drm_device *dev,
return NULL;
if (drm_mode_hsync(mode) > drm_gtf2_hbreak(drm_edid)) {
- drm_mode_destroy(dev, mode);
+ drm_mode_destroy(mode);
mode = drm_gtf_mode_complex(dev, hsize, vsize,
vrefresh_rate, 0, 0,
drm_gtf2_m(drm_edid),
@@ -3777,7 +3777,7 @@ static int drm_gtf_modes_for_range(struct drm_connector *connector,
drm_mode_fixup_1366x768(newmode);
if (!mode_in_range(newmode, drm_edid, timing) ||
!valid_inferred_mode(connector, newmode)) {
- drm_mode_destroy(dev, newmode);
+ drm_mode_destroy(newmode);
continue;
}
@@ -3806,7 +3806,7 @@ static int drm_gtf2_modes_for_range(struct drm_connector *connector,
drm_mode_fixup_1366x768(newmode);
if (!mode_in_range(newmode, drm_edid, timing) ||
!valid_inferred_mode(connector, newmode)) {
- drm_mode_destroy(dev, newmode);
+ drm_mode_destroy(newmode);
continue;
}
@@ -3836,7 +3836,7 @@ static int drm_cvt_modes_for_range(struct drm_connector *connector,
drm_mode_fixup_1366x768(newmode);
if (!mode_in_range(newmode, drm_edid, timing) ||
!valid_inferred_mode(connector, newmode)) {
- drm_mode_destroy(dev, newmode);
+ drm_mode_destroy(newmode);
continue;
}
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 3f8e025fd6d9..175bf3eef14b 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -85,12 +85,11 @@ EXPORT_SYMBOL(drm_mode_create);
/**
* drm_mode_destroy - remove a mode
- * @dev: DRM device
* @mode: mode to remove
*
- * Release @mode's unique ID, then free it @mode structure itself using kfree.
+ * Free @mode structure using kfree.
*/
-void drm_mode_destroy(struct drm_device *dev, struct drm_display_mode *mode)
+void drm_mode_destroy(struct drm_display_mode *mode)
{
if (!mode)
return;
@@ -591,7 +590,7 @@ struct drm_display_mode *drm_analog_tv_mode(struct drm_device *dev,
return mode;
err_free_mode:
- drm_mode_destroy(dev, mode);
+ drm_mode_destroy(mode);
return NULL;
}
EXPORT_SYMBOL(drm_analog_tv_mode);
@@ -1819,7 +1818,7 @@ void drm_mode_prune_invalid(struct drm_device *dev,
drm_dbg_kms(dev, "Rejected mode: " DRM_MODE_FMT " (%s)\n",
DRM_MODE_ARG(mode), drm_get_mode_status_name(mode->status));
}
- drm_mode_destroy(dev, mode);
+ drm_mode_destroy(mode);
}
}
}
@@ -1924,7 +1923,7 @@ void drm_connector_list_update(struct drm_connector *connector)
}
list_del(&pmode->head);
- drm_mode_destroy(connector->dev, pmode);
+ drm_mode_destroy(pmode);
break;
}
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
index 3ca11aad569d..a834252a7774 100644
--- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c
+++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
@@ -1787,8 +1787,7 @@ static void psb_intel_sdvo_enc_destroy(struct drm_encoder *encoder)
struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder);
if (psb_intel_sdvo->sdvo_lvds_fixed_mode != NULL)
- drm_mode_destroy(encoder->dev,
- psb_intel_sdvo->sdvo_lvds_fixed_mode);
+ drm_mode_destroy(psb_intel_sdvo->sdvo_lvds_fixed_mode);
i2c_del_adapter(&psb_intel_sdvo->ddc);
gma_encoder_destroy(encoder);
diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 20c548eea6da..b4b87e794917 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -309,7 +309,7 @@ static void intel_panel_destroy_probed_modes(struct intel_connector *connector)
connector->base.base.id, connector->base.name,
DRM_MODE_ARG(mode));
list_del(&mode->head);
- drm_mode_destroy(display->drm, mode);
+ drm_mode_destroy(mode);
}
}
@@ -466,7 +466,7 @@ void intel_panel_fini(struct intel_connector *connector)
list_for_each_entry_safe(fixed_mode, next, &panel->fixed_modes, head) {
list_del(&fixed_mode->head);
- drm_mode_destroy(connector->base.dev, fixed_mode);
+ drm_mode_destroy(fixed_mode);
}
}
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 982abaaac00d..f62033eee5c9 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -2579,7 +2579,7 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
if (msm_host->mode) {
- drm_mode_destroy(msm_host->dev, msm_host->mode);
+ drm_mode_destroy(msm_host->mode);
msm_host->mode = NULL;
}
diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index 364227f5456f..4b820e3d08f7 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -1185,7 +1185,7 @@ nv50_mstc_get_modes(struct drm_connector *connector)
connector->display_info.bpc = 8;
if (mstc->native)
- drm_mode_destroy(mstc->connector.dev, mstc->native);
+ drm_mode_destroy(mstc->native);
mstc->native = nouveau_conn_native_mode(&mstc->connector);
return ret;
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index b0b0ad9a0c24..755a5d31aae0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -969,7 +969,7 @@ nouveau_connector_get_modes(struct drm_connector *connector)
/* destroy the native mode, the attached monitor could have changed.
*/
if (nv_connector->native_mode) {
- drm_mode_destroy(dev, nv_connector->native_mode);
+ drm_mode_destroy(nv_connector->native_mode);
nv_connector->native_mode = NULL;
}
diff --git a/drivers/gpu/drm/tests/drm_kunit_helpers.c b/drivers/gpu/drm/tests/drm_kunit_helpers.c
index 727766444d63..547fbef0dbb6 100644
--- a/drivers/gpu/drm/tests/drm_kunit_helpers.c
+++ b/drivers/gpu/drm/tests/drm_kunit_helpers.c
@@ -337,7 +337,7 @@ static void kunit_action_drm_mode_destroy(void *ptr)
{
struct drm_display_mode *mode = ptr;
- drm_mode_destroy(NULL, mode);
+ drm_mode_destroy(mode);
}
/**
diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c
index 8e4e5fc9d3c5..fbe5c2382983 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_mode.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c
@@ -782,7 +782,7 @@ static int vbox_fill_modes(struct drm_connector *connector, u32 max_x,
dev = vbox_connector->base.dev;
list_for_each_entry_safe(mode, iterator, &connector->modes, head) {
list_del(&mode->head);
- drm_mode_destroy(dev, mode);
+ drm_mode_destroy(mode);
}
return drm_helper_probe_single_connector_modes(connector, max_x, max_y);
diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
index b9bb92e4b029..b1d1ecb15f02 100644
--- a/include/drm/drm_modes.h
+++ b/include/drm/drm_modes.h
@@ -453,7 +453,7 @@ struct drm_connector;
struct drm_cmdline_mode;
struct drm_display_mode *drm_mode_create(struct drm_device *dev);
-void drm_mode_destroy(struct drm_device *dev, struct drm_display_mode *mode);
+void drm_mode_destroy(struct drm_display_mode *mode);
void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out,
const struct drm_display_mode *in);
int drm_mode_convert_umode(struct drm_device *dev,
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create()
2026-07-06 13:34 ` [PATCH 0/3] drm: Remove unused *drm parameter Jan Niedziolka
2026-07-06 13:34 ` [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function Jan Niedziolka
@ 2026-07-06 13:34 ` Jan Niedziolka
2026-07-06 13:57 ` sashiko-bot
2026-07-06 13:34 ` [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails Jan Niedziolka
2 siblings, 1 reply; 7+ messages in thread
From: Jan Niedziolka @ 2026-07-06 13:34 UTC (permalink / raw)
To: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
k.tegowski
Cc: dri-devel, linux-kernel, a.fijalko, bartlomiej.k, Jan Niedziolka
Get rid of unused 'struct drm_device *dev' parameter from drm_mode_create()
prototype and definition.
Keep drm_mode_create() doc comment up to date - remove unnecessary *dev record.
Also, fix all drm_mode_create() calls where *dev argument is used.
Fixes: 0e691bc73026 ("drm: Remove use of drm_mode_object")
Signed-off-by: Jan Niedziolka <j.niedziolka@samsung.com>
---
drivers/gpu/drm/drm_crtc.c | 2 +-
drivers/gpu/drm/drm_edid.c | 4 +-
drivers/gpu/drm/drm_modes.c | 11 ++---
drivers/gpu/drm/exynos/exynos_dp.c | 47 +++++++++++++++++++
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 2 +-
drivers/gpu/drm/gud/gud_connector.c | 2 +-
drivers/gpu/drm/i915/display/intel_tv.c | 2 +-
drivers/gpu/drm/panel/panel-edp.c | 2 +-
.../drm/panel/panel-olimex-lcd-olinuxino.c | 2 +-
drivers/gpu/drm/panel/panel-samsung-ld9040.c | 2 +-
drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c | 2 +-
drivers/gpu/drm/panel/panel-seiko-43wvf1g.c | 2 +-
drivers/gpu/drm/panel/panel-simple.c | 2 +-
.../gpu/drm/renesas/shmobile/shmob_drm_crtc.c | 2 +-
drivers/gpu/drm/xen/xen_drm_front_conn.c | 2 +-
include/drm/drm_modes.h | 2 +-
16 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 22039a553a24..cda6dbadaa94 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -777,7 +777,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
}
}
- mode = drm_mode_create(dev);
+ mode = drm_mode_create();
if (!mode) {
ret = -ENOMEM;
goto out;
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 7f456e9c27a5..2a9a982da74e 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3563,7 +3563,7 @@ static struct drm_display_mode *drm_mode_detailed(struct drm_connector *connecto
goto set_size;
}
- mode = drm_mode_create(dev);
+ mode = drm_mode_create();
if (!mode)
return NULL;
@@ -6876,7 +6876,7 @@ static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *d
bool hsync_positive = le16_to_cpu(timings->hsync) & (1 << 15);
bool vsync_positive = le16_to_cpu(timings->vsync) & (1 << 15);
- mode = drm_mode_create(dev);
+ mode = drm_mode_create();
if (!mode)
return NULL;
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 175bf3eef14b..049d77e75ddd 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -63,7 +63,6 @@ EXPORT_SYMBOL(drm_mode_debug_printmodeline);
/**
* drm_mode_create - create a new display mode
- * @dev: DRM device
*
* Create a new, cleared drm_display_mode with kzalloc, allocate an ID for it
* and return it.
@@ -71,7 +70,7 @@ EXPORT_SYMBOL(drm_mode_debug_printmodeline);
* Returns:
* Pointer to new mode on success, NULL on error.
*/
-struct drm_display_mode *drm_mode_create(struct drm_device *dev)
+struct drm_display_mode *drm_mode_create(void)
{
struct drm_display_mode *nmode;
@@ -577,7 +576,7 @@ struct drm_display_mode *drm_analog_tv_mode(struct drm_device *dev,
return NULL;
}
- mode = drm_mode_create(dev);
+ mode = drm_mode_create();
if (!mode)
return NULL;
@@ -646,7 +645,7 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
/* allocate the drm_display_mode structure. If failure, we will
* return directly
*/
- drm_mode = drm_mode_create(dev);
+ drm_mode = drm_mode_create();
if (!drm_mode)
return NULL;
@@ -881,7 +880,7 @@ drm_gtf_mode_complex(struct drm_device *dev, int hdisplay, int vdisplay,
if (!hdisplay || !vdisplay)
return NULL;
- drm_mode = drm_mode_create(dev);
+ drm_mode = drm_mode_create();
if (!drm_mode)
return NULL;
@@ -1458,7 +1457,7 @@ struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
{
struct drm_display_mode *nmode;
- nmode = drm_mode_create(dev);
+ nmode = drm_mode_create();
if (!nmode)
return NULL;
diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
index b80540328150..78183809b4fb 100644
--- a/drivers/gpu/drm/exynos/exynos_dp.c
+++ b/drivers/gpu/drm/exynos/exynos_dp.c
@@ -68,6 +68,53 @@ static int exynos_dp_poweroff(struct analogix_dp_plat_data *plat_data)
return exynos_dp_crtc_clock_enable(plat_data, false);
}
+static int exynos_dp_get_modes(struct analogix_dp_plat_data *plat_data,
+ struct drm_connector *connector)
+{
+ struct exynos_dp_device *dp = to_dp(plat_data);
+ struct drm_display_mode *mode;
+
+ if (dp->plat_data.panel)
+ return 0;
+
+ mode = drm_mode_create();
+ if (!mode) {
+ DRM_DEV_ERROR(dp->dev,
+ "failed to create a new display mode.\n");
+ return 0;
+ }
+
+ drm_display_mode_from_videomode(&dp->vm, mode);
+ connector->display_info.width_mm = mode->width_mm;
+ connector->display_info.height_mm = mode->height_mm;
+
+ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
+ drm_mode_set_name(mode);
+ drm_mode_probed_add(connector, mode);
+
+ return 1;
+}
+
+static int exynos_dp_bridge_attach(struct analogix_dp_plat_data *plat_data,
+ struct drm_bridge *bridge,
+ struct drm_connector *connector)
+{
+ struct exynos_dp_device *dp = to_dp(plat_data);
+ int ret;
+
+ dp->connector = connector;
+
+ /* Pre-empt DP connector creation if there's a bridge */
+ if (dp->ptn_bridge) {
+ ret = drm_bridge_attach(&dp->encoder, dp->ptn_bridge, bridge,
+ 0);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
static void exynos_dp_mode_set(struct drm_encoder *encoder,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 0dc36df6ada3..391c831c87f8 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -69,7 +69,7 @@ static int exynos_dpi_get_modes(struct drm_connector *connector)
if (ctx->vm) {
struct drm_display_mode *mode;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
DRM_DEV_ERROR(ctx->dev,
"failed to create a new display mode\n");
diff --git a/drivers/gpu/drm/gud/gud_connector.c b/drivers/gpu/drm/gud/gud_connector.c
index ea0cca58b7c8..50315175d6d9 100644
--- a/drivers/gpu/drm/gud/gud_connector.c
+++ b/drivers/gpu/drm/gud/gud_connector.c
@@ -264,7 +264,7 @@ static int gud_connector_get_modes(struct drm_connector *connector)
for (i = 0; i < num_modes; i++) {
struct drm_display_mode *mode;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
num_modes = i;
goto out;
diff --git a/drivers/gpu/drm/i915/display/intel_tv.c b/drivers/gpu/drm/i915/display/intel_tv.c
index 0a926c6f25f4..071520565ddb 100644
--- a/drivers/gpu/drm/i915/display/intel_tv.c
+++ b/drivers/gpu/drm/i915/display/intel_tv.c
@@ -1807,7 +1807,7 @@ intel_tv_get_modes(struct drm_connector *connector)
input->h > intel_tv_mode_vdisplay(tv_mode))
continue;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode)
continue;
diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c
index aa27d6cd932e..21651a16d1ba 100644
--- a/drivers/gpu/drm/panel/panel-edp.c
+++ b/drivers/gpu/drm/panel/panel-edp.c
@@ -262,7 +262,7 @@ static unsigned int panel_edp_get_timings_modes(struct panel_edp *panel,
struct videomode vm;
videomode_from_timing(dt, &vm);
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->base.dev, "failed to add mode %ux%u\n",
dt->hactive.typ, dt->vactive.typ);
diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
index 66f99982f360..fec0a29ce073 100644
--- a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
+++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
@@ -112,7 +112,7 @@ static int lcd_olinuxino_get_modes(struct drm_panel *panel,
lcd_mode = (struct lcd_olinuxino_mode *)
&lcd->eeprom.reserved[i * sizeof(*lcd_mode)];
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->dev, "failed to add mode %ux%u@%u\n",
lcd_mode->hactive,
diff --git a/drivers/gpu/drm/panel/panel-samsung-ld9040.c b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
index c7f2241523a0..727d92dafd75 100644
--- a/drivers/gpu/drm/panel/panel-samsung-ld9040.c
+++ b/drivers/gpu/drm/panel/panel-samsung-ld9040.c
@@ -267,7 +267,7 @@ static int ld9040_get_modes(struct drm_panel *panel,
struct ld9040 *ctx = panel_to_ld9040(panel);
struct drm_display_mode *mode;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->dev, "failed to create a new display mode\n");
return 0;
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c b/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
index 1b5c500d4f4e..4b11784a8416 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
@@ -925,7 +925,7 @@ static int s6e8aa0_get_modes(struct drm_panel *panel,
struct s6e8aa0 *ctx = panel_to_s6e8aa0(panel);
struct drm_display_mode *mode;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->dev, "failed to create a new display mode\n");
return 0;
diff --git a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
index 0935d83ee2db..cea5843c00ca 100644
--- a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
+++ b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
@@ -69,7 +69,7 @@ static int seiko_panel_get_fixed_modes(struct seiko_panel *panel,
struct videomode vm;
videomode_from_timing(dt, &vm);
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->base.dev, "failed to add mode %ux%u\n",
dt->hactive.typ, dt->vactive.typ);
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index c09bf3db5e78..811efddc29c1 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -180,7 +180,7 @@ static unsigned int panel_simple_get_timings_modes(struct panel_simple *panel,
struct videomode vm;
videomode_from_timing(dt, &vm);
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode) {
dev_err(panel->base.dev, "failed to add mode %ux%u\n",
dt->hactive.typ, dt->vactive.typ);
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
index 1a2b9b68af6f..6c8f705b9541 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
@@ -489,7 +489,7 @@ static int shmob_drm_connector_get_modes(struct drm_connector *connector)
struct shmob_drm_connector *scon = to_shmob_connector(connector);
struct drm_display_mode *mode;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (mode == NULL)
return 0;
diff --git a/drivers/gpu/drm/xen/xen_drm_front_conn.c b/drivers/gpu/drm/xen/xen_drm_front_conn.c
index a1ba6d3d0568..8051d8976efa 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_conn.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_conn.c
@@ -67,7 +67,7 @@ static int connector_get_modes(struct drm_connector *connector)
struct videomode videomode;
int width, height;
- mode = drm_mode_create(connector->dev);
+ mode = drm_mode_create();
if (!mode)
return 0;
diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
index b1d1ecb15f02..94e846ef38be 100644
--- a/include/drm/drm_modes.h
+++ b/include/drm/drm_modes.h
@@ -452,7 +452,7 @@ static inline bool drm_mode_is_stereo(const struct drm_display_mode *mode)
struct drm_connector;
struct drm_cmdline_mode;
-struct drm_display_mode *drm_mode_create(struct drm_device *dev);
+struct drm_display_mode *drm_mode_create(void);
void drm_mode_destroy(struct drm_display_mode *mode);
void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out,
const struct drm_display_mode *in);
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails
2026-07-06 13:34 ` [PATCH 0/3] drm: Remove unused *drm parameter Jan Niedziolka
2026-07-06 13:34 ` [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function Jan Niedziolka
2026-07-06 13:34 ` [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create() Jan Niedziolka
@ 2026-07-06 13:34 ` Jan Niedziolka
2026-07-06 13:58 ` sashiko-bot
2 siblings, 1 reply; 7+ messages in thread
From: Jan Niedziolka @ 2026-07-06 13:34 UTC (permalink / raw)
To: maarten.lankhorst, mripard, tzimmermann, airlied, simona,
k.tegowski
Cc: dri-devel, linux-kernel, a.fijalko, bartlomiej.k, Jan Niedziolka
Add logging to have it printed when mode creating fails. As the NULL return has
been present here for a long time, it's better to keep it as it is. However, a
simple drm_notice() print should be helpful when such fail happens.
At the same time, adding drm_notice() to drm_mode_duplicate() allows making use
of *dev parameter and at the same time, keeps the further drm_mode_duplicate()
references stable.
It's a matter of discussion whether NULL or error code should be returned - the
latter might be more elegant and secure, but introducing it would mean breaking
internal API (current references). It's a cost which might be considered, if
needed.
Signed-off-by: Jan Niedziolka <j.niedziolka@samsung.com>
---
drivers/gpu/drm/drm_modes.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 049d77e75ddd..fc6d974e3948 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -646,8 +646,10 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
* return directly
*/
drm_mode = drm_mode_create();
- if (!drm_mode)
+ if (!drm_mode) {
+ drm_notice(dev, "Failed to create a new display mode\n");
return NULL;
+ }
/* the CVT default refresh rate is 60Hz */
if (!vrefresh)
@@ -881,8 +883,10 @@ drm_gtf_mode_complex(struct drm_device *dev, int hdisplay, int vdisplay,
return NULL;
drm_mode = drm_mode_create();
- if (!drm_mode)
+ if (!drm_mode) {
+ drm_notice(dev, "Failed to create a new display mode\n");
return NULL;
+ }
/* 1. In order to give correct results, the number of horizontal
* pixels requested is first processed to ensure that it is divisible
@@ -1458,8 +1462,10 @@ struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
struct drm_display_mode *nmode;
nmode = drm_mode_create();
- if (!nmode)
+ if (!nmode) {
+ drm_notice(dev, "Failed to create a new display mode\n");
return NULL;
+ }
drm_mode_copy(nmode, mode);
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function
2026-07-06 13:34 ` [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function Jan Niedziolka
@ 2026-07-06 13:55 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-06 13:55 UTC (permalink / raw)
To: Jan Niedziolka; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Unused local variables `dev` and `vbox_connector` due to the removal of the `dev` parameter from `drm_mode_destroy()`.
--
commit 9caafe56634afb7bf9e65d116788497811b64f48
Author: Jan Niedziolka <j.niedziolka@samsung.com>
gpu/drm: Remove unused *dev parameter from drm_mode_destroy function
This commit removes the unused dev parameter from the drm_mode_destroy
function prototype and updates all callers across the tree to match.
[ ... ]
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c
> index 8e4e5fc9d3c5a..fbe5c2382983e 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_mode.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c
> @@ -782,7 +782,7 @@ static int vbox_fill_modes(struct drm_connector *connector, u32 max_x,
> dev = vbox_connector->base.dev;
> list_for_each_entry_safe(mode, iterator, &connector->modes, head) {
> list_del(&mode->head);
> - drm_mode_destroy(dev, mode);
> + drm_mode_destroy(mode);
[Severity: Low]
Since the dev parameter was removed from drm_mode_destroy(), are the dev and
vbox_connector variables now completely unused in vbox_fill_modes()?
Looking at the full function context:
static int vbox_fill_modes(struct drm_connector *connector, u32 max_x, u32 max_y)
{
struct vbox_connector *vbox_connector;
struct drm_device *dev;
struct drm_display_mode *mode, *iterator;
vbox_connector = to_vbox_connector(connector);
dev = vbox_connector->base.dev;
list_for_each_entry_safe(mode, iterator, &connector->modes, head) {
list_del(&mode->head);
drm_mode_destroy(mode);
}
return drm_helper_probe_single_connector_modes(connector, max_x, max_y);
}
Could leaving these assignments here trigger unused-but-set-variable compiler
warnings, potentially breaking builds with -Werror enabled?
> }
>
> return drm_helper_probe_single_connector_modes(connector, max_x, max_y);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260706134515.3369960-1-j.niedziolka@samsung.com?part=1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create()
2026-07-06 13:34 ` [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create() Jan Niedziolka
@ 2026-07-06 13:57 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-06 13:57 UTC (permalink / raw)
To: Jan Niedziolka; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Build failure due to referencing non-existent members in struct exynos_dp_device and unused static functions.
--
commit aa4d752f4408535e5aa104d5d47b153a65ec83e2
Author: Jan Niedziolka <j.niedziolka@samsung.com>
gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create()
This commit removes the unused struct drm_device *dev parameter from the
drm_mode_create() prototype and definition. It also updates all calls to
drm_mode_create() to reflect this change.
> diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
> index b805403281504..78183809b4fb3 100644
> --- a/drivers/gpu/drm/exynos/exynos_dp.c
> +++ b/drivers/gpu/drm/exynos/exynos_dp.c
> @@ -68,6 +68,53 @@ static int exynos_dp_poweroff(struct analogix_dp_plat_data *plat_data)
> return exynos_dp_crtc_clock_enable(plat_data, false);
> }
>
> +static int exynos_dp_get_modes(struct analogix_dp_plat_data *plat_data,
> + struct drm_connector *connector)
> +{
> + struct exynos_dp_device *dp = to_dp(plat_data);
> + struct drm_display_mode *mode;
> +
> + if (dp->plat_data.panel)
> + return 0;
> +
> + mode = drm_mode_create();
> + if (!mode) {
> + DRM_DEV_ERROR(dp->dev,
> + "failed to create a new display mode.\n");
> + return 0;
> + }
> +
> + drm_display_mode_from_videomode(&dp->vm, mode);
[Severity: Low]
Does this code compile successfully? Looking at the definition of
struct exynos_dp_device, it doesn't appear to have a vm member. This might
cause a build failure.
> + connector->display_info.width_mm = mode->width_mm;
> + connector->display_info.height_mm = mode->height_mm;
> +
> + mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
> + drm_mode_set_name(mode);
> + drm_mode_probed_add(connector, mode);
> +
> + return 1;
> +}
> +
> +static int exynos_dp_bridge_attach(struct analogix_dp_plat_data *plat_data,
> + struct drm_bridge *bridge,
> + struct drm_connector *connector)
> +{
> + struct exynos_dp_device *dp = to_dp(plat_data);
> + int ret;
> +
> + dp->connector = connector;
[Severity: Low]
Similarly here, is connector a valid member of struct exynos_dp_device?
> +
> + /* Pre-empt DP connector creation if there's a bridge */
> + if (dp->ptn_bridge) {
[Severity: Low]
And here, does struct exynos_dp_device have a ptn_bridge member? It looks
like these functions might have been accidentally pasted from another driver
during a rebase, as they don't seem to match the struct definition and don't
appear to be referenced anywhere in this file.
> + ret = drm_bridge_attach(&dp->encoder, dp->ptn_bridge, bridge,
> + 0);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260706134515.3369960-1-j.niedziolka@samsung.com?part=2
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails
2026-07-06 13:34 ` [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails Jan Niedziolka
@ 2026-07-06 13:58 ` sashiko-bot
0 siblings, 0 replies; 7+ messages in thread
From: sashiko-bot @ 2026-07-06 13:58 UTC (permalink / raw)
To: Jan Niedziolka; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] Redundant custom OOM logging
- [Low] Incomplete implementation of mode creation failure logging
--
commit 918b658b4d8223239a11b91ab8f874692e392821
Author: Jan Niedziolka <j.niedziolka@samsung.com>
gpu/drm: Add drm_notice logging when drm_mode_create fails
This commit adds drm_notice() prints to drm_cvt_mode(), drm_gtf_mode_complex(),
and drm_mode_duplicate() to log when drm_mode_create() fails and returns NULL.
> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
> index 049d77e75ddda..fc6d974e3948d 100644
> --- a/drivers/gpu/drm/drm_modes.c
> +++ b/drivers/gpu/drm/drm_modes.c
> @@ -646,8 +646,10 @@ struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, int hdisplay,
> * return directly
> */
> drm_mode = drm_mode_create();
> - if (!drm_mode)
> + if (!drm_mode) {
> + drm_notice(dev, "Failed to create a new display mode\n");
> return NULL;
> + }
[Severity: Low]
Is this custom error logging redundant?
Since drm_mode_create() relies on memory allocation (via kzalloc_obj()), the
kernel's memory allocation subsystem will already report OOM conditions with a
backtrace. Adding custom error messages for memory allocation failures
can cause unnecessary kernel binary bloat and log spam.
[Severity: Low]
If the intent is to log mode creation failures consistently, did this miss
drm_analog_tv_mode()?
It takes a dev parameter and calls drm_mode_create() in the same file, but
was not updated by this patch:
drivers/gpu/drm/drm_modes.c:drm_analog_tv_mode() {
...
mode = drm_mode_create();
if (!mode)
return NULL;
...
}
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260706134515.3369960-1-j.niedziolka@samsung.com?part=3
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-06 13:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20260706134549eucas1p20eedf2d3287d95687eaaa8a201679083@eucas1p2.samsung.com>
2026-07-06 13:34 ` [PATCH 0/3] drm: Remove unused *drm parameter Jan Niedziolka
2026-07-06 13:34 ` [PATCH 1/3] gpu/drm: Remove unused *dev parameter from drm_mode_destroy function Jan Niedziolka
2026-07-06 13:55 ` sashiko-bot
2026-07-06 13:34 ` [PATCH 2/3] gpu/drm: Remove unused 'drm device *dev' parameter from drm_mode_create() Jan Niedziolka
2026-07-06 13:57 ` sashiko-bot
2026-07-06 13:34 ` [PATCH 3/3] gpu/drm: Add drm_notice logging when drm_mode_create fails Jan Niedziolka
2026-07-06 13:58 ` sashiko-bot
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.