Message ID | 20250411201333.151335-8-mwen@igalia.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/amd/display: more drm_edid to AMD display driver | expand |
Hi Melissa, kernel test robot noticed the following build warnings: [auto build test WARNING on amd-pstate/linux-next] [also build test WARNING on amd-pstate/bleeding-edge linus/master v6.15-rc2 next-20250415] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Melissa-Wen/drm-amd-display-make-sure-drm_edid-stored-in-aconnector-doesn-t-leak/20250414-132618 base: https://git.kernel.org/pub/scm/linux/kernel/git/superm1/linux.git linux-next patch link: https://lore.kernel.org/r/20250411201333.151335-8-mwen%40igalia.com patch subject: [PATCH 07/13] drm/amd/display: simplify dm_helpers_parse_edid_caps signature config: powerpc-randconfig-003-20250415 (https://download.01.org/0day-ci/archive/20250415/202504151833.9WxWkFzM-lkp@intel.com/config) compiler: powerpc-linux-gcc (GCC) 7.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250415/202504151833.9WxWkFzM-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202504151833.9WxWkFzM-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:100: warning: Function parameter or struct member 'sink' not described in 'dm_helpers_parse_edid_caps' >> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:100: warning: Excess function parameter 'edid' description in 'dm_helpers_parse_edid_caps' >> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:100: warning: Excess function parameter 'edid_caps' description in 'dm_helpers_parse_edid_caps' Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for HOTPLUG_CPU Depends on [n]: SMP [=y] && (PPC_PSERIES [=n] || PPC_PMAC [=n] || PPC_POWERNV [=n] || FSL_SOC_BOOKE [=n]) Selected by [y]: - PM_SLEEP_SMP [=y] && SMP [=y] && (ARCH_SUSPEND_POSSIBLE [=y] || ARCH_HIBERNATION_POSSIBLE [=y]) && PM_SLEEP [=y] vim +100 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c 613a7956deb3b1 Aurabindo Pillai 2023-06-12 87 027ec1819a19f7 Melissa Wen 2025-04-11 88 #define AMDGPU_ELD_DISPLAY_NAME_SIZE_IN_CHARS 13 f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 89 /** f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 90 * dm_helpers_parse_edid_caps() - Parse edid caps 4562236b3bc0a2 Harry Wentland 2017-09-12 91 * f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 92 * @link: current detected link 4562236b3bc0a2 Harry Wentland 2017-09-12 93 * @edid: [in] pointer to edid f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 94 * @edid_caps: [in] pointer to edid caps f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 95 * f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 96 * Return: void f0b60e6e9b2ba3 Srinivasan Shanmugam 2023-07-13 97 */ cce130cc696979 Melissa Wen 2025-04-11 98 enum dc_edid_status dm_helpers_parse_edid_caps(struct dc_link *link, cce130cc696979 Melissa Wen 2025-04-11 99 struct dc_sink *sink) 4562236b3bc0a2 Harry Wentland 2017-09-12 @100 { 3c021931023a30 Claudio Suarez 2021-10-17 101 struct amdgpu_dm_connector *aconnector = link->priv; 3c021931023a30 Claudio Suarez 2021-10-17 102 struct drm_connector *connector = &aconnector->base; 41b830476009f5 Aurabindo Pillai 2025-02-24 103 struct drm_device *dev = connector->dev; cce130cc696979 Melissa Wen 2025-04-11 104 struct edid *edid_buf; 66c33284fbf286 Melissa Wen 2025-04-11 105 const struct drm_edid *drm_edid; 23abb3407f98d7 Melissa Wen 2025-04-11 106 struct drm_edid_product_id product_id; cce130cc696979 Melissa Wen 2025-04-11 107 struct dc_edid_caps *edid_caps = &sink->edid_caps; 8e9dfe0e0f1915 Melissa Wen 2025-04-11 108 int sad_count; 4562236b3bc0a2 Harry Wentland 2017-09-12 109 int i = 0; 4562236b3bc0a2 Harry Wentland 2017-09-12 110 enum dc_edid_status result = EDID_OK; 4562236b3bc0a2 Harry Wentland 2017-09-12 111 cce130cc696979 Melissa Wen 2025-04-11 112 edid_buf = (struct edid *) &sink->dc_edid.raw_edid; cce130cc696979 Melissa Wen 2025-04-11 113 if (!edid_caps || !edid_buf) 4562236b3bc0a2 Harry Wentland 2017-09-12 114 return EDID_BAD_INPUT; 4562236b3bc0a2 Harry Wentland 2017-09-12 115 66c33284fbf286 Melissa Wen 2025-04-11 116 drm_edid = drm_edid_alloc(edid_buf, EDID_LENGTH * (edid_buf->extensions + 1)); 66c33284fbf286 Melissa Wen 2025-04-11 117 66c33284fbf286 Melissa Wen 2025-04-11 118 if (!drm_edid_valid(drm_edid)) 4562236b3bc0a2 Harry Wentland 2017-09-12 119 result = EDID_BAD_CHECKSUM; 4562236b3bc0a2 Harry Wentland 2017-09-12 120 66c33284fbf286 Melissa Wen 2025-04-11 121 drm_edid_connector_update(connector, drm_edid); 23abb3407f98d7 Melissa Wen 2025-04-11 122 drm_edid_get_product_id(drm_edid, &product_id); 23abb3407f98d7 Melissa Wen 2025-04-11 123 23abb3407f98d7 Melissa Wen 2025-04-11 124 edid_caps->manufacturer_id = le16_to_cpu(product_id.manufacturer_name); 23abb3407f98d7 Melissa Wen 2025-04-11 125 edid_caps->product_id = le16_to_cpu(product_id.product_code); 23abb3407f98d7 Melissa Wen 2025-04-11 126 edid_caps->serial_number = le32_to_cpu(product_id.serial_number); 23abb3407f98d7 Melissa Wen 2025-04-11 127 edid_caps->manufacture_week = product_id.week_of_manufacture; 23abb3407f98d7 Melissa Wen 2025-04-11 128 edid_caps->manufacture_year = product_id.year_of_manufacture; 4562236b3bc0a2 Harry Wentland 2017-09-12 129 027ec1819a19f7 Melissa Wen 2025-04-11 130 memset(edid_caps->display_name, 0, AUDIO_INFO_DISPLAY_NAME_SIZE_IN_CHARS); 027ec1819a19f7 Melissa Wen 2025-04-11 131 memcpy(edid_caps->display_name, 027ec1819a19f7 Melissa Wen 2025-04-11 132 &connector->eld[DRM_ELD_MONITOR_NAME_STRING], 027ec1819a19f7 Melissa Wen 2025-04-11 133 AMDGPU_ELD_DISPLAY_NAME_SIZE_IN_CHARS); 4562236b3bc0a2 Harry Wentland 2017-09-12 134 3c021931023a30 Claudio Suarez 2021-10-17 135 edid_caps->edid_hdmi = connector->display_info.is_hdmi; 4562236b3bc0a2 Harry Wentland 2017-09-12 136 24baf0ebdb9d17 Melissa Wen 2025-04-11 137 apply_edid_quirks(dev, drm_edid, edid_caps); b7cdccc6a84956 Ryan Lin 2024-02-28 138 66c33284fbf286 Melissa Wen 2025-04-11 139 sad_count = drm_eld_sad_count(connector->eld); 66c33284fbf286 Melissa Wen 2025-04-11 140 if (sad_count <= 0) { 66c33284fbf286 Melissa Wen 2025-04-11 141 drm_edid_free(drm_edid); 4562236b3bc0a2 Harry Wentland 2017-09-12 142 return result; 66c33284fbf286 Melissa Wen 2025-04-11 143 } 4562236b3bc0a2 Harry Wentland 2017-09-12 144 1347b15d5e8e16 Srinivasan Shanmugam 2023-08-13 145 edid_caps->audio_mode_count = min(sad_count, DC_MAX_AUDIO_DESC_COUNT); 4562236b3bc0a2 Harry Wentland 2017-09-12 146 for (i = 0; i < edid_caps->audio_mode_count; ++i) { 66c33284fbf286 Melissa Wen 2025-04-11 147 struct cea_sad sad; 66c33284fbf286 Melissa Wen 2025-04-11 148 66c33284fbf286 Melissa Wen 2025-04-11 149 if (drm_eld_sad_get(connector->eld, i, &sad) < 0) 66c33284fbf286 Melissa Wen 2025-04-11 150 continue; 4562236b3bc0a2 Harry Wentland 2017-09-12 151 66c33284fbf286 Melissa Wen 2025-04-11 152 edid_caps->audio_modes[i].format_code = sad.format; 66c33284fbf286 Melissa Wen 2025-04-11 153 edid_caps->audio_modes[i].channel_count = sad.channels + 1; 66c33284fbf286 Melissa Wen 2025-04-11 154 edid_caps->audio_modes[i].sample_rate = sad.freq; 66c33284fbf286 Melissa Wen 2025-04-11 155 edid_caps->audio_modes[i].sample_size = sad.byte2; 4562236b3bc0a2 Harry Wentland 2017-09-12 156 } 4562236b3bc0a2 Harry Wentland 2017-09-12 157 8e9dfe0e0f1915 Melissa Wen 2025-04-11 158 if (connector->eld[DRM_ELD_SPEAKER]) 8e9dfe0e0f1915 Melissa Wen 2025-04-11 159 edid_caps->speaker_flags = connector->eld[DRM_ELD_SPEAKER]; 4562236b3bc0a2 Harry Wentland 2017-09-12 160 else 4562236b3bc0a2 Harry Wentland 2017-09-12 161 edid_caps->speaker_flags = DEFAULT_SPEAKER_LOCATION; 4562236b3bc0a2 Harry Wentland 2017-09-12 162 66c33284fbf286 Melissa Wen 2025-04-11 163 drm_edid_free(drm_edid); 4562236b3bc0a2 Harry Wentland 2017-09-12 164 4562236b3bc0a2 Harry Wentland 2017-09-12 165 return result; 4562236b3bc0a2 Harry Wentland 2017-09-12 166 } 4562236b3bc0a2 Harry Wentland 2017-09-12 167
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 960bb8c62ffe..3cad6d9153f7 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -7529,10 +7529,7 @@ static void amdgpu_dm_connector_funcs_force(struct drm_connector *connector) memset(&dc_em_sink->edid_caps, 0, sizeof(struct dc_edid_caps)); memmove(dc_em_sink->dc_edid.raw_edid, edid, (edid->extensions + 1) * EDID_LENGTH); - dm_helpers_parse_edid_caps( - dc_link, - &dc_em_sink->dc_edid, - &dc_em_sink->edid_caps); + dm_helpers_parse_edid_caps(dc_link, dc_em_sink); } } diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c index a96f527a59df..3082582c1579 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c @@ -95,22 +95,22 @@ static void apply_edid_quirks(struct drm_device *dev, * * Return: void */ -enum dc_edid_status dm_helpers_parse_edid_caps( - struct dc_link *link, - const struct dc_edid *edid, - struct dc_edid_caps *edid_caps) +enum dc_edid_status dm_helpers_parse_edid_caps(struct dc_link *link, + struct dc_sink *sink) { struct amdgpu_dm_connector *aconnector = link->priv; struct drm_connector *connector = &aconnector->base; struct drm_device *dev = connector->dev; - struct edid *edid_buf = edid ? (struct edid *) edid->raw_edid : NULL; + struct edid *edid_buf; const struct drm_edid *drm_edid; struct drm_edid_product_id product_id; + struct dc_edid_caps *edid_caps = &sink->edid_caps; int sad_count; int i = 0; enum dc_edid_status result = EDID_OK; - if (!edid_caps || !edid) + edid_buf = (struct edid *) &sink->dc_edid.raw_edid; + if (!edid_caps || !edid_buf) return EDID_BAD_INPUT; drm_edid = drm_edid_alloc(edid_buf, EDID_LENGTH * (edid_buf->extensions + 1)); @@ -1030,10 +1030,7 @@ enum dc_edid_status dm_helpers_read_local_edid( /* We don't need the original edid anymore */ drm_edid_free(drm_edid); - edid_status = dm_helpers_parse_edid_caps( - link, - &sink->dc_edid, - &sink->edid_caps); + edid_status = dm_helpers_parse_edid_caps(link, sink); } while (edid_status == EDID_BAD_CHECKSUM && --retry > 0); diff --git a/drivers/gpu/drm/amd/display/dc/dm_helpers.h b/drivers/gpu/drm/amd/display/dc/dm_helpers.h index 9d160b39e8c5..ce6a70368bd0 100644 --- a/drivers/gpu/drm/amd/display/dc/dm_helpers.h +++ b/drivers/gpu/drm/amd/display/dc/dm_helpers.h @@ -59,11 +59,8 @@ void dm_helpers_free_gpu_mem( enum dc_gpu_mem_alloc_type type, void *pvMem); -enum dc_edid_status dm_helpers_parse_edid_caps( - struct dc_link *link, - const struct dc_edid *edid, - struct dc_edid_caps *edid_caps); - +enum dc_edid_status dm_helpers_parse_edid_caps(struct dc_link *link, + struct dc_sink *sink); /* * Update DP branch info diff --git a/drivers/gpu/drm/amd/display/dc/link/link_detection.c b/drivers/gpu/drm/amd/display/dc/link/link_detection.c index cc9191a5c9e6..8c7a00c1ad2b 100644 --- a/drivers/gpu/drm/amd/display/dc/link/link_detection.c +++ b/drivers/gpu/drm/amd/display/dc/link/link_detection.c @@ -1429,10 +1429,7 @@ struct dc_sink *link_add_remote_sink( dc_sink)) goto fail_add_sink; - edid_status = dm_helpers_parse_edid_caps( - link, - &dc_sink->dc_edid, - &dc_sink->edid_caps); + edid_status = dm_helpers_parse_edid_caps(link, dc_sink); /* * Treat device as no EDID device if EDID
Pass dc_sink to dm_helpers_parse_edid_caps(), since it already contains edid info. It's a groundwork to get rid of raw edid stored as dc_edid. Signed-off-by: Melissa Wen <mwen@igalia.com> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +---- .../amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 17 +++++++---------- drivers/gpu/drm/amd/display/dc/dm_helpers.h | 7 ++----- .../drm/amd/display/dc/link/link_detection.c | 5 +---- 4 files changed, 11 insertions(+), 23 deletions(-)