* [Intel-gfx] [PATCH 1/4] drm/displayid: add displayid_get_header() and check bounds better
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
@ 2023-02-16 20:44 ` Jani Nikula
2023-02-21 16:27 ` Dmitry Osipenko
2023-02-16 20:44 ` [Intel-gfx] [PATCH 2/4] drm/displayid: return struct displayid_header from validate_displayid() Jani Nikula
` (7 subsequent siblings)
8 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2023-02-16 20:44 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, intel-gfx, Iaroslav Boliukin, Dmitry Osipenko
Add a helper to get a pointer to struct displayid_header. To be
pedantic, add buffer overflow checks to not touch the base if that
itself would overflow.
Cc: Iaroslav Boliukin <iam@lach.pw>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_displayid.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
index 38ea8203df45..7d03159dc146 100644
--- a/drivers/gpu/drm/drm_displayid.c
+++ b/drivers/gpu/drm/drm_displayid.c
@@ -7,13 +7,28 @@
#include <drm/drm_edid.h>
#include <drm/drm_print.h>
+static const struct displayid_header *
+displayid_get_header(const u8 *displayid, int length, int index)
+{
+ const struct displayid_header *base;
+
+ if (sizeof(*base) > length - index)
+ return ERR_PTR(-EINVAL);
+
+ base = (const struct displayid_header *)&displayid[index];
+
+ return base;
+}
+
static int validate_displayid(const u8 *displayid, int length, int idx)
{
int i, dispid_length;
u8 csum = 0;
const struct displayid_header *base;
- base = (const struct displayid_header *)&displayid[idx];
+ base = displayid_get_header(displayid, length, idx);
+ if (IS_ERR(base))
+ return PTR_ERR(base);
DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n",
base->rev, base->bytes, base->prod_id, base->ext_count);
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 1/4] drm/displayid: add displayid_get_header() and check bounds better
2023-02-16 20:44 ` [Intel-gfx] [PATCH 1/4] drm/displayid: add displayid_get_header() and check bounds better Jani Nikula
@ 2023-02-21 16:27 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:27 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/16/23 23:44, Jani Nikula wrote:
> Add a helper to get a pointer to struct displayid_header. To be
> pedantic, add buffer overflow checks to not touch the base if that
> itself would overflow.
>
> Cc: Iaroslav Boliukin <iam@lach.pw>
> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_displayid.c | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
> index 38ea8203df45..7d03159dc146 100644
> --- a/drivers/gpu/drm/drm_displayid.c
> +++ b/drivers/gpu/drm/drm_displayid.c
> @@ -7,13 +7,28 @@
> #include <drm/drm_edid.h>
> #include <drm/drm_print.h>
>
> +static const struct displayid_header *
> +displayid_get_header(const u8 *displayid, int length, int index)
> +{
> + const struct displayid_header *base;
> +
> + if (sizeof(*base) > length - index)
> + return ERR_PTR(-EINVAL);
> +
> + base = (const struct displayid_header *)&displayid[index];
> +
> + return base;
> +}
> +
> static int validate_displayid(const u8 *displayid, int length, int idx)
> {
> int i, dispid_length;
> u8 csum = 0;
> const struct displayid_header *base;
>
> - base = (const struct displayid_header *)&displayid[idx];
> + base = displayid_get_header(displayid, length, idx);
> + if (IS_ERR(base))
> + return PTR_ERR(base);
>
> DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n",
> base->rev, base->bytes, base->prod_id, base->ext_count);
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 2/4] drm/displayid: return struct displayid_header from validate_displayid()
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
2023-02-16 20:44 ` [Intel-gfx] [PATCH 1/4] drm/displayid: add displayid_get_header() and check bounds better Jani Nikula
@ 2023-02-16 20:44 ` Jani Nikula
2023-02-21 16:27 ` Dmitry Osipenko
2023-02-16 20:45 ` [Intel-gfx] [PATCH 3/4] drm/displayid: provide access to DisplayID version and primary use case Jani Nikula
` (6 subsequent siblings)
8 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2023-02-16 20:44 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, intel-gfx, Iaroslav Boliukin, Dmitry Osipenko
Avoid figuring out the header pointer multiple times.
Cc: Iaroslav Boliukin <iam@lach.pw>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_displayid.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
index 7d03159dc146..0de9b5530393 100644
--- a/drivers/gpu/drm/drm_displayid.c
+++ b/drivers/gpu/drm/drm_displayid.c
@@ -20,7 +20,8 @@ displayid_get_header(const u8 *displayid, int length, int index)
return base;
}
-static int validate_displayid(const u8 *displayid, int length, int idx)
+static const struct displayid_header *
+validate_displayid(const u8 *displayid, int length, int idx)
{
int i, dispid_length;
u8 csum = 0;
@@ -28,7 +29,7 @@ static int validate_displayid(const u8 *displayid, int length, int idx)
base = displayid_get_header(displayid, length, idx);
if (IS_ERR(base))
- return PTR_ERR(base);
+ return base;
DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n",
base->rev, base->bytes, base->prod_id, base->ext_count);
@@ -36,16 +37,16 @@ static int validate_displayid(const u8 *displayid, int length, int idx)
/* +1 for DispID checksum */
dispid_length = sizeof(*base) + base->bytes + 1;
if (dispid_length > length - idx)
- return -EINVAL;
+ return ERR_PTR(-EINVAL);
for (i = 0; i < dispid_length; i++)
csum += displayid[idx + i];
if (csum) {
DRM_NOTE("DisplayID checksum invalid, remainder is %d\n", csum);
- return -EINVAL;
+ return ERR_PTR(-EINVAL);
}
- return 0;
+ return base;
}
static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
@@ -54,7 +55,6 @@ static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
{
const u8 *displayid = drm_find_edid_extension(drm_edid, DISPLAYID_EXT, ext_index);
const struct displayid_header *base;
- int ret;
if (!displayid)
return NULL;
@@ -63,11 +63,10 @@ static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
*length = EDID_LENGTH - 1;
*idx = 1;
- ret = validate_displayid(displayid, *length, *idx);
- if (ret)
+ base = validate_displayid(displayid, *length, *idx);
+ if (IS_ERR(base))
return NULL;
- base = (const struct displayid_header *)&displayid[*idx];
*length = *idx + sizeof(*base) + base->bytes;
return displayid;
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 2/4] drm/displayid: return struct displayid_header from validate_displayid()
2023-02-16 20:44 ` [Intel-gfx] [PATCH 2/4] drm/displayid: return struct displayid_header from validate_displayid() Jani Nikula
@ 2023-02-21 16:27 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:27 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/16/23 23:44, Jani Nikula wrote:
> Avoid figuring out the header pointer multiple times.
>
> Cc: Iaroslav Boliukin <iam@lach.pw>
> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_displayid.c | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
> index 7d03159dc146..0de9b5530393 100644
> --- a/drivers/gpu/drm/drm_displayid.c
> +++ b/drivers/gpu/drm/drm_displayid.c
> @@ -20,7 +20,8 @@ displayid_get_header(const u8 *displayid, int length, int index)
> return base;
> }
>
> -static int validate_displayid(const u8 *displayid, int length, int idx)
> +static const struct displayid_header *
> +validate_displayid(const u8 *displayid, int length, int idx)
> {
> int i, dispid_length;
> u8 csum = 0;
> @@ -28,7 +29,7 @@ static int validate_displayid(const u8 *displayid, int length, int idx)
>
> base = displayid_get_header(displayid, length, idx);
> if (IS_ERR(base))
> - return PTR_ERR(base);
> + return base;
>
> DRM_DEBUG_KMS("base revision 0x%x, length %d, %d %d\n",
> base->rev, base->bytes, base->prod_id, base->ext_count);
> @@ -36,16 +37,16 @@ static int validate_displayid(const u8 *displayid, int length, int idx)
> /* +1 for DispID checksum */
> dispid_length = sizeof(*base) + base->bytes + 1;
> if (dispid_length > length - idx)
> - return -EINVAL;
> + return ERR_PTR(-EINVAL);
>
> for (i = 0; i < dispid_length; i++)
> csum += displayid[idx + i];
> if (csum) {
> DRM_NOTE("DisplayID checksum invalid, remainder is %d\n", csum);
> - return -EINVAL;
> + return ERR_PTR(-EINVAL);
> }
>
> - return 0;
> + return base;
> }
>
> static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
> @@ -54,7 +55,6 @@ static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
> {
> const u8 *displayid = drm_find_edid_extension(drm_edid, DISPLAYID_EXT, ext_index);
> const struct displayid_header *base;
> - int ret;
>
> if (!displayid)
> return NULL;
> @@ -63,11 +63,10 @@ static const u8 *drm_find_displayid_extension(const struct drm_edid *drm_edid,
> *length = EDID_LENGTH - 1;
> *idx = 1;
>
> - ret = validate_displayid(displayid, *length, *idx);
> - if (ret)
> + base = validate_displayid(displayid, *length, *idx);
> + if (IS_ERR(base))
> return NULL;
>
> - base = (const struct displayid_header *)&displayid[*idx];
> *length = *idx + sizeof(*base) + base->bytes;
>
> return displayid;
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 3/4] drm/displayid: provide access to DisplayID version and primary use case
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
2023-02-16 20:44 ` [Intel-gfx] [PATCH 1/4] drm/displayid: add displayid_get_header() and check bounds better Jani Nikula
2023-02-16 20:44 ` [Intel-gfx] [PATCH 2/4] drm/displayid: return struct displayid_header from validate_displayid() Jani Nikula
@ 2023-02-16 20:45 ` Jani Nikula
2023-02-21 16:27 ` Dmitry Osipenko
2023-02-16 20:45 ` [Intel-gfx] [PATCH 4/4] drm/edid: update non-desktop use also from DisplayID Jani Nikula
` (5 subsequent siblings)
8 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2023-02-16 20:45 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, intel-gfx, Iaroslav Boliukin, Dmitry Osipenko
The DisplayID structure version and primary use case are stored in the
DisplayID Base Section. We should be checking them in a number of places
when parsing the DisplayID blocks. Currently, we completely ignore the
primary use case, and just look at the block tags without cross-checking
against structure version.
Store the version and primary use case in the DisplayID iterator, and
provide accessors to them. In general, the information is needed when
iterating the blocks, and this is a convenient place to both store and
retrieve the information during parsing.
Promote using accessors rather than users poking at the iterator
directly.
Cc: Iaroslav Boliukin <iam@lach.pw>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_displayid.c | 30 ++++++++++++++++++++++++++++++
include/drm/drm_displayid.h | 12 +++++++++++-
2 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
index 0de9b5530393..9edc111be7ee 100644
--- a/drivers/gpu/drm/drm_displayid.c
+++ b/drivers/gpu/drm/drm_displayid.c
@@ -123,6 +123,9 @@ __displayid_iter_next(struct displayid_iter *iter)
}
for (;;) {
+ /* The first section we encounter is the base section */
+ bool base_section = !iter->section;
+
iter->section = drm_find_displayid_extension(iter->drm_edid,
&iter->length,
&iter->idx,
@@ -132,6 +135,18 @@ __displayid_iter_next(struct displayid_iter *iter)
return NULL;
}
+ /* Save the structure version and primary use case. */
+ if (base_section) {
+ const struct displayid_header *base;
+
+ base = displayid_get_header(iter->section, iter->length,
+ iter->idx);
+ if (!IS_ERR(base)) {
+ iter->version = base->rev;
+ iter->primary_use = base->prod_id;
+ }
+ }
+
iter->idx += sizeof(struct displayid_header);
block = displayid_iter_block(iter);
@@ -144,3 +159,18 @@ void displayid_iter_end(struct displayid_iter *iter)
{
memset(iter, 0, sizeof(*iter));
}
+
+/* DisplayID Structure Version/Revision from the Base Section. */
+u8 displayid_version(const struct displayid_iter *iter)
+{
+ return iter->version;
+}
+
+/*
+ * DisplayID Primary Use Case (2.0+) or Product Type Identifier (1.0-1.3) from
+ * the Base Section.
+ */
+u8 displayid_primary_use(const struct displayid_iter *iter)
+{
+ return iter->primary_use;
+}
diff --git a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h
index 49649eb8447e..566497eeb3b8 100644
--- a/include/drm/drm_displayid.h
+++ b/include/drm/drm_displayid.h
@@ -139,7 +139,11 @@ struct displayid_vesa_vendor_specific_block {
u8 mso;
} __packed;
-/* DisplayID iteration */
+/*
+ * DisplayID iteration.
+ *
+ * Do not access directly, this is private.
+ */
struct displayid_iter {
const struct drm_edid *drm_edid;
@@ -147,6 +151,9 @@ struct displayid_iter {
int length;
int idx;
int ext_index;
+
+ u8 version;
+ u8 primary_use;
};
void displayid_iter_edid_begin(const struct drm_edid *drm_edid,
@@ -157,4 +164,7 @@ __displayid_iter_next(struct displayid_iter *iter);
while (((__block) = __displayid_iter_next(__iter)))
void displayid_iter_end(struct displayid_iter *iter);
+u8 displayid_version(const struct displayid_iter *iter);
+u8 displayid_primary_use(const struct displayid_iter *iter);
+
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 3/4] drm/displayid: provide access to DisplayID version and primary use case
2023-02-16 20:45 ` [Intel-gfx] [PATCH 3/4] drm/displayid: provide access to DisplayID version and primary use case Jani Nikula
@ 2023-02-21 16:27 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:27 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/16/23 23:45, Jani Nikula wrote:
> The DisplayID structure version and primary use case are stored in the
> DisplayID Base Section. We should be checking them in a number of places
> when parsing the DisplayID blocks. Currently, we completely ignore the
> primary use case, and just look at the block tags without cross-checking
> against structure version.
>
> Store the version and primary use case in the DisplayID iterator, and
> provide accessors to them. In general, the information is needed when
> iterating the blocks, and this is a convenient place to both store and
> retrieve the information during parsing.
>
> Promote using accessors rather than users poking at the iterator
> directly.
>
> Cc: Iaroslav Boliukin <iam@lach.pw>
> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_displayid.c | 30 ++++++++++++++++++++++++++++++
> include/drm/drm_displayid.h | 12 +++++++++++-
> 2 files changed, 41 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_displayid.c b/drivers/gpu/drm/drm_displayid.c
> index 0de9b5530393..9edc111be7ee 100644
> --- a/drivers/gpu/drm/drm_displayid.c
> +++ b/drivers/gpu/drm/drm_displayid.c
> @@ -123,6 +123,9 @@ __displayid_iter_next(struct displayid_iter *iter)
> }
>
> for (;;) {
> + /* The first section we encounter is the base section */
> + bool base_section = !iter->section;
> +
> iter->section = drm_find_displayid_extension(iter->drm_edid,
> &iter->length,
> &iter->idx,
> @@ -132,6 +135,18 @@ __displayid_iter_next(struct displayid_iter *iter)
> return NULL;
> }
>
> + /* Save the structure version and primary use case. */
> + if (base_section) {
> + const struct displayid_header *base;
> +
> + base = displayid_get_header(iter->section, iter->length,
> + iter->idx);
> + if (!IS_ERR(base)) {
> + iter->version = base->rev;
> + iter->primary_use = base->prod_id;
> + }
> + }
> +
> iter->idx += sizeof(struct displayid_header);
>
> block = displayid_iter_block(iter);
> @@ -144,3 +159,18 @@ void displayid_iter_end(struct displayid_iter *iter)
> {
> memset(iter, 0, sizeof(*iter));
> }
> +
> +/* DisplayID Structure Version/Revision from the Base Section. */
> +u8 displayid_version(const struct displayid_iter *iter)
> +{
> + return iter->version;
> +}
> +
> +/*
> + * DisplayID Primary Use Case (2.0+) or Product Type Identifier (1.0-1.3) from
> + * the Base Section.
> + */
> +u8 displayid_primary_use(const struct displayid_iter *iter)
> +{
> + return iter->primary_use;
> +}
> diff --git a/include/drm/drm_displayid.h b/include/drm/drm_displayid.h
> index 49649eb8447e..566497eeb3b8 100644
> --- a/include/drm/drm_displayid.h
> +++ b/include/drm/drm_displayid.h
> @@ -139,7 +139,11 @@ struct displayid_vesa_vendor_specific_block {
> u8 mso;
> } __packed;
>
> -/* DisplayID iteration */
> +/*
> + * DisplayID iteration.
> + *
> + * Do not access directly, this is private.
> + */
> struct displayid_iter {
> const struct drm_edid *drm_edid;
>
> @@ -147,6 +151,9 @@ struct displayid_iter {
> int length;
> int idx;
> int ext_index;
> +
> + u8 version;
> + u8 primary_use;
> };
>
> void displayid_iter_edid_begin(const struct drm_edid *drm_edid,
> @@ -157,4 +164,7 @@ __displayid_iter_next(struct displayid_iter *iter);
> while (((__block) = __displayid_iter_next(__iter)))
> void displayid_iter_end(struct displayid_iter *iter);
>
> +u8 displayid_version(const struct displayid_iter *iter);
> +u8 displayid_primary_use(const struct displayid_iter *iter);
> +
> #endif
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 4/4] drm/edid: update non-desktop use also from DisplayID
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (2 preceding siblings ...)
2023-02-16 20:45 ` [Intel-gfx] [PATCH 3/4] drm/displayid: provide access to DisplayID version and primary use case Jani Nikula
@ 2023-02-16 20:45 ` Jani Nikula
2023-02-21 16:27 ` Dmitry Osipenko
2023-02-16 23:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/displayid: use primary use case to figure out non-desktop Patchwork
` (4 subsequent siblings)
8 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2023-02-16 20:45 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, intel-gfx, Iaroslav Boliukin, Dmitry Osipenko
Use the DisplayID 2.0 primary use case information to deduce whether
this is a head-mounted display, and should not be used for desktop.
Cc: Iaroslav Boliukin <iam@lach.pw>
Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_edid.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 3d0a4da661bc..03ad53a1ba82 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -6433,6 +6433,29 @@ static void drm_reset_display_info(struct drm_connector *connector)
info->quirks = 0;
}
+static void update_displayid_info(struct drm_connector *connector,
+ const struct drm_edid *drm_edid)
+{
+ struct drm_display_info *info = &connector->display_info;
+ const struct displayid_block *block;
+ struct displayid_iter iter;
+
+ displayid_iter_edid_begin(drm_edid, &iter);
+ displayid_iter_for_each(block, &iter) {
+ if (displayid_version(&iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
+ (displayid_primary_use(&iter) == PRIMARY_USE_HEAD_MOUNTED_VR ||
+ displayid_primary_use(&iter) == PRIMARY_USE_HEAD_MOUNTED_AR))
+ info->non_desktop = true;
+
+ /*
+ * We're only interested in the base section here, no need to
+ * iterate further.
+ */
+ break;
+ }
+ displayid_iter_end(&iter);
+}
+
static void update_display_info(struct drm_connector *connector,
const struct drm_edid *drm_edid)
{
@@ -6463,6 +6486,8 @@ static void update_display_info(struct drm_connector *connector,
info->color_formats |= DRM_COLOR_FORMAT_RGB444;
drm_parse_cea_ext(connector, drm_edid);
+ update_displayid_info(connector, drm_edid);
+
/*
* Digital sink with "DFP 1.x compliant TMDS" according to EDID 1.3?
*
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 4/4] drm/edid: update non-desktop use also from DisplayID
2023-02-16 20:45 ` [Intel-gfx] [PATCH 4/4] drm/edid: update non-desktop use also from DisplayID Jani Nikula
@ 2023-02-21 16:27 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:27 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/16/23 23:45, Jani Nikula wrote:
> Use the DisplayID 2.0 primary use case information to deduce whether
> this is a head-mounted display, and should not be used for desktop.
>
> Cc: Iaroslav Boliukin <iam@lach.pw>
> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 3d0a4da661bc..03ad53a1ba82 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -6433,6 +6433,29 @@ static void drm_reset_display_info(struct drm_connector *connector)
> info->quirks = 0;
> }
>
> +static void update_displayid_info(struct drm_connector *connector,
> + const struct drm_edid *drm_edid)
> +{
> + struct drm_display_info *info = &connector->display_info;
> + const struct displayid_block *block;
> + struct displayid_iter iter;
> +
> + displayid_iter_edid_begin(drm_edid, &iter);
> + displayid_iter_for_each(block, &iter) {
> + if (displayid_version(&iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
> + (displayid_primary_use(&iter) == PRIMARY_USE_HEAD_MOUNTED_VR ||
> + displayid_primary_use(&iter) == PRIMARY_USE_HEAD_MOUNTED_AR))
> + info->non_desktop = true;
> +
> + /*
> + * We're only interested in the base section here, no need to
> + * iterate further.
> + */
> + break;
> + }
> + displayid_iter_end(&iter);
> +}
> +
> static void update_display_info(struct drm_connector *connector,
> const struct drm_edid *drm_edid)
> {
> @@ -6463,6 +6486,8 @@ static void update_display_info(struct drm_connector *connector,
> info->color_formats |= DRM_COLOR_FORMAT_RGB444;
> drm_parse_cea_ext(connector, drm_edid);
>
> + update_displayid_info(connector, drm_edid);
> +
> /*
> * Digital sink with "DFP 1.x compliant TMDS" according to EDID 1.3?
> *
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> # HTC VIVE Pro 2
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/displayid: use primary use case to figure out non-desktop
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (3 preceding siblings ...)
2023-02-16 20:45 ` [Intel-gfx] [PATCH 4/4] drm/edid: update non-desktop use also from DisplayID Jani Nikula
@ 2023-02-16 23:30 ` Patchwork
2023-02-16 23:51 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
` (3 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-02-16 23:30 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
== Series Details ==
Series: drm/displayid: use primary use case to figure out non-desktop
URL : https://patchwork.freedesktop.org/series/114116/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
^ permalink raw reply [flat|nested] 18+ messages in thread* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/displayid: use primary use case to figure out non-desktop
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (4 preceding siblings ...)
2023-02-16 23:30 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/displayid: use primary use case to figure out non-desktop Patchwork
@ 2023-02-16 23:51 ` Patchwork
2023-02-17 10:46 ` [Intel-gfx] [PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0 Jani Nikula
` (2 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-02-16 23:51 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 5640 bytes --]
== Series Details ==
Series: drm/displayid: use primary use case to figure out non-desktop
URL : https://patchwork.freedesktop.org/series/114116/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_12753 -> Patchwork_114116v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/index.html
Participating hosts (40 -> 39)
------------------------------
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_114116v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_lmem_swapping@random-engines:
- bat-adlp-6: NOTRUN -> [SKIP][1] ([i915#4613]) +3 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@gem_lmem_swapping@random-engines.html
* igt@i915_pm_rps@basic-api:
- bat-adlp-6: NOTRUN -> [SKIP][2] ([i915#6621])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@i915_pm_rps@basic-api.html
* igt@i915_selftest@live@hangcheck:
- bat-dg2-9: [PASS][3] -> [ABORT][4] ([i915#7979])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/bat-dg2-9/igt@i915_selftest@live@hangcheck.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-dg2-9/igt@i915_selftest@live@hangcheck.html
* igt@i915_selftest@live@migrate:
- bat-adlp-6: NOTRUN -> [DMESG-FAIL][5] ([i915#7699])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@i915_selftest@live@migrate.html
* igt@i915_selftest@live@slpc:
- bat-rplp-1: [PASS][6] -> [DMESG-FAIL][7] ([i915#6367] / [i915#7913])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/bat-rplp-1/igt@i915_selftest@live@slpc.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-rplp-1/igt@i915_selftest@live@slpc.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- bat-adlp-6: NOTRUN -> [SKIP][8] ([i915#7828])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@prime_vgem@basic-fence-read:
- bat-adlp-6: NOTRUN -> [SKIP][9] ([fdo#109295] / [i915#3291] / [i915#3708]) +2 similar issues
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-userptr:
- bat-adlp-6: NOTRUN -> [SKIP][10] ([fdo#109295] / [i915#3301] / [i915#3708])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@prime_vgem@basic-userptr.html
#### Possible fixes ####
* igt@i915_pm_rpm@basic-rte:
- bat-adlp-6: [ABORT][11] ([i915#7977]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/bat-adlp-6/igt@i915_pm_rpm@basic-rte.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-adlp-6/igt@i915_pm_rpm@basic-rte.html
* igt@i915_selftest@live@hangcheck:
- fi-skl-guc: [DMESG-WARN][13] ([i915#8073]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/fi-skl-guc/igt@i915_selftest@live@hangcheck.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/fi-skl-guc/igt@i915_selftest@live@hangcheck.html
#### Warnings ####
* igt@i915_selftest@live@slpc:
- bat-rpls-1: [DMESG-FAIL][15] ([i915#6367]) -> [DMESG-FAIL][16] ([i915#6367] / [i915#7996])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/bat-rpls-1/igt@i915_selftest@live@slpc.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/bat-rpls-1/igt@i915_selftest@live@slpc.html
[fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
[i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
[i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
[i915#7977]: https://gitlab.freedesktop.org/drm/intel/issues/7977
[i915#7979]: https://gitlab.freedesktop.org/drm/intel/issues/7979
[i915#7996]: https://gitlab.freedesktop.org/drm/intel/issues/7996
[i915#8073]: https://gitlab.freedesktop.org/drm/intel/issues/8073
Build changes
-------------
* Linux: CI_DRM_12753 -> Patchwork_114116v1
CI-20190529: 20190529
CI_DRM_12753: 07b36c16a454417c10b496fe6e9b5e0e18f13e74 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7161: 5574f110ae838031eef6db5236bad02e8c2d2dee @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_114116v1: 07b36c16a454417c10b496fe6e9b5e0e18f13e74 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
624f014f3697 drm/edid: update non-desktop use also from DisplayID
36d47f7122f4 drm/displayid: provide access to DisplayID version and primary use case
808d109f7a72 drm/displayid: return struct displayid_header from validate_displayid()
d75a8bbfe211 drm/displayid: add displayid_get_header() and check bounds better
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/index.html
[-- Attachment #2: Type: text/html, Size: 6784 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread* [Intel-gfx] [PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (5 preceding siblings ...)
2023-02-16 23:51 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-02-17 10:46 ` Jani Nikula
2023-02-21 16:28 ` Dmitry Osipenko
2023-02-17 13:39 ` [Intel-gfx] ✓ Fi.CI.IGT: success for drm/displayid: use primary use case to figure out non-desktop Patchwork
2023-02-20 15:44 ` [Intel-gfx] [PATCH 0/4] " Dmitry Osipenko
8 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2023-02-17 10:46 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin, Dmitry Osipenko
Currently we only parse the Tiled Display Topology Data Block for
DisplayID structure version 1.2, but not 2.0. The contents seem to be
the same for both, so expand the parsing to structure version 2.0.
Note that DisplayID spec version is not the same as DisplayID structure
version; DisplayID 1.3 uses structure version 1.2, and DisplayID 2.0-2.1
use structure version 2.0. Lovely.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/drm_edid.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 03ad53a1ba82..ebab862b8b1a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -7267,6 +7267,15 @@ static void drm_parse_tiled_block(struct drm_connector *connector,
}
}
+static bool displayid_is_tiled_block(const struct displayid_iter *iter,
+ const struct displayid_block *block)
+{
+ return (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_12 &&
+ block->tag == DATA_BLOCK_TILED_DISPLAY) ||
+ (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
+ block->tag == DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY);
+}
+
static void _drm_update_tile_info(struct drm_connector *connector,
const struct drm_edid *drm_edid)
{
@@ -7277,7 +7286,7 @@ static void _drm_update_tile_info(struct drm_connector *connector,
displayid_iter_edid_begin(drm_edid, &iter);
displayid_iter_for_each(block, &iter) {
- if (block->tag == DATA_BLOCK_TILED_DISPLAY)
+ if (displayid_is_tiled_block(&iter, block))
drm_parse_tiled_block(connector, block);
}
displayid_iter_end(&iter);
--
2.34.1
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0
2023-02-17 10:46 ` [Intel-gfx] [PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0 Jani Nikula
@ 2023-02-21 16:28 ` Dmitry Osipenko
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:28 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/17/23 13:46, Jani Nikula wrote:
> Currently we only parse the Tiled Display Topology Data Block for
> DisplayID structure version 1.2, but not 2.0. The contents seem to be
> the same for both, so expand the parsing to structure version 2.0.
>
> Note that DisplayID spec version is not the same as DisplayID structure
> version; DisplayID 1.3 uses structure version 1.2, and DisplayID 2.0-2.1
> use structure version 2.0. Lovely.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 03ad53a1ba82..ebab862b8b1a 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -7267,6 +7267,15 @@ static void drm_parse_tiled_block(struct drm_connector *connector,
> }
> }
>
> +static bool displayid_is_tiled_block(const struct displayid_iter *iter,
> + const struct displayid_block *block)
> +{
> + return (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_12 &&
> + block->tag == DATA_BLOCK_TILED_DISPLAY) ||
> + (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_20 &&
> + block->tag == DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY);
> +}
> +
> static void _drm_update_tile_info(struct drm_connector *connector,
> const struct drm_edid *drm_edid)
> {
> @@ -7277,7 +7286,7 @@ static void _drm_update_tile_info(struct drm_connector *connector,
>
> displayid_iter_edid_begin(drm_edid, &iter);
> displayid_iter_for_each(block, &iter) {
> - if (block->tag == DATA_BLOCK_TILED_DISPLAY)
> + if (displayid_is_tiled_block(&iter, block))
> drm_parse_tiled_block(connector, block);
> }
> displayid_iter_end(&iter);
I don't have display setup to test this, but looks okay.
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/displayid: use primary use case to figure out non-desktop
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (6 preceding siblings ...)
2023-02-17 10:46 ` [Intel-gfx] [PATCH 5/4] drm/edid: parse Tiled Display Topology Data Block for DisplayID 2.0 Jani Nikula
@ 2023-02-17 13:39 ` Patchwork
2023-02-20 15:44 ` [Intel-gfx] [PATCH 0/4] " Dmitry Osipenko
8 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-02-17 13:39 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 23351 bytes --]
== Series Details ==
Series: drm/displayid: use primary use case to figure out non-desktop
URL : https://patchwork.freedesktop.org/series/114116/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_12753_full -> Patchwork_114116v1_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/index.html
Participating hosts (10 -> 10)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_114116v1_full:
### IGT changes ###
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@kms_plane_scaling@invalid-parameters}:
- {shard-rkl}: [SKIP][1] ([i915#8152]) -> [SKIP][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-2/igt@kms_plane_scaling@invalid-parameters.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-1/igt@kms_plane_scaling@invalid-parameters.html
* {igt@v3d/v3d_submit_csd@bad-extension}:
- {shard-dg1}: NOTRUN -> [SKIP][3]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-dg1-14/igt@v3d/v3d_submit_csd@bad-extension.html
Known issues
------------
Here are the changes found in Patchwork_114116v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_exec_fair@basic-none-solo@rcs0:
- shard-apl: [PASS][4] -> [FAIL][5] ([i915#2842])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-apl7/igt@gem_exec_fair@basic-none-solo@rcs0.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@gem_exec_fair@basic-none-solo@rcs0.html
* igt@gem_lmem_swapping@verify-random-ccs:
- shard-apl: NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#4613]) +1 similar issue
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@gem_lmem_swapping@verify-random-ccs.html
* igt@gem_pwrite@basic-exhaustion:
- shard-apl: NOTRUN -> [WARN][7] ([i915#2658])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_render_copy@x-tiled-to-vebox-yf-tiled:
- shard-apl: NOTRUN -> [SKIP][8] ([fdo#109271]) +34 similar issues
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@gem_render_copy@x-tiled-to-vebox-yf-tiled.html
* igt@gen9_exec_parse@allowed-single:
- shard-glk: [PASS][9] -> [ABORT][10] ([i915#5566])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-glk9/igt@gen9_exec_parse@allowed-single.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-glk6/igt@gen9_exec_parse@allowed-single.html
* igt@i915_pipe_stress@stress-xrgb8888-ytiled:
- shard-apl: NOTRUN -> [FAIL][11] ([i915#7036])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@i915_pipe_stress@stress-xrgb8888-ytiled.html
* igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc:
- shard-apl: NOTRUN -> [SKIP][12] ([fdo#109271] / [i915#3886]) +1 similar issue
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc.html
* igt@kms_color@ctm-green-to-red@pipe-a-hdmi-a-1:
- shard-snb: NOTRUN -> [SKIP][13] ([fdo#109271]) +39 similar issues
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-snb1/igt@kms_color@ctm-green-to-red@pipe-a-hdmi-a-1.html
* igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions:
- shard-glk: [PASS][14] -> [FAIL][15] ([i915#2346])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [SKIP][16] ([fdo#109271])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-glk4/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp1:
- shard-apl: [PASS][17] -> [FAIL][18] ([i915#79])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-apl7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp1.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-dp1.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-vga-1:
- shard-snb: [PASS][19] -> [DMESG-WARN][20] ([i915#5090])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-snb4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-vga-1.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-snb2/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-vga-1.html
* igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-c-dp-1:
- shard-apl: NOTRUN -> [FAIL][21] ([i915#4573]) +1 similar issue
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-c-dp-1.html
* igt@kms_setmode@basic@pipe-a-hdmi-a-1:
- shard-snb: NOTRUN -> [FAIL][22] ([i915#5465]) +1 similar issue
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-snb1/igt@kms_setmode@basic@pipe-a-hdmi-a-1.html
#### Possible fixes ####
* igt@drm_fdinfo@virtual-idle:
- {shard-rkl}: [FAIL][23] ([i915#7742]) -> [PASS][24] +1 similar issue
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-2/igt@drm_fdinfo@virtual-idle.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-1/igt@drm_fdinfo@virtual-idle.html
* igt@gem_exec_balancer@fairslice:
- {shard-rkl}: [SKIP][25] ([i915#6259]) -> [PASS][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-5/igt@gem_exec_balancer@fairslice.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-3/igt@gem_exec_balancer@fairslice.html
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-glk: [FAIL][27] ([i915#2842]) -> [PASS][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-glk8/igt@gem_exec_fair@basic-pace@rcs0.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-glk4/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_fair@basic-pace@vecs0:
- {shard-rkl}: [FAIL][29] ([i915#2842]) -> [PASS][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-6/igt@gem_exec_fair@basic-pace@vecs0.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@gem_exec_fair@basic-pace@vecs0.html
* igt@gem_exec_flush@basic-batch-kernel-default-cmd:
- {shard-rkl}: [SKIP][31] ([fdo#109313]) -> [PASS][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-2/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-5/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html
* igt@gem_exec_reloc@basic-gtt-cpu-noreloc:
- {shard-rkl}: [SKIP][33] ([i915#3281]) -> [PASS][34] +5 similar issues
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-2/igt@gem_exec_reloc@basic-gtt-cpu-noreloc.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-cpu-noreloc.html
* igt@gem_set_tiling_vs_pwrite:
- {shard-rkl}: [SKIP][35] ([i915#3282]) -> [PASS][36] +5 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-2/igt@gem_set_tiling_vs_pwrite.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-5/igt@gem_set_tiling_vs_pwrite.html
* igt@gen9_exec_parse@allowed-single:
- shard-apl: [ABORT][37] ([i915#5566]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-apl1/igt@gen9_exec_parse@allowed-single.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-apl4/igt@gen9_exec_parse@allowed-single.html
* igt@gen9_exec_parse@valid-registers:
- {shard-rkl}: [SKIP][39] ([i915#2527]) -> [PASS][40] +1 similar issue
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-6/igt@gen9_exec_parse@valid-registers.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-5/igt@gen9_exec_parse@valid-registers.html
* igt@i915_pm_dc@dc5-psr:
- {shard-rkl}: [SKIP][41] ([i915#658]) -> [PASS][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@i915_pm_dc@dc5-psr.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@i915_pm_dc@dc5-psr.html
* igt@i915_selftest@live@gt_pm:
- {shard-rkl}: [DMESG-FAIL][43] ([i915#4258]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-6/igt@i915_selftest@live@gt_pm.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@i915_selftest@live@gt_pm.html
* igt@kms_atomic@atomic_plane_damage:
- {shard-rkl}: [SKIP][45] ([i915#4098]) -> [PASS][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@kms_atomic@atomic_plane_damage.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@kms_atomic@atomic_plane_damage.html
* igt@kms_atomic@plane-overlay-legacy:
- {shard-rkl}: [SKIP][47] ([i915#1845] / [i915#4098]) -> [PASS][48] +13 similar issues
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@kms_atomic@plane-overlay-legacy.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@kms_atomic@plane-overlay-legacy.html
* igt@kms_cursor_crc@cursor-random-64x64@pipe-a-hdmi-a-1:
- shard-glk: [DMESG-WARN][49] ([i915#118]) -> [PASS][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-glk6/igt@kms_cursor_crc@cursor-random-64x64@pipe-a-hdmi-a-1.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-glk7/igt@kms_cursor_crc@cursor-random-64x64@pipe-a-hdmi-a-1.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt:
- {shard-rkl}: [SKIP][51] ([i915#1849] / [i915#4098]) -> [PASS][52] +7 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt.html
* igt@kms_psr@cursor_blt:
- {shard-rkl}: [SKIP][53] ([i915#1072]) -> [PASS][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@kms_psr@cursor_blt.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@kms_psr@cursor_blt.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- {shard-rkl}: [SKIP][55] ([i915#5461]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-6/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@perf@gen12-oa-tlb-invalidate:
- {shard-rkl}: [SKIP][57] ([fdo#109289]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-5/igt@perf@gen12-oa-tlb-invalidate.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-3/igt@perf@gen12-oa-tlb-invalidate.html
* igt@prime_vgem@coherency-gtt:
- {shard-rkl}: [SKIP][59] ([fdo#109295] / [fdo#111656] / [i915#3708]) -> [PASS][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12753/shard-rkl-4/igt@prime_vgem@coherency-gtt.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/shard-rkl-5/igt@prime_vgem@coherency-gtt.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
[fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
[fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
[fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
[fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
[fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
[fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
[fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
[fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
[fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
[fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
[fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
[fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
[fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
[fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
[i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
[i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
[i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
[i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
[i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
[i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
[i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
[i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
[i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
[i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
[i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
[i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
[i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
[i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
[i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
[i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
[i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
[i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
[i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4258]: https://gitlab.freedesktop.org/drm/intel/issues/4258
[i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
[i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
[i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
[i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
[i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
[i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
[i915#4818]: https://gitlab.freedesktop.org/drm/intel/issues/4818
[i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
[i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
[i915#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
[i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
[i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
[i915#5090]: https://gitlab.freedesktop.org/drm/intel/issues/5090
[i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115
[i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
[i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
[i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
[i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
[i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
[i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
[i915#5465]: https://gitlab.freedesktop.org/drm/intel/issues/5465
[i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
[i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
[i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
[i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
[i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
[i915#6259]: https://gitlab.freedesktop.org/drm/intel/issues/6259
[i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
[i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
[i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
[i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
[i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
[i915#6493]: https://gitlab.freedesktop.org/drm/intel/issues/6493
[i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
[i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#6590]: https://gitlab.freedesktop.org/drm/intel/issues/6590
[i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
[i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
[i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
[i915#7036]: https://gitlab.freedesktop.org/drm/intel/issues/7036
[i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037
[i915#7052]: https://gitlab.freedesktop.org/drm/intel/issues/7052
[i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
[i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
[i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128
[i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
[i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
[i915#7582]: https://gitlab.freedesktop.org/drm/intel/issues/7582
[i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
[i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
[i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
[i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
[i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
[i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949
[i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957
[i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
[i915#7984]: https://gitlab.freedesktop.org/drm/intel/issues/7984
[i915#8150]: https://gitlab.freedesktop.org/drm/intel/issues/8150
[i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152
Build changes
-------------
* Linux: CI_DRM_12753 -> Patchwork_114116v1
CI-20190529: 20190529
CI_DRM_12753: 07b36c16a454417c10b496fe6e9b5e0e18f13e74 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7161: 5574f110ae838031eef6db5236bad02e8c2d2dee @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_114116v1: 07b36c16a454417c10b496fe6e9b5e0e18f13e74 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_114116v1/index.html
[-- Attachment #2: Type: text/html, Size: 17489 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop
2023-02-16 20:44 [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop Jani Nikula
` (7 preceding siblings ...)
2023-02-17 13:39 ` [Intel-gfx] ✓ Fi.CI.IGT: success for drm/displayid: use primary use case to figure out non-desktop Patchwork
@ 2023-02-20 15:44 ` Dmitry Osipenko
2023-02-21 16:29 ` Dmitry Osipenko
8 siblings, 1 reply; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-20 15:44 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/16/23 23:44, Jani Nikula wrote:
> Mostly this is prep work and plumbing for easier use of displayid
> structure version and primary use case for parsing the displayid blocks,
> but it can be nicely used for figuring out non-desktop too.
>
> Completely untested. :)
>
> BR,
> Jani.
>
> Cc: Iaroslav Boliukin <iam@lach.pw>
> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>
> Jani Nikula (4):
> drm/displayid: add displayid_get_header() and check bounds better
> drm/displayid: return struct displayid_header from
> validate_displayid()
> drm/displayid: provide access to DisplayID version and primary use
> case
> drm/edid: update non-desktop use also from DisplayID
>
> drivers/gpu/drm/drm_displayid.c | 62 ++++++++++++++++++++++++++++-----
> drivers/gpu/drm/drm_edid.c | 25 +++++++++++++
> include/drm/drm_displayid.h | 12 ++++++-
> 3 files changed, 89 insertions(+), 10 deletions(-)
>
It works now without the EDID quirk, thanks!
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop
2023-02-20 15:44 ` [Intel-gfx] [PATCH 0/4] " Dmitry Osipenko
@ 2023-02-21 16:29 ` Dmitry Osipenko
2023-02-27 0:03 ` Dmitry Osipenko
0 siblings, 1 reply; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-21 16:29 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/20/23 18:44, Dmitry Osipenko wrote:
> On 2/16/23 23:44, Jani Nikula wrote:
>> Mostly this is prep work and plumbing for easier use of displayid
>> structure version and primary use case for parsing the displayid blocks,
>> but it can be nicely used for figuring out non-desktop too.
>>
>> Completely untested. :)
>>
>> BR,
>> Jani.
>>
>> Cc: Iaroslav Boliukin <iam@lach.pw>
>> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>
>> Jani Nikula (4):
>> drm/displayid: add displayid_get_header() and check bounds better
>> drm/displayid: return struct displayid_header from
>> validate_displayid()
>> drm/displayid: provide access to DisplayID version and primary use
>> case
>> drm/edid: update non-desktop use also from DisplayID
>>
>> drivers/gpu/drm/drm_displayid.c | 62 ++++++++++++++++++++++++++++-----
>> drivers/gpu/drm/drm_edid.c | 25 +++++++++++++
>> include/drm/drm_displayid.h | 12 ++++++-
>> 3 files changed, 89 insertions(+), 10 deletions(-)
>>
>
> It works now without the EDID quirk, thanks!
>
> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>
I'm going to apply this to misc-next later this week if there won't be
any objections.
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop
2023-02-21 16:29 ` Dmitry Osipenko
@ 2023-02-27 0:03 ` Dmitry Osipenko
2023-02-27 14:57 ` Jani Nikula
0 siblings, 1 reply; 18+ messages in thread
From: Dmitry Osipenko @ 2023-02-27 0:03 UTC (permalink / raw)
To: Jani Nikula, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On 2/21/23 19:29, Dmitry Osipenko wrote:
> On 2/20/23 18:44, Dmitry Osipenko wrote:
>> On 2/16/23 23:44, Jani Nikula wrote:
>>> Mostly this is prep work and plumbing for easier use of displayid
>>> structure version and primary use case for parsing the displayid blocks,
>>> but it can be nicely used for figuring out non-desktop too.
>>>
>>> Completely untested. :)
>>>
>>> BR,
>>> Jani.
>>>
>>> Cc: Iaroslav Boliukin <iam@lach.pw>
>>> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>>
>>> Jani Nikula (4):
>>> drm/displayid: add displayid_get_header() and check bounds better
>>> drm/displayid: return struct displayid_header from
>>> validate_displayid()
>>> drm/displayid: provide access to DisplayID version and primary use
>>> case
>>> drm/edid: update non-desktop use also from DisplayID
>>>
>>> drivers/gpu/drm/drm_displayid.c | 62 ++++++++++++++++++++++++++++-----
>>> drivers/gpu/drm/drm_edid.c | 25 +++++++++++++
>>> include/drm/drm_displayid.h | 12 ++++++-
>>> 3 files changed, 89 insertions(+), 10 deletions(-)
>>>
>>
>> It works now without the EDID quirk, thanks!
>>
>> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>
>
> I'm going to apply this to misc-next later this week if there won't be
> any objections.
>
Applied all 5 patches to misc-next
--
Best regards,
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 0/4] drm/displayid: use primary use case to figure out non-desktop
2023-02-27 0:03 ` Dmitry Osipenko
@ 2023-02-27 14:57 ` Jani Nikula
0 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2023-02-27 14:57 UTC (permalink / raw)
To: Dmitry Osipenko, dri-devel; +Cc: intel-gfx, Iaroslav Boliukin
On Mon, 27 Feb 2023, Dmitry Osipenko <dmitry.osipenko@collabora.com> wrote:
> On 2/21/23 19:29, Dmitry Osipenko wrote:
>> On 2/20/23 18:44, Dmitry Osipenko wrote:
>>> On 2/16/23 23:44, Jani Nikula wrote:
>>>> Mostly this is prep work and plumbing for easier use of displayid
>>>> structure version and primary use case for parsing the displayid blocks,
>>>> but it can be nicely used for figuring out non-desktop too.
>>>>
>>>> Completely untested. :)
>>>>
>>>> BR,
>>>> Jani.
>>>>
>>>> Cc: Iaroslav Boliukin <iam@lach.pw>
>>>> Cc: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>>>
>>>> Jani Nikula (4):
>>>> drm/displayid: add displayid_get_header() and check bounds better
>>>> drm/displayid: return struct displayid_header from
>>>> validate_displayid()
>>>> drm/displayid: provide access to DisplayID version and primary use
>>>> case
>>>> drm/edid: update non-desktop use also from DisplayID
>>>>
>>>> drivers/gpu/drm/drm_displayid.c | 62 ++++++++++++++++++++++++++++-----
>>>> drivers/gpu/drm/drm_edid.c | 25 +++++++++++++
>>>> include/drm/drm_displayid.h | 12 ++++++-
>>>> 3 files changed, 89 insertions(+), 10 deletions(-)
>>>>
>>>
>>> It works now without the EDID quirk, thanks!
>>>
>>> Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>>>
>>
>> I'm going to apply this to misc-next later this week if there won't be
>> any objections.
>>
>
> Applied all 5 patches to misc-next
Thanks for the review and pushing!
BR,
Jani.
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 18+ messages in thread