dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] drm/amd/display: Fix missing HF-EEODB blocks in EDID copies
@ 2026-07-13 19:32 Timo Prömer
  2026-07-13 19:32 ` [PATCH v2 1/2] drm/edid: Export drm_edid_block_count() Timo Prömer
  2026-07-13 19:32 ` [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions Timo Prömer
  0 siblings, 2 replies; 9+ messages in thread
From: Timo Prömer @ 2026-07-13 19:32 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Alex Deucher, Christian König,
	David Airlie, Simona Vetter
  Cc: Rodrigo Siqueira, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, amd-gfx, dri-devel, linux-kernel,
	Timo Prömer

Fix an issue in amd/display where devices with HF-EEODB blocks would 
be missing these additional blocks during EDID reads.

The driver previously used `edid->extensions + 1` to calculate the 
number of blocks to copy, but the base extension flag does not include 
HF-EEODB blocks.

Use drm_edid_block_count() directly to get the true number of blocks, 
ensuring that HF-EEODB blocks are properly copied.

Changes in v2:
- Fixed a bug in patch 2 where the bounds check still used the old
  extension count.
- Patch 1 remains unchanged.

Timo Prömer (2):
  drm/edid: Export drm_edid_block_count()
  drm/amd/display: Use drm_edid_block_count() instead of raw extensions

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 11 ++++++++---
 drivers/gpu/drm/drm_edid.c                            |  3 ++-
 include/drm/drm_edid.h                                |  1 +
 3 files changed, 11 insertions(+), 4 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 1/2] drm/edid: Export drm_edid_block_count()
  2026-07-13 19:32 [PATCH v2 0/2] drm/amd/display: Fix missing HF-EEODB blocks in EDID copies Timo Prömer
@ 2026-07-13 19:32 ` Timo Prömer
  2026-09-18 14:14   ` Jani Nikula
  2026-07-13 19:32 ` [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions Timo Prömer
  1 sibling, 1 reply; 9+ messages in thread
From: Timo Prömer @ 2026-07-13 19:32 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Alex Deucher, Christian König,
	David Airlie, Simona Vetter
  Cc: Rodrigo Siqueira, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, amd-gfx, dri-devel, linux-kernel,
	Timoyoungster

From: Timoyoungster <timo.proemer04@gmail.com>

Drivers currently calculating EDID size by reading the `extensions`
field of the raw EDID structure (e.g., `edid->extensions + 1`) will
calculate the wrong size if the EDID contains an HF-EEODB (HDMI Forum
EDID Extension Override Data Block). The base extension flag does not
account for these override blocks, leading to truncated EDIDs.

Remove the static declaration and export drm_edid_block_count() so
drivers can safely query the true block count. This allows drivers to
leverage the core DRM's proper handling of HF-EEODB and other edge
cases without having to parse the raw EDID fields themselves.

Signed-off-by: Timo Prömer <timo.proemer04@gmail.com>
---
 drivers/gpu/drm/drm_edid.c | 3 ++-
 include/drm/drm_edid.h     | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index df3c25bac..34560b33a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -1698,12 +1698,13 @@ static int __drm_edid_block_count(const struct drm_edid *drm_edid)
 }
 
 /* EDID block count, limited by allocated size */
-static int drm_edid_block_count(const struct drm_edid *drm_edid)
+int drm_edid_block_count(const struct drm_edid *drm_edid)
 {
 	/* Limit by allocated size */
 	return min(__drm_edid_block_count(drm_edid),
 		   (int)drm_edid->size / EDID_LENGTH);
 }
+EXPORT_SYMBOL(drm_edid_block_count);
 
 /* EDID extension block count, limited by allocated size */
 static int drm_edid_extension_block_count(const struct drm_edid *drm_edid)
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
index 04f7a7f1f..4a990bf87 100644
--- a/include/drm/drm_edid.h
+++ b/include/drm/drm_edid.h
@@ -481,6 +481,7 @@ const struct drm_edid *drm_edid_read_switcheroo(struct drm_connector *connector,
 int drm_edid_connector_update(struct drm_connector *connector,
 			      const struct drm_edid *edid);
 int drm_edid_connector_add_modes(struct drm_connector *connector);
+int drm_edid_block_count(const struct drm_edid *drm_edid);
 bool drm_edid_is_digital(const struct drm_edid *drm_edid);
 void drm_edid_get_product_id(const struct drm_edid *drm_edid,
 			     struct drm_edid_product_id *id);
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-07-13 19:32 [PATCH v2 0/2] drm/amd/display: Fix missing HF-EEODB blocks in EDID copies Timo Prömer
  2026-07-13 19:32 ` [PATCH v2 1/2] drm/edid: Export drm_edid_block_count() Timo Prömer
