* [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation
@ 2022-08-18 19:22 Ville Syrjala
2022-08-18 19:22 ` [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence Ville Syrjala
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Ville Syrjala @ 2022-08-18 19:22 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Turns out the current code for generating the LFP
data pointers doensn't work with certain VBTs, so
switch to just hardcoding the fp_timing table size,
and make the validator a bit more strict just to be
extra safe.
Ville Syrjälä (2):
drm/i915/bios: Validate fp_timing terminator presence
drm/i915/bios: Use hardcoded fp_timing size for generating LFP data
pointers
drivers/gpu/drm/i915/display/intel_bios.c | 106 ++++++++++------------
1 file changed, 50 insertions(+), 56 deletions(-)
--
2.35.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence
2022-08-18 19:22 [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation Ville Syrjala
@ 2022-08-18 19:22 ` Ville Syrjala
2022-09-02 10:47 ` Jani Nikula
2022-08-18 19:22 ` [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers Ville Syrjala
` (2 subsequent siblings)
3 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjala @ 2022-08-18 19:22 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Validate the LFP data block a bit hardwer by making sure the
fp_timing terminators (0xffff) are where we expect them to be.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 60 ++++++++++++-----------
1 file changed, 32 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 198a2f4920cc..f1f861da9e93 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -135,18 +135,6 @@ static u32 raw_block_offset(const void *bdb, enum bdb_block_id section_id)
return block - bdb;
}
-/* size of the block excluding the header */
-static u32 raw_block_size(const void *bdb, enum bdb_block_id section_id)
-{
- const void *block;
-
- block = find_raw_section(bdb, section_id);
- if (!block)
- return 0;
-
- return get_blocksize(block);
-}
-
struct bdb_block_entry {
struct list_head node;
enum bdb_block_id section_id;
@@ -231,9 +219,14 @@ static bool validate_lfp_data_ptrs(const void *bdb,
{
int fp_timing_size, dvo_timing_size, panel_pnp_id_size, panel_name_size;
int data_block_size, lfp_data_size;
+ const void *data_block;
int i;
- data_block_size = raw_block_size(bdb, BDB_LVDS_LFP_DATA);
+ data_block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
+ if (!data_block)
+ return false;
+
+ data_block_size = get_blocksize(data_block);
if (data_block_size == 0)
return false;
@@ -261,21 +254,6 @@ static bool validate_lfp_data_ptrs(const void *bdb,
if (16 * lfp_data_size > data_block_size)
return false;
- /*
- * Except for vlv/chv machines all real VBTs seem to have 6
- * unaccounted bytes in the fp_timing table. And it doesn't
- * appear to be a really intentional hole as the fp_timing
- * 0xffff terminator is always within those 6 missing bytes.
- */
- if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size &&
- fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
- return false;
-
- if (ptrs->ptr[0].fp_timing.offset + fp_timing_size > ptrs->ptr[0].dvo_timing.offset ||
- ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
- ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
- return false;
-
/* make sure the table entries have uniform size */
for (i = 1; i < 16; i++) {
if (ptrs->ptr[i].fp_timing.table_size != fp_timing_size ||
@@ -289,6 +267,23 @@ static bool validate_lfp_data_ptrs(const void *bdb,
return false;
}
+ /*
+ * Except for vlv/chv machines all real VBTs seem to have 6
+ * unaccounted bytes in the fp_timing table. And it doesn't
+ * appear to be a really intentional hole as the fp_timing
+ * 0xffff terminator is always within those 6 missing bytes.
+ */
+ if (fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size == lfp_data_size)
+ fp_timing_size += 6;
+
+ if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
+ return false;
+
+ if (ptrs->ptr[0].fp_timing.offset + fp_timing_size != ptrs->ptr[0].dvo_timing.offset ||
+ ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
+ ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
+ return false;
+
/* make sure the tables fit inside the data block */
for (i = 0; i < 16; i++) {
if (ptrs->ptr[i].fp_timing.offset + fp_timing_size > data_block_size ||
@@ -300,6 +295,15 @@ static bool validate_lfp_data_ptrs(const void *bdb,
if (ptrs->panel_name.offset + 16 * panel_name_size > data_block_size)
return false;
+ /* make sure fp_timing terminators are present at expected locations */
+ for (i = 0; i < 16; i++) {
+ const u16 *t = data_block + ptrs->ptr[i].fp_timing.offset +
+ fp_timing_size - 2;
+
+ if (*t != 0xffff)
+ return false;
+ }
+
return true;
}
--
2.35.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
2022-08-18 19:22 [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation Ville Syrjala
2022-08-18 19:22 ` [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence Ville Syrjala
@ 2022-08-18 19:22 ` Ville Syrjala
2022-09-02 11:12 ` Jani Nikula
2022-08-23 18:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/bios: Rethink LFP data pointer generation Patchwork
2022-08-24 21:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
3 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjala @ 2022-08-18 19:22 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The current scheme for generating the LFP data table pointers
(when the block including them is missing from the VBT) expects
the 0xffff sequence to only appear in the fp_timing terminator
entries. However some VBTs also have extra 0xffff sequences
elsewhere in the LFP data. When looking for the terminators
we may end up finding those extra sequeneces insted, which means
we deduce the wrong size for the fp_timing table. The code
then notices the inconsistent looking values and gives up on
the generated data table pointers, preventing us from parsing
the LFP data table entirely.
Let's give up on the "search for the terminators" approach
and instead just hardcode the expected size for the fp_timing
table.
We have enough sanity checks in place to make sure we
shouldn't end up parsing total garbage even if that size
should change in the future (although that seems unlikely
as the fp_timing and dvo_timing tables have been declared
obsolete as of VBT version 229).
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6592
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 46 +++++++++--------------
1 file changed, 18 insertions(+), 28 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index f1f861da9e93..f54a1843924e 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -337,18 +337,6 @@ static bool fixup_lfp_data_ptrs(const void *bdb, void *ptrs_block)
return validate_lfp_data_ptrs(bdb, ptrs);
}
-static const void *find_fp_timing_terminator(const u8 *data, int size)
-{
- int i;
-
- for (i = 0; i < size - 1; i++) {
- if (data[i] == 0xff && data[i+1] == 0xff)
- return &data[i];
- }
-
- return NULL;
-}
-
static int make_lfp_data_ptr(struct lvds_lfp_data_ptr_table *table,
int table_size, int total_size)
{
@@ -372,11 +360,22 @@ static void next_lfp_data_ptr(struct lvds_lfp_data_ptr_table *next,
static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
const void *bdb)
{
- int i, size, table_size, block_size, offset;
- const void *t0, *t1, *block;
+ int i, size, table_size, block_size, offset, fp_timing_size;
struct bdb_lvds_lfp_data_ptrs *ptrs;
+ const void *block;
void *ptrs_block;
+ /*
+ * The hardcoded fp_timing_size is only valid for
+ * modernish VBTs. All older VBTs definitely should
+ * include block 41 and thus we don't need to
+ * generate one.
+ */
+ if (i915->vbt.version < 155)
+ return NULL;
+
+ fp_timing_size = 38;
+
block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
if (!block)
return NULL;
@@ -385,17 +384,8 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
block_size = get_blocksize(block);
- size = block_size;
- t0 = find_fp_timing_terminator(block, size);
- if (!t0)
- return NULL;
-
- size -= t0 - block - 2;
- t1 = find_fp_timing_terminator(t0 + 2, size);
- if (!t1)
- return NULL;
-
- size = t1 - t0;
+ size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
+ sizeof(struct lvds_pnp_id);
if (size * 16 > block_size)
return NULL;
@@ -413,7 +403,7 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
table_size = sizeof(struct lvds_dvo_timing);
size = make_lfp_data_ptr(&ptrs->ptr[0].dvo_timing, table_size, size);
- table_size = t0 - block + 2;
+ table_size = fp_timing_size;
size = make_lfp_data_ptr(&ptrs->ptr[0].fp_timing, table_size, size);
if (ptrs->ptr[0].fp_timing.table_size)
@@ -428,14 +418,14 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
return NULL;
}
- size = t1 - t0;
+ size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
+ sizeof(struct lvds_pnp_id);
for (i = 1; i < 16; i++) {
next_lfp_data_ptr(&ptrs->ptr[i].fp_timing, &ptrs->ptr[i-1].fp_timing, size);
next_lfp_data_ptr(&ptrs->ptr[i].dvo_timing, &ptrs->ptr[i-1].dvo_timing, size);
next_lfp_data_ptr(&ptrs->ptr[i].panel_pnp_id, &ptrs->ptr[i-1].panel_pnp_id, size);
}
- size = t1 - t0;
table_size = sizeof(struct lvds_lfp_panel_name);
if (16 * (size + table_size) <= block_size) {
--
2.35.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/bios: Rethink LFP data pointer generation
2022-08-18 19:22 [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation Ville Syrjala
2022-08-18 19:22 ` [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence Ville Syrjala
2022-08-18 19:22 ` [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers Ville Syrjala
@ 2022-08-23 18:27 ` Patchwork
2022-08-24 21:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
3 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2022-08-23 18:27 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 6225 bytes --]
== Series Details ==
Series: drm/i915/bios: Rethink LFP data pointer generation
URL : https://patchwork.freedesktop.org/series/107463/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_12017 -> Patchwork_107463v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/index.html
Participating hosts (37 -> 37)
------------------------------
Additional (1): fi-hsw-4770
Missing (1): bat-dg2-10
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_107463v1:
### IGT changes ###
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* igt@i915_selftest@live@gt_lrc:
- {bat-dg2-8}: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/bat-dg2-8/igt@i915_selftest@live@gt_lrc.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/bat-dg2-8/igt@i915_selftest@live@gt_lrc.html
Known issues
------------
Here are the changes found in Patchwork_107463v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_pm_backlight@basic-brightness:
- fi-hsw-4770: NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#3012])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-hsw-4770/igt@i915_pm_backlight@basic-brightness.html
* igt@i915_selftest@live@gem:
- fi-pnv-d510: NOTRUN -> [DMESG-FAIL][4] ([i915#4528])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-pnv-d510/igt@i915_selftest@live@gem.html
* igt@i915_suspend@basic-s3-without-i915:
- fi-hsw-4770: NOTRUN -> [INCOMPLETE][5] ([i915#4817] / [i915#6598])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-hsw-4770/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- fi-hsw-4770: NOTRUN -> [SKIP][6] ([fdo#109271]) +9 similar issues
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_chamelium@common-hpd-after-suspend:
- fi-bsw-kefka: NOTRUN -> [SKIP][7] ([fdo#109271] / [fdo#111827])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-bsw-kefka/igt@kms_chamelium@common-hpd-after-suspend.html
* igt@kms_chamelium@dp-crc-fast:
- fi-hsw-4770: NOTRUN -> [SKIP][8] ([fdo#109271] / [fdo#111827]) +7 similar issues
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-hsw-4770/igt@kms_chamelium@dp-crc-fast.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size:
- fi-bsw-kefka: [PASS][9] -> [FAIL][10] ([i915#6298])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html
* igt@kms_psr@sprite_plane_onoff:
- fi-hsw-4770: NOTRUN -> [SKIP][11] ([fdo#109271] / [i915#1072]) +3 similar issues
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-hsw-4770/igt@kms_psr@sprite_plane_onoff.html
#### Possible fixes ####
* igt@i915_selftest@live@execlists:
- fi-bsw-kefka: [INCOMPLETE][12] ([i915#2940]) -> [PASS][13]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/fi-bsw-kefka/igt@i915_selftest@live@execlists.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-bsw-kefka/igt@i915_selftest@live@execlists.html
* igt@i915_selftest@live@requests:
- fi-pnv-d510: [DMESG-FAIL][14] ([i915#4528]) -> [PASS][15]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/fi-pnv-d510/igt@i915_selftest@live@requests.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/fi-pnv-d510/igt@i915_selftest@live@requests.html
#### Warnings ####
* igt@i915_selftest@live@hangcheck:
- bat-dg1-5: [DMESG-FAIL][16] ([i915#4957]) -> [DMESG-FAIL][17] ([i915#4494] / [i915#4957])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/bat-dg1-5/igt@i915_selftest@live@hangcheck.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#2940]: https://gitlab.freedesktop.org/drm/intel/issues/2940
[i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
[i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
[i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
[i915#4817]: https://gitlab.freedesktop.org/drm/intel/issues/4817
[i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
[i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298
[i915#6598]: https://gitlab.freedesktop.org/drm/intel/issues/6598
Build changes
-------------
* Linux: CI_DRM_12017 -> Patchwork_107463v1
CI-20190529: 20190529
CI_DRM_12017: d09b6a64bd55b1c8c7baada7537621015f0cfd71 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_6634: e01fe99f00692864b709253638c809231d1fb333 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_107463v1: d09b6a64bd55b1c8c7baada7537621015f0cfd71 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
a942e5bb81bb drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
04e2a72b9eed drm/i915/bios: Validate fp_timing terminator presence
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/index.html
[-- Attachment #2: Type: text/html, Size: 7600 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/bios: Rethink LFP data pointer generation
2022-08-18 19:22 [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation Ville Syrjala
` (2 preceding siblings ...)
2022-08-23 18:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/bios: Rethink LFP data pointer generation Patchwork
@ 2022-08-24 21:55 ` Patchwork
3 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2022-08-24 21:55 UTC (permalink / raw)
To: Ville Syrjala; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 28200 bytes --]
== Series Details ==
Series: drm/i915/bios: Rethink LFP data pointer generation
URL : https://patchwork.freedesktop.org/series/107463/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_12017_full -> Patchwork_107463v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_107463v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_107463v1_full, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_107463v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_exec_whisper@basic-queues-priority-all:
- shard-tglb: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-tglb3/igt@gem_exec_whisper@basic-queues-priority-all.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-tglb3/igt@gem_exec_whisper@basic-queues-priority-all.html
Known issues
------------
Here are the changes found in Patchwork_107463v1_full that come from known issues:
### CI changes ###
#### Issues hit ####
* boot:
- shard-glk: ([PASS][3], [PASS][4], [PASS][5], [PASS][6], [PASS][7], [PASS][8], [PASS][9], [PASS][10], [PASS][11], [PASS][12], [PASS][13], [PASS][14], [PASS][15], [PASS][16], [PASS][17], [PASS][18], [PASS][19], [PASS][20], [PASS][21], [PASS][22], [PASS][23], [PASS][24], [PASS][25], [PASS][26], [PASS][27]) -> ([PASS][28], [PASS][29], [PASS][30], [PASS][31], [PASS][32], [PASS][33], [PASS][34], [FAIL][35], [PASS][36], [PASS][37], [PASS][38], [PASS][39], [PASS][40], [PASS][41], [PASS][42], [PASS][43], [PASS][44], [PASS][45], [PASS][46], [PASS][47], [PASS][48], [PASS][49], [PASS][50], [PASS][51], [PASS][52]) ([i915#4392])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk7/boot.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk7/boot.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk8/boot.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk8/boot.html
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk8/boot.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk8/boot.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk9/boot.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk9/boot.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk9/boot.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk1/boot.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk1/boot.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk1/boot.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk2/boot.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk2/boot.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk2/boot.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk3/boot.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk3/boot.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk3/boot.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk5/boot.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk5/boot.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk5/boot.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk6/boot.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk6/boot.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk6/boot.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk7/boot.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk5/boot.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk9/boot.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk1/boot.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk9/boot.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk9/boot.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk8/boot.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk1/boot.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk1/boot.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk8/boot.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk8/boot.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk8/boot.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk1/boot.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk2/boot.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk2/boot.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk3/boot.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk3/boot.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk7/boot.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk7/boot.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk7/boot.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk6/boot.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk6/boot.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk3/boot.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk6/boot.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk5/boot.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk5/boot.html
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_isolation@preservation-s3@bcs0:
- shard-kbl: [PASS][53] -> [DMESG-WARN][54] ([i915#180])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@bcs0.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl7/igt@gem_ctx_isolation@preservation-s3@bcs0.html
* igt@gem_exec_balancer@parallel-out-fence:
- shard-iclb: [PASS][55] -> [SKIP][56] ([i915#4525]) +1 similar issue
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb1/igt@gem_exec_balancer@parallel-out-fence.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb8/igt@gem_exec_balancer@parallel-out-fence.html
* igt@gem_exec_fair@basic-none-share@rcs0:
- shard-iclb: [PASS][57] -> [FAIL][58] ([i915#2842])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb8/igt@gem_exec_fair@basic-none-share@rcs0.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb3/igt@gem_exec_fair@basic-none-share@rcs0.html
* igt@gem_exec_fair@basic-none@vcs0:
- shard-kbl: [PASS][59] -> [FAIL][60] ([i915#2842]) +2 similar issues
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl1/igt@gem_exec_fair@basic-none@vcs0.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl7/igt@gem_exec_fair@basic-none@vcs0.html
* igt@gem_huc_copy@huc-copy:
- shard-apl: NOTRUN -> [SKIP][61] ([fdo#109271] / [i915#2190])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@gem_huc_copy@huc-copy.html
- shard-tglb: [PASS][62] -> [SKIP][63] ([i915#2190])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-tglb3/igt@gem_huc_copy@huc-copy.html
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-tglb7/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@parallel-random-engines:
- shard-kbl: NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#4613])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-glk: [PASS][65] -> [FAIL][66] ([i915#644])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk8/igt@gem_ppgtt@flink-and-close-vma-leak.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk8/igt@gem_ppgtt@flink-and-close-vma-leak.html
* igt@i915_pm_dc@dc6-psr:
- shard-iclb: [PASS][67] -> [FAIL][68] ([i915#454])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb7/igt@i915_pm_dc@dc6-psr.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb2/igt@i915_pm_dc@dc6-psr.html
* igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_ccs:
- shard-kbl: NOTRUN -> [SKIP][69] ([fdo#109271]) +57 similar issues
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl1/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_ccs.html
* igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs:
- shard-kbl: NOTRUN -> [SKIP][70] ([fdo#109271] / [i915#3886]) +4 similar issues
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_mc_ccs.html
* igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc:
- shard-apl: NOTRUN -> [SKIP][71] ([fdo#109271] / [i915#3886])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@kms_ccs@pipe-c-crc-sprite-planes-basic-y_tiled_gen12_rc_ccs_cc.html
* igt@kms_chamelium@dp-crc-single:
- shard-apl: NOTRUN -> [SKIP][72] ([fdo#109271] / [fdo#111827]) +1 similar issue
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@kms_chamelium@dp-crc-single.html
* igt@kms_chamelium@dp-hpd-enable-disable-mode:
- shard-kbl: NOTRUN -> [SKIP][73] ([fdo#109271] / [fdo#111827]) +3 similar issues
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@kms_chamelium@dp-hpd-enable-disable-mode.html
* igt@kms_chamelium@vga-hpd-enable-disable-mode:
- shard-glk: NOTRUN -> [SKIP][74] ([fdo#109271] / [fdo#111827])
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk9/igt@kms_chamelium@vga-hpd-enable-disable-mode.html
* igt@kms_content_protection@srm:
- shard-kbl: NOTRUN -> [TIMEOUT][75] ([i915#1319] / [i915#6637])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl1/igt@kms_content_protection@srm.html
* igt@kms_cursor_legacy@flip-vs-cursor@toggle:
- shard-iclb: [PASS][76] -> [FAIL][77] ([i915#2346]) +2 similar issues
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb3/igt@kms_cursor_legacy@flip-vs-cursor@toggle.html
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb7/igt@kms_cursor_legacy@flip-vs-cursor@toggle.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
- shard-iclb: NOTRUN -> [SKIP][78] ([i915#2672]) +4 similar issues
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb1/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html
* igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1:
- shard-kbl: [PASS][79] -> [FAIL][80] ([i915#1188]) +1 similar issue
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl7/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-dp-1:
- shard-apl: NOTRUN -> [INCOMPLETE][81] ([i915#6598])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-dp-1.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-dp-1:
- shard-apl: NOTRUN -> [SKIP][82] ([fdo#109271]) +25 similar issues
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-75@pipe-c-dp-1.html
* igt@sysfs_clients@split-50:
- shard-apl: NOTRUN -> [SKIP][83] ([fdo#109271] / [i915#2994])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@sysfs_clients@split-50.html
#### Possible fixes ####
* igt@gem_eio@reset-stress:
- shard-tglb: [FAIL][84] ([i915#5784]) -> [PASS][85] +1 similar issue
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-tglb5/igt@gem_eio@reset-stress.html
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-tglb7/igt@gem_eio@reset-stress.html
* igt@gem_exec_balancer@parallel-keep-submit-fence:
- shard-iclb: [SKIP][86] ([i915#4525]) -> [PASS][87]
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb7/igt@gem_exec_balancer@parallel-keep-submit-fence.html
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb2/igt@gem_exec_balancer@parallel-keep-submit-fence.html
* igt@gem_exec_fair@basic-deadline:
- shard-kbl: [FAIL][88] ([i915#2846]) -> [PASS][89]
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl4/igt@gem_exec_fair@basic-deadline.html
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl1/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none-solo@rcs0:
- shard-apl: [FAIL][90] ([i915#2842]) -> [PASS][91] +1 similar issue
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl3/igt@gem_exec_fair@basic-none-solo@rcs0.html
* igt@gem_exec_fair@basic-pace@vecs0:
- shard-kbl: [FAIL][92] ([i915#2842]) -> [PASS][93] +1 similar issue
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl7/igt@gem_exec_fair@basic-pace@vecs0.html
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@gem_exec_fair@basic-pace@vecs0.html
* igt@gem_exec_suspend@basic-s3@smem:
- shard-apl: [DMESG-WARN][94] ([i915#180]) -> [PASS][95]
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-apl6/igt@gem_exec_suspend@basic-s3@smem.html
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl8/igt@gem_exec_suspend@basic-s3@smem.html
* igt@gen9_exec_parse@allowed-all:
- shard-glk: [DMESG-WARN][96] ([i915#5566] / [i915#716]) -> [PASS][97]
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-glk5/igt@gen9_exec_parse@allowed-all.html
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-glk9/igt@gen9_exec_parse@allowed-all.html
* igt@kms_cursor_crc@cursor-suspend@pipe-b-dp-1:
- shard-kbl: [DMESG-WARN][98] ([i915#180]) -> [PASS][99] +2 similar issues
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl7/igt@kms_cursor_crc@cursor-suspend@pipe-b-dp-1.html
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@kms_cursor_crc@cursor-suspend@pipe-b-dp-1.html
* igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1:
- shard-kbl: [FAIL][100] ([i915#1188]) -> [PASS][101]
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl4/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl7/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html
* igt@kms_psr@psr2_sprite_mmap_cpu:
- shard-iclb: [SKIP][102] ([fdo#109441]) -> [PASS][103] +1 similar issue
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb3/igt@kms_psr@psr2_sprite_mmap_cpu.html
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_cpu.html
* igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-kbl: [INCOMPLETE][104] ([i915#3614] / [i915#4939] / [i915#6598]) -> [PASS][105]
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl1/igt@kms_vblank@pipe-b-ts-continuation-suspend.html
* igt@kms_vblank@pipe-b-wait-idle-hang:
- shard-snb: [SKIP][106] ([fdo#109271]) -> [PASS][107]
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-snb2/igt@kms_vblank@pipe-b-wait-idle-hang.html
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-snb5/igt@kms_vblank@pipe-b-wait-idle-hang.html
* igt@testdisplay:
- {shard-tglu}: [DMESG-WARN][108] ([i915#4941]) -> [PASS][109]
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-tglu-3/igt@testdisplay.html
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-tglu-1/igt@testdisplay.html
#### Warnings ####
* igt@gem_eio@unwedge-stress:
- shard-tglb: [TIMEOUT][110] ([i915#3063]) -> [FAIL][111] ([i915#5784])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-tglb7/igt@gem_eio@unwedge-stress.html
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-tglb5/igt@gem_eio@unwedge-stress.html
* igt@i915_pm_dc@dc3co-vpb-simulation:
- shard-iclb: [SKIP][112] ([i915#588]) -> [SKIP][113] ([i915#658])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb2/igt@i915_pm_dc@dc3co-vpb-simulation.html
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb1/igt@i915_pm_dc@dc3co-vpb-simulation.html
* igt@kms_frontbuffer_tracking@fbcpsr-suspend:
- shard-iclb: [INCOMPLETE][114] ([i915#6598]) -> [INCOMPLETE][115] ([i915#1982] / [i915#6598])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb6/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb5/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
* igt@kms_psr2_sf@overlay-plane-move-continuous-sf:
- shard-iclb: [SKIP][116] ([i915#2920]) -> [SKIP][117] ([i915#658]) +1 similar issue
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb2/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
* igt@kms_psr2_su@page_flip-p010:
- shard-iclb: [FAIL][118] ([i915#5939]) -> [SKIP][119] ([fdo#109642] / [fdo#111068] / [i915#658])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-iclb2/igt@kms_psr2_su@page_flip-p010.html
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-iclb1/igt@kms_psr2_su@page_flip-p010.html
* igt@runner@aborted:
- shard-apl: ([FAIL][120], [FAIL][121], [FAIL][122]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#6599]) -> ([FAIL][123], [FAIL][124]) ([i915#3002] / [i915#4312] / [i915#5257] / [i915#6599])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-apl6/igt@runner@aborted.html
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-apl7/igt@runner@aborted.html
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-apl3/igt@runner@aborted.html
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl6/igt@runner@aborted.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-apl2/igt@runner@aborted.html
- shard-kbl: ([FAIL][125], [FAIL][126], [FAIL][127]) ([i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][128], [FAIL][129], [FAIL][130]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257])
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl7/igt@runner@aborted.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl1/igt@runner@aborted.html
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12017/shard-kbl7/igt@runner@aborted.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl7/igt@runner@aborted.html
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl4/igt@runner@aborted.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/shard-kbl1/igt@runner@aborted.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
[fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
[fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
[fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
[fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
[fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
[fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
[fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
[fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
[i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
[i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
[i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
[i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
[i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
[i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
[i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
[i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
[i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
[i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
[i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
[i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
[i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
[i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
[i915#3614]: https://gitlab.freedesktop.org/drm/intel/issues/3614
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
[i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
[i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
[i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
[i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
[i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
[i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
[i915#4392]: https://gitlab.freedesktop.org/drm/intel/issues/4392
[i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
[i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4939]: https://gitlab.freedesktop.org/drm/intel/issues/4939
[i915#4941]: https://gitlab.freedesktop.org/drm/intel/issues/4941
[i915#4991]: https://gitlab.freedesktop.org/drm/intel/issues/4991
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
[i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
[i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
[i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
[i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
[i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
[i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723
[i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
[i915#588]: https://gitlab.freedesktop.org/drm/intel/issues/588
[i915#5939]: https://gitlab.freedesktop.org/drm/intel/issues/5939
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
[i915#6251]: https://gitlab.freedesktop.org/drm/intel/issues/6251
[i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
[i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
[i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
[i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
[i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
[i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
[i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
[i915#6598]: https://gitlab.freedesktop.org/drm/intel/issues/6598
[i915#6599]: https://gitlab.freedesktop.org/drm/intel/issues/6599
[i915#6637]: https://gitlab.freedesktop.org/drm/intel/issues/6637
[i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
Build changes
-------------
* Linux: CI_DRM_12017 -> Patchwork_107463v1
CI-20190529: 20190529
CI_DRM_12017: d09b6a64bd55b1c8c7baada7537621015f0cfd71 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_6634: e01fe99f00692864b709253638c809231d1fb333 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_107463v1: d09b6a64bd55b1c8c7baada7537621015f0cfd71 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_107463v1/index.html
[-- Attachment #2: Type: text/html, Size: 29191 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence
2022-08-18 19:22 ` [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence Ville Syrjala
@ 2022-09-02 10:47 ` Jani Nikula
2022-09-02 11:03 ` Ville Syrjälä
0 siblings, 1 reply; 9+ messages in thread
From: Jani Nikula @ 2022-09-02 10:47 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx
On Thu, 18 Aug 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Validate the LFP data block a bit hardwer by making sure the
> fp_timing terminators (0xffff) are where we expect them to be.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
I wonder if it would be good to debug log at each of the "return false"
sites in fixup_lfp_data_ptrs() and validate_lfp_data_ptrs(). Anyway,
that's a separate change.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 60 ++++++++++++-----------
> 1 file changed, 32 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 198a2f4920cc..f1f861da9e93 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -135,18 +135,6 @@ static u32 raw_block_offset(const void *bdb, enum bdb_block_id section_id)
> return block - bdb;
> }
>
> -/* size of the block excluding the header */
> -static u32 raw_block_size(const void *bdb, enum bdb_block_id section_id)
> -{
> - const void *block;
> -
> - block = find_raw_section(bdb, section_id);
> - if (!block)
> - return 0;
> -
> - return get_blocksize(block);
> -}
> -
> struct bdb_block_entry {
> struct list_head node;
> enum bdb_block_id section_id;
> @@ -231,9 +219,14 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> {
> int fp_timing_size, dvo_timing_size, panel_pnp_id_size, panel_name_size;
> int data_block_size, lfp_data_size;
> + const void *data_block;
> int i;
>
> - data_block_size = raw_block_size(bdb, BDB_LVDS_LFP_DATA);
> + data_block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
> + if (!data_block)
> + return false;
> +
> + data_block_size = get_blocksize(data_block);
> if (data_block_size == 0)
> return false;
>
> @@ -261,21 +254,6 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> if (16 * lfp_data_size > data_block_size)
> return false;
>
> - /*
> - * Except for vlv/chv machines all real VBTs seem to have 6
> - * unaccounted bytes in the fp_timing table. And it doesn't
> - * appear to be a really intentional hole as the fp_timing
> - * 0xffff terminator is always within those 6 missing bytes.
> - */
> - if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size &&
> - fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
> - return false;
> -
> - if (ptrs->ptr[0].fp_timing.offset + fp_timing_size > ptrs->ptr[0].dvo_timing.offset ||
> - ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
> - ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
> - return false;
> -
> /* make sure the table entries have uniform size */
> for (i = 1; i < 16; i++) {
> if (ptrs->ptr[i].fp_timing.table_size != fp_timing_size ||
> @@ -289,6 +267,23 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> return false;
> }
>
> + /*
> + * Except for vlv/chv machines all real VBTs seem to have 6
> + * unaccounted bytes in the fp_timing table. And it doesn't
> + * appear to be a really intentional hole as the fp_timing
> + * 0xffff terminator is always within those 6 missing bytes.
> + */
> + if (fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size == lfp_data_size)
> + fp_timing_size += 6;
> +
> + if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
> + return false;
> +
> + if (ptrs->ptr[0].fp_timing.offset + fp_timing_size != ptrs->ptr[0].dvo_timing.offset ||
> + ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
> + ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
> + return false;
> +
> /* make sure the tables fit inside the data block */
> for (i = 0; i < 16; i++) {
> if (ptrs->ptr[i].fp_timing.offset + fp_timing_size > data_block_size ||
> @@ -300,6 +295,15 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> if (ptrs->panel_name.offset + 16 * panel_name_size > data_block_size)
> return false;
>
> + /* make sure fp_timing terminators are present at expected locations */
> + for (i = 0; i < 16; i++) {
> + const u16 *t = data_block + ptrs->ptr[i].fp_timing.offset +
> + fp_timing_size - 2;
> +
> + if (*t != 0xffff)
> + return false;
> + }
> +
> return true;
> }
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence
2022-09-02 10:47 ` Jani Nikula
@ 2022-09-02 11:03 ` Ville Syrjälä
0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjälä @ 2022-09-02 11:03 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Fri, Sep 02, 2022 at 01:47:14PM +0300, Jani Nikula wrote:
> On Thu, 18 Aug 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Validate the LFP data block a bit hardwer by making sure the
> > fp_timing terminators (0xffff) are where we expect them to be.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> I wonder if it would be good to debug log at each of the "return false"
> sites in fixup_lfp_data_ptrs() and validate_lfp_data_ptrs(). Anyway,
> that's a separate change.
Not sure how much it would help. I suspect one still ends
up decoding the whole hexdump by hand.
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> > ---
> > drivers/gpu/drm/i915/display/intel_bios.c | 60 ++++++++++++-----------
> > 1 file changed, 32 insertions(+), 28 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index 198a2f4920cc..f1f861da9e93 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -135,18 +135,6 @@ static u32 raw_block_offset(const void *bdb, enum bdb_block_id section_id)
> > return block - bdb;
> > }
> >
> > -/* size of the block excluding the header */
> > -static u32 raw_block_size(const void *bdb, enum bdb_block_id section_id)
> > -{
> > - const void *block;
> > -
> > - block = find_raw_section(bdb, section_id);
> > - if (!block)
> > - return 0;
> > -
> > - return get_blocksize(block);
> > -}
> > -
> > struct bdb_block_entry {
> > struct list_head node;
> > enum bdb_block_id section_id;
> > @@ -231,9 +219,14 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> > {
> > int fp_timing_size, dvo_timing_size, panel_pnp_id_size, panel_name_size;
> > int data_block_size, lfp_data_size;
> > + const void *data_block;
> > int i;
> >
> > - data_block_size = raw_block_size(bdb, BDB_LVDS_LFP_DATA);
> > + data_block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
> > + if (!data_block)
> > + return false;
> > +
> > + data_block_size = get_blocksize(data_block);
> > if (data_block_size == 0)
> > return false;
> >
> > @@ -261,21 +254,6 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> > if (16 * lfp_data_size > data_block_size)
> > return false;
> >
> > - /*
> > - * Except for vlv/chv machines all real VBTs seem to have 6
> > - * unaccounted bytes in the fp_timing table. And it doesn't
> > - * appear to be a really intentional hole as the fp_timing
> > - * 0xffff terminator is always within those 6 missing bytes.
> > - */
> > - if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size &&
> > - fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
> > - return false;
> > -
> > - if (ptrs->ptr[0].fp_timing.offset + fp_timing_size > ptrs->ptr[0].dvo_timing.offset ||
> > - ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
> > - ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
> > - return false;
> > -
> > /* make sure the table entries have uniform size */
> > for (i = 1; i < 16; i++) {
> > if (ptrs->ptr[i].fp_timing.table_size != fp_timing_size ||
> > @@ -289,6 +267,23 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> > return false;
> > }
> >
> > + /*
> > + * Except for vlv/chv machines all real VBTs seem to have 6
> > + * unaccounted bytes in the fp_timing table. And it doesn't
> > + * appear to be a really intentional hole as the fp_timing
> > + * 0xffff terminator is always within those 6 missing bytes.
> > + */
> > + if (fp_timing_size + 6 + dvo_timing_size + panel_pnp_id_size == lfp_data_size)
> > + fp_timing_size += 6;
> > +
> > + if (fp_timing_size + dvo_timing_size + panel_pnp_id_size != lfp_data_size)
> > + return false;
> > +
> > + if (ptrs->ptr[0].fp_timing.offset + fp_timing_size != ptrs->ptr[0].dvo_timing.offset ||
> > + ptrs->ptr[0].dvo_timing.offset + dvo_timing_size != ptrs->ptr[0].panel_pnp_id.offset ||
> > + ptrs->ptr[0].panel_pnp_id.offset + panel_pnp_id_size != lfp_data_size)
> > + return false;
> > +
> > /* make sure the tables fit inside the data block */
> > for (i = 0; i < 16; i++) {
> > if (ptrs->ptr[i].fp_timing.offset + fp_timing_size > data_block_size ||
> > @@ -300,6 +295,15 @@ static bool validate_lfp_data_ptrs(const void *bdb,
> > if (ptrs->panel_name.offset + 16 * panel_name_size > data_block_size)
> > return false;
> >
> > + /* make sure fp_timing terminators are present at expected locations */
> > + for (i = 0; i < 16; i++) {
> > + const u16 *t = data_block + ptrs->ptr[i].fp_timing.offset +
> > + fp_timing_size - 2;
> > +
> > + if (*t != 0xffff)
> > + return false;
> > + }
> > +
> > return true;
> > }
>
> --
> Jani Nikula, Intel Open Source Graphics Center
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
2022-08-18 19:22 ` [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers Ville Syrjala
@ 2022-09-02 11:12 ` Jani Nikula
2022-09-02 11:23 ` Ville Syrjälä
0 siblings, 1 reply; 9+ messages in thread
From: Jani Nikula @ 2022-09-02 11:12 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx
On Thu, 18 Aug 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The current scheme for generating the LFP data table pointers
> (when the block including them is missing from the VBT) expects
> the 0xffff sequence to only appear in the fp_timing terminator
> entries. However some VBTs also have extra 0xffff sequences
> elsewhere in the LFP data. When looking for the terminators
> we may end up finding those extra sequeneces insted, which means
> we deduce the wrong size for the fp_timing table. The code
> then notices the inconsistent looking values and gives up on
> the generated data table pointers, preventing us from parsing
> the LFP data table entirely.
>
> Let's give up on the "search for the terminators" approach
> and instead just hardcode the expected size for the fp_timing
> table.
>
> We have enough sanity checks in place to make sure we
> shouldn't end up parsing total garbage even if that size
> should change in the future (although that seems unlikely
> as the fp_timing and dvo_timing tables have been declared
> obsolete as of VBT version 229).
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6592
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
What a mess.
Could debug log about missing data ptrs on vbt version < 155, but no
biggie.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 46 +++++++++--------------
> 1 file changed, 18 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index f1f861da9e93..f54a1843924e 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -337,18 +337,6 @@ static bool fixup_lfp_data_ptrs(const void *bdb, void *ptrs_block)
> return validate_lfp_data_ptrs(bdb, ptrs);
> }
>
> -static const void *find_fp_timing_terminator(const u8 *data, int size)
> -{
> - int i;
> -
> - for (i = 0; i < size - 1; i++) {
> - if (data[i] == 0xff && data[i+1] == 0xff)
> - return &data[i];
> - }
> -
> - return NULL;
> -}
> -
> static int make_lfp_data_ptr(struct lvds_lfp_data_ptr_table *table,
> int table_size, int total_size)
> {
> @@ -372,11 +360,22 @@ static void next_lfp_data_ptr(struct lvds_lfp_data_ptr_table *next,
> static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> const void *bdb)
> {
> - int i, size, table_size, block_size, offset;
> - const void *t0, *t1, *block;
> + int i, size, table_size, block_size, offset, fp_timing_size;
> struct bdb_lvds_lfp_data_ptrs *ptrs;
> + const void *block;
> void *ptrs_block;
>
> + /*
> + * The hardcoded fp_timing_size is only valid for
> + * modernish VBTs. All older VBTs definitely should
> + * include block 41 and thus we don't need to
> + * generate one.
> + */
> + if (i915->vbt.version < 155)
> + return NULL;
> +
> + fp_timing_size = 38;
> +
> block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
> if (!block)
> return NULL;
> @@ -385,17 +384,8 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
>
> block_size = get_blocksize(block);
>
> - size = block_size;
> - t0 = find_fp_timing_terminator(block, size);
> - if (!t0)
> - return NULL;
> -
> - size -= t0 - block - 2;
> - t1 = find_fp_timing_terminator(t0 + 2, size);
> - if (!t1)
> - return NULL;
> -
> - size = t1 - t0;
> + size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
> + sizeof(struct lvds_pnp_id);
> if (size * 16 > block_size)
> return NULL;
>
> @@ -413,7 +403,7 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> table_size = sizeof(struct lvds_dvo_timing);
> size = make_lfp_data_ptr(&ptrs->ptr[0].dvo_timing, table_size, size);
>
> - table_size = t0 - block + 2;
> + table_size = fp_timing_size;
> size = make_lfp_data_ptr(&ptrs->ptr[0].fp_timing, table_size, size);
>
> if (ptrs->ptr[0].fp_timing.table_size)
> @@ -428,14 +418,14 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> return NULL;
> }
>
> - size = t1 - t0;
> + size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
> + sizeof(struct lvds_pnp_id);
> for (i = 1; i < 16; i++) {
> next_lfp_data_ptr(&ptrs->ptr[i].fp_timing, &ptrs->ptr[i-1].fp_timing, size);
> next_lfp_data_ptr(&ptrs->ptr[i].dvo_timing, &ptrs->ptr[i-1].dvo_timing, size);
> next_lfp_data_ptr(&ptrs->ptr[i].panel_pnp_id, &ptrs->ptr[i-1].panel_pnp_id, size);
> }
>
> - size = t1 - t0;
> table_size = sizeof(struct lvds_lfp_panel_name);
>
> if (16 * (size + table_size) <= block_size) {
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
2022-09-02 11:12 ` Jani Nikula
@ 2022-09-02 11:23 ` Ville Syrjälä
0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjälä @ 2022-09-02 11:23 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
On Fri, Sep 02, 2022 at 02:12:50PM +0300, Jani Nikula wrote:
> On Thu, 18 Aug 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > The current scheme for generating the LFP data table pointers
> > (when the block including them is missing from the VBT) expects
> > the 0xffff sequence to only appear in the fp_timing terminator
> > entries. However some VBTs also have extra 0xffff sequences
> > elsewhere in the LFP data. When looking for the terminators
> > we may end up finding those extra sequeneces insted, which means
> > we deduce the wrong size for the fp_timing table. The code
> > then notices the inconsistent looking values and gives up on
> > the generated data table pointers, preventing us from parsing
> > the LFP data table entirely.
> >
> > Let's give up on the "search for the terminators" approach
> > and instead just hardcode the expected size for the fp_timing
> > table.
> >
> > We have enough sanity checks in place to make sure we
> > shouldn't end up parsing total garbage even if that size
> > should change in the future (although that seems unlikely
> > as the fp_timing and dvo_timing tables have been declared
> > obsolete as of VBT version 229).
> >
> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/6592
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> What a mess.
>
> Could debug log about missing data ptrs on vbt version < 155, but no
> biggie.
I think we'd still end up tripping the WARN(min_size == 0) thing.
Not the clearest warning I admit, but at least it shouldn't just
silently ignore it.
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Thanks.
>
>
> > ---
> > drivers/gpu/drm/i915/display/intel_bios.c | 46 +++++++++--------------
> > 1 file changed, 18 insertions(+), 28 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index f1f861da9e93..f54a1843924e 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -337,18 +337,6 @@ static bool fixup_lfp_data_ptrs(const void *bdb, void *ptrs_block)
> > return validate_lfp_data_ptrs(bdb, ptrs);
> > }
> >
> > -static const void *find_fp_timing_terminator(const u8 *data, int size)
> > -{
> > - int i;
> > -
> > - for (i = 0; i < size - 1; i++) {
> > - if (data[i] == 0xff && data[i+1] == 0xff)
> > - return &data[i];
> > - }
> > -
> > - return NULL;
> > -}
> > -
> > static int make_lfp_data_ptr(struct lvds_lfp_data_ptr_table *table,
> > int table_size, int total_size)
> > {
> > @@ -372,11 +360,22 @@ static void next_lfp_data_ptr(struct lvds_lfp_data_ptr_table *next,
> > static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> > const void *bdb)
> > {
> > - int i, size, table_size, block_size, offset;
> > - const void *t0, *t1, *block;
> > + int i, size, table_size, block_size, offset, fp_timing_size;
> > struct bdb_lvds_lfp_data_ptrs *ptrs;
> > + const void *block;
> > void *ptrs_block;
> >
> > + /*
> > + * The hardcoded fp_timing_size is only valid for
> > + * modernish VBTs. All older VBTs definitely should
> > + * include block 41 and thus we don't need to
> > + * generate one.
> > + */
> > + if (i915->vbt.version < 155)
> > + return NULL;
> > +
> > + fp_timing_size = 38;
> > +
> > block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
> > if (!block)
> > return NULL;
> > @@ -385,17 +384,8 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> >
> > block_size = get_blocksize(block);
> >
> > - size = block_size;
> > - t0 = find_fp_timing_terminator(block, size);
> > - if (!t0)
> > - return NULL;
> > -
> > - size -= t0 - block - 2;
> > - t1 = find_fp_timing_terminator(t0 + 2, size);
> > - if (!t1)
> > - return NULL;
> > -
> > - size = t1 - t0;
> > + size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
> > + sizeof(struct lvds_pnp_id);
> > if (size * 16 > block_size)
> > return NULL;
> >
> > @@ -413,7 +403,7 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> > table_size = sizeof(struct lvds_dvo_timing);
> > size = make_lfp_data_ptr(&ptrs->ptr[0].dvo_timing, table_size, size);
> >
> > - table_size = t0 - block + 2;
> > + table_size = fp_timing_size;
> > size = make_lfp_data_ptr(&ptrs->ptr[0].fp_timing, table_size, size);
> >
> > if (ptrs->ptr[0].fp_timing.table_size)
> > @@ -428,14 +418,14 @@ static void *generate_lfp_data_ptrs(struct drm_i915_private *i915,
> > return NULL;
> > }
> >
> > - size = t1 - t0;
> > + size = fp_timing_size + sizeof(struct lvds_dvo_timing) +
> > + sizeof(struct lvds_pnp_id);
> > for (i = 1; i < 16; i++) {
> > next_lfp_data_ptr(&ptrs->ptr[i].fp_timing, &ptrs->ptr[i-1].fp_timing, size);
> > next_lfp_data_ptr(&ptrs->ptr[i].dvo_timing, &ptrs->ptr[i-1].dvo_timing, size);
> > next_lfp_data_ptr(&ptrs->ptr[i].panel_pnp_id, &ptrs->ptr[i-1].panel_pnp_id, size);
> > }
> >
> > - size = t1 - t0;
> > table_size = sizeof(struct lvds_lfp_panel_name);
> >
> > if (16 * (size + table_size) <= block_size) {
>
> --
> Jani Nikula, Intel Open Source Graphics Center
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-09-02 11:23 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-18 19:22 [Intel-gfx] [PATCH 0/2] drm/i915/bios: Rethink LFP data pointer generation Ville Syrjala
2022-08-18 19:22 ` [Intel-gfx] [PATCH 1/2] drm/i915/bios: Validate fp_timing terminator presence Ville Syrjala
2022-09-02 10:47 ` Jani Nikula
2022-09-02 11:03 ` Ville Syrjälä
2022-08-18 19:22 ` [Intel-gfx] [PATCH 2/2] drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers Ville Syrjala
2022-09-02 11:12 ` Jani Nikula
2022-09-02 11:23 ` Ville Syrjälä
2022-08-23 18:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/bios: Rethink LFP data pointer generation Patchwork
2022-08-24 21:55 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox