* [PATCH 0/5] drm/i915/bios: Refactor ROM access
@ 2024-09-10 13:42 Ville Syrjala
2024-09-10 13:42 ` [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read Ville Syrjala
` (8 more replies)
0 siblings, 9 replies; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Unify the behaviour of the PCI ROM vs. SPI flash VBT
read codepaths, and relocate out the low level nuts details
from intel_bios.c into a new soc/intel_rom.c file.
Ville Syrjälä (5):
drm/i915/bios: Add some size checks to SPI VBT read
drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4
drm/i915/bios: Extract intel_spi_read16()
drm/i915/bios: Extract vbt_signature[]
drm/i915/bios: Extract soc/intel_rom.c
drivers/gpu/drm/i915/Makefile | 3 +-
drivers/gpu/drm/i915/display/intel_bios.c | 141 ++++-----------
drivers/gpu/drm/i915/soc/intel_rom.c | 160 ++++++++++++++++++
drivers/gpu/drm/i915/soc/intel_rom.h | 25 +++
drivers/gpu/drm/xe/Makefile | 3 +-
.../xe/compat-i915-headers/soc/intel_rom.h | 6 +
6 files changed, 230 insertions(+), 108 deletions(-)
create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.c
create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.h
create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
--
2.44.2
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
@ 2024-09-10 13:42 ` Ville Syrjala
2024-09-12 11:56 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4 Ville Syrjala
` (7 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Unify the SPI vs. PCI ROM VBT read codepaths a bit by
pulling some size overflow checks from the PCI side
into the SPI side.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index cd32c9cd38a9..86b81fd23f58 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -3088,11 +3088,22 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
if (count >= oprom_size)
goto err_not_found;
+ if (sizeof(struct vbt_header) > oprom_size - count) {
+ drm_dbg(display->drm, "VBT header incomplete\n");
+ goto err_not_found;
+ }
+
/* Get VBT size and allocate space for the VBT */
vbt_size = intel_spi_read(&i915->uncore,
found + offsetof(struct vbt_header, vbt_size));
vbt_size &= 0xffff;
+ if (vbt_size > oprom_size - count) {
+ drm_dbg(display->drm,
+ "VBT incomplete (vbt_size overflows)\n");
+ goto err_not_found;
+ }
+
vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
if (!vbt)
goto err_not_found;
--
2.44.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
2024-09-10 13:42 ` [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read Ville Syrjala
@ 2024-09-10 13:42 ` Ville Syrjala
2024-09-12 11:57 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16() Ville Syrjala
` (6 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The SPI code rounds the VBT allocation to a multiple of four bytes
(presumably because it reads the VBT 4 bytes at a time). Do the
same for the PCI ROM side to eliminate pointless differences between
the two codepaths. This will make no functional difference.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 86b81fd23f58..cc4a4cc2bf3e 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -3166,7 +3166,7 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
}
/* The rest will be validated by intel_bios_is_valid_vbt() */
- vbt = kmalloc(vbt_size, GFP_KERNEL);
+ vbt = kmalloc(round_up(vbt_size, 4), GFP_KERNEL);
if (!vbt)
goto err_unmap_oprom;
--
2.44.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16()
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
2024-09-10 13:42 ` [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read Ville Syrjala
2024-09-10 13:42 ` [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4 Ville Syrjala
@ 2024-09-10 13:42 ` Ville Syrjala
2024-09-12 12:02 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 4/5] drm/i915/bios: Extract vbt_signature[] Ville Syrjala
` (5 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
The SPI VBT codepath only knows how to read 4 bytes at a time.
So to read the 2 byte vbt_size it masks out the unwanted msbs.
Hide that little implementation detail inside a new intel_spi_read16()
helper. Alse rename the existing intel_spi_read() to intel_spi_read32()
to make it clear what it does.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index cc4a4cc2bf3e..cbbda94c3dab 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -3053,13 +3053,18 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
return vbt;
}
-static u32 intel_spi_read(struct intel_uncore *uncore, u32 offset)
+static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
{
intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
}
+static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
+{
+ return intel_spi_read32(uncore, offset) & 0xffff;
+}
+
static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
size_t *size)
{
@@ -3078,7 +3083,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
oprom_offset &= OROM_OFFSET_MASK;
for (count = 0; count < oprom_size; count += 4) {
- data = intel_spi_read(&i915->uncore, oprom_offset + count);
+ data = intel_spi_read32(&i915->uncore, oprom_offset + count);
if (data == *((const u32 *)"$VBT")) {
found = oprom_offset + count;
break;
@@ -3094,9 +3099,8 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
}
/* Get VBT size and allocate space for the VBT */
- vbt_size = intel_spi_read(&i915->uncore,
- found + offsetof(struct vbt_header, vbt_size));
- vbt_size &= 0xffff;
+ vbt_size = intel_spi_read16(&i915->uncore,
+ found + offsetof(struct vbt_header, vbt_size));
if (vbt_size > oprom_size - count) {
drm_dbg(display->drm,
@@ -3109,7 +3113,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
goto err_not_found;
for (count = 0; count < vbt_size; count += 4)
- *(vbt + store++) = intel_spi_read(&i915->uncore, found + count);
+ *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
goto err_free_vbt;
--
2.44.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (2 preceding siblings ...)
2024-09-10 13:42 ` [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16() Ville Syrjala
@ 2024-09-10 13:42 ` Ville Syrjala
2024-09-12 12:15 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c Ville Syrjala
` (4 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Replace the three hand rolled "$VBT"s with a vbt_signature[]
to avoid accidents.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index cbbda94c3dab..0b92b494117f 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
return _vbt + vbt->bdb_offset;
}
+static const char vbt_signature[4] = "$VBT";
+
/**
* intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
* @display: display device
@@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
return false;
}
- if (memcmp(vbt->signature, "$VBT", 4)) {
+ if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
drm_dbg_kms(display->drm, "VBT invalid signature\n");
return false;
}
@@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
oprom_offset &= OROM_OFFSET_MASK;
+ BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
+
for (count = 0; count < oprom_size; count += 4) {
data = intel_spi_read32(&i915->uncore, oprom_offset + count);
- if (data == *((const u32 *)"$VBT")) {
+ if (data == *((const u32 *)vbt_signature)) {
found = oprom_offset + count;
break;
}
@@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
if (!oprom)
return NULL;
+ BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
+
/* Scour memory looking for the VBT signature. */
for (i = 0; i + 4 < size; i += 4) {
- if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
+ if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
continue;
p = oprom + i;
--
2.44.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (3 preceding siblings ...)
2024-09-10 13:42 ` [PATCH 4/5] drm/i915/bios: Extract vbt_signature[] Ville Syrjala
@ 2024-09-10 13:42 ` Ville Syrjala
2024-09-12 12:44 ` Jani Nikula
2024-09-10 17:29 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Refactor ROM access Patchwork
` (3 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjala @ 2024-09-10 13:42 UTC (permalink / raw)
To: intel-gfx; +Cc: intel-xe
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
Abstract away the nuts and bolts of the SPI vs. PCI ROM
stuff, and hide it all in soc/intel_rom.c so that the
VBT code doesn't have to care about this stuff.
This leaves intel_bios.c with a single codepath that
can focus on the details related to the VBT layout.
This should have no functional changes.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/Makefile | 3 +-
drivers/gpu/drm/i915/display/intel_bios.c | 150 ++++------------
drivers/gpu/drm/i915/soc/intel_rom.c | 160 ++++++++++++++++++
drivers/gpu/drm/i915/soc/intel_rom.h | 25 +++
drivers/gpu/drm/xe/Makefile | 3 +-
| 6 +
6 files changed, 224 insertions(+), 123 deletions(-)
create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.c
create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.h
create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index c63fa2133ccb..d14c8870aecb 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -51,7 +51,8 @@ i915-y += \
i915-y += \
soc/intel_dram.o \
soc/intel_gmch.o \
- soc/intel_pch.o
+ soc/intel_pch.o \
+ soc/intel_rom.o
# core library code
i915-y += \
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 0b92b494117f..37d4b4ddfa95 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -33,12 +33,12 @@
#include <drm/drm_edid.h>
#include <drm/drm_fixed.h>
+#include "soc/intel_rom.h"
+
#include "i915_drv.h"
-#include "i915_reg.h"
#include "intel_display.h"
#include "intel_display_types.h"
#include "intel_gmbus.h"
-#include "intel_uncore.h"
#define _INTEL_BIOS_PRIVATE
#include "intel_vbt_defs.h"
@@ -3055,150 +3055,58 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
return vbt;
}
-static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
+static struct vbt_header *oprom_get_vbt(struct intel_display *display,
+ struct intel_rom *rom,
+ size_t *size, const char *type)
{
- intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
+ struct vbt_header *vbt;
+ size_t vbt_size;
+ loff_t offset;
- return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
-}
-
-static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
-{
- return intel_spi_read32(uncore, offset) & 0xffff;
-}
-
-static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
- size_t *size)
-{
- struct drm_i915_private *i915 = to_i915(display->drm);
- u32 count, data, found, store = 0;
- u32 static_region, oprom_offset;
- u32 oprom_size = 0x200000;
- u16 vbt_size;
- u32 *vbt;
-
- static_region = intel_uncore_read(&i915->uncore, SPI_STATIC_REGIONS);
- static_region &= OPTIONROM_SPI_REGIONID_MASK;
- intel_uncore_write(&i915->uncore, PRIMARY_SPI_REGIONID, static_region);
-
- oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
- oprom_offset &= OROM_OFFSET_MASK;
+ if (!rom)
+ return NULL;
BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
- for (count = 0; count < oprom_size; count += 4) {
- data = intel_spi_read32(&i915->uncore, oprom_offset + count);
- if (data == *((const u32 *)vbt_signature)) {
- found = oprom_offset + count;
- break;
- }
- }
+ offset = intel_rom_find(rom, *(const u32 *)vbt_signature);
+ if (offset < 0)
+ goto err_free_rom;
- if (count >= oprom_size)
- goto err_not_found;
-
- if (sizeof(struct vbt_header) > oprom_size - count) {
+ if (sizeof(struct vbt_header) > intel_rom_size(rom) - offset) {
drm_dbg(display->drm, "VBT header incomplete\n");
- goto err_not_found;
+ goto err_free_rom;
}
- /* Get VBT size and allocate space for the VBT */
- vbt_size = intel_spi_read16(&i915->uncore,
- found + offsetof(struct vbt_header, vbt_size));
+ BUILD_BUG_ON(sizeof(vbt->vbt_size) != sizeof(u16));
- if (vbt_size > oprom_size - count) {
- drm_dbg(display->drm,
- "VBT incomplete (vbt_size overflows)\n");
- goto err_not_found;
+ vbt_size = intel_rom_read16(rom, offset + offsetof(struct vbt_header, vbt_size));
+ if (vbt_size > intel_rom_size(rom) - offset) {
+ drm_dbg(display->drm, "VBT incomplete (vbt_size overflows)\n");
+ goto err_free_rom;
}
vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
if (!vbt)
- goto err_not_found;
+ goto err_free_rom;
- for (count = 0; count < vbt_size; count += 4)
- *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
+ intel_rom_read_block(rom, vbt, offset, vbt_size);
if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
goto err_free_vbt;
- drm_dbg_kms(display->drm, "Found valid VBT in SPI flash\n");
+ drm_dbg_kms(display->drm, "Found valid VBT in %s\n", type);
if (size)
*size = vbt_size;
+ intel_rom_free(rom);
+
return (struct vbt_header *)vbt;
err_free_vbt:
kfree(vbt);
-err_not_found:
- return NULL;
-}
-
-static struct vbt_header *oprom_get_vbt(struct intel_display *display,
- size_t *sizep)
-{
- struct pci_dev *pdev = to_pci_dev(display->drm->dev);
- void __iomem *p = NULL, *oprom;
- struct vbt_header *vbt;
- u16 vbt_size;
- size_t i, size;
-
- oprom = pci_map_rom(pdev, &size);
- if (!oprom)
- return NULL;
-
- BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
-
- /* Scour memory looking for the VBT signature. */
- for (i = 0; i + 4 < size; i += 4) {
- if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
- continue;
-
- p = oprom + i;
- size -= i;
- break;
- }
-
- if (!p)
- goto err_unmap_oprom;
-
- if (sizeof(struct vbt_header) > size) {
- drm_dbg(display->drm, "VBT header incomplete\n");
- goto err_unmap_oprom;
- }
-
- vbt_size = ioread16(p + offsetof(struct vbt_header, vbt_size));
- if (vbt_size > size) {
- drm_dbg(display->drm,
- "VBT incomplete (vbt_size overflows)\n");
- goto err_unmap_oprom;
- }
-
- /* The rest will be validated by intel_bios_is_valid_vbt() */
- vbt = kmalloc(round_up(vbt_size, 4), GFP_KERNEL);
- if (!vbt)
- goto err_unmap_oprom;
-
- memcpy_fromio(vbt, p, vbt_size);
-
- if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
- goto err_free_vbt;
-
- pci_unmap_rom(pdev, oprom);
-
- if (sizep)
- *sizep = vbt_size;
-
- drm_dbg_kms(display->drm, "Found valid VBT in PCI ROM\n");
-
- return vbt;
-
-err_free_vbt:
- kfree(vbt);
-err_unmap_oprom:
- pci_unmap_rom(pdev, oprom);
-
+err_free_rom:
+ intel_rom_free(rom);
return NULL;
}
@@ -3220,11 +3128,11 @@ static const struct vbt_header *intel_bios_get_vbt(struct intel_display *display
*/
if (!vbt && IS_DGFX(i915))
with_intel_runtime_pm(&i915->runtime_pm, wakeref)
- vbt = spi_oprom_get_vbt(display, sizep);
+ vbt = oprom_get_vbt(display, intel_rom_spi(i915), sizep, "SPI flash");
if (!vbt)
with_intel_runtime_pm(&i915->runtime_pm, wakeref)
- vbt = oprom_get_vbt(display, sizep);
+ vbt = oprom_get_vbt(display, intel_rom_pci(i915), sizep, "PCI ROM");
return vbt;
}
diff --git a/drivers/gpu/drm/i915/soc/intel_rom.c b/drivers/gpu/drm/i915/soc/intel_rom.c
new file mode 100644
index 000000000000..243d98cab8c3
--- /dev/null
+++ b/drivers/gpu/drm/i915/soc/intel_rom.c
@@ -0,0 +1,160 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include "i915_drv.h"
+#include "i915_reg.h"
+
+#include "intel_rom.h"
+#include "intel_uncore.h"
+
+struct intel_rom {
+ /* for PCI ROM */
+ struct pci_dev *pdev;
+ void __iomem *oprom;
+
+ /* for SPI */
+ struct intel_uncore *uncore;
+ loff_t offset;
+
+ size_t size;
+
+ u32 (*read32)(struct intel_rom *rom, loff_t offset);
+ u16 (*read16)(struct intel_rom *rom, loff_t offset);
+ void (*read_block)(struct intel_rom *rom, void *data, loff_t offset, size_t size);
+ void (*free)(struct intel_rom *rom);
+};
+
+static u32 spi_read32(struct intel_rom *rom, loff_t offset)
+{
+ intel_uncore_write(rom->uncore, PRIMARY_SPI_ADDRESS,
+ rom->offset + offset);
+
+ return intel_uncore_read(rom->uncore, PRIMARY_SPI_TRIGGER);
+}
+
+static u16 spi_read16(struct intel_rom *rom, loff_t offset)
+{
+ return spi_read32(rom, offset) & 0xffff;
+}
+
+struct intel_rom *intel_rom_spi(struct drm_i915_private *i915)
+{
+ struct intel_rom *rom;
+ u32 static_region;
+
+ rom = kzalloc(sizeof(*rom), GFP_KERNEL);
+ if (!rom)
+ return NULL;
+
+ rom->uncore = &i915->uncore;
+
+ static_region = intel_uncore_read(rom->uncore, SPI_STATIC_REGIONS);
+ static_region &= OPTIONROM_SPI_REGIONID_MASK;
+ intel_uncore_write(rom->uncore, PRIMARY_SPI_REGIONID, static_region);
+
+ rom->offset = intel_uncore_read(rom->uncore, OROM_OFFSET) & OROM_OFFSET_MASK;
+
+ rom->size = 0x200000;
+
+ rom->read32 = spi_read32;
+ rom->read16 = spi_read16;
+
+ return rom;
+}
+
+static u32 pci_read32(struct intel_rom *rom, loff_t offset)
+{
+ return ioread32(rom->oprom + offset);
+}
+
+static u16 pci_read16(struct intel_rom *rom, loff_t offset)
+{
+ return ioread16(rom->oprom + offset);
+}
+
+static void pci_read_block(struct intel_rom *rom, void *data,
+ loff_t offset, size_t size)
+{
+ memcpy_fromio(data, rom->oprom + offset, size);
+}
+
+static void pci_free(struct intel_rom *rom)
+{
+ pci_unmap_rom(rom->pdev, rom->oprom);
+}
+
+struct intel_rom *intel_rom_pci(struct drm_i915_private *i915)
+{
+ struct intel_rom *rom;
+
+ rom = kzalloc(sizeof(*rom), GFP_KERNEL);
+ if (!rom)
+ return NULL;
+
+ rom->pdev = to_pci_dev(i915->drm.dev);
+
+ rom->oprom = pci_map_rom(rom->pdev, &rom->size);
+ if (!rom->oprom) {
+ kfree(rom);
+ return NULL;
+ }
+
+ rom->read32 = pci_read32;
+ rom->read16 = pci_read16;
+ rom->read_block = pci_read_block;
+ rom->free = pci_free;
+
+ return rom;
+}
+
+u32 intel_rom_read32(struct intel_rom *rom, loff_t offset)
+{
+ return rom->read32(rom, offset);
+}
+
+u16 intel_rom_read16(struct intel_rom *rom, loff_t offset)
+{
+ return rom->read16(rom, offset);
+}
+
+void intel_rom_read_block(struct intel_rom *rom, void *data,
+ loff_t offset, size_t size)
+{
+ u32 *ptr = data;
+ loff_t index;
+
+ if (rom->read_block) {
+ rom->read_block(rom, data, offset, size);
+ return;
+ }
+
+ for (index = 0; index < size; index += 4)
+ *ptr++ = rom->read32(rom, offset + index);
+}
+
+loff_t intel_rom_find(struct intel_rom *rom, u32 needle)
+{
+ loff_t offset;
+
+ for (offset = 0; offset < rom->size; offset += 4) {
+ if (rom->read32(rom, offset) == needle)
+ return offset;
+ }
+
+ return -ENOENT;
+}
+
+size_t intel_rom_size(struct intel_rom *rom)
+{
+ return rom->size;
+}
+
+void intel_rom_free(struct intel_rom *rom)
+{
+ if (rom && rom->free)
+ rom->free(rom);
+
+ kfree(rom);
+}
diff --git a/drivers/gpu/drm/i915/soc/intel_rom.h b/drivers/gpu/drm/i915/soc/intel_rom.h
new file mode 100644
index 000000000000..fb2979c8ef7f
--- /dev/null
+++ b/drivers/gpu/drm/i915/soc/intel_rom.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef __INTEL_ROM_H__
+#define __INTEL_ROM_H__
+
+#include <linux/types.h>
+
+struct drm_i915_private;
+struct intel_rom;
+
+struct intel_rom *intel_rom_spi(struct drm_i915_private *i915);
+struct intel_rom *intel_rom_pci(struct drm_i915_private *i915);
+
+u32 intel_rom_read32(struct intel_rom *rom, loff_t offset);
+u16 intel_rom_read16(struct intel_rom *rom, loff_t offset);
+void intel_rom_read_block(struct intel_rom *rom, void *data,
+ loff_t offset, size_t size);
+loff_t intel_rom_find(struct intel_rom *rom, u32 needle);
+size_t intel_rom_size(struct intel_rom *rom);
+void intel_rom_free(struct intel_rom *rom);
+
+#endif /* __INTEL_ROM_H__ */
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index edfd812e0f41..dd1c0666e6bd 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -180,7 +180,8 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
# SOC code shared with i915
xe-$(CONFIG_DRM_XE_DISPLAY) += \
i915-soc/intel_dram.o \
- i915-soc/intel_pch.o
+ i915-soc/intel_pch.o \
+ i915-soc/intel_rom.o
# Display code shared with i915
xe-$(CONFIG_DRM_XE_DISPLAY) += \
--git a/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
new file mode 100644
index 000000000000..05cbfb697b2b
--- /dev/null
+++ b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
@@ -0,0 +1,6 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include "../../../i915/soc/intel_rom.h"
--
2.44.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Refactor ROM access
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (4 preceding siblings ...)
2024-09-10 13:42 ` [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c Ville Syrjala
@ 2024-09-10 17:29 ` Patchwork
2024-09-10 17:29 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-09-10 17:29 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/bios: Refactor ROM access
URL : https://patchwork.freedesktop.org/series/138477/
State : warning
== Summary ==
Error: dim checkpatch failed
bb062a0a0f9d drm/i915/bios: Add some size checks to SPI VBT read
c5324d24888e drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4
ce1343a6bbda drm/i915/bios: Extract intel_spi_read16()
f7a27e3cc319 drm/i915/bios: Extract vbt_signature[]
afb82d4fd4a3 drm/i915/bios: Extract soc/intel_rom.c
-:244: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#244:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 411 lines checked
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ Fi.CI.SPARSE: warning for drm/i915/bios: Refactor ROM access
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (5 preceding siblings ...)
2024-09-10 17:29 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Refactor ROM access Patchwork
@ 2024-09-10 17:29 ` Patchwork
2024-09-10 17:46 ` ✓ Fi.CI.BAT: success " Patchwork
2024-09-11 9:10 ` ✗ Fi.CI.IGT: failure " Patchwork
8 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-09-10 17:29 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
== Series Details ==
Series: drm/i915/bios: Refactor ROM access
URL : https://patchwork.freedesktop.org/series/138477/
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:116:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:147:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:149:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:153:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:155:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:173:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:175:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:179:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:181:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:185:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:187:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:191:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:194:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:236:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:238:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:243:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:245: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:137:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:139:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'break'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'continue'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140:23: warning: unreplaced symbol '___p1'
+./include/asm-generic/bitops/generic-non-atomic.h:140: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:151:1: warning: too many warnings
+./include/asm-generic/bitops/instrumented-non-atomic.h:154: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] 23+ messages in thread
* ✓ Fi.CI.BAT: success for drm/i915/bios: Refactor ROM access
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (6 preceding siblings ...)
2024-09-10 17:29 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-09-10 17:46 ` Patchwork
2024-09-11 9:10 ` ✗ Fi.CI.IGT: failure " Patchwork
8 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-09-10 17:46 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 13373 bytes --]
== Series Details ==
Series: drm/i915/bios: Refactor ROM access
URL : https://patchwork.freedesktop.org/series/138477/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_15389 -> Patchwork_138477v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/index.html
Participating hosts (40 -> 39)
------------------------------
Additional (2): fi-cfl-8109u bat-arls-1
Missing (3): bat-dg2-11 fi-snb-2520m fi-bsw-n3050
Known issues
------------
Here are the changes found in Patchwork_138477v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@debugfs_test@basic-hwmon:
- bat-arls-1: NOTRUN -> [SKIP][1] ([i915#9318])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@debugfs_test@basic-hwmon.html
* igt@fbdev@read:
- bat-arls-1: NOTRUN -> [DMESG-FAIL][2] ([i915#12102])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@fbdev@read.html
* igt@gem_huc_copy@huc-copy:
- fi-cfl-8109u: NOTRUN -> [SKIP][3] ([i915#2190])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/fi-cfl-8109u/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- bat-arls-1: NOTRUN -> [SKIP][4] ([i915#10213]) +3 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@verify-random:
- fi-cfl-8109u: NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/fi-cfl-8109u/igt@gem_lmem_swapping@verify-random.html
* igt@gem_mmap@basic:
- bat-arls-1: NOTRUN -> [SKIP][6] ([i915#11343] / [i915#4083])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@gem_mmap@basic.html
* igt@gem_render_tiled_blits@basic:
- bat-arls-1: NOTRUN -> [SKIP][7] ([i915#10197] / [i915#10211] / [i915#4079])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@gem_render_tiled_blits@basic.html
* igt@gem_tiled_blits@basic:
- bat-arls-1: NOTRUN -> [SKIP][8] ([i915#10196] / [i915#4077]) +2 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@gem_tiled_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-arls-1: NOTRUN -> [SKIP][9] ([i915#10206] / [i915#4079])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@gem_tiled_pread_basic.html
* igt@i915_module_load@reload:
- bat-apl-1: [PASS][10] -> [DMESG-WARN][11] ([i915#180] / [i915#1982]) +3 other tests dmesg-warn
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-apl-1/igt@i915_module_load@reload.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-apl-1/igt@i915_module_load@reload.html
* igt@i915_pm_rps@basic-api:
- bat-arls-1: NOTRUN -> [SKIP][12] ([i915#10209] / [i915#11681])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@i915_pm_rps@basic-api.html
* igt@i915_selftest@live:
- bat-arls-1: NOTRUN -> [DMESG-WARN][13] ([i915#10341] / [i915#12133])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@i915_selftest@live.html
* igt@i915_selftest@live@hangcheck:
- bat-arls-1: NOTRUN -> [DMESG-WARN][14] ([i915#11349])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@i915_selftest@live@hangcheck.html
* igt@i915_selftest@live@sanitycheck:
- bat-apl-1: [PASS][15] -> [DMESG-WARN][16] ([i915#11621]) +79 other tests dmesg-warn
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-apl-1/igt@i915_selftest@live@sanitycheck.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-apl-1/igt@i915_selftest@live@sanitycheck.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-arls-1: NOTRUN -> [SKIP][17] ([i915#10200] / [i915#12203])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- bat-arls-1: NOTRUN -> [SKIP][18] ([i915#10200]) +8 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-arls-1: NOTRUN -> [SKIP][19] ([i915#10202] / [i915#11346]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_dsc@dsc-basic:
- fi-cfl-8109u: NOTRUN -> [SKIP][20] +11 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/fi-cfl-8109u/igt@kms_dsc@dsc-basic.html
- bat-arls-1: NOTRUN -> [SKIP][21] ([i915#11346] / [i915#9886])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_dsc@dsc-basic.html
* igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1:
- bat-apl-1: [PASS][22] -> [DMESG-WARN][23] ([i915#11621] / [i915#180] / [i915#1982])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-apl-1/igt@kms_flip@basic-flip-vs-wf_vblank@a-dp1.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-arls-1: NOTRUN -> [SKIP][24] ([i915#10207] / [i915#11346])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_pipe_crc_basic@nonblocking-crc:
- bat-apl-1: [PASS][25] -> [DMESG-WARN][26] ([i915#180]) +10 other tests dmesg-warn
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-apl-1/igt@kms_pipe_crc_basic@nonblocking-crc.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-apl-1/igt@kms_pipe_crc_basic@nonblocking-crc.html
* igt@kms_pm_backlight@basic-brightness:
- bat-arls-1: NOTRUN -> [SKIP][27] ([i915#11346] / [i915#9812])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_rpm@basic-pci-d3-state:
- bat-apl-1: [PASS][28] -> [DMESG-WARN][29] ([i915#11621] / [i915#180]) +33 other tests dmesg-warn
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
* igt@kms_psr@psr-primary-mmap-gtt:
- bat-arls-1: NOTRUN -> [SKIP][30] ([i915#11346] / [i915#9732]) +3 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_psr@psr-primary-mmap-gtt.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-arls-1: NOTRUN -> [SKIP][31] ([i915#10208] / [i915#8809])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-read:
- bat-arls-1: NOTRUN -> [SKIP][32] ([i915#10212] / [i915#3708])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-gtt:
- bat-arls-1: NOTRUN -> [SKIP][33] ([i915#10196] / [i915#3708] / [i915#4077]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@prime_vgem@basic-gtt.html
* igt@prime_vgem@basic-read:
- bat-arls-1: NOTRUN -> [SKIP][34] ([i915#10214] / [i915#3708])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@prime_vgem@basic-read.html
* igt@prime_vgem@basic-write:
- bat-arls-1: NOTRUN -> [SKIP][35] ([i915#10216] / [i915#3708])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-1/igt@prime_vgem@basic-write.html
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-arlh-2: [INCOMPLETE][36] ([i915#10341] / [i915#12133]) -> [PASS][37]
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-arlh-2/igt@i915_selftest@live.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arlh-2/igt@i915_selftest@live.html
- bat-arls-2: [DMESG-WARN][38] ([i915#10341] / [i915#12133]) -> [PASS][39]
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-arls-2/igt@i915_selftest@live.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-2/igt@i915_selftest@live.html
* igt@i915_selftest@live@guc:
- bat-arlh-2: [INCOMPLETE][40] -> [PASS][41]
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-arlh-2/igt@i915_selftest@live@guc.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arlh-2/igt@i915_selftest@live@guc.html
* igt@i915_selftest@live@hangcheck:
- bat-arls-2: [DMESG-WARN][42] ([i915#11349]) -> [PASS][43]
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-arls-2/igt@i915_selftest@live@hangcheck.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-arls-2/igt@i915_selftest@live@hangcheck.html
* igt@i915_selftest@live@workarounds:
- bat-mtlp-6: [ABORT][44] ([i915#12061]) -> [PASS][45] +1 other test pass
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
[i915#10196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10196
[i915#10197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10197
[i915#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
[i915#10202]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10202
[i915#10206]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10206
[i915#10207]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10207
[i915#10208]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10208
[i915#10209]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10209
[i915#10211]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10211
[i915#10212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10212
[i915#10213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10213
[i915#10214]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10214
[i915#10216]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10216
[i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
[i915#11343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11343
[i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
[i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
[i915#11621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11621
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12102
[i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
[i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
[i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#9318]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9318
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9886]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9886
Build changes
-------------
* Linux: CI_DRM_15389 -> Patchwork_138477v1
CI-20190529: 20190529
CI_DRM_15389: f25ffe1514b26574258bb767f5c6f53facdfaaca @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8011: 26dca87f1252b7f6f0c0f833050256f0244d61e9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_138477v1: f25ffe1514b26574258bb767f5c6f53facdfaaca @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/index.html
[-- Attachment #2: Type: text/html, Size: 16412 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ Fi.CI.IGT: failure for drm/i915/bios: Refactor ROM access
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
` (7 preceding siblings ...)
2024-09-10 17:46 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-09-11 9:10 ` Patchwork
8 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2024-09-11 9:10 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 81799 bytes --]
== Series Details ==
Series: drm/i915/bios: Refactor ROM access
URL : https://patchwork.freedesktop.org/series/138477/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_15389_full -> Patchwork_138477v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_138477v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_138477v1_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (9 -> 10)
------------------------------
Additional (1): shard-snb-0
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_138477v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_mmap_offset@clear@smem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][1] +2 other tests incomplete
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@gem_mmap_offset@clear@smem0.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20:
- shard-rkl: NOTRUN -> [SKIP][2] +1 other test skip
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20.html
New tests
---------
New tests have been introduced between CI_DRM_15389_full and Patchwork_138477v1_full:
### New IGT tests (1) ###
* igt@kms_cursor_crc@cursor-random-256x85@pipe-d-hdmi-a-2:
- Statuses : 1 pass(s)
- Exec time: [4.16] s
Known issues
------------
Here are the changes found in Patchwork_138477v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@blit-reloc-keep-cache:
- shard-dg1: NOTRUN -> [SKIP][3] ([i915#8411]) +1 other test skip
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@api_intel_bb@blit-reloc-keep-cache.html
* igt@device_reset@unbind-cold-reset-rebind:
- shard-dg1: NOTRUN -> [SKIP][4] ([i915#11078])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@device_reset@unbind-cold-reset-rebind.html
* igt@drm_fdinfo@busy-check-all@bcs0:
- shard-dg1: NOTRUN -> [SKIP][5] ([i915#8414]) +18 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@drm_fdinfo@busy-check-all@bcs0.html
* igt@drm_fdinfo@isolation:
- shard-dg2: NOTRUN -> [SKIP][6] ([i915#8414]) +7 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@drm_fdinfo@isolation.html
* igt@drm_fdinfo@most-busy-idle-check-all:
- shard-rkl: [PASS][7] -> [FAIL][8] ([i915#12179])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-rkl-1/igt@drm_fdinfo@most-busy-idle-check-all.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all.html
* igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
- shard-rkl: [PASS][9] -> [FAIL][10] ([i915#7742])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-rkl-1/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
* igt@gem_basic@multigpu-create-close:
- shard-dg1: NOTRUN -> [SKIP][11] ([i915#7697])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@gem_basic@multigpu-create-close.html
* igt@gem_ccs@block-multicopy-compressed:
- shard-dg1: NOTRUN -> [SKIP][12] ([i915#9323])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_ccs@block-multicopy-compressed.html
* igt@gem_ctx_persistence@heartbeat-close:
- shard-mtlp: NOTRUN -> [SKIP][13] ([i915#8555])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@gem_ctx_persistence@heartbeat-close.html
* igt@gem_ctx_persistence@heartbeat-many:
- shard-dg1: NOTRUN -> [SKIP][14] ([i915#8555])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_ctx_persistence@heartbeat-many.html
* igt@gem_ctx_persistence@hostile:
- shard-rkl: NOTRUN -> [FAIL][15] ([i915#11980])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@gem_ctx_persistence@hostile.html
* igt@gem_ctx_sseu@engines:
- shard-dg2: NOTRUN -> [SKIP][16] ([i915#280])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@gem_ctx_sseu@engines.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-dg1: NOTRUN -> [SKIP][17] ([i915#280]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_eio@unwedge-stress:
- shard-dg1: NOTRUN -> [FAIL][18] ([i915#5784])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_balancer@bonded-dual:
- shard-dg2: NOTRUN -> [SKIP][19] ([i915#4771])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_exec_balancer@bonded-dual.html
* igt@gem_exec_balancer@bonded-pair:
- shard-dg1: NOTRUN -> [SKIP][20] ([i915#4771])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_exec_balancer@bonded-pair.html
* igt@gem_exec_balancer@bonded-semaphore:
- shard-dg1: NOTRUN -> [SKIP][21] ([i915#4812]) +5 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_exec_balancer@bonded-semaphore.html
* igt@gem_exec_balancer@invalid-bonds:
- shard-dg1: NOTRUN -> [SKIP][22] ([i915#4036])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_exec_balancer@invalid-bonds.html
* igt@gem_exec_balancer@noheartbeat:
- shard-dg2: NOTRUN -> [SKIP][23] ([i915#8555])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_exec_balancer@noheartbeat.html
* igt@gem_exec_balancer@parallel:
- shard-rkl: NOTRUN -> [SKIP][24] ([i915#4525]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@gem_exec_balancer@parallel.html
* igt@gem_exec_capture@capture-invisible:
- shard-dg1: NOTRUN -> [SKIP][25] ([i915#6334]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_exec_capture@capture-invisible.html
* igt@gem_exec_fair@basic-none:
- shard-dg1: NOTRUN -> [SKIP][26] ([i915#3539] / [i915#4852]) +7 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_exec_fair@basic-none.html
* igt@gem_exec_fair@basic-none-rrul@rcs0:
- shard-glk: NOTRUN -> [FAIL][27] ([i915#2842]) +1 other test fail
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk7/igt@gem_exec_fair@basic-none-rrul@rcs0.html
* igt@gem_exec_fair@basic-none-share:
- shard-dg2: NOTRUN -> [SKIP][28] ([i915#3539] / [i915#4852])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_exec_fair@basic-none-share.html
* igt@gem_exec_fair@basic-pace-share:
- shard-tglu: [PASS][29] -> [FAIL][30] ([i915#2842]) +1 other test fail
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-9/igt@gem_exec_fair@basic-pace-share.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-7/igt@gem_exec_fair@basic-pace-share.html
* igt@gem_exec_fair@basic-sync:
- shard-dg1: NOTRUN -> [SKIP][31] ([i915#3539])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_exec_fair@basic-sync.html
* igt@gem_exec_reloc@basic-gtt-read-active:
- shard-dg2: NOTRUN -> [SKIP][32] ([i915#3281]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@gem_exec_reloc@basic-gtt-read-active.html
* igt@gem_exec_reloc@basic-wc-read:
- shard-dg1: NOTRUN -> [SKIP][33] ([i915#3281]) +20 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_exec_reloc@basic-wc-read.html
* igt@gem_exec_reloc@basic-wc-read-noreloc:
- shard-rkl: NOTRUN -> [SKIP][34] ([i915#3281]) +9 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@gem_exec_reloc@basic-wc-read-noreloc.html
* igt@gem_exec_reloc@basic-write-gtt:
- shard-mtlp: NOTRUN -> [SKIP][35] ([i915#3281])
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@gem_exec_reloc@basic-write-gtt.html
* igt@gem_exec_schedule@semaphore-power:
- shard-dg2: NOTRUN -> [SKIP][36] ([i915#4537] / [i915#4812]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_exec_schedule@semaphore-power.html
* igt@gem_fence_thrash@bo-write-verify-y:
- shard-dg2: NOTRUN -> [SKIP][37] ([i915#4860]) +2 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gem_fence_thrash@bo-write-verify-y.html
* igt@gem_fenced_exec_thrash@no-spare-fences-busy:
- shard-dg1: NOTRUN -> [SKIP][38] ([i915#4860]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html
* igt@gem_lmem_swapping@basic:
- shard-rkl: NOTRUN -> [SKIP][39] ([i915#4613]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@random-engines:
- shard-glk: NOTRUN -> [SKIP][40] ([i915#4613]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk3/igt@gem_lmem_swapping@random-engines.html
* igt@gem_lmem_swapping@smem-oom:
- shard-dg1: NOTRUN -> [DMESG-WARN][41] ([i915#1982] / [i915#5493])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_lmem_swapping@smem-oom.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg2: [PASS][42] -> [TIMEOUT][43] ([i915#5493]) +1 other test timeout
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-1/igt@gem_lmem_swapping@smem-oom@lmem0.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-1/igt@gem_lmem_swapping@smem-oom@lmem0.html
- shard-dg1: NOTRUN -> [DMESG-WARN][44] ([i915#1982] / [i915#4936] / [i915#5493])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_media_vme:
- shard-mtlp: NOTRUN -> [SKIP][45] ([i915#284])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@gem_media_vme.html
* igt@gem_mmap@pf-nonblock:
- shard-dg2: NOTRUN -> [SKIP][46] ([i915#4083]) +1 other test skip
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gem_mmap@pf-nonblock.html
* igt@gem_mmap_gtt@medium-copy-xy:
- shard-dg2: NOTRUN -> [SKIP][47] ([i915#4077]) +6 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_mmap_gtt@medium-copy-xy.html
* igt@gem_mmap_wc@write-read:
- shard-dg1: NOTRUN -> [SKIP][48] ([i915#4083]) +9 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_mmap_wc@write-read.html
* igt@gem_partial_pwrite_pread@reads-snoop:
- shard-mtlp: NOTRUN -> [SKIP][49] ([i915#3282])
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@gem_partial_pwrite_pread@reads-snoop.html
* igt@gem_partial_pwrite_pread@write:
- shard-dg2: NOTRUN -> [SKIP][50] ([i915#3282])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gem_partial_pwrite_pread@write.html
* igt@gem_partial_pwrite_pread@writes-after-reads-display:
- shard-rkl: NOTRUN -> [SKIP][51] ([i915#3282]) +3 other tests skip
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@gem_partial_pwrite_pread@writes-after-reads-display.html
* igt@gem_pwrite@basic-exhaustion:
- shard-dg1: NOTRUN -> [SKIP][52] ([i915#3282]) +5 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pxp@create-regular-context-2:
- shard-dg2: NOTRUN -> [SKIP][53] ([i915#4270]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@gem_pxp@create-regular-context-2.html
* igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
- shard-dg1: NOTRUN -> [SKIP][54] ([i915#4270]) +6 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html
* igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#4270])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html
* igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][56] ([i915#5190] / [i915#8428]) +2 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-dg2: NOTRUN -> [SKIP][57] ([i915#4079])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_set_tiling_vs_blt@untiled-to-tiled:
- shard-rkl: NOTRUN -> [SKIP][58] ([i915#8411])
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@gem_set_tiling_vs_blt@untiled-to-tiled.html
* igt@gem_softpin@evict-snoop:
- shard-dg1: NOTRUN -> [SKIP][59] ([i915#4885])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_softpin@evict-snoop.html
* igt@gem_tiled_partial_pwrite_pread@writes-after-reads:
- shard-dg1: NOTRUN -> [SKIP][60] ([i915#4077]) +22 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html
* igt@gem_tiled_pread_pwrite:
- shard-dg1: NOTRUN -> [SKIP][61] ([i915#4079]) +1 other test skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_tiled_pread_pwrite.html
* igt@gem_userptr_blits@invalid-mmap-offset-unsync:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#3297])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg1: NOTRUN -> [SKIP][63] ([i915#3297] / [i915#4880])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@relocations:
- shard-rkl: NOTRUN -> [SKIP][64] ([i915#3281] / [i915#3297])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@gem_userptr_blits@relocations.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg1: NOTRUN -> [SKIP][65] ([i915#3297] / [i915#4958])
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@gem_userptr_blits@sd-probe.html
* igt@gem_userptr_blits@unsync-unmap:
- shard-dg1: NOTRUN -> [SKIP][66] ([i915#3297]) +2 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gem_userptr_blits@unsync-unmap.html
* igt@gem_userptr_blits@unsync-unmap-cycles:
- shard-rkl: NOTRUN -> [SKIP][67] ([i915#3297]) +2 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@gem_userptr_blits@unsync-unmap-cycles.html
* igt@gen7_exec_parse@chained-batch:
- shard-rkl: NOTRUN -> [SKIP][68] +21 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@gen7_exec_parse@chained-batch.html
* igt@gen9_exec_parse@basic-rejected:
- shard-dg2: NOTRUN -> [SKIP][69] ([i915#2856])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@gen9_exec_parse@basic-rejected.html
* igt@gen9_exec_parse@bb-start-out:
- shard-dg1: NOTRUN -> [SKIP][70] ([i915#2527]) +5 other tests skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@gen9_exec_parse@bb-start-out.html
* igt@gen9_exec_parse@valid-registers:
- shard-rkl: NOTRUN -> [SKIP][71] ([i915#2527]) +1 other test skip
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@gen9_exec_parse@valid-registers.html
* igt@i915_module_load@load:
- shard-dg1: NOTRUN -> [SKIP][72] ([i915#6227])
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@i915_module_load@load.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-dg2: [PASS][73] -> [ABORT][74] ([i915#9820])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-8/igt@i915_module_load@reload-with-fault-injection.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_freq_api@freq-reset-multiple:
- shard-rkl: NOTRUN -> [SKIP][75] ([i915#8399])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@i915_pm_freq_api@freq-reset-multiple.html
* igt@i915_pm_rps@min-max-config-loaded:
- shard-dg1: NOTRUN -> [SKIP][76] ([i915#11681] / [i915#6621])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@i915_pm_rps@min-max-config-loaded.html
* igt@i915_pm_rps@thresholds-idle-park:
- shard-dg2: NOTRUN -> [SKIP][77] ([i915#11681])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@i915_pm_rps@thresholds-idle-park.html
* igt@i915_pm_sseu@full-enable:
- shard-dg1: NOTRUN -> [SKIP][78] ([i915#4387])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@i915_pm_sseu@full-enable.html
* igt@i915_query@test-query-geometry-subslices:
- shard-dg1: NOTRUN -> [SKIP][79] ([i915#5723])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@i915_query@test-query-geometry-subslices.html
* igt@i915_selftest@live@workarounds:
- shard-mtlp: [PASS][80] -> [ABORT][81] ([i915#12061]) +1 other test abort
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-mtlp-1/igt@i915_selftest@live@workarounds.html
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-6/igt@i915_selftest@live@workarounds.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- shard-dg1: NOTRUN -> [SKIP][82] ([i915#4215])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_addfb_basic@tile-pitch-mismatch:
- shard-dg1: NOTRUN -> [SKIP][83] ([i915#4212]) +1 other test skip
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_addfb_basic@tile-pitch-mismatch.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs:
- shard-dg1: NOTRUN -> [SKIP][84] ([i915#8709]) +7 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-18/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-4-y-rc-ccs.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc:
- shard-dg2: NOTRUN -> [SKIP][85] ([i915#8709]) +11 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-c-dp-4-4-rc-ccs-cc.html
* igt@kms_atomic@plane-primary-overlay-mutable-zpos:
- shard-dg1: NOTRUN -> [SKIP][86] ([i915#9531])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-dg1: NOTRUN -> [SKIP][87] ([i915#1769] / [i915#3555])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-0:
- shard-rkl: NOTRUN -> [SKIP][88] ([i915#5286]) +4 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_big_fb@4-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@4-tiled-addfb:
- shard-dg1: NOTRUN -> [SKIP][89] ([i915#5286]) +2 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_big_fb@4-tiled-addfb.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-dg1: NOTRUN -> [SKIP][90] ([i915#4538] / [i915#5286]) +4 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@x-tiled-64bpp-rotate-270:
- shard-rkl: NOTRUN -> [SKIP][91] ([i915#3638]) +1 other test skip
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-0:
- shard-mtlp: NOTRUN -> [SKIP][92] +1 other test skip
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][93] ([i915#4538] / [i915#5190]) +4 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@kms_big_fb@y-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-8bpp-rotate-270:
- shard-dg1: NOTRUN -> [SKIP][94] ([i915#3638]) +2 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_big_fb@y-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-dg2: NOTRUN -> [SKIP][95] ([i915#5190])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-dg1: NOTRUN -> [SKIP][96] ([i915#4538]) +9 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_joiner@basic-force-joiner:
- shard-rkl: NOTRUN -> [SKIP][97] ([i915#10656])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_big_joiner@basic-force-joiner.html
* igt@kms_big_joiner@invalid-modeset:
- shard-dg1: NOTRUN -> [SKIP][98] ([i915#10656])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@kms_big_joiner@invalid-modeset.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][99] ([i915#10307] / [i915#10434] / [i915#6095]) +4 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][100] ([i915#6095]) +148 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][101] ([i915#6095]) +60 other tests skip
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-b-hdmi-a-2.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-b-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][102] ([i915#10307] / [i915#6095]) +142 other tests skip
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-dg2: NOTRUN -> [SKIP][103] ([i915#12042])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
- shard-dg1: NOTRUN -> [SKIP][104] ([i915#12042]) +4 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-rkl: NOTRUN -> [SKIP][105] ([i915#3742])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_chamelium_frames@hdmi-crc-fast:
- shard-dg2: NOTRUN -> [SKIP][106] ([i915#7828]) +3 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_chamelium_frames@hdmi-crc-fast.html
* igt@kms_chamelium_hpd@dp-hpd-fast:
- shard-mtlp: NOTRUN -> [SKIP][107] ([i915#7828])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_chamelium_hpd@dp-hpd-fast.html
* igt@kms_chamelium_hpd@hdmi-hpd-fast:
- shard-rkl: NOTRUN -> [SKIP][108] ([i915#7828]) +5 other tests skip
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_chamelium_hpd@hdmi-hpd-fast.html
* igt@kms_chamelium_hpd@hdmi-hpd-storm-disable:
- shard-dg1: NOTRUN -> [SKIP][109] ([i915#7828]) +12 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_chamelium_hpd@hdmi-hpd-storm-disable.html
* igt@kms_content_protection@atomic:
- shard-dg1: NOTRUN -> [SKIP][110] ([i915#7116] / [i915#9424]) +1 other test skip
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@content-type-change:
- shard-dg2: NOTRUN -> [SKIP][111] ([i915#9424])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-rkl: NOTRUN -> [SKIP][112] ([i915#3116])
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-dg1: NOTRUN -> [SKIP][113] ([i915#3299])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@dp-mst-type-0:
- shard-dg2: NOTRUN -> [SKIP][114] ([i915#3299])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_content_protection@dp-mst-type-0.html
* igt@kms_content_protection@legacy:
- shard-rkl: NOTRUN -> [SKIP][115] ([i915#7118] / [i915#9424])
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@lic-type-0:
- shard-dg1: NOTRUN -> [SKIP][116] ([i915#9424])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_content_protection@lic-type-0.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-dg1: NOTRUN -> [SKIP][117] ([i915#11453]) +1 other test skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2: NOTRUN -> [SKIP][118] ([i915#11453] / [i915#3359])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-rkl: NOTRUN -> [SKIP][119] ([i915#11453]) +2 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-dg2: NOTRUN -> [SKIP][120] ([i915#3555])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-mtlp: NOTRUN -> [SKIP][121] ([i915#3555] / [i915#8814])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-5/igt@kms_cursor_crc@cursor-sliding-max-size.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-rkl: NOTRUN -> [SKIP][122] ([i915#4103])
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
- shard-mtlp: NOTRUN -> [SKIP][123] ([i915#9809])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
- shard-glk: [PASS][124] -> [FAIL][125] ([i915#2346])
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
- shard-dg2: NOTRUN -> [SKIP][126] ([i915#4103] / [i915#4213])
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html
* igt@kms_cursor_legacy@torture-move:
- shard-dg1: [PASS][127] -> [DMESG-WARN][128] ([i915#10166]) +1 other test dmesg-warn
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg1-15/igt@kms_cursor_legacy@torture-move.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_cursor_legacy@torture-move.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-dg1: NOTRUN -> [SKIP][129] ([i915#9723]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_display_modes@mst-extended-mode-negative:
- shard-rkl: NOTRUN -> [SKIP][130] ([i915#8588])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_display_modes@mst-extended-mode-negative.html
* igt@kms_draw_crc@draw-method-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][131] ([i915#8812])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_draw_crc@draw-method-mmap-wc.html
* igt@kms_dsc@dsc-fractional-bpp-with-bpc:
- shard-dg1: NOTRUN -> [SKIP][132] ([i915#3840])
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html
* igt@kms_dsc@dsc-with-bpc-formats:
- shard-dg1: NOTRUN -> [SKIP][133] ([i915#3555] / [i915#3840]) +2 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_dsc@dsc-with-bpc-formats.html
* igt@kms_fbcon_fbt@psr:
- shard-dg1: NOTRUN -> [SKIP][134] ([i915#3469])
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@chamelium:
- shard-dg2: NOTRUN -> [SKIP][135] ([i915#4854])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@display-2x:
- shard-dg1: NOTRUN -> [SKIP][136] ([i915#1839])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_feature_discovery@display-2x.html
* igt@kms_feature_discovery@display-4x:
- shard-rkl: NOTRUN -> [SKIP][137] ([i915#1839])
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@dp-mst:
- shard-dg2: NOTRUN -> [SKIP][138] ([i915#9337])
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_feature_discovery@dp-mst.html
* igt@kms_fence_pin_leak:
- shard-dg1: NOTRUN -> [SKIP][139] ([i915#4881]) +1 other test skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_fence_pin_leak.html
* igt@kms_flip@2x-absolute-wf_vblank:
- shard-dg2: NOTRUN -> [SKIP][140] +8 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@kms_flip@2x-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-fences-interruptible:
- shard-dg1: NOTRUN -> [SKIP][141] ([i915#8381])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_flip@2x-flip-vs-fences-interruptible.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-dg1: NOTRUN -> [SKIP][142] ([i915#9934]) +10 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@2x-wf_vblank-ts-check:
- shard-mtlp: NOTRUN -> [SKIP][143] ([i915#3637])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_flip@2x-wf_vblank-ts-check.html
* igt@kms_flip@flip-vs-fences:
- shard-dg2: NOTRUN -> [SKIP][144] ([i915#8381]) +1 other test skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_flip@flip-vs-fences.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-snb: [PASS][145] -> [INCOMPLETE][146] ([i915#4839]) +1 other test incomplete
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-snb1/igt@kms_flip@flip-vs-suspend-interruptible.html
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb1/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
- shard-dg2: NOTRUN -> [SKIP][147] ([i915#2672] / [i915#3555])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][148] ([i915#2672]) +3 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
- shard-dg1: NOTRUN -> [SKIP][149] ([i915#2587] / [i915#2672]) +7 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
- shard-rkl: NOTRUN -> [SKIP][150] ([i915#2672] / [i915#3555]) +3 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-dg1: NOTRUN -> [SKIP][151] ([i915#2672] / [i915#3555]) +7 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
- shard-dg2: NOTRUN -> [SKIP][152] ([i915#2672] / [i915#3555] / [i915#5190]) +1 other test skip
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][153] ([i915#2672]) +2 other tests skip
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-dg2: [PASS][154] -> [FAIL][155] ([i915#6880])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-dg1: NOTRUN -> [SKIP][156] +73 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-mtlp: NOTRUN -> [SKIP][157] ([i915#1825]) +1 other test skip
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move:
- shard-rkl: NOTRUN -> [SKIP][158] ([i915#3023]) +15 other tests skip
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
- shard-dg2: NOTRUN -> [SKIP][159] ([i915#5354]) +15 other tests skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
- shard-rkl: NOTRUN -> [SKIP][160] ([i915#1825]) +21 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-snb: NOTRUN -> [SKIP][161] +14 other tests skip
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb4/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu:
- shard-dg2: NOTRUN -> [SKIP][162] ([i915#3458]) +7 other tests skip
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite:
- shard-dg1: NOTRUN -> [SKIP][163] ([i915#3458]) +24 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][164] ([i915#8708]) +6 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][165] ([i915#8708]) +39 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-wc.html
* igt@kms_hdr@invalid-metadata-sizes:
- shard-dg2: NOTRUN -> [SKIP][166] ([i915#3555] / [i915#8228])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_hdr@invalid-metadata-sizes.html
* igt@kms_hdr@static-swap:
- shard-dg1: NOTRUN -> [SKIP][167] ([i915#3555] / [i915#8228]) +2 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_hdr@static-swap.html
* igt@kms_hdr@static-toggle-dpms:
- shard-rkl: NOTRUN -> [SKIP][168] ([i915#3555] / [i915#8228])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_panel_fitting@legacy:
- shard-rkl: NOTRUN -> [SKIP][169] ([i915#6301])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_panel_fitting@legacy.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb:
- shard-glk: NOTRUN -> [FAIL][170] ([i915#12169])
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk5/igt@kms_plane_alpha_blend@alpha-opaque-fb.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][171] ([i915#10647]) +1 other test fail
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk5/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_multiple@tiling-4:
- shard-rkl: NOTRUN -> [SKIP][172] ([i915#3555]) +4 other tests skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_plane_multiple@tiling-4.html
* igt@kms_plane_multiple@tiling-yf:
- shard-dg1: NOTRUN -> [SKIP][173] ([i915#3555]) +8 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_plane_multiple@tiling-yf.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [FAIL][174] ([i915#8292])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][175] ([i915#9423]) +28 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-5/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-3.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][176] ([i915#9423]) +3 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-4/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b-hdmi-a-1.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][177] ([i915#9423]) +26 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-d-hdmi-a-4.html
* igt@kms_plane_scaling@plane-upscale-20x20-with-rotation:
- shard-glk: NOTRUN -> [SKIP][178] +194 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk5/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25:
- shard-rkl: NOTRUN -> [SKIP][179] ([i915#6953])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_plane_scaling@planes-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][180] ([i915#9728]) +7 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-b-hdmi-a-2.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
- shard-dg2: NOTRUN -> [SKIP][181] ([i915#3555] / [i915#9423])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25:
- shard-dg1: NOTRUN -> [SKIP][182] ([i915#6953]) +1 other test skip
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][183] ([i915#9728]) +15 other tests skip
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4.html
* igt@kms_pm_backlight@fade-with-dpms:
- shard-dg1: NOTRUN -> [SKIP][184] ([i915#5354]) +1 other test skip
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_pm_backlight@fade-with-dpms.html
* igt@kms_pm_backlight@fade-with-suspend:
- shard-rkl: NOTRUN -> [SKIP][185] ([i915#5354])
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_pm_backlight@fade-with-suspend.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-rkl: [PASS][186] -> [SKIP][187] ([i915#9340])
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-rkl-4/igt@kms_pm_lpsp@kms-lpsp.html
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-1/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-dg2: NOTRUN -> [SKIP][188] ([i915#8430])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-dg2: [PASS][189] -> [SKIP][190] ([i915#9519]) +3 other tests skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-11/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-dg1: NOTRUN -> [SKIP][191] ([i915#9519])
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_prime@d3hot:
- shard-dg1: NOTRUN -> [SKIP][192] ([i915#6524]) +1 other test skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_prime@d3hot.html
* igt@kms_psr2_sf@cursor-plane-move-continuous-sf:
- shard-dg1: NOTRUN -> [SKIP][193] ([i915#11520]) +5 other tests skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-17/igt@kms_psr2_sf@cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf:
- shard-dg2: NOTRUN -> [SKIP][194] ([i915#11520]) +3 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area:
- shard-rkl: NOTRUN -> [SKIP][195] ([i915#11520]) +3 other tests skip
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_psr2_sf@fbc-primary-plane-update-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-dg1: NOTRUN -> [SKIP][196] ([i915#9683])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@fbc-psr2-cursor-blt@edp-1:
- shard-mtlp: NOTRUN -> [SKIP][197] ([i915#9688]) +3 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_psr@fbc-psr2-cursor-blt@edp-1.html
* igt@kms_psr@fbc-psr2-sprite-render:
- shard-rkl: NOTRUN -> [SKIP][198] ([i915#1072] / [i915#9732]) +14 other tests skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_psr@fbc-psr2-sprite-render.html
* igt@kms_psr@pr-primary-render:
- shard-dg2: NOTRUN -> [SKIP][199] ([i915#1072] / [i915#9732]) +4 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@kms_psr@pr-primary-render.html
* igt@kms_psr@psr2-cursor-blt:
- shard-dg2: NOTRUN -> [SKIP][200] ([i915#1072] / [i915#9673] / [i915#9732]) +4 other tests skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_psr@psr2-cursor-blt.html
* igt@kms_psr@psr2-sprite-blt:
- shard-dg1: NOTRUN -> [SKIP][201] ([i915#1072] / [i915#9732]) +34 other tests skip
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_psr@psr2-sprite-blt.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-dg1: NOTRUN -> [SKIP][202] ([i915#9685]) +1 other test skip
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-dg1: NOTRUN -> [SKIP][203] ([i915#5289]) +1 other test skip
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_setmode@invalid-clone-exclusive-crtc:
- shard-mtlp: NOTRUN -> [SKIP][204] ([i915#3555] / [i915#8809] / [i915#8823])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_setmode@invalid-clone-exclusive-crtc.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-dg1: NOTRUN -> [SKIP][205] ([i915#8623])
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-dg1: NOTRUN -> [FAIL][206] ([i915#9196]) +1 other test fail
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
- shard-tglu: [PASS][207] -> [FAIL][208] ([i915#9196]) +1 other test fail
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-dg1: NOTRUN -> [SKIP][209] ([i915#9906])
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@kms_vrr@seamless-rr-switch-vrr:
- shard-rkl: NOTRUN -> [SKIP][210] ([i915#9906])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@kms_vrr@seamless-rr-switch-vrr.html
* igt@kms_writeback@writeback-check-output:
- shard-dg1: NOTRUN -> [SKIP][211] ([i915#2437])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_writeback@writeback-check-output.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-rkl: NOTRUN -> [SKIP][212] ([i915#2437] / [i915#9412])
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@kms_writeback@writeback-fb-id:
- shard-glk: NOTRUN -> [SKIP][213] ([i915#2437])
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk3/igt@kms_writeback@writeback-fb-id.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-dg1: NOTRUN -> [SKIP][214] ([i915#2437] / [i915#9412])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@kms_writeback@writeback-pixel-formats.html
* igt@perf@non-zero-reason:
- shard-dg2: NOTRUN -> [FAIL][215] ([i915#9100]) +1 other test fail
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@perf@non-zero-reason.html
* igt@perf_pmu@cpu-hotplug:
- shard-dg1: NOTRUN -> [SKIP][216] ([i915#8850])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@perf_pmu@cpu-hotplug.html
* igt@perf_pmu@module-unload:
- shard-dg2: NOTRUN -> [FAIL][217] ([i915#11823])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-3/igt@perf_pmu@module-unload.html
* igt@prime_vgem@basic-fence-mmap:
- shard-dg1: NOTRUN -> [SKIP][218] ([i915#3708] / [i915#4077])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-read:
- shard-rkl: NOTRUN -> [SKIP][219] ([i915#3291] / [i915#3708])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-2/igt@prime_vgem@basic-read.html
* igt@prime_vgem@fence-flip-hang:
- shard-dg1: NOTRUN -> [SKIP][220] ([i915#3708]) +2 other tests skip
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-16/igt@prime_vgem@fence-flip-hang.html
* igt@prime_vgem@fence-write-hang:
- shard-rkl: NOTRUN -> [SKIP][221] ([i915#3708])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@prime_vgem@fence-write-hang.html
* igt@sriov_basic@enable-vfs-autoprobe-on:
- shard-dg1: NOTRUN -> [SKIP][222] ([i915#9917])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-13/igt@sriov_basic@enable-vfs-autoprobe-on.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-rkl: NOTRUN -> [SKIP][223] ([i915#9917]) +1 other test skip
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
* igt@syncobj_wait@invalid-wait-zero-handles:
- shard-mtlp: NOTRUN -> [FAIL][224] ([i915#9781])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@syncobj_wait@invalid-wait-zero-handles.html
- shard-snb: NOTRUN -> [FAIL][225] ([i915#9781])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb4/igt@syncobj_wait@invalid-wait-zero-handles.html
- shard-glk: NOTRUN -> [FAIL][226] ([i915#9781])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk7/igt@syncobj_wait@invalid-wait-zero-handles.html
* igt@tools_test@sysfs_l3_parity:
- shard-dg1: NOTRUN -> [SKIP][227] ([i915#4818])
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-15/igt@tools_test@sysfs_l3_parity.html
#### Possible fixes ####
* igt@gem_exec_fair@basic-pace-share@rcs0:
- shard-glk: [FAIL][228] ([i915#2842]) -> [PASS][229] +1 other test pass
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html
* igt@gem_exec_fair@basic-pace-solo:
- shard-rkl: [FAIL][230] ([i915#2842]) -> [PASS][231] +2 other tests pass
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-rkl-2/igt@gem_exec_fair@basic-pace-solo.html
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-4/igt@gem_exec_fair@basic-pace-solo.html
* igt@gen9_exec_parse@allowed-all:
- shard-glk: [ABORT][232] ([i915#5566]) -> [PASS][233]
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk7/igt@gen9_exec_parse@allowed-all.html
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk8/igt@gen9_exec_parse@allowed-all.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-snb: [ABORT][234] ([i915#9820]) -> [PASS][235]
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-snb2/igt@i915_module_load@reload-with-fault-injection.html
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb4/igt@i915_module_load@reload-with-fault-injection.html
- shard-mtlp: [ABORT][236] ([i915#10131] / [i915#9820]) -> [PASS][237]
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-mtlp-1/igt@i915_module_load@reload-with-fault-injection.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_atomic_transition@modeset-transition-fencing:
- shard-glk: [FAIL][238] -> [PASS][239]
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk8/igt@kms_atomic_transition@modeset-transition-fencing.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk2/igt@kms_atomic_transition@modeset-transition-fencing.html
* igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs:
- shard-glk: [FAIL][240] ([i915#11859]) -> [PASS][241]
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk8/igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk2/igt@kms_atomic_transition@modeset-transition-fencing@2x-outputs.html
* igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4:
- shard-dg1: [FAIL][242] ([i915#5956]) -> [PASS][243] +1 other test pass
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-4.html
* igt@kms_atomic_transition@plane-toggle-modeset-transition:
- shard-snb: [FAIL][244] ([i915#5956]) -> [PASS][245] +1 other test pass
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-snb5/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb5/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: [FAIL][246] ([i915#2346]) -> [PASS][247]
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@torture-bo:
- shard-mtlp: [INCOMPLETE][248] -> [PASS][249] +1 other test pass
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-mtlp-1/igt@kms_cursor_legacy@torture-bo.html
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-5/igt@kms_cursor_legacy@torture-bo.html
* igt@kms_cursor_legacy@torture-move:
- shard-tglu: [DMESG-WARN][250] ([i915#10166]) -> [PASS][251]
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-7/igt@kms_cursor_legacy@torture-move.html
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-10/igt@kms_cursor_legacy@torture-move.html
* igt@kms_cursor_legacy@torture-move@pipe-a:
- shard-tglu: [DMESG-WARN][252] ([i915#10166] / [i915#1982]) -> [PASS][253]
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-7/igt@kms_cursor_legacy@torture-move@pipe-a.html
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-10/igt@kms_cursor_legacy@torture-move@pipe-a.html
* igt@kms_dither@fb-8bpc-vs-panel-8bpc:
- shard-dg2: [SKIP][254] ([i915#3555]) -> [PASS][255]
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-7/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html
* igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1:
- shard-snb: [FAIL][256] ([i915#2122]) -> [PASS][257] +1 other test pass
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-snb7/igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-snb1/igt@kms_flip@wf_vblank-ts-check-interruptible@a-vga1.html
* igt@kms_pm_dc@dc6-dpms:
- shard-tglu: [FAIL][258] ([i915#9295]) -> [PASS][259]
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-7/igt@kms_pm_dc@dc6-dpms.html
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-6/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu: [SKIP][260] ([i915#4281]) -> [PASS][261]
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-6/igt@kms_pm_dc@dc9-dpms.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-6/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
- shard-rkl: [SKIP][262] ([i915#9519]) -> [PASS][263] +1 other test pass
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-mtlp: [FAIL][264] ([i915#9196]) -> [PASS][265] +1 other test pass
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-mtlp-6/igt@kms_universal_plane@cursor-fb-leak.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-2/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
- shard-tglu: [FAIL][266] ([i915#9196]) -> [PASS][267]
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-8/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-5/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
* igt@kms_vblank@query-forked-hang:
- shard-dg2: [INCOMPLETE][268] -> [PASS][269] +2 other tests pass
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-4/igt@kms_vblank@query-forked-hang.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@kms_vblank@query-forked-hang.html
#### Warnings ####
* igt@gem_ctx_engines@invalid-engines:
- shard-tglu: [FAIL][270] ([i915#12031]) -> [FAIL][271] ([i915#12027])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-tglu-7/igt@gem_ctx_engines@invalid-engines.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-tglu-6/igt@gem_ctx_engines@invalid-engines.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-270:
- shard-mtlp: [ABORT][272] ([i915#10354]) -> [SKIP][273]
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-mtlp-2/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-mtlp-1/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-dg2: [SKIP][274] ([i915#11453]) -> [SKIP][275] ([i915#11453] / [i915#3359])
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-7/igt@kms_cursor_crc@cursor-sliding-512x512.html
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_frontbuffer_tracking@fbcpsr-suspend:
- shard-dg2: [SKIP][276] ([i915#10433] / [i915#3458]) -> [SKIP][277] ([i915#3458]) +2 other tests skip
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-8/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html
* igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary:
- shard-dg2: [SKIP][278] ([i915#3458]) -> [SKIP][279] ([i915#10433] / [i915#3458]) +2 other tests skip
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-indfb-scaledprimary.html
* igt@kms_plane_scaling@intel-max-src-size:
- shard-dg2: [FAIL][280] ([i915#8292]) -> [SKIP][281] ([i915#6953] / [i915#9423])
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-11/igt@kms_plane_scaling@intel-max-src-size.html
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_plane_scaling@intel-max-src-size.html
* igt@kms_psr@fbc-psr2-sprite-mmap-cpu:
- shard-dg2: [SKIP][282] ([i915#1072] / [i915#9673] / [i915#9732]) -> [SKIP][283] ([i915#1072] / [i915#9732]) +4 other tests skip
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-11/igt@kms_psr@fbc-psr2-sprite-mmap-cpu.html
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_psr@fbc-psr2-sprite-mmap-cpu.html
* igt@kms_psr@psr-cursor-render:
- shard-dg2: [SKIP][284] ([i915#1072] / [i915#9732]) -> [SKIP][285] ([i915#1072] / [i915#9673] / [i915#9732]) +4 other tests skip
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-7/igt@kms_psr@psr-cursor-render.html
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-11/igt@kms_psr@psr-cursor-render.html
* igt@kms_rotation_crc@bad-tiling:
- shard-dg2: [SKIP][286] ([i915#11131] / [i915#4235]) -> [SKIP][287] ([i915#11131])
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-11/igt@kms_rotation_crc@bad-tiling.html
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_rotation_crc@bad-tiling.html
* igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
- shard-dg2: [SKIP][288] ([i915#11131] / [i915#4235] / [i915#5190]) -> [SKIP][289] ([i915#11131] / [i915#5190])
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-dg2-11/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-dg2-2/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-glk: [FAIL][290] ([i915#10959]) -> [SKIP][291]
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15389/shard-glk4/igt@kms_tiled_display@basic-test-pattern.html
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_138477v1/shard-glk8/igt@kms_tiled_display@basic-test-pattern.html
[i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
[i915#10166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10166
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10354
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
[i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11131
[i915#11453]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11453
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
[i915#11823]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11823
[i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
[i915#11980]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11980
[i915#12027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12027
[i915#12031]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12031
[i915#12042]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12042
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12169]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12169
[i915#12179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12179
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
[i915#1982]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1982
[i915#2122]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2122
[i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
[i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
[i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/284
[i915#2842]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
[i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
[i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
[i915#3359]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
[i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
[i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
[i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
[i915#4036]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4036
[i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4213
[i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
[i915#4235]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4235
[i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
[i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
[i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4818]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4818
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
[i915#4854]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4854
[i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
[i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
[i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
[i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
[i915#4936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4936
[i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
[i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
[i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
[i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
[i915#5566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5566
[i915#5723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5723
[i915#5784]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5784
[i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6227]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6227
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
[i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
[i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
[i915#7116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7116
[i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
[i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
[i915#7742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8292]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8292
[i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
[i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
[i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
[i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
[i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
[i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
[i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
[i915#8812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8812
[i915#8814]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8814
[i915#8823]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8823
[i915#8850]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8850
[i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
[i915#9196]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9196
[i915#9295]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9295
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
[i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
[i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
[i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
[i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
[i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
[i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
[i915#9673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9673
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9728]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9728
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9781
[i915#9809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9809
[i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
[i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
[i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
Build changes
-------------
* Linux: CI_DRM_15389 -> Patchwork_138477v1
CI-20190529: 20190529
CI_DRM_15389: f25ffe1514b26574258bb767f5c6f53facdfaaca @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8011: 26dca87f1252b7f6f0c0f833050256f0244d61e9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_138477v1: f25ffe1514b26574258bb767f5c6f53facdfaaca @ 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_138477v1/index.html
[-- Attachment #2: Type: text/html, Size: 100064 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read
2024-09-10 13:42 ` [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read Ville Syrjala
@ 2024-09-12 11:56 ` Jani Nikula
0 siblings, 0 replies; 23+ messages in thread
From: Jani Nikula @ 2024-09-12 11:56 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx; +Cc: intel-xe
On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Unify the SPI vs. PCI ROM VBT read codepaths a bit by
> pulling some size overflow checks from the PCI side
> into the SPI side.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index cd32c9cd38a9..86b81fd23f58 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -3088,11 +3088,22 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> if (count >= oprom_size)
> goto err_not_found;
>
> + if (sizeof(struct vbt_header) > oprom_size - count) {
> + drm_dbg(display->drm, "VBT header incomplete\n");
> + goto err_not_found;
> + }
> +
> /* Get VBT size and allocate space for the VBT */
> vbt_size = intel_spi_read(&i915->uncore,
> found + offsetof(struct vbt_header, vbt_size));
> vbt_size &= 0xffff;
>
> + if (vbt_size > oprom_size - count) {
> + drm_dbg(display->drm,
> + "VBT incomplete (vbt_size overflows)\n");
> + goto err_not_found;
> + }
> +
> vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
> if (!vbt)
> goto err_not_found;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4
2024-09-10 13:42 ` [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4 Ville Syrjala
@ 2024-09-12 11:57 ` Jani Nikula
0 siblings, 0 replies; 23+ messages in thread
From: Jani Nikula @ 2024-09-12 11:57 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx; +Cc: intel-xe
On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The SPI code rounds the VBT allocation to a multiple of four bytes
> (presumably because it reads the VBT 4 bytes at a time). Do the
> same for the PCI ROM side to eliminate pointless differences between
> the two codepaths. This will make no functional difference.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 86b81fd23f58..cc4a4cc2bf3e 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -3166,7 +3166,7 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> }
>
> /* The rest will be validated by intel_bios_is_valid_vbt() */
> - vbt = kmalloc(vbt_size, GFP_KERNEL);
> + vbt = kmalloc(round_up(vbt_size, 4), GFP_KERNEL);
> if (!vbt)
> goto err_unmap_oprom;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16()
2024-09-10 13:42 ` [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16() Ville Syrjala
@ 2024-09-12 12:02 ` Jani Nikula
2024-09-20 17:00 ` Ville Syrjälä
0 siblings, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-09-12 12:02 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx; +Cc: intel-xe
On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The SPI VBT codepath only knows how to read 4 bytes at a time.
> So to read the 2 byte vbt_size it masks out the unwanted msbs.
> Hide that little implementation detail inside a new intel_spi_read16()
> helper. Alse rename the existing intel_spi_read() to intel_spi_read32()
> to make it clear what it does.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index cc4a4cc2bf3e..cbbda94c3dab 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -3053,13 +3053,18 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
> return vbt;
> }
>
> -static u32 intel_spi_read(struct intel_uncore *uncore, u32 offset)
> +static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
> {
> intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
>
> return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
> }
>
> +static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
> +{
> + return intel_spi_read32(uncore, offset) & 0xffff;
> +}
> +
> static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> size_t *size)
> {
> @@ -3078,7 +3083,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> oprom_offset &= OROM_OFFSET_MASK;
>
> for (count = 0; count < oprom_size; count += 4) {
> - data = intel_spi_read(&i915->uncore, oprom_offset + count);
> + data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> if (data == *((const u32 *)"$VBT")) {
> found = oprom_offset + count;
> break;
> @@ -3094,9 +3099,8 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> }
>
> /* Get VBT size and allocate space for the VBT */
> - vbt_size = intel_spi_read(&i915->uncore,
> - found + offsetof(struct vbt_header, vbt_size));
> - vbt_size &= 0xffff;
> + vbt_size = intel_spi_read16(&i915->uncore,
> + found + offsetof(struct vbt_header, vbt_size));
Pedantically if vbt_size was the last member of struct vbt_header this
could read past the checked size, but it's not and meh. Also nothing to
do with this change, apart from this hiding the detail. Still meh.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> if (vbt_size > oprom_size - count) {
> drm_dbg(display->drm,
> @@ -3109,7 +3113,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> goto err_not_found;
>
> for (count = 0; count < vbt_size; count += 4)
> - *(vbt + store++) = intel_spi_read(&i915->uncore, found + count);
> + *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
>
> if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> goto err_free_vbt;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-10 13:42 ` [PATCH 4/5] drm/i915/bios: Extract vbt_signature[] Ville Syrjala
@ 2024-09-12 12:15 ` Jani Nikula
2024-09-20 16:59 ` Ville Syrjälä
0 siblings, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-09-12 12:15 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx; +Cc: intel-xe
On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace the three hand rolled "$VBT"s with a vbt_signature[]
> to avoid accidents.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index cbbda94c3dab..0b92b494117f 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
> return _vbt + vbt->bdb_offset;
> }
>
> +static const char vbt_signature[4] = "$VBT";
Always a bit scary to add strings without termination, but I guess it's
justified here.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> +
> /**
> * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
> * @display: display device
> @@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
> return false;
> }
>
> - if (memcmp(vbt->signature, "$VBT", 4)) {
> + if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
> drm_dbg_kms(display->drm, "VBT invalid signature\n");
> return false;
> }
> @@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
> oprom_offset &= OROM_OFFSET_MASK;
>
> + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> +
> for (count = 0; count < oprom_size; count += 4) {
> data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> - if (data == *((const u32 *)"$VBT")) {
> + if (data == *((const u32 *)vbt_signature)) {
> found = oprom_offset + count;
> break;
> }
> @@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> if (!oprom)
> return NULL;
>
> + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> +
> /* Scour memory looking for the VBT signature. */
> for (i = 0; i + 4 < size; i += 4) {
> - if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
> + if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
> continue;
>
> p = oprom + i;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c
2024-09-10 13:42 ` [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c Ville Syrjala
@ 2024-09-12 12:44 ` Jani Nikula
2024-09-20 17:02 ` Ville Syrjälä
0 siblings, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-09-12 12:44 UTC (permalink / raw)
To: Ville Syrjala, intel-gfx; +Cc: intel-xe
On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Abstract away the nuts and bolts of the SPI vs. PCI ROM
> stuff, and hide it all in soc/intel_rom.c so that the
> VBT code doesn't have to care about this stuff.
>
> This leaves intel_bios.c with a single codepath that
> can focus on the details related to the VBT layout.
>
> This should have no functional changes.
Neat! Some nitpicks inline, but overall,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/Makefile | 3 +-
> drivers/gpu/drm/i915/display/intel_bios.c | 150 ++++------------
> drivers/gpu/drm/i915/soc/intel_rom.c | 160 ++++++++++++++++++
> drivers/gpu/drm/i915/soc/intel_rom.h | 25 +++
> drivers/gpu/drm/xe/Makefile | 3 +-
> .../xe/compat-i915-headers/soc/intel_rom.h | 6 +
> 6 files changed, 224 insertions(+), 123 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.c
> create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.h
> create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
>
> diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> index c63fa2133ccb..d14c8870aecb 100644
> --- a/drivers/gpu/drm/i915/Makefile
> +++ b/drivers/gpu/drm/i915/Makefile
> @@ -51,7 +51,8 @@ i915-y += \
> i915-y += \
> soc/intel_dram.o \
> soc/intel_gmch.o \
> - soc/intel_pch.o
> + soc/intel_pch.o \
> + soc/intel_rom.o
>
> # core library code
> i915-y += \
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 0b92b494117f..37d4b4ddfa95 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -33,12 +33,12 @@
> #include <drm/drm_edid.h>
> #include <drm/drm_fixed.h>
>
> +#include "soc/intel_rom.h"
> +
> #include "i915_drv.h"
> -#include "i915_reg.h"
> #include "intel_display.h"
> #include "intel_display_types.h"
> #include "intel_gmbus.h"
> -#include "intel_uncore.h"
>
> #define _INTEL_BIOS_PRIVATE
> #include "intel_vbt_defs.h"
> @@ -3055,150 +3055,58 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
> return vbt;
> }
>
> -static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
> +static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> + struct intel_rom *rom,
> + size_t *size, const char *type)
> {
> - intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
> + struct vbt_header *vbt;
> + size_t vbt_size;
> + loff_t offset;
>
> - return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
> -}
> -
> -static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
> -{
> - return intel_spi_read32(uncore, offset) & 0xffff;
> -}
> -
> -static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> - size_t *size)
> -{
> - struct drm_i915_private *i915 = to_i915(display->drm);
> - u32 count, data, found, store = 0;
> - u32 static_region, oprom_offset;
> - u32 oprom_size = 0x200000;
> - u16 vbt_size;
> - u32 *vbt;
> -
> - static_region = intel_uncore_read(&i915->uncore, SPI_STATIC_REGIONS);
> - static_region &= OPTIONROM_SPI_REGIONID_MASK;
> - intel_uncore_write(&i915->uncore, PRIMARY_SPI_REGIONID, static_region);
> -
> - oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
> - oprom_offset &= OROM_OFFSET_MASK;
> + if (!rom)
> + return NULL;
>
> BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
>
> - for (count = 0; count < oprom_size; count += 4) {
> - data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> - if (data == *((const u32 *)vbt_signature)) {
> - found = oprom_offset + count;
> - break;
> - }
> - }
> + offset = intel_rom_find(rom, *(const u32 *)vbt_signature);
> + if (offset < 0)
> + goto err_free_rom;
>
> - if (count >= oprom_size)
> - goto err_not_found;
> -
> - if (sizeof(struct vbt_header) > oprom_size - count) {
> + if (sizeof(struct vbt_header) > intel_rom_size(rom) - offset) {
> drm_dbg(display->drm, "VBT header incomplete\n");
> - goto err_not_found;
> + goto err_free_rom;
> }
>
> - /* Get VBT size and allocate space for the VBT */
> - vbt_size = intel_spi_read16(&i915->uncore,
> - found + offsetof(struct vbt_header, vbt_size));
> + BUILD_BUG_ON(sizeof(vbt->vbt_size) != sizeof(u16));
>
> - if (vbt_size > oprom_size - count) {
> - drm_dbg(display->drm,
> - "VBT incomplete (vbt_size overflows)\n");
> - goto err_not_found;
> + vbt_size = intel_rom_read16(rom, offset + offsetof(struct vbt_header, vbt_size));
> + if (vbt_size > intel_rom_size(rom) - offset) {
> + drm_dbg(display->drm, "VBT incomplete (vbt_size overflows)\n");
> + goto err_free_rom;
> }
>
> vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
> if (!vbt)
> - goto err_not_found;
> + goto err_free_rom;
>
> - for (count = 0; count < vbt_size; count += 4)
> - *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
> + intel_rom_read_block(rom, vbt, offset, vbt_size);
>
> if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> goto err_free_vbt;
>
> - drm_dbg_kms(display->drm, "Found valid VBT in SPI flash\n");
> + drm_dbg_kms(display->drm, "Found valid VBT in %s\n", type);
There's some (pre-existing) drm_dbg vs. drm_dbg_kms discrepancy here.
>
> if (size)
> *size = vbt_size;
>
> + intel_rom_free(rom);
> +
> return (struct vbt_header *)vbt;
The cast is now unnecessary.
>
> err_free_vbt:
> kfree(vbt);
> -err_not_found:
> - return NULL;
> -}
> -
> -static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> - size_t *sizep)
> -{
> - struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> - void __iomem *p = NULL, *oprom;
> - struct vbt_header *vbt;
> - u16 vbt_size;
> - size_t i, size;
> -
> - oprom = pci_map_rom(pdev, &size);
> - if (!oprom)
> - return NULL;
> -
> - BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> -
> - /* Scour memory looking for the VBT signature. */
> - for (i = 0; i + 4 < size; i += 4) {
> - if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
> - continue;
> -
> - p = oprom + i;
> - size -= i;
> - break;
> - }
> -
> - if (!p)
> - goto err_unmap_oprom;
> -
> - if (sizeof(struct vbt_header) > size) {
> - drm_dbg(display->drm, "VBT header incomplete\n");
> - goto err_unmap_oprom;
> - }
> -
> - vbt_size = ioread16(p + offsetof(struct vbt_header, vbt_size));
> - if (vbt_size > size) {
> - drm_dbg(display->drm,
> - "VBT incomplete (vbt_size overflows)\n");
> - goto err_unmap_oprom;
> - }
> -
> - /* The rest will be validated by intel_bios_is_valid_vbt() */
> - vbt = kmalloc(round_up(vbt_size, 4), GFP_KERNEL);
> - if (!vbt)
> - goto err_unmap_oprom;
> -
> - memcpy_fromio(vbt, p, vbt_size);
> -
> - if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> - goto err_free_vbt;
> -
> - pci_unmap_rom(pdev, oprom);
> -
> - if (sizep)
> - *sizep = vbt_size;
> -
> - drm_dbg_kms(display->drm, "Found valid VBT in PCI ROM\n");
> -
> - return vbt;
> -
> -err_free_vbt:
> - kfree(vbt);
> -err_unmap_oprom:
> - pci_unmap_rom(pdev, oprom);
> -
> +err_free_rom:
> + intel_rom_free(rom);
> return NULL;
> }
>
> @@ -3220,11 +3128,11 @@ static const struct vbt_header *intel_bios_get_vbt(struct intel_display *display
> */
> if (!vbt && IS_DGFX(i915))
> with_intel_runtime_pm(&i915->runtime_pm, wakeref)
> - vbt = spi_oprom_get_vbt(display, sizep);
> + vbt = oprom_get_vbt(display, intel_rom_spi(i915), sizep, "SPI flash");
>
> if (!vbt)
> with_intel_runtime_pm(&i915->runtime_pm, wakeref)
> - vbt = oprom_get_vbt(display, sizep);
> + vbt = oprom_get_vbt(display, intel_rom_pci(i915), sizep, "PCI ROM");
>
> return vbt;
> }
> diff --git a/drivers/gpu/drm/i915/soc/intel_rom.c b/drivers/gpu/drm/i915/soc/intel_rom.c
> new file mode 100644
> index 000000000000..243d98cab8c3
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/soc/intel_rom.c
> @@ -0,0 +1,160 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#include "i915_drv.h"
> +#include "i915_reg.h"
> +
> +#include "intel_rom.h"
> +#include "intel_uncore.h"
> +
> +struct intel_rom {
> + /* for PCI ROM */
> + struct pci_dev *pdev;
> + void __iomem *oprom;
> +
> + /* for SPI */
> + struct intel_uncore *uncore;
> + loff_t offset;
> +
> + size_t size;
> +
> + u32 (*read32)(struct intel_rom *rom, loff_t offset);
> + u16 (*read16)(struct intel_rom *rom, loff_t offset);
> + void (*read_block)(struct intel_rom *rom, void *data, loff_t offset, size_t size);
> + void (*free)(struct intel_rom *rom);
> +};
> +
> +static u32 spi_read32(struct intel_rom *rom, loff_t offset)
> +{
> + intel_uncore_write(rom->uncore, PRIMARY_SPI_ADDRESS,
> + rom->offset + offset);
> +
> + return intel_uncore_read(rom->uncore, PRIMARY_SPI_TRIGGER);
> +}
> +
> +static u16 spi_read16(struct intel_rom *rom, loff_t offset)
> +{
> + return spi_read32(rom, offset) & 0xffff;
> +}
> +
> +struct intel_rom *intel_rom_spi(struct drm_i915_private *i915)
Would be nice to get rid of struct drm_i915_private too, but then it
needs pci_dev and uncore, and we'll need to abstract uncore too, so
let's just roll with this as a concrete step forward.
> +{
> + struct intel_rom *rom;
> + u32 static_region;
> +
> + rom = kzalloc(sizeof(*rom), GFP_KERNEL);
> + if (!rom)
> + return NULL;
> +
> + rom->uncore = &i915->uncore;
> +
> + static_region = intel_uncore_read(rom->uncore, SPI_STATIC_REGIONS);
> + static_region &= OPTIONROM_SPI_REGIONID_MASK;
> + intel_uncore_write(rom->uncore, PRIMARY_SPI_REGIONID, static_region);
> +
> + rom->offset = intel_uncore_read(rom->uncore, OROM_OFFSET) & OROM_OFFSET_MASK;
> +
> + rom->size = 0x200000;
> +
> + rom->read32 = spi_read32;
> + rom->read16 = spi_read16;
> +
> + return rom;
> +}
> +
> +static u32 pci_read32(struct intel_rom *rom, loff_t offset)
> +{
> + return ioread32(rom->oprom + offset);
> +}
> +
> +static u16 pci_read16(struct intel_rom *rom, loff_t offset)
> +{
> + return ioread16(rom->oprom + offset);
> +}
> +
> +static void pci_read_block(struct intel_rom *rom, void *data,
> + loff_t offset, size_t size)
> +{
> + memcpy_fromio(data, rom->oprom + offset, size);
> +}
> +
> +static void pci_free(struct intel_rom *rom)
> +{
> + pci_unmap_rom(rom->pdev, rom->oprom);
> +}
> +
> +struct intel_rom *intel_rom_pci(struct drm_i915_private *i915)
> +{
> + struct intel_rom *rom;
> +
> + rom = kzalloc(sizeof(*rom), GFP_KERNEL);
> + if (!rom)
> + return NULL;
> +
> + rom->pdev = to_pci_dev(i915->drm.dev);
> +
> + rom->oprom = pci_map_rom(rom->pdev, &rom->size);
> + if (!rom->oprom) {
> + kfree(rom);
> + return NULL;
> + }
> +
> + rom->read32 = pci_read32;
> + rom->read16 = pci_read16;
> + rom->read_block = pci_read_block;
> + rom->free = pci_free;
> +
> + return rom;
> +}
> +
> +u32 intel_rom_read32(struct intel_rom *rom, loff_t offset)
> +{
> + return rom->read32(rom, offset);
> +}
> +
> +u16 intel_rom_read16(struct intel_rom *rom, loff_t offset)
> +{
> + return rom->read16(rom, offset);
> +}
> +
> +void intel_rom_read_block(struct intel_rom *rom, void *data,
> + loff_t offset, size_t size)
> +{
> + u32 *ptr = data;
> + loff_t index;
Just nitpicking, but should this (and rom reads above) now sanity check
offset+size against rom->size? IDK if it's worth it for such a simple
thing. The caller is supposed to know what it's doing.
> +
> + if (rom->read_block) {
> + rom->read_block(rom, data, offset, size);
> + return;
> + }
> +
> + for (index = 0; index < size; index += 4)
> + *ptr++ = rom->read32(rom, offset + index);
> +}
> +
> +loff_t intel_rom_find(struct intel_rom *rom, u32 needle)
> +{
> + loff_t offset;
> +
> + for (offset = 0; offset < rom->size; offset += 4) {
> + if (rom->read32(rom, offset) == needle)
> + return offset;
> + }
> +
> + return -ENOENT;
> +}
> +
> +size_t intel_rom_size(struct intel_rom *rom)
> +{
> + return rom->size;
> +}
> +
> +void intel_rom_free(struct intel_rom *rom)
> +{
> + if (rom && rom->free)
> + rom->free(rom);
> +
> + kfree(rom);
> +}
> diff --git a/drivers/gpu/drm/i915/soc/intel_rom.h b/drivers/gpu/drm/i915/soc/intel_rom.h
> new file mode 100644
> index 000000000000..fb2979c8ef7f
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/soc/intel_rom.h
> @@ -0,0 +1,25 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#ifndef __INTEL_ROM_H__
> +#define __INTEL_ROM_H__
> +
> +#include <linux/types.h>
> +
> +struct drm_i915_private;
> +struct intel_rom;
> +
> +struct intel_rom *intel_rom_spi(struct drm_i915_private *i915);
> +struct intel_rom *intel_rom_pci(struct drm_i915_private *i915);
> +
> +u32 intel_rom_read32(struct intel_rom *rom, loff_t offset);
> +u16 intel_rom_read16(struct intel_rom *rom, loff_t offset);
> +void intel_rom_read_block(struct intel_rom *rom, void *data,
> + loff_t offset, size_t size);
> +loff_t intel_rom_find(struct intel_rom *rom, u32 needle);
> +size_t intel_rom_size(struct intel_rom *rom);
> +void intel_rom_free(struct intel_rom *rom);
> +
> +#endif /* __INTEL_ROM_H__ */
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index edfd812e0f41..dd1c0666e6bd 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -180,7 +180,8 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> # SOC code shared with i915
> xe-$(CONFIG_DRM_XE_DISPLAY) += \
> i915-soc/intel_dram.o \
> - i915-soc/intel_pch.o
> + i915-soc/intel_pch.o \
> + i915-soc/intel_rom.o
>
> # Display code shared with i915
> xe-$(CONFIG_DRM_XE_DISPLAY) += \
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
> new file mode 100644
> index 000000000000..05cbfb697b2b
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
> @@ -0,0 +1,6 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2024 Intel Corporation
> + */
> +
> +#include "../../../i915/soc/intel_rom.h"
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-12 12:15 ` Jani Nikula
@ 2024-09-20 16:59 ` Ville Syrjälä
2024-09-23 9:12 ` Jani Nikula
0 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjälä @ 2024-09-20 16:59 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, intel-xe
On Thu, Sep 12, 2024 at 03:15:52PM +0300, Jani Nikula wrote:
> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Replace the three hand rolled "$VBT"s with a vbt_signature[]
> > to avoid accidents.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index cbbda94c3dab..0b92b494117f 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
> > return _vbt + vbt->bdb_offset;
> > }
> >
> > +static const char vbt_signature[4] = "$VBT";
>
> Always a bit scary to add strings without termination, but I guess it's
> justified here.
I guess we could make it look less like a string with eg.
static const u8 vbt_signature[] = { '$', 'V', 'B', 'T' };
?
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
>
> > +
> > /**
> > * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
> > * @display: display device
> > @@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
> > return false;
> > }
> >
> > - if (memcmp(vbt->signature, "$VBT", 4)) {
> > + if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
> > drm_dbg_kms(display->drm, "VBT invalid signature\n");
> > return false;
> > }
> > @@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
> > oprom_offset &= OROM_OFFSET_MASK;
> >
> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> > +
> > for (count = 0; count < oprom_size; count += 4) {
> > data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> > - if (data == *((const u32 *)"$VBT")) {
> > + if (data == *((const u32 *)vbt_signature)) {
> > found = oprom_offset + count;
> > break;
> > }
> > @@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> > if (!oprom)
> > return NULL;
> >
> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> > +
> > /* Scour memory looking for the VBT signature. */
> > for (i = 0; i + 4 < size; i += 4) {
> > - if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
> > + if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
> > continue;
> >
> > p = oprom + i;
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16()
2024-09-12 12:02 ` Jani Nikula
@ 2024-09-20 17:00 ` Ville Syrjälä
0 siblings, 0 replies; 23+ messages in thread
From: Ville Syrjälä @ 2024-09-20 17:00 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, intel-xe
On Thu, Sep 12, 2024 at 03:02:03PM +0300, Jani Nikula wrote:
> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > The SPI VBT codepath only knows how to read 4 bytes at a time.
> > So to read the 2 byte vbt_size it masks out the unwanted msbs.
> > Hide that little implementation detail inside a new intel_spi_read16()
> > helper. Alse rename the existing intel_spi_read() to intel_spi_read32()
> > to make it clear what it does.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_bios.c | 16 ++++++++++------
> > 1 file changed, 10 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index cc4a4cc2bf3e..cbbda94c3dab 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -3053,13 +3053,18 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
> > return vbt;
> > }
> >
> > -static u32 intel_spi_read(struct intel_uncore *uncore, u32 offset)
> > +static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
> > {
> > intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
> >
> > return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
> > }
> >
> > +static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
> > +{
> > + return intel_spi_read32(uncore, offset) & 0xffff;
> > +}
> > +
> > static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > size_t *size)
> > {
> > @@ -3078,7 +3083,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > oprom_offset &= OROM_OFFSET_MASK;
> >
> > for (count = 0; count < oprom_size; count += 4) {
> > - data = intel_spi_read(&i915->uncore, oprom_offset + count);
> > + data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> > if (data == *((const u32 *)"$VBT")) {
> > found = oprom_offset + count;
> > break;
> > @@ -3094,9 +3099,8 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > }
> >
> > /* Get VBT size and allocate space for the VBT */
> > - vbt_size = intel_spi_read(&i915->uncore,
> > - found + offsetof(struct vbt_header, vbt_size));
> > - vbt_size &= 0xffff;
> > + vbt_size = intel_spi_read16(&i915->uncore,
> > + found + offsetof(struct vbt_header, vbt_size));
>
> Pedantically if vbt_size was the last member of struct vbt_header this
> could read past the checked size, but it's not and meh. Also nothing to
> do with this change, apart from this hiding the detail. Still meh.
This code raises a lot of other lingering questions as well:
- do 8/16 bit accesses not work at all?
- what happens on an unaligned 32bit access?
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
>
> >
> > if (vbt_size > oprom_size - count) {
> > drm_dbg(display->drm,
> > @@ -3109,7 +3113,7 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > goto err_not_found;
> >
> > for (count = 0; count < vbt_size; count += 4)
> > - *(vbt + store++) = intel_spi_read(&i915->uncore, found + count);
> > + *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
> >
> > if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> > goto err_free_vbt;
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c
2024-09-12 12:44 ` Jani Nikula
@ 2024-09-20 17:02 ` Ville Syrjälä
2024-09-23 9:13 ` Jani Nikula
0 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjälä @ 2024-09-20 17:02 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, intel-xe
On Thu, Sep 12, 2024 at 03:44:32PM +0300, Jani Nikula wrote:
> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Abstract away the nuts and bolts of the SPI vs. PCI ROM
> > stuff, and hide it all in soc/intel_rom.c so that the
> > VBT code doesn't have to care about this stuff.
> >
> > This leaves intel_bios.c with a single codepath that
> > can focus on the details related to the VBT layout.
> >
> > This should have no functional changes.
>
> Neat! Some nitpicks inline, but overall,
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
>
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/Makefile | 3 +-
> > drivers/gpu/drm/i915/display/intel_bios.c | 150 ++++------------
> > drivers/gpu/drm/i915/soc/intel_rom.c | 160 ++++++++++++++++++
> > drivers/gpu/drm/i915/soc/intel_rom.h | 25 +++
> > drivers/gpu/drm/xe/Makefile | 3 +-
> > .../xe/compat-i915-headers/soc/intel_rom.h | 6 +
> > 6 files changed, 224 insertions(+), 123 deletions(-)
> > create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.c
> > create mode 100644 drivers/gpu/drm/i915/soc/intel_rom.h
> > create mode 100644 drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
> >
> > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
> > index c63fa2133ccb..d14c8870aecb 100644
> > --- a/drivers/gpu/drm/i915/Makefile
> > +++ b/drivers/gpu/drm/i915/Makefile
> > @@ -51,7 +51,8 @@ i915-y += \
> > i915-y += \
> > soc/intel_dram.o \
> > soc/intel_gmch.o \
> > - soc/intel_pch.o
> > + soc/intel_pch.o \
> > + soc/intel_rom.o
> >
> > # core library code
> > i915-y += \
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index 0b92b494117f..37d4b4ddfa95 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -33,12 +33,12 @@
> > #include <drm/drm_edid.h>
> > #include <drm/drm_fixed.h>
> >
> > +#include "soc/intel_rom.h"
> > +
> > #include "i915_drv.h"
> > -#include "i915_reg.h"
> > #include "intel_display.h"
> > #include "intel_display_types.h"
> > #include "intel_gmbus.h"
> > -#include "intel_uncore.h"
> >
> > #define _INTEL_BIOS_PRIVATE
> > #include "intel_vbt_defs.h"
> > @@ -3055,150 +3055,58 @@ static struct vbt_header *firmware_get_vbt(struct intel_display *display,
> > return vbt;
> > }
> >
> > -static u32 intel_spi_read32(struct intel_uncore *uncore, u32 offset)
> > +static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> > + struct intel_rom *rom,
> > + size_t *size, const char *type)
> > {
> > - intel_uncore_write(uncore, PRIMARY_SPI_ADDRESS, offset);
> > + struct vbt_header *vbt;
> > + size_t vbt_size;
> > + loff_t offset;
> >
> > - return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER);
> > -}
> > -
> > -static u16 intel_spi_read16(struct intel_uncore *uncore, u32 offset)
> > -{
> > - return intel_spi_read32(uncore, offset) & 0xffff;
> > -}
> > -
> > -static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> > - size_t *size)
> > -{
> > - struct drm_i915_private *i915 = to_i915(display->drm);
> > - u32 count, data, found, store = 0;
> > - u32 static_region, oprom_offset;
> > - u32 oprom_size = 0x200000;
> > - u16 vbt_size;
> > - u32 *vbt;
> > -
> > - static_region = intel_uncore_read(&i915->uncore, SPI_STATIC_REGIONS);
> > - static_region &= OPTIONROM_SPI_REGIONID_MASK;
> > - intel_uncore_write(&i915->uncore, PRIMARY_SPI_REGIONID, static_region);
> > -
> > - oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
> > - oprom_offset &= OROM_OFFSET_MASK;
> > + if (!rom)
> > + return NULL;
> >
> > BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> >
> > - for (count = 0; count < oprom_size; count += 4) {
> > - data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> > - if (data == *((const u32 *)vbt_signature)) {
> > - found = oprom_offset + count;
> > - break;
> > - }
> > - }
> > + offset = intel_rom_find(rom, *(const u32 *)vbt_signature);
> > + if (offset < 0)
> > + goto err_free_rom;
> >
> > - if (count >= oprom_size)
> > - goto err_not_found;
> > -
> > - if (sizeof(struct vbt_header) > oprom_size - count) {
> > + if (sizeof(struct vbt_header) > intel_rom_size(rom) - offset) {
> > drm_dbg(display->drm, "VBT header incomplete\n");
> > - goto err_not_found;
> > + goto err_free_rom;
> > }
> >
> > - /* Get VBT size and allocate space for the VBT */
> > - vbt_size = intel_spi_read16(&i915->uncore,
> > - found + offsetof(struct vbt_header, vbt_size));
> > + BUILD_BUG_ON(sizeof(vbt->vbt_size) != sizeof(u16));
> >
> > - if (vbt_size > oprom_size - count) {
> > - drm_dbg(display->drm,
> > - "VBT incomplete (vbt_size overflows)\n");
> > - goto err_not_found;
> > + vbt_size = intel_rom_read16(rom, offset + offsetof(struct vbt_header, vbt_size));
> > + if (vbt_size > intel_rom_size(rom) - offset) {
> > + drm_dbg(display->drm, "VBT incomplete (vbt_size overflows)\n");
> > + goto err_free_rom;
> > }
> >
> > vbt = kzalloc(round_up(vbt_size, 4), GFP_KERNEL);
> > if (!vbt)
> > - goto err_not_found;
> > + goto err_free_rom;
> >
> > - for (count = 0; count < vbt_size; count += 4)
> > - *(vbt + store++) = intel_spi_read32(&i915->uncore, found + count);
> > + intel_rom_read_block(rom, vbt, offset, vbt_size);
> >
> > if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> > goto err_free_vbt;
> >
> > - drm_dbg_kms(display->drm, "Found valid VBT in SPI flash\n");
> > + drm_dbg_kms(display->drm, "Found valid VBT in %s\n", type);
>
> There's some (pre-existing) drm_dbg vs. drm_dbg_kms discrepancy here.
I'll prepare a patch to clean that up.
>
> >
> > if (size)
> > *size = vbt_size;
> >
> > + intel_rom_free(rom);
> > +
> > return (struct vbt_header *)vbt;
>
> The cast is now unnecessary.
Ack.
>
> >
> > err_free_vbt:
> > kfree(vbt);
> > -err_not_found:
> > - return NULL;
> > -}
> > -
> > -static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> > - size_t *sizep)
> > -{
> > - struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> > - void __iomem *p = NULL, *oprom;
> > - struct vbt_header *vbt;
> > - u16 vbt_size;
> > - size_t i, size;
> > -
> > - oprom = pci_map_rom(pdev, &size);
> > - if (!oprom)
> > - return NULL;
> > -
> > - BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> > -
> > - /* Scour memory looking for the VBT signature. */
> > - for (i = 0; i + 4 < size; i += 4) {
> > - if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
> > - continue;
> > -
> > - p = oprom + i;
> > - size -= i;
> > - break;
> > - }
> > -
> > - if (!p)
> > - goto err_unmap_oprom;
> > -
> > - if (sizeof(struct vbt_header) > size) {
> > - drm_dbg(display->drm, "VBT header incomplete\n");
> > - goto err_unmap_oprom;
> > - }
> > -
> > - vbt_size = ioread16(p + offsetof(struct vbt_header, vbt_size));
> > - if (vbt_size > size) {
> > - drm_dbg(display->drm,
> > - "VBT incomplete (vbt_size overflows)\n");
> > - goto err_unmap_oprom;
> > - }
> > -
> > - /* The rest will be validated by intel_bios_is_valid_vbt() */
> > - vbt = kmalloc(round_up(vbt_size, 4), GFP_KERNEL);
> > - if (!vbt)
> > - goto err_unmap_oprom;
> > -
> > - memcpy_fromio(vbt, p, vbt_size);
> > -
> > - if (!intel_bios_is_valid_vbt(display, vbt, vbt_size))
> > - goto err_free_vbt;
> > -
> > - pci_unmap_rom(pdev, oprom);
> > -
> > - if (sizep)
> > - *sizep = vbt_size;
> > -
> > - drm_dbg_kms(display->drm, "Found valid VBT in PCI ROM\n");
> > -
> > - return vbt;
> > -
> > -err_free_vbt:
> > - kfree(vbt);
> > -err_unmap_oprom:
> > - pci_unmap_rom(pdev, oprom);
> > -
> > +err_free_rom:
> > + intel_rom_free(rom);
> > return NULL;
> > }
> >
> > @@ -3220,11 +3128,11 @@ static const struct vbt_header *intel_bios_get_vbt(struct intel_display *display
> > */
> > if (!vbt && IS_DGFX(i915))
> > with_intel_runtime_pm(&i915->runtime_pm, wakeref)
> > - vbt = spi_oprom_get_vbt(display, sizep);
> > + vbt = oprom_get_vbt(display, intel_rom_spi(i915), sizep, "SPI flash");
> >
> > if (!vbt)
> > with_intel_runtime_pm(&i915->runtime_pm, wakeref)
> > - vbt = oprom_get_vbt(display, sizep);
> > + vbt = oprom_get_vbt(display, intel_rom_pci(i915), sizep, "PCI ROM");
> >
> > return vbt;
> > }
> > diff --git a/drivers/gpu/drm/i915/soc/intel_rom.c b/drivers/gpu/drm/i915/soc/intel_rom.c
> > new file mode 100644
> > index 000000000000..243d98cab8c3
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/soc/intel_rom.c
> > @@ -0,0 +1,160 @@
> > +// SPDX-License-Identifier: MIT
> > +/*
> > + * Copyright © 2024 Intel Corporation
> > + */
> > +
> > +#include "i915_drv.h"
> > +#include "i915_reg.h"
> > +
> > +#include "intel_rom.h"
> > +#include "intel_uncore.h"
> > +
> > +struct intel_rom {
> > + /* for PCI ROM */
> > + struct pci_dev *pdev;
> > + void __iomem *oprom;
> > +
> > + /* for SPI */
> > + struct intel_uncore *uncore;
> > + loff_t offset;
> > +
> > + size_t size;
> > +
> > + u32 (*read32)(struct intel_rom *rom, loff_t offset);
> > + u16 (*read16)(struct intel_rom *rom, loff_t offset);
> > + void (*read_block)(struct intel_rom *rom, void *data, loff_t offset, size_t size);
> > + void (*free)(struct intel_rom *rom);
> > +};
> > +
> > +static u32 spi_read32(struct intel_rom *rom, loff_t offset)
> > +{
> > + intel_uncore_write(rom->uncore, PRIMARY_SPI_ADDRESS,
> > + rom->offset + offset);
> > +
> > + return intel_uncore_read(rom->uncore, PRIMARY_SPI_TRIGGER);
> > +}
> > +
> > +static u16 spi_read16(struct intel_rom *rom, loff_t offset)
> > +{
> > + return spi_read32(rom, offset) & 0xffff;
> > +}
> > +
> > +struct intel_rom *intel_rom_spi(struct drm_i915_private *i915)
>
> Would be nice to get rid of struct drm_i915_private too, but then it
> needs pci_dev and uncore, and we'll need to abstract uncore too, so
> let's just roll with this as a concrete step forward.
Yeah, dunno what we'll do about that suff.
>
> > +{
> > + struct intel_rom *rom;
> > + u32 static_region;
> > +
> > + rom = kzalloc(sizeof(*rom), GFP_KERNEL);
> > + if (!rom)
> > + return NULL;
> > +
> > + rom->uncore = &i915->uncore;
> > +
> > + static_region = intel_uncore_read(rom->uncore, SPI_STATIC_REGIONS);
> > + static_region &= OPTIONROM_SPI_REGIONID_MASK;
> > + intel_uncore_write(rom->uncore, PRIMARY_SPI_REGIONID, static_region);
> > +
> > + rom->offset = intel_uncore_read(rom->uncore, OROM_OFFSET) & OROM_OFFSET_MASK;
> > +
> > + rom->size = 0x200000;
> > +
> > + rom->read32 = spi_read32;
> > + rom->read16 = spi_read16;
> > +
> > + return rom;
> > +}
> > +
> > +static u32 pci_read32(struct intel_rom *rom, loff_t offset)
> > +{
> > + return ioread32(rom->oprom + offset);
> > +}
> > +
> > +static u16 pci_read16(struct intel_rom *rom, loff_t offset)
> > +{
> > + return ioread16(rom->oprom + offset);
> > +}
> > +
> > +static void pci_read_block(struct intel_rom *rom, void *data,
> > + loff_t offset, size_t size)
> > +{
> > + memcpy_fromio(data, rom->oprom + offset, size);
> > +}
> > +
> > +static void pci_free(struct intel_rom *rom)
> > +{
> > + pci_unmap_rom(rom->pdev, rom->oprom);
> > +}
> > +
> > +struct intel_rom *intel_rom_pci(struct drm_i915_private *i915)
> > +{
> > + struct intel_rom *rom;
> > +
> > + rom = kzalloc(sizeof(*rom), GFP_KERNEL);
> > + if (!rom)
> > + return NULL;
> > +
> > + rom->pdev = to_pci_dev(i915->drm.dev);
> > +
> > + rom->oprom = pci_map_rom(rom->pdev, &rom->size);
> > + if (!rom->oprom) {
> > + kfree(rom);
> > + return NULL;
> > + }
> > +
> > + rom->read32 = pci_read32;
> > + rom->read16 = pci_read16;
> > + rom->read_block = pci_read_block;
> > + rom->free = pci_free;
> > +
> > + return rom;
> > +}
> > +
> > +u32 intel_rom_read32(struct intel_rom *rom, loff_t offset)
> > +{
> > + return rom->read32(rom, offset);
> > +}
> > +
> > +u16 intel_rom_read16(struct intel_rom *rom, loff_t offset)
> > +{
> > + return rom->read16(rom, offset);
> > +}
> > +
> > +void intel_rom_read_block(struct intel_rom *rom, void *data,
> > + loff_t offset, size_t size)
> > +{
> > + u32 *ptr = data;
> > + loff_t index;
>
> Just nitpicking, but should this (and rom reads above) now sanity check
> offset+size against rom->size? IDK if it's worth it for such a simple
> thing. The caller is supposed to know what it's doing.
I considered that but decided to cut my losses before I
end up designing a whole new kernel subsystem.
>
> > +
> > + if (rom->read_block) {
> > + rom->read_block(rom, data, offset, size);
> > + return;
> > + }
> > +
> > + for (index = 0; index < size; index += 4)
> > + *ptr++ = rom->read32(rom, offset + index);
> > +}
> > +
> > +loff_t intel_rom_find(struct intel_rom *rom, u32 needle)
> > +{
> > + loff_t offset;
> > +
> > + for (offset = 0; offset < rom->size; offset += 4) {
> > + if (rom->read32(rom, offset) == needle)
> > + return offset;
> > + }
> > +
> > + return -ENOENT;
> > +}
> > +
> > +size_t intel_rom_size(struct intel_rom *rom)
> > +{
> > + return rom->size;
> > +}
> > +
> > +void intel_rom_free(struct intel_rom *rom)
> > +{
> > + if (rom && rom->free)
> > + rom->free(rom);
> > +
> > + kfree(rom);
> > +}
> > diff --git a/drivers/gpu/drm/i915/soc/intel_rom.h b/drivers/gpu/drm/i915/soc/intel_rom.h
> > new file mode 100644
> > index 000000000000..fb2979c8ef7f
> > --- /dev/null
> > +++ b/drivers/gpu/drm/i915/soc/intel_rom.h
> > @@ -0,0 +1,25 @@
> > +/* SPDX-License-Identifier: MIT */
> > +/*
> > + * Copyright © 2024 Intel Corporation
> > + */
> > +
> > +#ifndef __INTEL_ROM_H__
> > +#define __INTEL_ROM_H__
> > +
> > +#include <linux/types.h>
> > +
> > +struct drm_i915_private;
> > +struct intel_rom;
> > +
> > +struct intel_rom *intel_rom_spi(struct drm_i915_private *i915);
> > +struct intel_rom *intel_rom_pci(struct drm_i915_private *i915);
> > +
> > +u32 intel_rom_read32(struct intel_rom *rom, loff_t offset);
> > +u16 intel_rom_read16(struct intel_rom *rom, loff_t offset);
> > +void intel_rom_read_block(struct intel_rom *rom, void *data,
> > + loff_t offset, size_t size);
> > +loff_t intel_rom_find(struct intel_rom *rom, u32 needle);
> > +size_t intel_rom_size(struct intel_rom *rom);
> > +void intel_rom_free(struct intel_rom *rom);
> > +
> > +#endif /* __INTEL_ROM_H__ */
> > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> > index edfd812e0f41..dd1c0666e6bd 100644
> > --- a/drivers/gpu/drm/xe/Makefile
> > +++ b/drivers/gpu/drm/xe/Makefile
> > @@ -180,7 +180,8 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
> > # SOC code shared with i915
> > xe-$(CONFIG_DRM_XE_DISPLAY) += \
> > i915-soc/intel_dram.o \
> > - i915-soc/intel_pch.o
> > + i915-soc/intel_pch.o \
> > + i915-soc/intel_rom.o
> >
> > # Display code shared with i915
> > xe-$(CONFIG_DRM_XE_DISPLAY) += \
> > diff --git a/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
> > new file mode 100644
> > index 000000000000..05cbfb697b2b
> > --- /dev/null
> > +++ b/drivers/gpu/drm/xe/compat-i915-headers/soc/intel_rom.h
> > @@ -0,0 +1,6 @@
> > +/* SPDX-License-Identifier: MIT */
> > +/*
> > + * Copyright © 2024 Intel Corporation
> > + */
> > +
> > +#include "../../../i915/soc/intel_rom.h"
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-20 16:59 ` Ville Syrjälä
@ 2024-09-23 9:12 ` Jani Nikula
2024-09-23 14:22 ` Ville Syrjälä
0 siblings, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-09-23 9:12 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On Fri, 20 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Thu, Sep 12, 2024 at 03:15:52PM +0300, Jani Nikula wrote:
>> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >
>> > Replace the three hand rolled "$VBT"s with a vbt_signature[]
>> > to avoid accidents.
>> >
>> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> > ---
>> > drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
>> > 1 file changed, 9 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>> > index cbbda94c3dab..0b92b494117f 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> > @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
>> > return _vbt + vbt->bdb_offset;
>> > }
>> >
>> > +static const char vbt_signature[4] = "$VBT";
>>
>> Always a bit scary to add strings without termination, but I guess it's
>> justified here.
>
> I guess we could make it look less like a string with eg.
> static const u8 vbt_signature[] = { '$', 'V', 'B', 'T' };
> ?
Alternatively,
static const char *vbt_signature = "$VBT";
>
>> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>>
>>
>> > +
>> > /**
>> > * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
>> > * @display: display device
>> > @@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
>> > return false;
>> > }
>> >
>> > - if (memcmp(vbt->signature, "$VBT", 4)) {
>> > + if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
But then this would need strlen()
>> > drm_dbg_kms(display->drm, "VBT invalid signature\n");
>> > return false;
>> > }
>> > @@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
>> > oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
>> > oprom_offset &= OROM_OFFSET_MASK;
>> >
>> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
And maybe this could be sizeof(vbt_signature) < sizeof(u32)
All of the alternatives are a bit disappointing, so maybe let's just
roll with the patch you already have here?
BR,
Jani.
>> > +
>> > for (count = 0; count < oprom_size; count += 4) {
>> > data = intel_spi_read32(&i915->uncore, oprom_offset + count);
>> > - if (data == *((const u32 *)"$VBT")) {
>> > + if (data == *((const u32 *)vbt_signature)) {
>> > found = oprom_offset + count;
>> > break;
>> > }
>> > @@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
>> > if (!oprom)
>> > return NULL;
>> >
>> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
>> > +
>> > /* Scour memory looking for the VBT signature. */
>> > for (i = 0; i + 4 < size; i += 4) {
>> > - if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
>> > + if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
>> > continue;
>> >
>> > p = oprom + i;
>>
>> --
>> Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c
2024-09-20 17:02 ` Ville Syrjälä
@ 2024-09-23 9:13 ` Jani Nikula
0 siblings, 0 replies; 23+ messages in thread
From: Jani Nikula @ 2024-09-23 9:13 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On Fri, 20 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Thu, Sep 12, 2024 at 03:44:32PM +0300, Jani Nikula wrote:
>> Just nitpicking, but should this (and rom reads above) now sanity check
>> offset+size against rom->size? IDK if it's worth it for such a simple
>> thing. The caller is supposed to know what it's doing.
>
> I considered that but decided to cut my losses before I
> end up designing a whole new kernel subsystem.
Good call. :)
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-23 9:12 ` Jani Nikula
@ 2024-09-23 14:22 ` Ville Syrjälä
2024-09-23 14:24 ` Jani Nikula
0 siblings, 1 reply; 23+ messages in thread
From: Ville Syrjälä @ 2024-09-23 14:22 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, intel-xe
On Mon, Sep 23, 2024 at 12:12:39PM +0300, Jani Nikula wrote:
> On Fri, 20 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> > On Thu, Sep 12, 2024 at 03:15:52PM +0300, Jani Nikula wrote:
> >> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> >
> >> > Replace the three hand rolled "$VBT"s with a vbt_signature[]
> >> > to avoid accidents.
> >> >
> >> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> > ---
> >> > drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
> >> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >> >
> >> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> >> > index cbbda94c3dab..0b92b494117f 100644
> >> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> >> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> >> > @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
> >> > return _vbt + vbt->bdb_offset;
> >> > }
> >> >
> >> > +static const char vbt_signature[4] = "$VBT";
> >>
> >> Always a bit scary to add strings without termination, but I guess it's
> >> justified here.
> >
> > I guess we could make it look less like a string with eg.
> > static const u8 vbt_signature[] = { '$', 'V', 'B', 'T' };
> > ?
>
> Alternatively,
>
> static const char *vbt_signature = "$VBT";
Or could just be something like:
static const char vbt_signature[] = "$VBT";
static const int vbt_signature_len = 4;
BUILD_BUG_ON(vbt_signature_len != sizeof(vbt_signature) - 1);
BUILD_BUG_ON(vbt_signature_len != sizeof(u32));
and use vbt_signature_len instead sizeof(vbt_signature) everwhere.
>
> >
> >> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> >>
> >>
> >> > +
> >> > /**
> >> > * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
> >> > * @display: display device
> >> > @@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
> >> > return false;
> >> > }
> >> >
> >> > - if (memcmp(vbt->signature, "$VBT", 4)) {
> >> > + if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
>
> But then this would need strlen()
>
> >> > drm_dbg_kms(display->drm, "VBT invalid signature\n");
> >> > return false;
> >> > }
> >> > @@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
> >> > oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
> >> > oprom_offset &= OROM_OFFSET_MASK;
> >> >
> >> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
>
> And maybe this could be sizeof(vbt_signature) < sizeof(u32)
>
> All of the alternatives are a bit disappointing, so maybe let's just
> roll with the patch you already have here?
>
> BR,
> Jani.
>
> >> > +
> >> > for (count = 0; count < oprom_size; count += 4) {
> >> > data = intel_spi_read32(&i915->uncore, oprom_offset + count);
> >> > - if (data == *((const u32 *)"$VBT")) {
> >> > + if (data == *((const u32 *)vbt_signature)) {
> >> > found = oprom_offset + count;
> >> > break;
> >> > }
> >> > @@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
> >> > if (!oprom)
> >> > return NULL;
> >> >
> >> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
> >> > +
> >> > /* Scour memory looking for the VBT signature. */
> >> > for (i = 0; i + 4 < size; i += 4) {
> >> > - if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
> >> > + if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
> >> > continue;
> >> >
> >> > p = oprom + i;
> >>
> >> --
> >> Jani Nikula, Intel
>
> --
> Jani Nikula, Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-23 14:22 ` Ville Syrjälä
@ 2024-09-23 14:24 ` Jani Nikula
2024-09-23 14:29 ` Ville Syrjälä
0 siblings, 1 reply; 23+ messages in thread
From: Jani Nikula @ 2024-09-23 14:24 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
On Mon, 23 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Sep 23, 2024 at 12:12:39PM +0300, Jani Nikula wrote:
>> On Fri, 20 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
>> > On Thu, Sep 12, 2024 at 03:15:52PM +0300, Jani Nikula wrote:
>> >> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
>> >> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >> >
>> >> > Replace the three hand rolled "$VBT"s with a vbt_signature[]
>> >> > to avoid accidents.
>> >> >
>> >> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> >> > ---
>> >> > drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
>> >> > 1 file changed, 9 insertions(+), 3 deletions(-)
>> >> >
>> >> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>> >> > index cbbda94c3dab..0b92b494117f 100644
>> >> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> >> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> >> > @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
>> >> > return _vbt + vbt->bdb_offset;
>> >> > }
>> >> >
>> >> > +static const char vbt_signature[4] = "$VBT";
>> >>
>> >> Always a bit scary to add strings without termination, but I guess it's
>> >> justified here.
>> >
>> > I guess we could make it look less like a string with eg.
>> > static const u8 vbt_signature[] = { '$', 'V', 'B', 'T' };
>> > ?
>>
>> Alternatively,
>>
>> static const char *vbt_signature = "$VBT";
>
> Or could just be something like:
>
> static const char vbt_signature[] = "$VBT";
> static const int vbt_signature_len = 4;
>
> BUILD_BUG_ON(vbt_signature_len != sizeof(vbt_signature) - 1);
> BUILD_BUG_ON(vbt_signature_len != sizeof(u32));
>
> and use vbt_signature_len instead sizeof(vbt_signature) everwhere.
Works for me, up to you.
BR,
Jani.
>
>>
>> >
>> >> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>> >>
>> >>
>> >> > +
>> >> > /**
>> >> > * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT
>> >> > * @display: display device
>> >> > @@ -2986,7 +2988,7 @@ bool intel_bios_is_valid_vbt(struct intel_display *display,
>> >> > return false;
>> >> > }
>> >> >
>> >> > - if (memcmp(vbt->signature, "$VBT", 4)) {
>> >> > + if (memcmp(vbt->signature, vbt_signature, sizeof(vbt_signature))) {
>>
>> But then this would need strlen()
>>
>> >> > drm_dbg_kms(display->drm, "VBT invalid signature\n");
>> >> > return false;
>> >> > }
>> >> > @@ -3082,9 +3084,11 @@ static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display,
>> >> > oprom_offset = intel_uncore_read(&i915->uncore, OROM_OFFSET);
>> >> > oprom_offset &= OROM_OFFSET_MASK;
>> >> >
>> >> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
>>
>> And maybe this could be sizeof(vbt_signature) < sizeof(u32)
>>
>> All of the alternatives are a bit disappointing, so maybe let's just
>> roll with the patch you already have here?
>>
>> BR,
>> Jani.
>>
>> >> > +
>> >> > for (count = 0; count < oprom_size; count += 4) {
>> >> > data = intel_spi_read32(&i915->uncore, oprom_offset + count);
>> >> > - if (data == *((const u32 *)"$VBT")) {
>> >> > + if (data == *((const u32 *)vbt_signature)) {
>> >> > found = oprom_offset + count;
>> >> > break;
>> >> > }
>> >> > @@ -3144,9 +3148,11 @@ static struct vbt_header *oprom_get_vbt(struct intel_display *display,
>> >> > if (!oprom)
>> >> > return NULL;
>> >> >
>> >> > + BUILD_BUG_ON(sizeof(vbt_signature) != sizeof(u32));
>> >> > +
>> >> > /* Scour memory looking for the VBT signature. */
>> >> > for (i = 0; i + 4 < size; i += 4) {
>> >> > - if (ioread32(oprom + i) != *((const u32 *)"$VBT"))
>> >> > + if (ioread32(oprom + i) != *((const u32 *)vbt_signature))
>> >> > continue;
>> >> >
>> >> > p = oprom + i;
>> >>
>> >> --
>> >> Jani Nikula, Intel
>>
>> --
>> Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 4/5] drm/i915/bios: Extract vbt_signature[]
2024-09-23 14:24 ` Jani Nikula
@ 2024-09-23 14:29 ` Ville Syrjälä
0 siblings, 0 replies; 23+ messages in thread
From: Ville Syrjälä @ 2024-09-23 14:29 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx, intel-xe
On Mon, Sep 23, 2024 at 05:24:46PM +0300, Jani Nikula wrote:
> On Mon, 23 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> > On Mon, Sep 23, 2024 at 12:12:39PM +0300, Jani Nikula wrote:
> >> On Fri, 20 Sep 2024, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> >> > On Thu, Sep 12, 2024 at 03:15:52PM +0300, Jani Nikula wrote:
> >> >> On Tue, 10 Sep 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> >> >> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> >> >
> >> >> > Replace the three hand rolled "$VBT"s with a vbt_signature[]
> >> >> > to avoid accidents.
> >> >> >
> >> >> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> >> > ---
> >> >> > drivers/gpu/drm/i915/display/intel_bios.c | 12 +++++++++---
> >> >> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >> >> >
> >> >> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> >> >> > index cbbda94c3dab..0b92b494117f 100644
> >> >> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> >> >> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> >> >> > @@ -2964,6 +2964,8 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
> >> >> > return _vbt + vbt->bdb_offset;
> >> >> > }
> >> >> >
> >> >> > +static const char vbt_signature[4] = "$VBT";
> >> >>
> >> >> Always a bit scary to add strings without termination, but I guess it's
> >> >> justified here.
> >> >
> >> > I guess we could make it look less like a string with eg.
> >> > static const u8 vbt_signature[] = { '$', 'V', 'B', 'T' };
> >> > ?
> >>
> >> Alternatively,
> >>
> >> static const char *vbt_signature = "$VBT";
> >
> > Or could just be something like:
> >
> > static const char vbt_signature[] = "$VBT";
> > static const int vbt_signature_len = 4;
> >
> > BUILD_BUG_ON(vbt_signature_len != sizeof(vbt_signature) - 1);
> > BUILD_BUG_ON(vbt_signature_len != sizeof(u32));
> >
> > and use vbt_signature_len instead sizeof(vbt_signature) everwhere.
>
> Works for me, up to you.
I'll roll with that. I guess it's safer to have the '\0'
in case someone gets the urge to do something like
printk("Unable to find %s ...\n", vbt_signature) etc.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2024-09-23 14:29 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-10 13:42 [PATCH 0/5] drm/i915/bios: Refactor ROM access Ville Syrjala
2024-09-10 13:42 ` [PATCH 1/5] drm/i915/bios: Add some size checks to SPI VBT read Ville Syrjala
2024-09-12 11:56 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 2/5] drm/i915/bios: Round PCI ROM VBT allocation to multiple of 4 Ville Syrjala
2024-09-12 11:57 ` Jani Nikula
2024-09-10 13:42 ` [PATCH 3/5] drm/i915/bios: Extract intel_spi_read16() Ville Syrjala
2024-09-12 12:02 ` Jani Nikula
2024-09-20 17:00 ` Ville Syrjälä
2024-09-10 13:42 ` [PATCH 4/5] drm/i915/bios: Extract vbt_signature[] Ville Syrjala
2024-09-12 12:15 ` Jani Nikula
2024-09-20 16:59 ` Ville Syrjälä
2024-09-23 9:12 ` Jani Nikula
2024-09-23 14:22 ` Ville Syrjälä
2024-09-23 14:24 ` Jani Nikula
2024-09-23 14:29 ` Ville Syrjälä
2024-09-10 13:42 ` [PATCH 5/5] drm/i915/bios: Extract soc/intel_rom.c Ville Syrjala
2024-09-12 12:44 ` Jani Nikula
2024-09-20 17:02 ` Ville Syrjälä
2024-09-23 9:13 ` Jani Nikula
2024-09-10 17:29 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Refactor ROM access Patchwork
2024-09-10 17:29 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-09-10 17:46 ` ✓ Fi.CI.BAT: success " Patchwork
2024-09-11 9:10 ` ✗ 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