@ 2026-07-13 19:32 ` Timo Prömer
  2026-07-13 19:49   ` sashiko-bot
  1 sibling, 1 reply; 9+ messages in thread
From: Timo Prömer @ 2026-07-13 19:32 UTC (permalink / raw)
  To: Harry Wentland, Leo Li, Alex Deucher, Christian König,
	David Airlie, Simona Vetter
  Cc: Rodrigo Siqueira, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, amd-gfx, dri-devel, linux-kernel,
	Timoyoungster

From: Timoyoungster <timo.proemer04@gmail.com>

Instead of manually calculating the EDID block count by reading the
extensions field from the raw edid structure (`edid->extensions + 1`),
utilize the core DRM helper `drm_edid_block_count()`.

This now includes possible HF-EEODB extension blocks, which are not
included in `edid->extensions` and were previously truncated with the
`memmove`.

Signed-off-by: Timo Prömer <timo.proemer04@gmail.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

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 c6f94eb71..d6d6ea719 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
@@ -1160,6 +1160,7 @@ enum dc_edid_status dm_helpers_read_local_edid(
 	struct drm_connector *connector = &aconnector->base;
 	struct i2c_adapter *ddc;
 	int retry = 25;
+	int block_count;
 	enum dc_edid_status edid_status = EDID_NO_RESPONSE;
 	const struct drm_edid *drm_edid;
 	const struct edid *edid;
@@ -1201,11 +1202,15 @@ enum dc_edid_status dm_helpers_read_local_edid(
 			continue;
 
 		edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
-		if (!edid ||
-		    edid->extensions >= sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH)
+		if (!edid)
 			return EDID_BAD_INPUT;
 
-		sink->dc_edid.length = EDID_LENGTH * (edid->extensions + 1);
+		block_count = drm_edid_block_count(drm_edid);
+
+		if (block_count > sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH)
+			return EDID_BAD_INPUT;
+
+		sink->dc_edid.length = EDID_LENGTH * block_count;
 		memmove(sink->dc_edid.raw_edid, (uint8_t *)edid, sink->dc_edid.length);
 
 		/* We don't need the original edid anymore */
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-07-13 19:32 ` [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions Timo Prömer
@ 2026-07-13 19:49   ` sashiko-bot
  2026-07-27 21:33     ` Fangzhi Zuo
  0 siblings, 1 reply; 9+ messages in thread
From: sashiko-bot @ 2026-07-13 19:49 UTC (permalink / raw)
  To: Timo Prömer; +Cc: dri-devel

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

New issues:
- [High] Kernel heap out-of-bounds read due to mismatch between HF-EEODB block count and raw `edid->extensions` byte.

Pre-existing issues:
- [Critical] Heap buffer overflow in amdgpu_dm_connector_funcs_force() when copying EDID.
--

--- Patch [2]: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions ---
commit bb5e357c1182326e11f3ce4e756df91c3df854a6
Author: Timoyoungster <timo.proemer04@gmail.com>

drm/amd/display: Use drm_edid_block_count() instead of raw extensions

Instead of manually calculating the EDID block count by reading the
extensions field from the raw edid structure (edid->extensions + 1),
utilize the core DRM helper drm_edid_block_count().

This now includes possible HF-EEODB extension blocks, which are not
included in edid->extensions and were previously truncated with the
memmove.

> 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 71e2627f9a9d4..82f3cce870a3c 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
> @@ -1220,11 +1221,15 @@ enum dc_edid_status dm_helpers_read_local_edid(
>  			continue;
>  
>  		edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
> -		if (!edid ||
> -		    edid->extensions >= sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH)
> +		if (!edid)
>  			return EDID_BAD_INPUT;
>  
> -		sink->dc_edid.length = EDID_LENGTH * (edid->extensions + 1);
> +		block_count = drm_edid_block_count(drm_edid);
> +
> +		if (block_count > sizeof(sink->dc_edid.raw_edid) / EDID_LENGTH)
> +			return EDID_BAD_INPUT;
> +
> +		sink->dc_edid.length = EDID_LENGTH * block_count;
>  		memmove(sink->dc_edid.raw_edid, (uint8_t *)edid, sink->dc_edid.length);

[Severity: High]
Does this create an out-of-bounds read when the copied EDID is parsed downstream?

If a malicious display provides an EDID with an extension count of 255 but an
HF-EEODB block specifying a count of 2, drm_edid_block_count() will return 2.
The bounds check passes, and memmove() copies 256 bytes into raw_edid.

However, the raw extensions byte in the copied data remains 255.
When this is later parsed in dm_helpers_parse_edid_caps() which delegates to
drm_edid_is_valid(), doesn't that legacy helper use the unmodified extensions
byte to iterate up to 256 times, reading past the end of the 2048-byte
raw_edid array on the kernel heap?

Should the raw extensions byte in the copied buffer be manually updated to match
block_count - 1, preventing legacy functions from performing out-of-bounds
reads?

Also, looking at related EDID copying code in the same subsystem:

[Severity: Critical]
This isn't a bug introduced by this patch, but does the following code in
amdgpu_dm_connector.c:amdgpu_dm_connector_funcs_force() have a heap buffer
overflow?

amdgpu_dm_connector_funcs_force() {
    ...
    memmove(dc_em_sink->dc_edid.raw_edid, edid, (edid->extensions + 1) * EDID_LENGTH);
    ...
}

If a malicious display or I2C emulator provides an EDID with extensions set to
255 and valid block checksums, and userspace with DRM privileges forces a
connector status update, it appears this could copy up to 32KB into the 2KB
dc_em_sink->dc_edid.raw_edid buffer, corrupting the heap.

Is a bounds check needed here similar to the one performed in
dm_helpers_read_local_edid()?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260713193237.2639-1-timo.proemer04@gmail.com?part=2

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-07-13 19:49   ` sashiko-bot
@ 2026-07-27 21:33     ` Fangzhi Zuo
  2026-07-28 23:57       ` Timo Prömer
  2026-09-18 14:30       ` Jani Nikula
  0 siblings, 2 replies; 9+ messages in thread
From: Fangzhi Zuo @ 2026-07-27 21:33 UTC (permalink / raw)
  To: timo.proemer04; +Cc: Fangzhi Zuo, dri-devel, amd-gfx

Hi Timo,

Thanks for the patch. Heads-up that this overlaps with a fix already in
amd-staging-drm-next:

  21590e1adc9e ("drm/amd/display: Fix 8K Mode Not Parsed by EDID")

That commit addresses the same underlying problem your patch targets --
edid->extensions (byte 0x7e) not accounting for HF-EEODB blocks, so only
2 of 4 blocks of an HDMI 2.1 EDID get copied into sink->dc_edid and the
8K modes in the DisplayID extension blocks are lost. It takes a slightly
different approach: instead of drm_edid_block_count(), it populates
edid_blob_ptr with a full, HF-EEODB-aware blob and copies
edid_blob_ptr->length. So on current amd-staging the
dm_helpers_read_local_edid() hunk here no longer applies cleanly.

Could you rebase on the latest amd-staging-drm-next and see what, if
anything, is still needed on top? There may still be value in the
helper conversion for readability, but we should avoid re-fixing the
same HF-EEODB issue two different ways.

Thanks,
Jerry

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-07-27 21:33     ` Fangzhi Zuo
@ 2026-07-28 23:57       ` Timo Prömer
  2026-09-18 14:30       ` Jani Nikula
  1 sibling, 0 replies; 9+ messages in thread
From: Timo Prömer @ 2026-07-28 23:57 UTC (permalink / raw)
  To: Fangzhi Zuo, timo.proemer04; +Cc: dri-devel, amd-gfx

Hi Jerry,

Thank you for the response.

I see that the patch you referenced was already released with rc4.
I tested my use case with that release and the EDID is read correctly now,
so I believe my patch can be dropped.

This is my very first interaction with the kernel process,
so I am sure the released patch handles things
much better than my attempt anyway!

Thank you for your time,
Timo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] drm/edid: Export drm_edid_block_count()
  2026-07-13 19:32 ` [PATCH v2 1/2] drm/edid: Export drm_edid_block_count() Timo Prömer
@ 2026-09-18 14:14   ` Jani Nikula
  0 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2026-09-18 14:14 UTC (permalink / raw)
  To: Timo Prömer, Harry Wentland, Leo Li, Alex Deucher,
	Christian König, David Airlie, Simona Vetter
  Cc: Rodrigo Siqueira, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, amd-gfx, dri-devel, linux-kernel,
	Timoyoungster

On Mon, 13 Jul 2026, Timo Prömer <timo.proemer04@gmail.com> wrote:
> From: Timoyoungster <timo.proemer04@gmail.com>
>
> Drivers currently calculating EDID size by reading the `extensions`
> field of the raw EDID structure (e.g., `edid->extensions + 1`) will
> calculate the wrong size if the EDID contains an HF-EEODB (HDMI Forum
> EDID Extension Override Data Block). The base extension flag does not
> account for these override blocks, leading to truncated EDIDs.
>
> Remove the static declaration and export drm_edid_block_count() so
> drivers can safely query the true block count. This allows drivers to
> leverage the core DRM's proper handling of HF-EEODB and other edge
> cases without having to parse the raw EDID fields themselves.
>
> Signed-off-by: Timo Prömer <timo.proemer04@gmail.com>
> ---
>  drivers/gpu/drm/drm_edid.c | 3 ++-
>  include/drm/drm_edid.h     | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index df3c25bac..34560b33a 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -1698,12 +1698,13 @@ static int __drm_edid_block_count(const struct drm_edid *drm_edid)
>  }
>  
>  /* EDID block count, limited by allocated size */
> -static int drm_edid_block_count(const struct drm_edid *drm_edid)
> +int drm_edid_block_count(const struct drm_edid *drm_edid)
>  {
>  	/* Limit by allocated size */
>  	return min(__drm_edid_block_count(drm_edid),
>  		   (int)drm_edid->size / EDID_LENGTH);
>  }
> +EXPORT_SYMBOL(drm_edid_block_count);

