* [PATCH v3 2/2] drm/edid: Refactor DisplayID timing block structs
2025-02-14 11:06 [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Egor Vorontsov
@ 2025-02-14 11:06 ` Egor Vorontsov
2025-02-14 16:05 ` Jani Nikula
2025-02-14 16:04 ` [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Jani Nikula
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Egor Vorontsov @ 2025-02-14 11:06 UTC (permalink / raw)
To: linux-kernel
Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Jani Nikula, Egor Vorontsov
Using le16 instead of u8[2].
Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Egor Vorontsov <sdoregor@sdore.me>
---
drivers/gpu/drm/drm_displayid_internal.h | 18 +++++++--------
drivers/gpu/drm/drm_edid.c | 28 ++++++++++++------------
2 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
index 84831ecfdb6e..957dd0619f5c 100644
--- a/drivers/gpu/drm/drm_displayid_internal.h
+++ b/drivers/gpu/drm/drm_displayid_internal.h
@@ -115,20 +115,20 @@ struct displayid_tiled_block {
struct displayid_detailed_timings_1 {
u8 pixel_clock[3];
u8 flags;
- u8 hactive[2];
- u8 hblank[2];
- u8 hsync[2];
- u8 hsw[2];
- u8 vactive[2];
- u8 vblank[2];
- u8 vsync[2];
- u8 vsw[2];
+ __le16 hactive;
+ __le16 hblank;
+ __le16 hsync;
+ __le16 hsw;
+ __le16 vactive;
+ __le16 vblank;
+ __le16 vsync;
+ __le16 vsw;
} __packed;
struct displayid_detailed_timing_block {
struct displayid_block base;
struct displayid_detailed_timings_1 timings[];
-};
+} __packed;
struct displayid_formula_timings_9 {
u8 flags;
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 03edf0e1598e..32807cefc819 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6760,23 +6760,23 @@ static void update_display_info(struct drm_connector *connector,
}
static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *dev,
- struct displayid_detailed_timings_1 *timings,
+ const struct displayid_detailed_timings_1 *timings,
bool type_7)
{
struct drm_display_mode *mode;
- unsigned pixel_clock = (timings->pixel_clock[0] |
- (timings->pixel_clock[1] << 8) |
- (timings->pixel_clock[2] << 16)) + 1;
- unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1;
- unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1;
- unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1;
- unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1;
- unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1;
- unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1;
- unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1;
- unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1;
- bool hsync_positive = (timings->hsync[1] >> 7) & 0x1;
- bool vsync_positive = (timings->vsync[1] >> 7) & 0x1;
+ unsigned int pixel_clock = (timings->pixel_clock[0] |
+ (timings->pixel_clock[1] << 8) |
+ (timings->pixel_clock[2] << 16)) + 1;
+ unsigned int hactive = le16_to_cpu(timings->hactive) + 1;
+ unsigned int hblank = le16_to_cpu(timings->hblank) + 1;
+ unsigned int hsync = (le16_to_cpu(timings->hsync) & 0x7fff) + 1;
+ unsigned int hsync_width = le16_to_cpu(timings->hsw) + 1;
+ unsigned int vactive = le16_to_cpu(timings->vactive) + 1;
+ unsigned int vblank = le16_to_cpu(timings->vblank) + 1;
+ unsigned int vsync = (le16_to_cpu(timings->vsync) & 0x7fff) + 1;
+ unsigned int vsync_width = le16_to_cpu(timings->vsw) + 1;
+ 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);
if (!mode)
--
2.48.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH v3 2/2] drm/edid: Refactor DisplayID timing block structs
2025-02-14 11:06 ` [PATCH v3 2/2] drm/edid: Refactor DisplayID timing block structs Egor Vorontsov
@ 2025-02-14 16:05 ` Jani Nikula
0 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2025-02-14 16:05 UTC (permalink / raw)
To: Egor Vorontsov, linux-kernel
Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Egor Vorontsov
On Fri, 14 Feb 2025, Egor Vorontsov <sdoregor@sdore.me> wrote:
> Using le16 instead of u8[2].
>
> Suggested-by: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Egor Vorontsov <sdoregor@sdore.me>
The vsync and hsync having high bit indicate polarity makes this less
than perfect, but I think it's fine.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_displayid_internal.h | 18 +++++++--------
> drivers/gpu/drm/drm_edid.c | 28 ++++++++++++------------
> 2 files changed, 23 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
> index 84831ecfdb6e..957dd0619f5c 100644
> --- a/drivers/gpu/drm/drm_displayid_internal.h
> +++ b/drivers/gpu/drm/drm_displayid_internal.h
> @@ -115,20 +115,20 @@ struct displayid_tiled_block {
> struct displayid_detailed_timings_1 {
> u8 pixel_clock[3];
> u8 flags;
> - u8 hactive[2];
> - u8 hblank[2];
> - u8 hsync[2];
> - u8 hsw[2];
> - u8 vactive[2];
> - u8 vblank[2];
> - u8 vsync[2];
> - u8 vsw[2];
> + __le16 hactive;
> + __le16 hblank;
> + __le16 hsync;
> + __le16 hsw;
> + __le16 vactive;
> + __le16 vblank;
> + __le16 vsync;
> + __le16 vsw;
> } __packed;
>
> struct displayid_detailed_timing_block {
> struct displayid_block base;
> struct displayid_detailed_timings_1 timings[];
> -};
> +} __packed;
>
> struct displayid_formula_timings_9 {
> u8 flags;
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 03edf0e1598e..32807cefc819 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -6760,23 +6760,23 @@ static void update_display_info(struct drm_connector *connector,
> }
>
> static struct drm_display_mode *drm_mode_displayid_detailed(struct drm_device *dev,
> - struct displayid_detailed_timings_1 *timings,
> + const struct displayid_detailed_timings_1 *timings,
> bool type_7)
> {
> struct drm_display_mode *mode;
> - unsigned pixel_clock = (timings->pixel_clock[0] |
> - (timings->pixel_clock[1] << 8) |
> - (timings->pixel_clock[2] << 16)) + 1;
> - unsigned hactive = (timings->hactive[0] | timings->hactive[1] << 8) + 1;
> - unsigned hblank = (timings->hblank[0] | timings->hblank[1] << 8) + 1;
> - unsigned hsync = (timings->hsync[0] | (timings->hsync[1] & 0x7f) << 8) + 1;
> - unsigned hsync_width = (timings->hsw[0] | timings->hsw[1] << 8) + 1;
> - unsigned vactive = (timings->vactive[0] | timings->vactive[1] << 8) + 1;
> - unsigned vblank = (timings->vblank[0] | timings->vblank[1] << 8) + 1;
> - unsigned vsync = (timings->vsync[0] | (timings->vsync[1] & 0x7f) << 8) + 1;
> - unsigned vsync_width = (timings->vsw[0] | timings->vsw[1] << 8) + 1;
> - bool hsync_positive = (timings->hsync[1] >> 7) & 0x1;
> - bool vsync_positive = (timings->vsync[1] >> 7) & 0x1;
> + unsigned int pixel_clock = (timings->pixel_clock[0] |
> + (timings->pixel_clock[1] << 8) |
> + (timings->pixel_clock[2] << 16)) + 1;
> + unsigned int hactive = le16_to_cpu(timings->hactive) + 1;
> + unsigned int hblank = le16_to_cpu(timings->hblank) + 1;
> + unsigned int hsync = (le16_to_cpu(timings->hsync) & 0x7fff) + 1;
> + unsigned int hsync_width = le16_to_cpu(timings->hsw) + 1;
> + unsigned int vactive = le16_to_cpu(timings->vactive) + 1;
> + unsigned int vblank = le16_to_cpu(timings->vblank) + 1;
> + unsigned int vsync = (le16_to_cpu(timings->vsync) & 0x7fff) + 1;
> + unsigned int vsync_width = le16_to_cpu(timings->vsw) + 1;
> + 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);
> if (!mode)
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-02-14 11:06 [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Egor Vorontsov
2025-02-14 11:06 ` [PATCH v3 2/2] drm/edid: Refactor DisplayID timing block structs Egor Vorontsov
@ 2025-02-14 16:04 ` Jani Nikula
2025-02-14 16:07 ` Jani Nikula
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2025-02-14 16:04 UTC (permalink / raw)
To: Egor Vorontsov, linux-kernel
Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Egor Vorontsov, Maximilian Boße
On Fri, 14 Feb 2025, Egor Vorontsov <sdoregor@sdore.me> wrote:
> Some newer high refresh rate consumer monitors (including those by Samsung)
> make use of DisplayID 2.1 timing blocks in their EDID data, notably for
> their highest refresh rate modes. Such modes won't be available as of now.
>
> Implement partial support for such blocks in order to enable native
> support of HRR modes of most such monitors for users without having to rely
> on EDID patching/override (or need thereof).
>
> Closes: https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/55
> Suggested-by: Maximilian Boße <max@bosse.io>
> Signed-off-by: Egor Vorontsov <sdoregor@sdore.me>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_displayid_internal.h | 13 +++++
> drivers/gpu/drm/drm_edid.c | 63 ++++++++++++++++++++++++
> 2 files changed, 76 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
> index aee1b86a73c1..84831ecfdb6e 100644
> --- a/drivers/gpu/drm/drm_displayid_internal.h
> +++ b/drivers/gpu/drm/drm_displayid_internal.h
> @@ -66,6 +66,7 @@ struct drm_edid;
> #define DATA_BLOCK_2_STEREO_DISPLAY_INTERFACE 0x27
> #define DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY 0x28
> #define DATA_BLOCK_2_CONTAINER_ID 0x29
> +#define DATA_BLOCK_2_TYPE_10_FORMULA_TIMING 0x2a
> #define DATA_BLOCK_2_VENDOR_SPECIFIC 0x7e
> #define DATA_BLOCK_2_CTA_DISPLAY_ID 0x81
>
> @@ -129,6 +130,18 @@ struct displayid_detailed_timing_block {
> struct displayid_detailed_timings_1 timings[];
> };
>
> +struct displayid_formula_timings_9 {
> + u8 flags;
> + __le16 hactive;
> + __le16 vactive;
> + u8 vrefresh;
> +} __packed;
> +
> +struct displayid_formula_timing_block {
> + struct displayid_block base;
> + struct displayid_formula_timings_9 timings[];
> +} __packed;
> +
> #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
> #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 13bc4c290b17..03edf0e1598e 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -6833,6 +6833,66 @@ static int add_displayid_detailed_1_modes(struct drm_connector *connector,
> return num_modes;
> }
>
> +static struct drm_display_mode *drm_mode_displayid_formula(struct drm_device *dev,
> + const struct displayid_formula_timings_9 *timings,
> + bool type_10)
> +{
> + struct drm_display_mode *mode;
> + u16 hactive = le16_to_cpu(timings->hactive) + 1;
> + u16 vactive = le16_to_cpu(timings->vactive) + 1;
> + u8 timing_formula = timings->flags & 0x7;
> +
> + /* TODO: support RB-v2 & RB-v3 */
> + if (timing_formula > 1)
> + return NULL;
> +
> + /* TODO: support video-optimized refresh rate */
> + if (timings->flags & (1 << 4))
> + drm_dbg_kms(dev, "Fractional vrefresh is not implemented, proceeding with non-video-optimized refresh rate");
> +
> + mode = drm_cvt_mode(dev, hactive, vactive, timings->vrefresh + 1, timing_formula == 1, false, false);
> + if (!mode)
> + return NULL;
> +
> + /* TODO: interpret S3D flags */
> +
> + mode->type = DRM_MODE_TYPE_DRIVER;
> + drm_mode_set_name(mode);
> +
> + return mode;
> +}
> +
> +static int add_displayid_formula_modes(struct drm_connector *connector,
> + const struct displayid_block *block)
> +{
> + const struct displayid_formula_timing_block *formula_block = (struct displayid_formula_timing_block *)block;
> + int num_timings;
> + struct drm_display_mode *newmode;
> + int num_modes = 0;
> + bool type_10 = block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING;
> + int timing_size = 6 + ((formula_block->base.rev & 0x70) >> 4);
> +
> + /* extended blocks are not supported yet */
> + if (timing_size != 6)
> + return 0;
> +
> + if (block->num_bytes % timing_size)
> + return 0;
> +
> + num_timings = block->num_bytes / timing_size;
> + for (int i = 0; i < num_timings; i++) {
> + const struct displayid_formula_timings_9 *timings = &formula_block->timings[i];
> +
> + newmode = drm_mode_displayid_formula(connector->dev, timings, type_10);
> + if (!newmode)
> + continue;
> +
> + drm_mode_probed_add(connector, newmode);
> + num_modes++;
> + }
> + return num_modes;
> +}
> +
> static int add_displayid_detailed_modes(struct drm_connector *connector,
> const struct drm_edid *drm_edid)
> {
> @@ -6845,6 +6905,9 @@ static int add_displayid_detailed_modes(struct drm_connector *connector,
> if (block->tag == DATA_BLOCK_TYPE_1_DETAILED_TIMING ||
> block->tag == DATA_BLOCK_2_TYPE_7_DETAILED_TIMING)
> num_modes += add_displayid_detailed_1_modes(connector, block);
> + else if (block->tag == DATA_BLOCK_2_TYPE_9_FORMULA_TIMING ||
> + block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING)
> + num_modes += add_displayid_formula_modes(connector, block);
> }
> displayid_iter_end(&iter);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-02-14 11:06 [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Egor Vorontsov
2025-02-14 11:06 ` [PATCH v3 2/2] drm/edid: Refactor DisplayID timing block structs Egor Vorontsov
2025-02-14 16:04 ` [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Jani Nikula
@ 2025-02-14 16:07 ` Jani Nikula
2025-02-14 17:53 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/2] " Patchwork
2025-02-14 18:09 ` ✗ i915.CI.BAT: failure " Patchwork
4 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2025-02-14 16:07 UTC (permalink / raw)
To: Egor Vorontsov; +Cc: intel-gfx
On Fri, 14 Feb 2025, Egor Vorontsov <sdoregor@sdore.me> wrote:
> Some newer high refresh rate consumer monitors (including those by Samsung)
> make use of DisplayID 2.1 timing blocks in their EDID data, notably for
> their highest refresh rate modes. Such modes won't be available as of now.
>
> Implement partial support for such blocks in order to enable native
> support of HRR modes of most such monitors for users without having to rely
> on EDID patching/override (or need thereof).
>
> Closes: https://gitlab.freedesktop.org/drm/misc/kernel/-/issues/55
> Suggested-by: Maximilian Boße <max@bosse.io>
> Signed-off-by: Egor Vorontsov <sdoregor@sdore.me>
PS. I bounced the messages to intel-gfx to have Intel CI run these.
> ---
> drivers/gpu/drm/drm_displayid_internal.h | 13 +++++
> drivers/gpu/drm/drm_edid.c | 63 ++++++++++++++++++++++++
> 2 files changed, 76 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_displayid_internal.h b/drivers/gpu/drm/drm_displayid_internal.h
> index aee1b86a73c1..84831ecfdb6e 100644
> --- a/drivers/gpu/drm/drm_displayid_internal.h
> +++ b/drivers/gpu/drm/drm_displayid_internal.h
> @@ -66,6 +66,7 @@ struct drm_edid;
> #define DATA_BLOCK_2_STEREO_DISPLAY_INTERFACE 0x27
> #define DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY 0x28
> #define DATA_BLOCK_2_CONTAINER_ID 0x29
> +#define DATA_BLOCK_2_TYPE_10_FORMULA_TIMING 0x2a
> #define DATA_BLOCK_2_VENDOR_SPECIFIC 0x7e
> #define DATA_BLOCK_2_CTA_DISPLAY_ID 0x81
>
> @@ -129,6 +130,18 @@ struct displayid_detailed_timing_block {
> struct displayid_detailed_timings_1 timings[];
> };
>
> +struct displayid_formula_timings_9 {
> + u8 flags;
> + __le16 hactive;
> + __le16 vactive;
> + u8 vrefresh;
> +} __packed;
> +
> +struct displayid_formula_timing_block {
> + struct displayid_block base;
> + struct displayid_formula_timings_9 timings[];
> +} __packed;
> +
> #define DISPLAYID_VESA_MSO_OVERLAP GENMASK(3, 0)
> #define DISPLAYID_VESA_MSO_MODE GENMASK(6, 5)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 13bc4c290b17..03edf0e1598e 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -6833,6 +6833,66 @@ static int add_displayid_detailed_1_modes(struct drm_connector *connector,
> return num_modes;
> }
>
> +static struct drm_display_mode *drm_mode_displayid_formula(struct drm_device *dev,
> + const struct displayid_formula_timings_9 *timings,
> + bool type_10)
> +{
> + struct drm_display_mode *mode;
> + u16 hactive = le16_to_cpu(timings->hactive) + 1;
> + u16 vactive = le16_to_cpu(timings->vactive) + 1;
> + u8 timing_formula = timings->flags & 0x7;
> +
> + /* TODO: support RB-v2 & RB-v3 */
> + if (timing_formula > 1)
> + return NULL;
> +
> + /* TODO: support video-optimized refresh rate */
> + if (timings->flags & (1 << 4))
> + drm_dbg_kms(dev, "Fractional vrefresh is not implemented, proceeding with non-video-optimized refresh rate");
> +
> + mode = drm_cvt_mode(dev, hactive, vactive, timings->vrefresh + 1, timing_formula == 1, false, false);
> + if (!mode)
> + return NULL;
> +
> + /* TODO: interpret S3D flags */
> +
> + mode->type = DRM_MODE_TYPE_DRIVER;
> + drm_mode_set_name(mode);
> +
> + return mode;
> +}
> +
> +static int add_displayid_formula_modes(struct drm_connector *connector,
> + const struct displayid_block *block)
> +{
> + const struct displayid_formula_timing_block *formula_block = (struct displayid_formula_timing_block *)block;
> + int num_timings;
> + struct drm_display_mode *newmode;
> + int num_modes = 0;
> + bool type_10 = block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING;
> + int timing_size = 6 + ((formula_block->base.rev & 0x70) >> 4);
> +
> + /* extended blocks are not supported yet */
> + if (timing_size != 6)
> + return 0;
> +
> + if (block->num_bytes % timing_size)
> + return 0;
> +
> + num_timings = block->num_bytes / timing_size;
> + for (int i = 0; i < num_timings; i++) {
> + const struct displayid_formula_timings_9 *timings = &formula_block->timings[i];
> +
> + newmode = drm_mode_displayid_formula(connector->dev, timings, type_10);
> + if (!newmode)
> + continue;
> +
> + drm_mode_probed_add(connector, newmode);
> + num_modes++;
> + }
> + return num_modes;
> +}
> +
> static int add_displayid_detailed_modes(struct drm_connector *connector,
> const struct drm_edid *drm_edid)
> {
> @@ -6845,6 +6905,9 @@ static int add_displayid_detailed_modes(struct drm_connector *connector,
> if (block->tag == DATA_BLOCK_TYPE_1_DETAILED_TIMING ||
> block->tag == DATA_BLOCK_2_TYPE_7_DETAILED_TIMING)
> num_modes += add_displayid_detailed_1_modes(connector, block);
> + else if (block->tag == DATA_BLOCK_2_TYPE_9_FORMULA_TIMING ||
> + block->tag == DATA_BLOCK_2_TYPE_10_FORMULA_TIMING)
> + num_modes += add_displayid_formula_modes(connector, block);
> }
> displayid_iter_end(&iter);
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 9+ messages in thread* ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-02-14 11:06 [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Egor Vorontsov
` (2 preceding siblings ...)
2025-02-14 16:07 ` Jani Nikula
@ 2025-02-14 17:53 ` Patchwork
2025-02-14 18:09 ` ✗ i915.CI.BAT: failure " Patchwork
4 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2025-02-14 17:53 UTC (permalink / raw)
To: Egor Vorontsov; +Cc: intel-gfx
== Series Details ==
Series: series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
URL : https://patchwork.freedesktop.org/series/144887/
State : warning
== Summary ==
Error: dim checkpatch failed
6652ef3c4e6a drm/edid: Implement DisplayID Type IX & X timing blocks parsing
-:62: WARNING:LONG_LINE: line length of 109 exceeds 100 columns
#62: FILE: drivers/gpu/drm/drm_edid.c:6837:
+ const struct displayid_formula_timings_9 *timings,
-:78: WARNING:LONG_LINE: line length of 109 exceeds 100 columns
#78: FILE: drivers/gpu/drm/drm_edid.c:6853:
+ mode = drm_cvt_mode(dev, hactive, vactive, timings->vrefresh + 1, timing_formula == 1, false, false);
-:93: WARNING:LONG_LINE: line length of 116 exceeds 100 columns
#93: FILE: drivers/gpu/drm/drm_edid.c:6868:
+ const struct displayid_formula_timing_block *formula_block = (struct displayid_formula_timing_block *)block;
total: 0 errors, 3 warnings, 0 checks, 100 lines checked
e063ac33bb03 drm/edid: Refactor DisplayID timing block structs
-:54: WARNING:LONG_LINE: line length of 111 exceeds 100 columns
#54: FILE: drivers/gpu/drm/drm_edid.c:6763:
+ const struct displayid_detailed_timings_1 *timings,
total: 0 errors, 1 warnings, 0 checks, 66 lines checked
^ permalink raw reply [flat|nested] 9+ messages in thread* ✗ i915.CI.BAT: failure for series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-02-14 11:06 [PATCH v3 1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing Egor Vorontsov
` (3 preceding siblings ...)
2025-02-14 17:53 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/2] " Patchwork
@ 2025-02-14 18:09 ` Patchwork
2025-04-14 19:00 ` Egor Vorontsov
4 siblings, 1 reply; 9+ messages in thread
From: Patchwork @ 2025-02-14 18:09 UTC (permalink / raw)
To: Egor Vorontsov; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 3657 bytes --]
== Series Details ==
Series: series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
URL : https://patchwork.freedesktop.org/series/144887/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_16136 -> Patchwork_144887v1
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_144887v1 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_144887v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/index.html
Participating hosts (42 -> 41)
------------------------------
Additional (1): fi-pnv-d510
Missing (2): bat-arlh-2 fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_144887v1:
### IGT changes ###
#### Possible regressions ####
* igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1:
- bat-apl-1: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16136/bat-apl-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/bat-apl-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-dp-1.html
Known issues
------------
Here are the changes found in Patchwork_144887v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_pm_rpm@module-reload:
- bat-dg2-11: [PASS][3] -> [FAIL][4] ([i915#13633])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16136/bat-dg2-11/igt@i915_pm_rpm@module-reload.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/bat-dg2-11/igt@i915_pm_rpm@module-reload.html
* igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
- bat-dg2-11: [PASS][5] -> [SKIP][6] ([i915#9197]) +1 other test skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16136/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
* igt@kms_psr@psr-primary-mmap-gtt:
- fi-pnv-d510: NOTRUN -> [SKIP][7] +33 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/fi-pnv-d510/igt@kms_psr@psr-primary-mmap-gtt.html
#### Possible fixes ####
* igt@dmabuf@all-tests:
- bat-apl-1: [INCOMPLETE][8] ([i915#12904]) -> [PASS][9] +1 other test pass
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16136/bat-apl-1/igt@dmabuf@all-tests.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/bat-apl-1/igt@dmabuf@all-tests.html
[i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904
[i915#13633]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13633
[i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197
Build changes
-------------
* Linux: CI_DRM_16136 -> Patchwork_144887v1
CI-20190529: 20190529
CI_DRM_16136: 371df966fcc8fbfb21725c2e5eb32b5c1eb12b36 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8230: 8230
Patchwork_144887v1: 371df966fcc8fbfb21725c2e5eb32b5c1eb12b36 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_144887v1/index.html
[-- Attachment #2: Type: text/html, Size: 4387 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: ✗ i915.CI.BAT: failure for series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-02-14 18:09 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2025-04-14 19:00 ` Egor Vorontsov
2025-04-15 9:15 ` Jani Nikula
0 siblings, 1 reply; 9+ messages in thread
From: Egor Vorontsov @ 2025-04-14 19:00 UTC (permalink / raw)
To: intel-gfx, linux-kernel
Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Jani Nikula, Egor Vorontsov
The patchset seems stalled, presumably because of this CI dead end.
Is there anything I can do about this issue, or did the thread just get
lost? Some are even pinging me directly on the state of this now.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: ✗ i915.CI.BAT: failure for series starting with [v3,1/2] drm/edid: Implement DisplayID Type IX & X timing blocks parsing
2025-04-14 19:00 ` Egor Vorontsov
@ 2025-04-15 9:15 ` Jani Nikula
0 siblings, 0 replies; 9+ messages in thread
From: Jani Nikula @ 2025-04-15 9:15 UTC (permalink / raw)
To: Egor Vorontsov, intel-gfx, linux-kernel
Cc: dri-devel, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Egor Vorontsov
On Mon, 14 Apr 2025, Egor Vorontsov <sdoregor@sdore.me> wrote:
> The patchset seems stalled, presumably because of this CI dead end.
>
> Is there anything I can do about this issue, or did the thread just get
> lost? Some are even pinging me directly on the state of this now.
I'm sorry, totally my fault, I dropped the ball.
I resent the patches for fresh results [1], and will merge them via
drm-misc-next.
BR,
Jani.
[1] https://lore.kernel.org/r/cover.1744708239.git.jani.nikula@intel.com
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 9+ messages in thread