]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
drop broken and untested i915 patches.
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Oct 2022 07:07:08 +0000 (09:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Oct 2022 07:07:08 +0000 (09:07 +0200)
queue-5.19/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch [deleted file]
queue-5.19/series
queue-6.0/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch [deleted file]
queue-6.0/drm-i915-bios-validate-fp_timing-terminator-presence.patch [deleted file]
queue-6.0/series

diff --git a/queue-5.19/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch b/queue-5.19/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch
deleted file mode 100644 (file)
index a5e25db..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-From d3a7051841f0a4bcb1ee26a1b721c6150cc4c2b1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
-Date: Thu, 18 Aug 2022 22:22:23 +0300
-Subject: drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-commit d3a7051841f0a4bcb1ee26a1b721c6150cc4c2b1 upstream.
-
-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>
-Link: https://patchwork.freedesktop.org/patch/msgid/20220818192223.29881-3-ville.syrjala@linux.intel.com
-Reviewed-by: Jani Nikula <jani.nikula@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpu/drm/i915/display/intel_bios.c |   46 +++++++++++-------------------
- 1 file changed, 18 insertions(+), 28 deletions(-)
-
---- a/drivers/gpu/drm/i915/display/intel_bios.c
-+++ b/drivers/gpu/drm/i915/display/intel_bios.c
-@@ -332,18 +332,6 @@ static bool fixup_lfp_data_ptrs(const vo
-       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)
- {
-@@ -367,11 +355,22 @@ static void next_lfp_data_ptr(struct lvd
- 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->display.vbt.version < 155)
-+              return NULL;
-+
-+      fp_timing_size = 38;
-+
-       block = find_raw_section(bdb, BDB_LVDS_LFP_DATA);
-       if (!block)
-               return NULL;
-@@ -380,17 +379,8 @@ static void *generate_lfp_data_ptrs(stru
-       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;
-@@ -408,7 +398,7 @@ static void *generate_lfp_data_ptrs(stru
-       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)
-@@ -423,14 +413,14 @@ static void *generate_lfp_data_ptrs(stru
-               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) {
index e3491d21c7c67893c76e785c49128cb00c508d16..95d514aafb17b5e13c459ccf4be47f3449745cc2 100644 (file)
@@ -797,4 +797,3 @@ kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch
 lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch
 hid-uclogic-add-missing-suffix-for-digitalizers.patch
 ext4-continue-to-expand-file-system-when-the-target-size-doesn-t-reach.patch
-drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch
diff --git a/queue-6.0/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch b/queue-6.0/drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch
deleted file mode 100644 (file)
index 1a67287..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-From d3a7051841f0a4bcb1ee26a1b721c6150cc4c2b1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
-Date: Thu, 18 Aug 2022 22:22:23 +0300
-Subject: drm/i915/bios: Use hardcoded fp_timing size for generating LFP data pointers
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-commit d3a7051841f0a4bcb1ee26a1b721c6150cc4c2b1 upstream.
-
-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>
-Link: https://patchwork.freedesktop.org/patch/msgid/20220818192223.29881-3-ville.syrjala@linux.intel.com
-Reviewed-by: Jani Nikula <jani.nikula@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpu/drm/i915/display/intel_bios.c |   46 +++++++++++-------------------
- 1 file changed, 18 insertions(+), 28 deletions(-)
-
---- 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 vo
-       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 lvd
- 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->display.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(stru
-       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(stru
-       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(stru
-               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) {
diff --git a/queue-6.0/drm-i915-bios-validate-fp_timing-terminator-presence.patch b/queue-6.0/drm-i915-bios-validate-fp_timing-terminator-presence.patch
deleted file mode 100644 (file)
index fc0b363..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-From 4e78d6023c15c6acce8fbe42e13027c460395522 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
-Date: Thu, 18 Aug 2022 22:22:22 +0300
-Subject: drm/i915/bios: Validate fp_timing terminator presence
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Ville Syrjälä <ville.syrjala@linux.intel.com>
-
-commit 4e78d6023c15c6acce8fbe42e13027c460395522 upstream.
-
-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>
-Link: https://patchwork.freedesktop.org/patch/msgid/20220818192223.29881-2-ville.syrjala@linux.intel.com
-Reviewed-by: Jani Nikula <jani.nikula@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/gpu/drm/i915/display/intel_bios.c |   60 ++++++++++++++++--------------
- 1 file changed, 32 insertions(+), 28 deletions(-)
-
---- 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 *
-       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
- {
-       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
-       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
-                       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
-       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;
- }
index 5a72459e38150dc01b968bac3a52aceae12bec9f..2ca9f600fad2ff3c552899f6ea5bc16d6d6e0e01 100644 (file)
@@ -881,5 +881,3 @@ io_uring-rw-ensure-kiocb_end_write-is-always-called.patch
 kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch
 kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch
 lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch
-drm-i915-bios-validate-fp_timing-terminator-presence.patch
-drm-i915-bios-use-hardcoded-fp_timing-size-for-generating-lfp-data-pointers.patch