Not everything that's inside drm_edid.c is supposed to be looked
into. It's abstracted and hidden for a reason. Please don't hack into
this.

BR,
Jani.

>  
>  /* EDID extension block count, limited by allocated size */
>  static int drm_edid_extension_block_count(const struct drm_edid *drm_edid)
> diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
> index 04f7a7f1f..4a990bf87 100644
> --- a/include/drm/drm_edid.h
> +++ b/include/drm/drm_edid.h
> @@ -481,6 +481,7 @@ const struct drm_edid *drm_edid_read_switcheroo(struct drm_connector *connector,
>  int drm_edid_connector_update(struct drm_connector *connector,
>  			      const struct drm_edid *edid);
>  int drm_edid_connector_add_modes(struct drm_connector *connector);
> +int drm_edid_block_count(const struct drm_edid *drm_edid);
>  bool drm_edid_is_digital(const struct drm_edid *drm_edid);
>  void drm_edid_get_product_id(const struct drm_edid *drm_edid,
>  			     struct drm_edid_product_id *id);

-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-07-27 21:33     ` Fangzhi Zuo
  2026-07-28 23:57       ` Timo Prömer
@ 2026-09-18 14:30       ` Jani Nikula
  2026-09-18 15:19         ` Zuo, Jerry
  1 sibling, 1 reply; 9+ messages in thread
From: Jani Nikula @ 2026-09-18 14:30 UTC (permalink / raw)
  To: Fangzhi Zuo, timo.proemer04, Harry Wentland, Leo Li, Alex Deucher
  Cc: Fangzhi Zuo, dri-devel, amd-gfx

On Mon, 27 Jul 2026, Fangzhi Zuo <jerry.zuo@amd.com> wrote:
> Hi Timo,
>
> Thanks for the patch. Heads-up that this overlaps with a fix already in
> amd-staging-drm-next:
>
>   21590e1adc9e ("drm/amd/display: Fix 8K Mode Not Parsed by EDID")

More precisely commit 11a90eaf5c80 ("drm/amd/display: Fix 8K Mode Not
Parsed by EDID") upstream.

> That commit addresses the same underlying problem your patch targets --
> edid->extensions (byte 0x7e) not accounting for HF-EEODB blocks, so only
> 2 of 4 blocks of an HDMI 2.1 EDID get copied into sink->dc_edid and the
> 8K modes in the DisplayID extension blocks are lost. It takes a slightly
> different approach: instead of drm_edid_block_count(), it populates
> edid_blob_ptr with a full, HF-EEODB-aware blob and copies
> edid_blob_ptr->length. So on current amd-staging the
> dm_helpers_read_local_edid() hunk here no longer applies cleanly.

That's an awful, ugly hack. Please work to remove it. Drivers are not
supposed to look at or use connector->edid_blob_ptr at all. See the
documentation.

I really did put in a *lot* of effort into abstracting HF-EEODB properly
and neatly for everyone, across the subsystem. The opaque struct
drm_edid is the abstraction. Please embrace it, and you'll get HF-EEODB
for free, with no hacks.

If you face issues, please talk to me instead of hacking stuff and
intentionally working around the the abstractions.

> Could you rebase on the latest amd-staging-drm-next and see what, if
> anything, is still needed on top? There may still be value in the
> helper conversion for readability, but we should avoid re-fixing the
> same HF-EEODB issue two different ways.

The one and only fix for HF-EEODB is to use struct drm_edid everywhere.


BR,
Jani.


-- 
Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions
  2026-09-18 14:30       ` Jani Nikula
@ 2026-09-18 15:19         ` Zuo, Jerry
  0 siblings, 0 replies; 9+ messages in thread
From: Zuo, Jerry @ 2026-09-18 15:19 UTC (permalink / raw)
  To: Jani Nikula, timo.proemer04@gmail.com, Wentland, Harry,
	Li, Sun peng (Leo), Deucher, Alexander
  Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org

AMD General

> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Friday, September 18, 2026 10:30
> To: Zuo, Jerry <Jerry.Zuo@amd.com>; timo.proemer04@gmail.com;
> Wentland, Harry <Harry.Wentland@amd.com>; Li, Sun peng (Leo)
> <Sunpeng.Li@amd.com>; Deucher, Alexander
> <Alexander.Deucher@amd.com>
> Cc: Zuo, Jerry <Jerry.Zuo@amd.com>; dri-devel@lists.freedesktop.org; amd-
> gfx@lists.freedesktop.org
> Subject: Re: [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count()
> instead of raw extensions
>
> On Mon, 27 Jul 2026, Fangzhi Zuo <jerry.zuo@amd.com> wrote:
> > Hi Timo,
> >
> > Thanks for the patch. Heads-up that this overlaps with a fix already
> > in
> > amd-staging-drm-next:
> >
> >   21590e1adc9e ("drm/amd/display: Fix 8K Mode Not Parsed by EDID")
>
> More precisely commit 11a90eaf5c80 ("drm/amd/display: Fix 8K Mode Not
> Parsed by EDID") upstream.
>
> > That commit addresses the same underlying problem your patch targets
> > --
> > edid->extensions (byte 0x7e) not accounting for HF-EEODB blocks, so
> > edid->only
> > 2 of 4 blocks of an HDMI 2.1 EDID get copied into sink->dc_edid and
> > the 8K modes in the DisplayID extension blocks are lost. It takes a
> > slightly different approach: instead of drm_edid_block_count(), it
> > populates edid_blob_ptr with a full, HF-EEODB-aware blob and copies
> > edid_blob_ptr->length. So on current amd-staging the
> > dm_helpers_read_local_edid() hunk here no longer applies cleanly.
>
> That's an awful, ugly hack. Please work to remove it. Drivers are not supposed
> to look at or use connector->edid_blob_ptr at all. See the documentation.
>
> I really did put in a *lot* of effort into abstracting HF-EEODB properly and
> neatly for everyone, across the subsystem. The opaque struct drm_edid is the
> abstraction. Please embrace it, and you'll get HF-EEODB for free, with no
> hacks.
>
> If you face issues, please talk to me instead of hacking stuff and intentionally
> working around the the abstractions.
>
> > Could you rebase on the latest amd-staging-drm-next and see what, if
> > anything, is still needed on top? There may still be value in the
> > helper conversion for readability, but we should avoid re-fixing the
> > same HF-EEODB issue two different ways.
>
> The one and only fix for HF-EEODB is to use struct drm_edid everywhere.
Thanks, I totally agree. The fact is the dc_edid to drm_edid transition/refactor is not fully completed yet. That leads to w/a is coming up as a temporary fix. Will remove once the transition is complete.
>
>
> BR,
> Jani.
>
>
> --
> Jani Nikula, Intel

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-09-18 15:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-13 19:32 [PATCH v2 0/2] drm/amd/display: Fix missing HF-EEODB blocks in EDID copies Timo Prömer
2026-07-13 19:32 ` [PATCH v2 1/2] drm/edid: Export drm_edid_block_count() Timo Prömer
2026-09-18 14:14   ` Jani Nikula
2026-07-13 19:32 ` [PATCH v2 2/2] drm/amd/display: Use drm_edid_block_count() instead of raw extensions Timo Prömer
2026-07-13 19:49   ` sashiko-bot
2026-07-27 21:33     ` Fangzhi Zuo
2026-07-28 23:57       ` Timo Prömer
2026-09-18 14:30       ` Jani Nikula
2026-09-18 15:19         ` Zuo, Jerry

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox