* [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu
@ 2026-07-13 9:58 Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio Krzysztof Karas
` (6 more replies)
0 siblings, 7 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
It was observed that allocating large objects via i915 driver
(igt-gpu-tools/tests/gem_exec_big/single) the folios and their
pages were not handled properly leading to buffer corruptions
during relocations.
Furthermore, using iommu driver in this context would leave
residual mappings in memory that could not be released, hogging
available RAM even after the process ended.
Krzysztof Karas (5):
drm/i915/gem: Count mapped pages in a folio
iommu/dma: Catch scatterlist length overflows
drm/i915/gem: Pull out size validation into a separate function
drm/i915/gem: Read and shrink memory in a separate function
drm/i915/gem: Remove iterator and use while loop
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 176 +++++++++++++---------
drivers/iommu/dma-iommu.c | 13 +-
2 files changed, 119 insertions(+), 70 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
@ 2026-07-13 9:58 ` Krzysztof Karas
2026-07-15 11:18 ` Janusz Krzysztofik
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
` (5 subsequent siblings)
6 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
With addition of commit 029ae067431a
("drm/i915: Fix potential overflow of shmem scatterlist length")
max_segment size was included in calculating a number of pages
for the scatterlist. This meant that segment sizes considerably
smaller than number of pages in a folio (see shmem_get_pages(),
rebuild_st label for context), were not enough to jump to the
next folio, which has never been a problem before folios have
been intoduced. In result, sg_set_folio() was called multiple
times with nr_pages smaller than folio size, using multitude of
scatterlists, all pointing to the beginning pages of the folio
and never fully covering its range of pages.
Track how many pages have already been counted in a folio to
ensure it is fully covered before reading next folio.
Fixes: 029ae067431a ("drm/i915: Fix potential overflow of shmem scatterlist length")
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/15816
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
---
v3:
* Fixed a bug that caused first folio to never be considered.
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 120 +++++++++++++---------
1 file changed, 70 insertions(+), 50 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
index 06543ae60706..0011d76f5b8c 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
@@ -68,10 +68,13 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
unsigned int max_segment)
{
unsigned int page_count; /* restricted by sg_alloc_table */
- unsigned long i;
+ unsigned long next_pfn = 0; /* suppress gcc warning */
+ unsigned long folio_start = 0;
+ unsigned long folio_end = 0;
+ struct folio *folio = NULL;
struct scatterlist *sg;
- unsigned long next_pfn = 0; /* suppress gcc warning */
gfp_t noreclaim;
+ unsigned long i;
int ret;
if (overflows_type(size / PAGE_SIZE, page_count))
@@ -101,7 +104,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
sg = st->sgl;
st->nents = 0;
for (i = 0; i < page_count; i++) {
- struct folio *folio;
+ unsigned long folio_page_index = 0;
unsigned long nr_pages;
const unsigned int shrink[] = {
I915_SHRINK_BOUND | I915_SHRINK_UNBOUND,
@@ -109,71 +112,87 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
}, *s = shrink;
gfp_t gfp = noreclaim;
- do {
- cond_resched();
- folio = shmem_read_folio_gfp(mapping, i, gfp);
- if (!IS_ERR(folio))
- break;
-
- if (!*s) {
- ret = PTR_ERR(folio);
- goto err_sg;
- }
-
- i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
-
- /*
- * We've tried hard to allocate the memory by reaping
- * our own buffer, now let the real VM do its job and
- * go down in flames if truly OOM.
- *
- * However, since graphics tend to be disposable,
- * defer the oom here by reporting the ENOMEM back
- * to userspace.
- */
- if (!*s) {
- /* reclaim and warn, but no oom */
- gfp = mapping_gfp_mask(mapping);
+ /* Grab the next folio if we exhausted the current one. */
+ if (!i || i > folio_end) {
+ do {
+ cond_resched();
+ folio = shmem_read_folio_gfp(mapping, i, gfp);
+ if (!IS_ERR(folio))
+ break;
+
+ if (!*s) {
+ ret = PTR_ERR(folio);
+ goto err_sg;
+ }
+
+ i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
/*
- * Our bo are always dirty and so we require
- * kswapd to reclaim our pages (direct reclaim
- * does not effectively begin pageout of our
- * buffers on its own). However, direct reclaim
- * only waits for kswapd when under allocation
- * congestion. So as a result __GFP_RECLAIM is
- * unreliable and fails to actually reclaim our
- * dirty pages -- unless you try over and over
- * again with !__GFP_NORETRY. However, we still
- * want to fail this allocation rather than
- * trigger the out-of-memory killer and for
- * this we want __GFP_RETRY_MAYFAIL.
- */
- gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
- }
- } while (1);
+ * We've tried hard to allocate the memory by reaping
+ * our own buffer, now let the real VM do its job and
+ * go down in flames if truly OOM.
+ *
+ * However, since graphics tend to be disposable,
+ * defer the oom here by reporting the ENOMEM back
+ * to userspace.
+ */
+ if (!*s) {
+ /* reclaim and warn, but no oom */
+ gfp = mapping_gfp_mask(mapping);
+
+ /*
+ * Our bo are always dirty and so we require
+ * kswapd to reclaim our pages (direct reclaim
+ * does not effectively begin pageout of our
+ * buffers on its own). However, direct reclaim
+ * only waits for kswapd when under allocation
+ * congestion. So as a result __GFP_RECLAIM is
+ * unreliable and fails to actually reclaim our
+ * dirty pages -- unless you try over and over
+ * again with !__GFP_NORETRY. However, we still
+ * want to fail this allocation rather than
+ * trigger the out-of-memory killer and for
+ * this we want __GFP_RETRY_MAYFAIL.
+ */
+ gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
+ }
+ } while (1);
+
+ folio_start = folio_pgoff(folio);
+ folio_end = folio_start + folio_nr_pages(folio) - 1;
+ }
+
+ folio_page_index = i - folio_start;
+ if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
+ ret = -EINVAL;
+ folio_put(folio);
+ goto err_sg;
+ }
nr_pages = min_array(((unsigned long[]) {
- folio_nr_pages(folio),
+ folio_nr_pages(folio) - folio_page_index,
page_count - i,
- max_segment / PAGE_SIZE,
+ max_t(unsigned int, 1, max_segment / PAGE_SIZE),
}), 3);
if (!i ||
sg->length >= max_segment ||
- folio_pfn(folio) != next_pfn) {
+ folio_pfn(folio) + folio_page_index != next_pfn) {
if (i)
sg = sg_next(sg);
st->nents++;
- sg_set_folio(sg, folio, nr_pages * PAGE_SIZE, 0);
+ sg_set_page(sg, folio_page(folio, folio_page_index),
+ nr_pages * PAGE_SIZE, 0);
} else {
nr_pages = min_t(unsigned long, nr_pages,
- (max_segment - sg->length) / PAGE_SIZE);
+ max_t(unsigned long, 1,
+ (max_segment - sg->length) / PAGE_SIZE));
sg->length += nr_pages * PAGE_SIZE;
}
- next_pfn = folio_pfn(folio) + nr_pages;
+
+ next_pfn = folio_pfn(folio) + folio_page_index + nr_pages;
i += nr_pages - 1;
/* Check that the i965g/gm workaround works. */
@@ -186,6 +205,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
i915_sg_trim(st);
return 0;
+
err_sg:
sg_mark_end(sg);
if (sg != st->sgl) {
--
2.34.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio Krzysztof Karas
@ 2026-07-13 9:58 ` Krzysztof Karas
2026-07-13 10:13 ` sashiko-bot
` (2 more replies)
2026-07-13 9:58 ` [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function Krzysztof Karas
` (4 subsequent siblings)
6 siblings, 3 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
It is possible, when a very large mapping uses only one
scatterlist, that padding overflows scatterlist's length field.
This results in:
1) silently wrapping the value
2) smaller than desired mappings produced by iommu_map_sg
3) leaving mapped bytes in memory (no iommu_unmap)
Address this issue by adding overflow detection for scatterlist
length field.
Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
---
v3:
* Used check_add_overflow suggested by Jason.
I decided not to include previous r-bs due to the change in the
core of this patch: overflows_type -> check_add_overflow and I
obvserved some folks have heavy preference for one or the other.
drivers/iommu/dma-iommu.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 381b60d9e7ce..1a36fd9bf10b 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -1493,7 +1493,18 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
* time through here (i.e. before it has a meaningful value).
*/
if (pad_len && pad_len < s_length - 1) {
- prev->length += pad_len;
+ unsigned int new_pad_len;
+ /*
+ * For large mappings spanning multiple GBs we
+ * may not be able to fit all needed padding into
+ * sg->length.
+ */
+ if (check_add_overflow(prev->length, pad_len, &new_pad_len)) {
+ ret = -EOVERFLOW;
+ goto out_restore_sg;
+ }
+
+ prev->length = new_pad_len;
iova_len += pad_len;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
@ 2026-07-13 9:58 ` Krzysztof Karas
2026-07-15 15:21 ` Janusz Krzysztofik
2026-07-13 9:58 ` [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in " Krzysztof Karas
` (3 subsequent siblings)
6 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
shmem_sg_alloc_table is a very large and hard to read function,
so reduce the number of operations it is responsible for by
placing "size" validation in a new helper.
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
---
v3:
* Split refactoring and put it after the fix in shmem folio
counting suggested by Andi.
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 ++++++++++++++++-------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
index 0011d76f5b8c..4a61b012fb6f 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
@@ -62,6 +62,22 @@ void shmem_sg_free_table(struct sg_table *st, struct address_space *mapping,
sg_free_table(st);
}
+static int validate_size(size_t size, unsigned int page_count,
+ struct intel_memory_region *mr)
+{
+ if (overflows_type(size / PAGE_SIZE, page_count))
+ return -E2BIG;
+
+ /*
+ * If there's no chance of allocating enough pages for the whole
+ * object, bail early.
+ */
+ if (size > resource_size(&mr->region))
+ return -ENOMEM;
+
+ return 0;
+}
+
int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
size_t size, struct intel_memory_region *mr,
struct address_space *mapping,
@@ -77,16 +93,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
unsigned long i;
int ret;
- if (overflows_type(size / PAGE_SIZE, page_count))
- return -E2BIG;
-
page_count = size / PAGE_SIZE;
- /*
- * If there's no chance of allocating enough pages for the whole
- * object, bail early.
- */
- if (size > resource_size(&mr->region))
- return -ENOMEM;
+
+ ret = validate_size(size, page_count, mr);
+ if (ret < 0)
+ return ret;
if (sg_alloc_table(st, page_count, GFP_KERNEL | __GFP_NOWARN))
return -ENOMEM;
--
2.34.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
` (2 preceding siblings ...)
2026-07-13 9:58 ` [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function Krzysztof Karas
@ 2026-07-13 9:58 ` Krzysztof Karas
2026-07-13 10:10 ` sashiko-bot
2026-07-15 15:31 ` Janusz Krzysztofik
2026-07-13 9:58 ` [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop Krzysztof Karas
` (2 subsequent siblings)
6 siblings, 2 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
Continue unloading shmem_sg_alloc_table by placing reading
folios and shrink call into a new helper.
Make the loop a bit more reader-friendly by removing iteration
over a structure and replacing it with a do-while loop.
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
---
v3:
* Split refactoring and put it after the fix in shmem folio
counting suggested by Andi.
* Use do-while loop suggested by Robin.
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 102 ++++++++++++----------
1 file changed, 55 insertions(+), 47 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
index 4a61b012fb6f..7c8de8fe0a22 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
@@ -78,6 +78,55 @@ static int validate_size(size_t size, unsigned int page_count,
return 0;
}
+static struct folio *shmem_shrink_get_folio(struct address_space *mapping,
+ unsigned long folio_index,
+ gfp_t gfp, unsigned int page_count,
+ struct drm_i915_private *i915)
+{
+ struct folio *folio = NULL;
+ unsigned int retries = 2;
+
+ do {
+ cond_resched();
+ folio = shmem_read_folio_gfp(mapping, folio_index, gfp);
+ if (IS_ERR(folio)) {
+ i915_gem_shrink(NULL, i915, 2 * page_count, NULL,
+ I915_SHRINK_BOUND | I915_SHRINK_UNBOUND);
+
+ /*
+ * We've tried hard to allocate the memory by reaping
+ * our own buffer, now let the real VM do its job and
+ * go down in flames if truly OOM.
+ *
+ * However, since graphics tend to be disposable,
+ * defer the oom here by reporting the ENOMEM back
+ * to userspace.
+ *
+ * Reclaim and warn, but no oom.
+ */
+ gfp = mapping_gfp_mask(mapping);
+
+ /*
+ * Our bo are always dirty and so we require
+ * kswapd to reclaim our pages (direct reclaim
+ * does not effectively begin pageout of our
+ * buffers on its own). However, direct reclaim
+ * only waits for kswapd when under allocation
+ * congestion. So as a result __GFP_RECLAIM is
+ * unreliable and fails to actually reclaim our
+ * dirty pages -- unless you try over and over
+ * again with !__GFP_NORETRY. However, we still
+ * want to fail this allocation rather than
+ * trigger the out-of-memory killer and for
+ * this we want __GFP_RETRY_MAYFAIL.
+ */
+ gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
+ }
+ } while (IS_ERR(folio) && --retries);
+
+ return folio;
+}
+
int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
size_t size, struct intel_memory_region *mr,
struct address_space *mapping,
@@ -117,57 +166,16 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
for (i = 0; i < page_count; i++) {
unsigned long folio_page_index = 0;
unsigned long nr_pages;
- const unsigned int shrink[] = {
- I915_SHRINK_BOUND | I915_SHRINK_UNBOUND,
- 0,
- }, *s = shrink;
gfp_t gfp = noreclaim;
/* Grab the next folio if we exhausted the current one. */
if (!i || i > folio_end) {
- do {
- cond_resched();
- folio = shmem_read_folio_gfp(mapping, i, gfp);
- if (!IS_ERR(folio))
- break;
-
- if (!*s) {
- ret = PTR_ERR(folio);
- goto err_sg;
- }
-
- i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
-
- /*
- * We've tried hard to allocate the memory by reaping
- * our own buffer, now let the real VM do its job and
- * go down in flames if truly OOM.
- *
- * However, since graphics tend to be disposable,
- * defer the oom here by reporting the ENOMEM back
- * to userspace.
- */
- if (!*s) {
- /* reclaim and warn, but no oom */
- gfp = mapping_gfp_mask(mapping);
-
- /*
- * Our bo are always dirty and so we require
- * kswapd to reclaim our pages (direct reclaim
- * does not effectively begin pageout of our
- * buffers on its own). However, direct reclaim
- * only waits for kswapd when under allocation
- * congestion. So as a result __GFP_RECLAIM is
- * unreliable and fails to actually reclaim our
- * dirty pages -- unless you try over and over
- * again with !__GFP_NORETRY. However, we still
- * want to fail this allocation rather than
- * trigger the out-of-memory killer and for
- * this we want __GFP_RETRY_MAYFAIL.
- */
- gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
- }
- } while (1);
+ folio = shmem_shrink_get_folio(mapping, i, gfp,
+ page_count, i915);
+ if (IS_ERR(folio)) {
+ ret = PTR_ERR(folio);
+ goto err_sg;
+ }
folio_start = folio_pgoff(folio);
folio_end = folio_start + folio_nr_pages(folio) - 1;
--
2.34.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
` (3 preceding siblings ...)
2026-07-13 9:58 ` [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in " Krzysztof Karas
@ 2026-07-13 9:58 ` Krzysztof Karas
2026-07-13 10:09 ` sashiko-bot
2026-07-15 17:04 ` Janusz Krzysztofik
2026-07-13 11:01 ` ✓ i915.CI.BAT: success for drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Patchwork
2026-07-13 14:14 ` ✗ i915.CI.Full: failure " Patchwork
6 siblings, 2 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-13 9:58 UTC (permalink / raw)
To: intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec,
Krzysztof Karas
Change the main "for" loop into "while" to get rid of obscure
iterator "i" and use more descriptive name to indicate how many
pages were already covered. Detect first loop with st->nents and
put instructions for that case in their own block for easier
reading.
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
---
v3:
* Split refactoring and put it after the fix in shmem folio
counting suggested by Andi.
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 +++++++++++------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
index 7c8de8fe0a22..66d0f8f6ffcc 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
@@ -135,11 +135,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
unsigned int page_count; /* restricted by sg_alloc_table */
unsigned long next_pfn = 0; /* suppress gcc warning */
unsigned long folio_start = 0;
+ unsigned long pages_done = 0;
unsigned long folio_end = 0;
struct folio *folio = NULL;
struct scatterlist *sg;
gfp_t noreclaim;
- unsigned long i;
int ret;
page_count = size / PAGE_SIZE;
@@ -163,15 +163,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
sg = st->sgl;
st->nents = 0;
- for (i = 0; i < page_count; i++) {
+ while (pages_done < page_count) {
unsigned long folio_page_index = 0;
unsigned long nr_pages;
gfp_t gfp = noreclaim;
/* Grab the next folio if we exhausted the current one. */
- if (!i || i > folio_end) {
- folio = shmem_shrink_get_folio(mapping, i, gfp,
- page_count, i915);
+ if (!pages_done || pages_done > folio_end) {
+ folio = shmem_shrink_get_folio(mapping, pages_done, gfp,
+ page_count - pages_done, i915);
if (IS_ERR(folio)) {
ret = PTR_ERR(folio);
goto err_sg;
@@ -181,7 +181,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
folio_end = folio_start + folio_nr_pages(folio) - 1;
}
- folio_page_index = i - folio_start;
+ folio_page_index = pages_done - folio_start;
if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
ret = -EINVAL;
folio_put(folio);
@@ -190,16 +190,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
nr_pages = min_array(((unsigned long[]) {
folio_nr_pages(folio) - folio_page_index,
- page_count - i,
+ page_count - pages_done,
max_t(unsigned int, 1, max_segment / PAGE_SIZE),
}), 3);
-
- if (!i ||
- sg->length >= max_segment ||
- folio_pfn(folio) + folio_page_index != next_pfn) {
- if (i)
- sg = sg_next(sg);
-
+ if (!st->nents) {
+ st->nents++;
+ sg_set_page(sg, folio_page(folio, 0), nr_pages * PAGE_SIZE, 0);
+ } else if (sg->length >= max_segment ||
+ folio_pfn(folio) + folio_page_index != next_pfn) {
+ sg = sg_next(sg);
st->nents++;
sg_set_page(sg, folio_page(folio, folio_page_index),
nr_pages * PAGE_SIZE, 0);
@@ -212,7 +211,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
}
next_pfn = folio_pfn(folio) + folio_page_index + nr_pages;
- i += nr_pages - 1;
+ pages_done += nr_pages;
/* Check that the i965g/gm workaround works. */
GEM_BUG_ON(gfp & __GFP_DMA32 && next_pfn >= 0x00100000UL);
--
2.34.1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop
2026-07-13 9:58 ` [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop Krzysztof Karas
@ 2026-07-13 10:09 ` sashiko-bot
2026-07-15 17:04 ` Janusz Krzysztofik
1 sibling, 0 replies; 24+ messages in thread
From: sashiko-bot @ 2026-07-13 10:09 UTC (permalink / raw)
To: Krzysztof Karas; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Pinned folios are permanently leaked in the error path if an allocation fails before the scatterlist pointer `sg` is advanced past the first entry.
--
--- Patch [5]: [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop ---
commit f3eba03d9fc5ce905a11cce1578d72ea21a144f1
Author: Krzysztof Karas <krzysztof.karas@intel.com>
drm/i915/gem: Remove iterator and use while loop
This commit changes the main "for" loop into a "while" loop to get rid of
the obscure iterator "i" and use a more descriptive name to indicate how
many pages were already covered.
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> index 7c8de8fe0a225..66d0f8f6ffccb 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
[ ... ]
> @@ -212,7 +211,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> }
>
> next_pfn = folio_pfn(folio) + folio_page_index + nr_pages;
> - i += nr_pages - 1;
> + pages_done += nr_pages;
>
> /* Check that the i965g/gm workaround works. */
> GEM_BUG_ON(gfp & __GFP_DMA32 && next_pfn >= 0x00100000UL);
[Severity: High]
This isn't a bug introduced by this patch, but looking at the error handling
in shmem_sg_alloc_table() in drivers/gpu/drm/i915/gem/i915_gem_shmem.c (around
line 228), is it possible to leak pinned folios?
If an allocation fails after successfully allocating the first folio(s) into
the first scatterlist entry, st->nents will be 1 but sg will still equal
st->sgl. The error path jumps to err_sg:
err_sg:
sg_mark_end(sg);
if (sg != st->sgl) {
shmem_sg_free_table(st, mapping, false, false);
} else {
mapping_clear_unevictable(mapping);
sg_free_table(st);
}
Since sg == st->sgl, this takes the else branch and bypasses
shmem_sg_free_table(), leaving the folios in the first scatterlist entry
pinned. Would checking if (st->nents > 0) be more appropriate here?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260713095812.1014365-1-krzysztof.karas@intel.com?part=5
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function
2026-07-13 9:58 ` [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in " Krzysztof Karas
@ 2026-07-13 10:10 ` sashiko-bot
2026-07-15 15:31 ` Janusz Krzysztofik
1 sibling, 0 replies; 24+ messages in thread
From: sashiko-bot @ 2026-07-13 10:10 UTC (permalink / raw)
To: Krzysztof Karas; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Unnecessary double execution of the memory shrinker on the allocation failure path.
--
--- Patch [4]: [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function ---
commit 323006b149f5bd15e61d31522a7aa9cdbf860e09
Author: Krzysztof Karas <krzysztof.karas@intel.com>
drm/i915/gem: Read and shrink memory in a separate function
This commit extracts the memory reading and shrinking logic from
shmem_sg_alloc_table into a new shmem_shrink_get_folio helper. It also
replaces the previous array-based iteration with a do-while loop.
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
[ ... ]
> @@ -78,6 +78,55 @@ static int validate_size(size_t size, unsigned int page_count,
> return 0;
> }
>
> +static struct folio *shmem_shrink_get_folio(struct address_space *mapping,
> + unsigned long folio_index,
> + gfp_t gfp, unsigned int page_count,
> + struct drm_i915_private *i915)
> +{
> + struct folio *folio = NULL;
> + unsigned int retries = 2;
> +
> + do {
> + cond_resched();
> + folio = shmem_read_folio_gfp(mapping, folio_index, gfp);
> + if (IS_ERR(folio)) {
> + i915_gem_shrink(NULL, i915, 2 * page_count, NULL,
> + I915_SHRINK_BOUND | I915_SHRINK_UNBOUND);
[Severity: Medium]
Will this result in an unnecessary double execution of the memory shrinker
when allocations fail?
In the original code, the array-based state machine checked the shrink state
and jumped to the error path before calling i915_gem_shrink again on the
final failure. With the refactored do-while loop, if the second
shmem_read_folio_gfp call fails, the loop unconditionally executes the
shrinker a second time before decrementing the retries counter to 0 and
exiting.
Could this waste CPU cycles and increase lock contention on i915->mm.obj_lock
immediately before returning -ENOMEM to the caller, considering the memory
freed by this second pass is completely ignored?
> +
> + /*
> + * We've tried hard to allocate the memory by reaping
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260713095812.1014365-1-krzysztof.karas@intel.com?part=4
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
@ 2026-07-13 10:13 ` sashiko-bot
2026-07-16 12:39 ` Andi Shyti
2026-07-16 13:48 ` Robin Murphy
2 siblings, 0 replies; 24+ messages in thread
From: sashiko-bot @ 2026-07-13 10:13 UTC (permalink / raw)
To: Krzysztof Karas; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [High] `__invalidate_sg()` corrupts unprocessed scatterlist segments on mapping failure if the scatterlist was previously mapped.
- [High] Silent truncation of `s->length` during IOVA alignment leads to IOMMU page table memory leak.
--
--- Patch [2]: [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows ---
commit 9f9c6b9481d1f01d396391f99642a7f233aa6651
Author: Krzysztof Karas <krzysztof.karas@intel.com>
iommu/dma: Catch scatterlist length overflows
This commit adds an overflow detection for the scatterlist length field
padding in iommu_dma_map_sg(). When a very large mapping uses only one
scatterlist, padding could overflow the length field resulting in small
mappings and left-over bytes in memory.
> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 9abaec0703efb..39da61b4e549e 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
[ ... ]
> @@ -1493,7 +1493,18 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
> * time through here (i.e. before it has a meaningful value).
> */
> if (pad_len && pad_len < s_length - 1) {
> - prev->length += pad_len;
> + unsigned int new_pad_len;
> + /*
> + * For large mappings spanning multiple GBs we
> + * may not be able to fit all needed padding into
> + * sg->length.
> + */
> + if (check_add_overflow(prev->length, pad_len, &new_pad_len)) {
> + ret = -EOVERFLOW;
> + goto out_restore_sg;
[Severity: High]
This is a pre-existing issue, but does jumping to out_restore_sg here
corrupt unprocessed scatterlist segments if the list was previously mapped?
If a driver maps, unmaps, and then re-maps a scatterlist, the unmap step
does not reset sg_dma_address() to DMA_MAPPING_ERROR. When this new error
path triggers, __invalidate_sg() will iterate over all segments. For the
unprocessed segments that still contain valid DMA addresses from the previous
mapping, __invalidate_sg() will incorrectly assume they were modified:
drivers/iommu/dma-iommu.c:__invalidate_sg() {
...
if (sg_dma_address(s) != DMA_MAPPING_ERROR)
s->offset += sg_dma_address(s);
if (sg_dma_len(s))
s->length = sg_dma_len(s);
...
}
Could this overwrite the physical boundaries of the segments, potentially
leading to memory corruption on subsequent DMA operations?
> + }
> +
> + prev->length = new_pad_len;
> iova_len += pad_len;
> }
[Severity: High]
This isn't a bug introduced by this patch, but while handling large mappings
spanning multiple GBs, can s->length be silently truncated earlier in this
loop?
Before the padding step, the size_t s_length is aligned and assigned back to
s->length (which is a 32-bit unsigned int):
drivers/iommu/dma-iommu.c:iommu_dma_map_sg() {
...
s_length = iova_align(iovad, s_length + s_iova_off);
s->length = s_length;
...
}
If the aligned size_t exceeds UINT_MAX, it truncates. The iova_len
calculation uses the non-truncated size_t, allocating correct IOVA space,
but iommu_map_sg() will use the truncated s->length, mapping fewer bytes.
Since iommu_map_sg() succeeds in mapping the smaller size, it returns a
positive value. This triggers the error path:
drivers/iommu/dma-iommu.c:iommu_dma_map_sg() {
...
ret = iommu_map_sg(domain, iova, sg, nents, prot, GFP_ATOMIC);
if (ret < 0 || ret < iova_len)
goto out_free_iova;
...
out_free_iova:
iommu_dma_free_iova(domain, iova, iova_len, NULL);
...
}
Because out_free_iova only frees the IOVA allocator region and does not call
iommu_unmap(), does this permanently leak the hardware IOMMU page table
entries?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260713095812.1014365-1-krzysztof.karas@intel.com?part=2
^ permalink raw reply [flat|nested] 24+ messages in thread
* ✓ i915.CI.BAT: success for drivers: Improve memory management for large object allocations when i915/shmem is used with iommu
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
` (4 preceding siblings ...)
2026-07-13 9:58 ` [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop Krzysztof Karas
@ 2026-07-13 11:01 ` Patchwork
2026-07-13 14:14 ` ✗ i915.CI.Full: failure " Patchwork
6 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-07-13 11:01 UTC (permalink / raw)
To: Krzysztof Karas; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 1057 bytes --]
== Series Details ==
Series: drivers: Improve memory management for large object allocations when i915/shmem is used with iommu
URL : https://patchwork.freedesktop.org/series/170304/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18810 -> Patchwork_170304v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/index.html
Participating hosts (42 -> 40)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Changes
-------
No changes found
Build changes
-------------
* Linux: CI_DRM_18810 -> Patchwork_170304v1
CI-20190529: 20190529
CI_DRM_18810: 83d782d98f4ebb4a10b8ee107e3a389917e0b218 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9003: 9003
Patchwork_170304v1: 83d782d98f4ebb4a10b8ee107e3a389917e0b218 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/index.html
[-- Attachment #2: Type: text/html, Size: 1622 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* ✗ i915.CI.Full: failure for drivers: Improve memory management for large object allocations when i915/shmem is used with iommu
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
` (5 preceding siblings ...)
2026-07-13 11:01 ` ✓ i915.CI.BAT: success for drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Patchwork
@ 2026-07-13 14:14 ` Patchwork
6 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-07-13 14:14 UTC (permalink / raw)
To: Krzysztof Karas; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 94884 bytes --]
== Series Details ==
Series: drivers: Improve memory management for large object allocations when i915/shmem is used with iommu
URL : https://patchwork.freedesktop.org/series/170304/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_18810_full -> Patchwork_170304v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_170304v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_170304v1_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 (10 -> 10)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_170304v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@syncobj_timeline:
- shard-dg2: NOTRUN -> [INCOMPLETE][1]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-4/igt@syncobj_timeline.html
New tests
---------
New tests have been introduced between CI_DRM_18810_full and Patchwork_170304v1_full:
### New IGT tests (3) ###
* igt@syncobj_timeline@rc6:
- Statuses :
- Exec time: [None] s
* igt@syncobj_timeline@static-toggle-suspend:
- Statuses :
- Exec time: [None] s
* igt@syncobj_timeline@system-suspend-execbuf:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in Patchwork_170304v1_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@api_intel_bb@blit-reloc-keep-cache:
- shard-rkl: NOTRUN -> [SKIP][2] ([i915#8411])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@api_intel_bb@blit-reloc-keep-cache.html
* igt@api_intel_bb@object-reloc-keep-cache:
- shard-dg1: NOTRUN -> [SKIP][3] ([i915#8411])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@api_intel_bb@object-reloc-keep-cache.html
* igt@drm_buddy@drm_buddy:
- shard-tglu-1: NOTRUN -> [SKIP][4] ([i915#15678])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@drm_buddy@drm_buddy.html
* igt@gem_bad_reloc@negative-reloc-lut:
- shard-rkl: NOTRUN -> [SKIP][5] ([i915#3281]) +7 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@gem_bad_reloc@negative-reloc-lut.html
* igt@gem_ccs@block-multicopy-compressed:
- shard-rkl: NOTRUN -> [SKIP][6] ([i915#14544] / [i915#9323])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@gem_ccs@block-multicopy-compressed.html
* igt@gem_ccs@ctrl-surf-copy:
- shard-tglu: NOTRUN -> [SKIP][7] ([i915#3555] / [i915#9323])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@gem_ccs@ctrl-surf-copy.html
* igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0:
- shard-dg2: NOTRUN -> [INCOMPLETE][8] ([i915#13356] / [i915#16348])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-3/igt@gem_ccs@suspend-resume@tile4-compressed-compfmt0-smem-lmem0.html
* igt@gem_create@create-ext-cpu-access-sanity-check:
- shard-rkl: NOTRUN -> [SKIP][9] ([i915#6335])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@gem_create@create-ext-cpu-access-sanity-check.html
* igt@gem_create@create-ext-set-pat:
- shard-tglu-1: NOTRUN -> [SKIP][10] ([i915#8562])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gem_create@create-ext-set-pat.html
* igt@gem_ctx_sseu@invalid-args:
- shard-tglu-1: NOTRUN -> [SKIP][11] ([i915#280])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gem_ctx_sseu@invalid-args.html
* igt@gem_exec_balancer@bonded-true-hang:
- shard-dg1: NOTRUN -> [SKIP][12] ([i915#4812])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@gem_exec_balancer@bonded-true-hang.html
* igt@gem_exec_balancer@parallel-ordering:
- shard-rkl: NOTRUN -> [SKIP][13] ([i915#4525])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@gem_exec_balancer@parallel-ordering.html
* igt@gem_exec_capture@capture-invisible:
- shard-glk10: NOTRUN -> [SKIP][14] ([i915#6334]) +1 other test skip
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@gem_exec_capture@capture-invisible.html
* igt@gem_exec_reloc@basic-cpu-read:
- shard-dg1: NOTRUN -> [SKIP][15] ([i915#3281]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@gem_exec_reloc@basic-cpu-read.html
* igt@gem_exec_suspend@basic-s0:
- shard-dg2: [PASS][16] -> [INCOMPLETE][17] ([i915#13356]) +1 other test incomplete
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-4/igt@gem_exec_suspend@basic-s0.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-6/igt@gem_exec_suspend@basic-s0.html
* igt@gem_huc_copy@huc-copy:
- shard-tglu-1: NOTRUN -> [SKIP][18] ([i915#2190])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@basic:
- shard-tglu-1: NOTRUN -> [SKIP][19] ([i915#4613])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gem_lmem_swapping@basic.html
* igt@gem_lmem_swapping@heavy-random:
- shard-tglu: NOTRUN -> [SKIP][20] ([i915#4613]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@gem_lmem_swapping@heavy-random.html
* igt@gem_lmem_swapping@heavy-verify-random:
- shard-rkl: NOTRUN -> [SKIP][21] ([i915#4613]) +2 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@gem_lmem_swapping@heavy-verify-random.html
* igt@gem_lmem_swapping@smem-oom:
- shard-glk: NOTRUN -> [SKIP][22] ([i915#4613])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk1/igt@gem_lmem_swapping@smem-oom.html
* igt@gem_pread@exhaustion:
- shard-rkl: NOTRUN -> [SKIP][23] ([i915#3282]) +2 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@gem_pread@exhaustion.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk10: NOTRUN -> [WARN][24] ([i915#14702] / [i915#2658])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_pxp@hw-rejects-pxp-context:
- shard-rkl: NOTRUN -> [SKIP][25] ([i915#13717])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@gem_pxp@hw-rejects-pxp-context.html
* igt@gem_set_tiling_vs_blt@tiled-to-untiled:
- shard-dg1: NOTRUN -> [SKIP][26] ([i915#4079])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@gem_set_tiling_vs_blt@tiled-to-untiled.html
* igt@gem_userptr_blits@create-destroy-unsync:
- shard-tglu-1: NOTRUN -> [SKIP][27] ([i915#3297])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gem_userptr_blits@create-destroy-unsync.html
* igt@gem_workarounds@suspend-resume-fd:
- shard-rkl: [PASS][28] -> [INCOMPLETE][29] ([i915#13356])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-4/igt@gem_workarounds@suspend-resume-fd.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-3/igt@gem_workarounds@suspend-resume-fd.html
* igt@gen9_exec_parse@bb-start-far:
- shard-tglu: NOTRUN -> [SKIP][30] ([i915#2527] / [i915#2856]) +1 other test skip
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@gen9_exec_parse@bb-start-far.html
* igt@gen9_exec_parse@secure-batches:
- shard-rkl: NOTRUN -> [SKIP][31] ([i915#2527])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@gen9_exec_parse@secure-batches.html
* igt@gen9_exec_parse@valid-registers:
- shard-tglu-1: NOTRUN -> [SKIP][32] ([i915#2527] / [i915#2856]) +2 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@gen9_exec_parse@valid-registers.html
* igt@i915_module_load@resize-bar:
- shard-tglu: NOTRUN -> [SKIP][33] ([i915#6412])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@i915_module_load@resize-bar.html
* igt@i915_pm_freq_api@freq-suspend:
- shard-tglu-1: NOTRUN -> [SKIP][34] ([i915#8399])
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@i915_pm_freq_api@freq-suspend.html
* igt@i915_pm_rc6_residency@rc6-fence:
- shard-tglu: NOTRUN -> [WARN][35] ([i915#13790] / [i915#2681]) +1 other test warn
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@i915_pm_rc6_residency@rc6-fence.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-tglu-1: NOTRUN -> [SKIP][36] ([i915#14498])
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@i915_pm_rpm@system-suspend-execbuf:
- shard-dg2: [PASS][37] -> [DMESG-WARN][38] ([i915#13562])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-4/igt@i915_pm_rpm@system-suspend-execbuf.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-4/igt@i915_pm_rpm@system-suspend-execbuf.html
* igt@i915_pm_sseu@full-enable:
- shard-tglu: NOTRUN -> [SKIP][39] ([i915#4387])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@i915_pm_sseu@full-enable.html
* igt@i915_query@hwconfig_table:
- shard-rkl: NOTRUN -> [SKIP][40] ([i915#6245])
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@i915_query@hwconfig_table.html
* igt@i915_suspend@fence-restore-untiled:
- shard-glk11: NOTRUN -> [INCOMPLETE][41] ([i915#16182] / [i915#4817])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk11/igt@i915_suspend@fence-restore-untiled.html
* igt@i915_suspend@forcewake:
- shard-glk: NOTRUN -> [INCOMPLETE][42] ([i915#16182] / [i915#4817])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk1/igt@i915_suspend@forcewake.html
* igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
- shard-tglu: NOTRUN -> [SKIP][43] ([i915#12454] / [i915#12712])
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-dg1: [PASS][44] -> [FAIL][45] ([i915#14888])
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg1-16/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-1:
- shard-dg1: NOTRUN -> [FAIL][46] ([i915#14888])
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-15/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-1.html
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-tglu: NOTRUN -> [SKIP][47] ([i915#1769] / [i915#3555])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
- shard-dg1: NOTRUN -> [SKIP][48] ([i915#1769] / [i915#3555])
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
* igt@kms_big_fb@4-tiled-addfb:
- shard-tglu-1: NOTRUN -> [SKIP][49] ([i915#5286]) +2 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_big_fb@4-tiled-addfb.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-rkl: NOTRUN -> [SKIP][50] ([i915#5286]) +3 other tests skip
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-dg1: NOTRUN -> [SKIP][51] ([i915#4538] / [i915#5286])
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip:
- shard-tglu: NOTRUN -> [SKIP][52] ([i915#5286]) +3 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip.html
* igt@kms_big_fb@linear-64bpp-rotate-90:
- shard-rkl: NOTRUN -> [SKIP][53] ([i915#3638]) +1 other test skip
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_big_fb@linear-64bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-90:
- shard-dg1: NOTRUN -> [SKIP][54] ([i915#4538])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_big_fb@yf-tiled-32bpp-rotate-90.html
* igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs@pipe-c-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][55] ([i915#14098] / [i915#6095]) +39 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_ccs@bad-rotation-90-4-tiled-dg2-rc-ccs@pipe-c-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][56] ([i915#6095]) +212 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-17/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs-cc@pipe-b-hdmi-a-4.html
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs:
- shard-tglu: NOTRUN -> [SKIP][57] ([i915#6095]) +29 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc:
- shard-glk: NOTRUN -> [SKIP][58] +171 other tests skip
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk2/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-tglu: NOTRUN -> [SKIP][59] ([i915#12313])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][60] ([i915#6095]) +65 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][61] ([i915#10307] / [i915#6095]) +97 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html
* igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1:
- shard-glk10: NOTRUN -> [SKIP][62] +126 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][63] ([i915#12805])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1:
- shard-glk: [PASS][64] -> [INCOMPLETE][65] ([i915#15582])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk2/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk8/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-d-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][66] ([i915#6095]) +7 other tests skip
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-3/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-d-hdmi-a-3.html
* igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [INCOMPLETE][67] ([i915#15582]) +1 other test incomplete
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk6/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-a-hdmi-a-1.html
* igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1:
- shard-tglu-1: NOTRUN -> [SKIP][68] ([i915#6095]) +39 other tests skip
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_ccs@missing-ccs-buffer-y-tiled-gen12-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
- shard-tglu-1: NOTRUN -> [SKIP][69] ([i915#12313]) +1 other test skip
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1:
- shard-dg2: NOTRUN -> [SKIP][70] ([i915#10307] / [i915#10434] / [i915#6095]) +1 other test skip
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-4/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-hdmi-a-1.html
* igt@kms_cdclk@mode-transition-all-outputs:
- shard-rkl: NOTRUN -> [SKIP][71] ([i915#3742])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_cdclk@mode-transition-all-outputs.html
* igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-3:
- shard-dg2: NOTRUN -> [SKIP][72] ([i915#13781]) +3 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-5/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-3.html
* igt@kms_chamelium_audio@dp-audio-after-suspend:
- shard-rkl: NOTRUN -> [SKIP][73] ([i915#11151])
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_chamelium_audio@dp-audio-after-suspend.html
* igt@kms_chamelium_audio@hdmi-audio-edid:
- shard-tglu: NOTRUN -> [SKIP][74] ([i915#11151] / [i915#7828]) +3 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_chamelium_audio@hdmi-audio-edid.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d:
- shard-tglu: NOTRUN -> [SKIP][75] ([i915#16471])
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d:
- shard-rkl: NOTRUN -> [SKIP][76] ([i915#16471])
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-post-ctm3x4:
- shard-tglu-1: NOTRUN -> [SKIP][77] ([i915#16471])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_chamelium_color_pipeline@plane-lut1d-post-ctm3x4.html
* igt@kms_chamelium_frames@dp-crc-fast:
- shard-dg1: NOTRUN -> [SKIP][78] ([i915#11151] / [i915#7828]) +1 other test skip
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_chamelium_frames@dp-crc-fast.html
* igt@kms_chamelium_frames@hdmi-frame-dump:
- shard-tglu-1: NOTRUN -> [SKIP][79] ([i915#11151] / [i915#7828]) +6 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_chamelium_frames@hdmi-frame-dump.html
* igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
- shard-rkl: NOTRUN -> [SKIP][80] ([i915#11151] / [i915#7828]) +5 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html
* igt@kms_content_protection@atomic-dpms:
- shard-tglu-1: NOTRUN -> [SKIP][81] ([i915#15865])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-tglu: NOTRUN -> [SKIP][82] ([i915#15330] / [i915#3116] / [i915#3299])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
- shard-tglu-1: NOTRUN -> [SKIP][83] ([i915#15330])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html
* igt@kms_content_protection@dp-mst-type-0-suspend-resume:
- shard-rkl: NOTRUN -> [SKIP][84] ([i915#15330])
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-tglu: NOTRUN -> [SKIP][85] ([i915#15865]) +1 other test skip
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_content_protection@legacy@pipe-a-dp-3:
- shard-dg2: NOTRUN -> [FAIL][86] ([i915#7173])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_content_protection@legacy@pipe-a-dp-3.html
* igt@kms_content_protection@lic-type-0-hdcp14:
- shard-dg1: NOTRUN -> [SKIP][87] ([i915#15865])
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_content_protection@lic-type-0-hdcp14.html
* igt@kms_content_protection@srm:
- shard-rkl: NOTRUN -> [SKIP][88] ([i915#15865]) +2 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_content_protection@srm.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-tglu-1: NOTRUN -> [SKIP][89] ([i915#13049])
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-256x85:
- shard-tglu-1: NOTRUN -> [FAIL][90] ([i915#13566]) +3 other tests fail
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-256x85.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-tglu: NOTRUN -> [SKIP][91] ([i915#13049])
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-512x170:
- shard-rkl: NOTRUN -> [SKIP][92] ([i915#13049])
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_cursor_crc@cursor-random-512x170.html
* igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [FAIL][93] ([i915#13566])
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html
* igt@kms_cursor_crc@cursor-sliding-max-size:
- shard-tglu-1: NOTRUN -> [SKIP][94] ([i915#3555]) +3 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-max-size.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-rkl: NOTRUN -> [SKIP][95] ([i915#4103]) +1 other test skip
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
- shard-rkl: NOTRUN -> [SKIP][96] +50 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-dg1: NOTRUN -> [SKIP][97] ([i915#4103])
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-tglu-1: NOTRUN -> [SKIP][98] ([i915#4103])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-tglu-1: NOTRUN -> [SKIP][99] ([i915#9723])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc:
- shard-dg2: [PASS][100] -> [SKIP][101] ([i915#3555])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-5/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
* igt@kms_dp_link_training@non-uhbr-sst:
- shard-tglu-1: NOTRUN -> [SKIP][102] ([i915#13749])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_dp_link_training@non-uhbr-sst.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-rkl: NOTRUN -> [SKIP][103] ([i915#13748])
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-dg1: NOTRUN -> [SKIP][104] ([i915#13707])
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_dp_linktrain_fallback@dp-fallback.html
* igt@kms_dsc@dsc-basic:
- shard-rkl: NOTRUN -> [SKIP][105] ([i915#16361]) +1 other test skip
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_dsc@dsc-basic.html
* igt@kms_dsc@dsc-with-formats:
- shard-tglu: NOTRUN -> [SKIP][106] ([i915#16361]) +3 other tests skip
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_dsc@dsc-with-formats.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-tglu-1: NOTRUN -> [SKIP][107] ([i915#16361]) +2 other tests skip
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_dsc@dsc-with-output-formats-bigjoiner:
- shard-dg1: NOTRUN -> [SKIP][108] ([i915#16361])
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_dsc@dsc-with-output-formats-bigjoiner.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-rkl: NOTRUN -> [SKIP][109] ([i915#3955])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_feature_discovery@chamelium:
- shard-tglu-1: NOTRUN -> [SKIP][110] ([i915#2065])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_feature_discovery@chamelium.html
* igt@kms_feature_discovery@display-3x:
- shard-rkl: NOTRUN -> [SKIP][111] ([i915#16081])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@display-4x:
- shard-glk11: NOTRUN -> [SKIP][112] +27 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk11/igt@kms_feature_discovery@display-4x.html
* igt@kms_feature_discovery@hdr:
- shard-tglu-1: NOTRUN -> [SKIP][113] ([i915#16600])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_feature_discovery@hdr.html
* igt@kms_flip@2x-blocking-wf_vblank:
- shard-tglu: NOTRUN -> [SKIP][114] ([i915#3637] / [i915#9934]) +4 other tests skip
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_flip@2x-blocking-wf_vblank.html
* igt@kms_flip@2x-flip-vs-dpms:
- shard-rkl: NOTRUN -> [SKIP][115] ([i915#9934]) +6 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_flip@2x-flip-vs-dpms.html
* igt@kms_flip@2x-flip-vs-panning-vs-hang:
- shard-dg1: NOTRUN -> [SKIP][116] ([i915#9934]) +1 other test skip
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
* igt@kms_flip@2x-plain-flip:
- shard-tglu-1: NOTRUN -> [SKIP][117] ([i915#3637] / [i915#9934]) +5 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_flip@2x-plain-flip.html
* igt@kms_flip@wf_vblank-ts-check-interruptible:
- shard-rkl: [PASS][118] -> [FAIL][119] ([i915#14600])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-5/igt@kms_flip@wf_vblank-ts-check-interruptible.html
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_flip@wf_vblank-ts-check-interruptible.html
* igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a2:
- shard-rkl: NOTRUN -> [FAIL][120] ([i915#14600])
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_flip@wf_vblank-ts-check-interruptible@b-hdmi-a2.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
- shard-tglu: NOTRUN -> [SKIP][121] ([i915#15643])
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
- shard-tglu-1: NOTRUN -> [SKIP][122] ([i915#15643]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-dg1: NOTRUN -> [SKIP][123] ([i915#15643]) +2 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-rkl: NOTRUN -> [SKIP][124] ([i915#15643]) +1 other test skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-tglu-1: NOTRUN -> [SKIP][125] +75 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render:
- shard-tglu: NOTRUN -> [SKIP][126] +49 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][127] ([i915#1825]) +8 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-rkl: [PASS][128] -> [INCOMPLETE][129] ([i915#10056])
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-suspend.html
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-suspend.html
- shard-glk11: NOTRUN -> [INCOMPLETE][130] ([i915#10056] / [i915#16593])
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk11/igt@kms_frontbuffer_tracking@fbc-suspend.html
* igt@kms_frontbuffer_tracking@fbc-tiling-4:
- shard-tglu: NOTRUN -> [SKIP][131] ([i915#5439])
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-indfb-fliptrack-mmap-gtt:
- shard-tglu-1: NOTRUN -> [SKIP][132] ([i915#15989]) +15 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbchdr-1p-indfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-pri-indfb-multidraw:
- shard-dg2: [PASS][133] -> [SKIP][134] ([i915#15989]) +6 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_frontbuffer_tracking@fbchdr-1p-pri-indfb-multidraw.html
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbchdr-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-pwrite:
- shard-glk: [PASS][135] -> [SKIP][136] +10 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk8/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-pwrite.html
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk9/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-pri-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbchdr-modesetfrombusy:
- shard-rkl: NOTRUN -> [SKIP][137] ([i915#15989]) +11 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbchdr-modesetfrombusy.html
* igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render:
- shard-rkl: [PASS][138] -> [SKIP][139] ([i915#15989]) +9 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render.html
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_frontbuffer_tracking@fbchdr-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-pwrite:
- shard-dg1: NOTRUN -> [SKIP][140] ([i915#15989]) +3 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_frontbuffer_tracking@fbchdr-rgb565-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbchdr-suspend:
- shard-glk10: NOTRUN -> [INCOMPLETE][141] ([i915#16056] / [i915#16593])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@kms_frontbuffer_tracking@fbchdr-suspend.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
- shard-rkl: NOTRUN -> [SKIP][142] ([i915#15102] / [i915#3023]) +13 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
- shard-tglu-1: NOTRUN -> [SKIP][143] ([i915#15102]) +30 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
- shard-tglu-1: NOTRUN -> [SKIP][144] ([i915#5439])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-rkl: NOTRUN -> [SKIP][145] ([i915#15102]) +14 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
- shard-tglu: NOTRUN -> [SKIP][146] ([i915#15989]) +10 other tests skip
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@pipe-fbc-rte:
- shard-tglu-1: NOTRUN -> [SKIP][147] ([i915#9766])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-dg1: NOTRUN -> [SKIP][148] ([i915#15990] / [i915#8708]) +6 other tests skip
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary:
- shard-tglu: NOTRUN -> [SKIP][149] ([i915#15102]) +21 other tests skip
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_frontbuffer_tracking@psr-shrfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@psr-suspend:
- shard-dg1: NOTRUN -> [SKIP][150] ([i915#15102]) +4 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-suspend.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
- shard-dg1: NOTRUN -> [SKIP][151] +15 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html
* igt@kms_hdr@bpc-switch:
- shard-rkl: [PASS][152] -> [SKIP][153] ([i915#3555] / [i915#8228])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_hdr@bpc-switch.html
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_hdr@bpc-switch.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-rkl: NOTRUN -> [SKIP][154] ([i915#3555] / [i915#8228])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_hdr@bpc-switch-suspend:
- shard-tglu-1: NOTRUN -> [SKIP][155] ([i915#3555] / [i915#8228])
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_hdr@bpc-switch-suspend.html
* igt@kms_hdr@brightness-with-hdr:
- shard-tglu-1: NOTRUN -> [SKIP][156] ([i915#12713])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@invalid-hdr:
- shard-tglu: NOTRUN -> [SKIP][157] ([i915#3555] / [i915#8228])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_hdr@invalid-hdr.html
* igt@kms_joiner@basic-big-joiner:
- shard-rkl: NOTRUN -> [SKIP][158] ([i915#15460])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_joiner@basic-big-joiner.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-tglu-1: NOTRUN -> [SKIP][159] ([i915#15459])
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-tglu-1: NOTRUN -> [SKIP][160] ([i915#15458])
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-tglu-1: NOTRUN -> [SKIP][161] ([i915#15460])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_joiner@invalid-modeset-force-ultra-joiner:
- shard-tglu: NOTRUN -> [SKIP][162] ([i915#15458])
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-rkl: NOTRUN -> [SKIP][163] ([i915#15815])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_panel_fitting@atomic-fastset:
- shard-tglu: NOTRUN -> [SKIP][164] ([i915#6301])
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_panel_fitting@atomic-fastset.html
* igt@kms_pipe_crc_basic@suspend-read-crc:
- shard-rkl: NOTRUN -> [INCOMPLETE][165] ([i915#12756] / [i915#13476])
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_pipe_crc_basic@suspend-read-crc.html
* igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [INCOMPLETE][166] ([i915#13476])
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-a-hdmi-a-2.html
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-tglu-1: NOTRUN -> [SKIP][167] ([i915#14712])
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
* igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier:
- shard-rkl: NOTRUN -> [SKIP][168] ([i915#15709]) +3 other tests skip
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier:
- shard-tglu: NOTRUN -> [SKIP][169] ([i915#15709]) +1 other test skip
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-y-tiled-ccs-modifier-source-clamping:
- shard-dg1: NOTRUN -> [SKIP][170] ([i915#15709])
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_plane@pixel-format-y-tiled-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7:
- shard-tglu-1: NOTRUN -> [SKIP][171] ([i915#16386]) +1 other test skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7.html
* igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping:
- shard-tglu-1: NOTRUN -> [SKIP][172] ([i915#15709]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_plane@pixel-format-yf-tiled-modifier-source-clamping.html
* igt@kms_plane_multiple@2x-tiling-x:
- shard-tglu-1: NOTRUN -> [SKIP][173] ([i915#13958])
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-x.html
* igt@kms_plane_multiple@tiling-4:
- shard-rkl: NOTRUN -> [SKIP][174] ([i915#14259])
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_plane_multiple@tiling-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
- shard-tglu: NOTRUN -> [SKIP][175] ([i915#15329]) +4 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html
* igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b:
- shard-tglu-1: NOTRUN -> [SKIP][176] ([i915#15329]) +4 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_plane_scaling@plane-scaler-unity-scaling-with-rotation@pipe-b.html
* igt@kms_pm_backlight@bad-brightness:
- shard-tglu-1: NOTRUN -> [SKIP][177] ([i915#12343] / [i915#9812])
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_backlight@basic-brightness:
- shard-tglu: NOTRUN -> [SKIP][178] ([i915#12343] / [i915#9812])
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_pm_backlight@brightness-with-dpms:
- shard-rkl: NOTRUN -> [SKIP][179] ([i915#12343])
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_pm_backlight@brightness-with-dpms.html
* igt@kms_pm_dc@dc6-psr:
- shard-tglu-1: NOTRUN -> [SKIP][180] ([i915#15948])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu-1: NOTRUN -> [SKIP][181] ([i915#15739])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-dg1: [PASS][182] -> [SKIP][183] ([i915#15073])
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg1-16/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-15/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-dg1: NOTRUN -> [SKIP][184] ([i915#15073])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@kms_pm_rpm@modeset-non-lpsp-stress:
- shard-rkl: [PASS][185] -> [SKIP][186] ([i915#15073]) +1 other test skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-3/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
* igt@kms_pm_rpm@package-g7:
- shard-tglu-1: NOTRUN -> [SKIP][187] ([i915#15403])
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_pm_rpm@package-g7.html
* igt@kms_prime@basic-crc-hybrid:
- shard-tglu: NOTRUN -> [SKIP][188] ([i915#6524])
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_prime@basic-crc-hybrid.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf:
- shard-dg1: NOTRUN -> [SKIP][189] ([i915#11520])
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
- shard-glk: NOTRUN -> [SKIP][190] ([i915#11520]) +2 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk1/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html
* igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
- shard-glk10: NOTRUN -> [SKIP][191] ([i915#11520]) +2 other tests skip
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
- shard-tglu: NOTRUN -> [SKIP][192] ([i915#11520]) +3 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-3/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb:
- shard-rkl: NOTRUN -> [SKIP][193] ([i915#11520]) +2 other tests skip
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html
* igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
- shard-tglu-1: NOTRUN -> [SKIP][194] ([i915#11520]) +5 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-tglu-1: NOTRUN -> [SKIP][195] ([i915#9683])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr2_su@page_flip-xrgb8888:
- shard-rkl: NOTRUN -> [SKIP][196] ([i915#9683])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_psr2_su@page_flip-xrgb8888.html
* igt@kms_psr@fbc-psr2-basic:
- shard-dg1: NOTRUN -> [SKIP][197] ([i915#1072] / [i915#9732]) +5 other tests skip
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_psr@fbc-psr2-basic.html
* igt@kms_psr@fbc-psr2-sprite-render:
- shard-tglu-1: NOTRUN -> [SKIP][198] ([i915#9732]) +12 other tests skip
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_psr@fbc-psr2-sprite-render.html
* igt@kms_psr@psr2-cursor-plane-onoff:
- shard-tglu: NOTRUN -> [SKIP][199] ([i915#9732]) +9 other tests skip
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_psr@psr2-cursor-plane-onoff.html
* igt@kms_psr@psr2-primary-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][200] ([i915#1072] / [i915#9732]) +10 other tests skip
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-7/igt@kms_psr@psr2-primary-mmap-gtt.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-rkl: NOTRUN -> [SKIP][201] ([i915#15949])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
- shard-tglu-1: NOTRUN -> [SKIP][202] ([i915#15949])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html
* igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
- shard-glk10: NOTRUN -> [INCOMPLETE][203] ([i915#15500] / [i915#16184])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk10/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-rkl: NOTRUN -> [SKIP][204] ([i915#5289])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-tglu-1: NOTRUN -> [SKIP][205] ([i915#5289])
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_scaling_modes@scaling-mode-full:
- shard-dg1: NOTRUN -> [SKIP][206] ([i915#3555])
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-18/igt@kms_scaling_modes@scaling-mode-full.html
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-tglu: NOTRUN -> [SKIP][207] ([i915#3555]) +1 other test skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@kms_scaling_modes@scaling-mode-full-aspect.html
* igt@kms_setmode@basic-clone-single-crtc:
- shard-rkl: NOTRUN -> [SKIP][208] ([i915#3555]) +4 other tests skip
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_setmode@basic-clone-single-crtc.html
* igt@kms_vrr@flipline:
- shard-rkl: NOTRUN -> [SKIP][209] ([i915#15243] / [i915#3555])
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_vrr@flipline.html
* igt@kms_vrr@lobf:
- shard-rkl: NOTRUN -> [SKIP][210] ([i915#11920])
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_vrr@lobf.html
* igt@kms_vrr@negative-basic:
- shard-dg2: [PASS][211] -> [SKIP][212] ([i915#3555] / [i915#9906])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_vrr@negative-basic.html
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-7/igt@kms_vrr@negative-basic.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-rkl: NOTRUN -> [SKIP][213] ([i915#9906])
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@perf@mi-rpc:
- shard-rkl: NOTRUN -> [SKIP][214] ([i915#2434])
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@perf@mi-rpc.html
* igt@perf@per-context-mode-unprivileged:
- shard-rkl: NOTRUN -> [SKIP][215] ([i915#2435])
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@perf@per-context-mode-unprivileged.html
* igt@perf_pmu@busy-double-start@rcs0:
- shard-mtlp: [PASS][216] -> [FAIL][217] ([i915#4349])
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-mtlp-8/igt@perf_pmu@busy-double-start@rcs0.html
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-mtlp-2/igt@perf_pmu@busy-double-start@rcs0.html
* igt@prime_udl@share-import:
- shard-rkl: NOTRUN -> [SKIP][218] ([i915#16420])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@prime_udl@share-import.html
* igt@sriov_basic@bind-unbind-vf@vf-1:
- shard-tglu-1: NOTRUN -> [SKIP][219] ([i915#16066]) +9 other tests skip
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-1/igt@sriov_basic@bind-unbind-vf@vf-1.html
* igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
- shard-tglu: NOTRUN -> [SKIP][220] ([i915#16066])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-8/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
#### Possible fixes ####
* igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0:
- shard-dg2: [INCOMPLETE][221] ([i915#13356] / [i915#16348]) -> [PASS][222]
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-6/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-3/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html
* igt@gem_exec_big@single:
- shard-tglu: [FAIL][223] ([i915#15816]) -> [PASS][224]
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-tglu-2/igt@gem_exec_big@single.html
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-7/igt@gem_exec_big@single.html
* igt@gem_softpin@noreloc-s3:
- shard-rkl: [INCOMPLETE][225] ([i915#13809] / [i915#16226]) -> [PASS][226]
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-3/igt@gem_softpin@noreloc-s3.html
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@gem_softpin@noreloc-s3.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
- shard-rkl: [ABORT][227] ([i915#15132]) -> [PASS][228]
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-1/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_dp_aux_dev@basic:
- shard-dg2: [SKIP][229] ([i915#1257]) -> [PASS][230]
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-5/igt@kms_dp_aux_dev@basic.html
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_dp_aux_dev@basic.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-rkl: [INCOMPLETE][231] ([i915#9878]) -> [PASS][232]
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-3/igt@kms_fbcon_fbt@fbc-suspend.html
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-2/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-pwrite:
- shard-dg2: [SKIP][233] ([i915#15989]) -> [PASS][234] +3 other tests pass
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-5/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-pwrite.html
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-blt:
- shard-rkl: [SKIP][235] ([i915#15989]) -> [PASS][236] +2 other tests pass
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-8/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-blt.html
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-gtt:
- shard-glk: [SKIP][237] -> [PASS][238] +34 other tests pass
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk2/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk8/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-pri-shrfb-draw-mmap-gtt.html
* igt@kms_hdr@static-toggle-dpms:
- shard-dg2: [SKIP][239] ([i915#16518] / [i915#3555] / [i915#8228]) -> [PASS][240]
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-5/igt@kms_hdr@static-toggle-dpms.html
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_pm_rpm@modeset-non-lpsp:
- shard-dg1: [SKIP][241] ([i915#15073]) -> [PASS][242]
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg1-15/igt@kms_pm_rpm@modeset-non-lpsp.html
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-13/igt@kms_pm_rpm@modeset-non-lpsp.html
* igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create:
- shard-glk: [ABORT][243] ([i915#13179]) -> [PASS][244]
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk6/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk1/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html
#### Warnings ####
* igt@device_reset@cold-reset-bound:
- shard-rkl: [SKIP][245] ([i915#11078] / [i915#14544]) -> [SKIP][246] ([i915#11078])
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@device_reset@cold-reset-bound.html
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@device_reset@cold-reset-bound.html
* igt@gem_exec_reloc@basic-gtt-wc:
- shard-rkl: [SKIP][247] ([i915#14544] / [i915#3281]) -> [SKIP][248] ([i915#3281]) +3 other tests skip
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc.html
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@gem_exec_reloc@basic-gtt-wc.html
* igt@gem_lmem_swapping@massive:
- shard-rkl: [SKIP][249] ([i915#14544] / [i915#4613]) -> [SKIP][250] ([i915#4613]) +1 other test skip
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@gem_lmem_swapping@massive.html
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@gem_lmem_swapping@massive.html
* igt@gem_partial_pwrite_pread@writes-after-reads:
- shard-rkl: [SKIP][251] ([i915#14544] / [i915#3282]) -> [SKIP][252] ([i915#3282]) +1 other test skip
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads.html
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@gem_partial_pwrite_pread@writes-after-reads.html
* igt@gem_userptr_blits@coherency-unsync:
- shard-rkl: [SKIP][253] ([i915#14544] / [i915#3297]) -> [SKIP][254] ([i915#3297]) +1 other test skip
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@gem_userptr_blits@coherency-unsync.html
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@gem_userptr_blits@coherency-unsync.html
* igt@gen9_exec_parse@bb-large:
- shard-rkl: [SKIP][255] ([i915#14544] / [i915#2527]) -> [SKIP][256] ([i915#2527])
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@gen9_exec_parse@bb-large.html
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@gen9_exec_parse@bb-large.html
* igt@i915_pm_rc6_residency@media-rc6-accuracy:
- shard-rkl: [SKIP][257] ([i915#14544] / [i915#16080] / [i915#16166]) -> [SKIP][258] ([i915#16080] / [i915#16166])
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
* igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
- shard-rkl: [SKIP][259] ([i915#14544] / [i915#5286]) -> [SKIP][260] ([i915#5286]) +2 other tests skip
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-rkl: [SKIP][261] ([i915#3638]) -> [SKIP][262] ([i915#14544] / [i915#3638])
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-64bpp-rotate-90:
- shard-rkl: [SKIP][263] ([i915#14544] / [i915#3638]) -> [SKIP][264] ([i915#3638])
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_big_fb@y-tiled-64bpp-rotate-90.html
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_big_fb@y-tiled-64bpp-rotate-90.html
* igt@kms_ccs@bad-aux-stride-yf-tiled-ccs:
- shard-rkl: [SKIP][265] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][266] ([i915#14098] / [i915#6095]) +6 other tests skip
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_ccs@bad-aux-stride-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2:
- shard-rkl: [SKIP][267] ([i915#14544] / [i915#6095]) -> [SKIP][268] ([i915#6095]) +1 other test skip
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2.html
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-2.html
* igt@kms_chamelium_frames@hdmi-crc-fast:
- shard-rkl: [SKIP][269] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][270] ([i915#11151] / [i915#7828]) +1 other test skip
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_chamelium_frames@hdmi-crc-fast.html
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_chamelium_frames@hdmi-crc-fast.html
* igt@kms_content_protection@content-type-change:
- shard-rkl: [SKIP][271] ([i915#14544] / [i915#15865]) -> [SKIP][272] ([i915#15865])
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_content_protection@content-type-change.html
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-lic-type-0:
- shard-rkl: [SKIP][273] ([i915#15330] / [i915#3116]) -> [SKIP][274] ([i915#14544] / [i915#15330] / [i915#3116])
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_content_protection@dp-mst-lic-type-0.html
[274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_content_protection@dp-mst-lic-type-0.html
* igt@kms_content_protection@legacy:
- shard-dg2: [SKIP][275] ([i915#15865]) -> [FAIL][276] ([i915#7173])
[275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-5/igt@kms_content_protection@legacy.html
[276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@uevent:
- shard-dg2: [FAIL][277] ([i915#1339] / [i915#7173]) -> [SKIP][278] ([i915#15865])
[277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_content_protection@uevent.html
[278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-5/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-random-512x512:
- shard-dg2: [SKIP][279] ([i915#13049]) -> [SKIP][280] ([i915#13049] / [i915#3359]) +1 other test skip
[279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-5/igt@kms_cursor_crc@cursor-random-512x512.html
[280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-10/igt@kms_cursor_crc@cursor-random-512x512.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x10:
- shard-rkl: [SKIP][281] ([i915#14544] / [i915#3555]) -> [SKIP][282] ([i915#3555]) +1 other test skip
[281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
[282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-dg2: [SKIP][283] ([i915#13049] / [i915#3359]) -> [SKIP][284] ([i915#13049])
[283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_cursor_crc@cursor-sliding-512x512.html
[284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-7/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- shard-rkl: [SKIP][285] ([i915#14544] / [i915#4103]) -> [SKIP][286] ([i915#4103])
[285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
[286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_display_modes@extended-mode-basic:
- shard-rkl: [SKIP][287] ([i915#13691] / [i915#14544]) -> [SKIP][288] ([i915#13691])
[287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html
[288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_display_modes@extended-mode-basic.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-rkl: [SKIP][289] ([i915#14544] / [i915#16361]) -> [SKIP][290] ([i915#16361]) +1 other test skip
[289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html
[290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-fractional-bpp-bigjoiner:
- shard-rkl: [SKIP][291] ([i915#16361]) -> [SKIP][292] ([i915#14544] / [i915#16361])
[291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_dsc@dsc-fractional-bpp-bigjoiner.html
[292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp-bigjoiner.html
* igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset:
- shard-rkl: [SKIP][293] ([i915#14544] / [i915#9934]) -> [SKIP][294] ([i915#9934]) +1 other test skip
[293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html
[294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset.html
* igt@kms_flip@2x-flip-vs-suspend:
- shard-glk: [INCOMPLETE][295] ([i915#12745] / [i915#4839]) -> [INCOMPLETE][296] ([i915#12314] / [i915#12745] / [i915#4839] / [i915#6113])
[295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk6/igt@kms_flip@2x-flip-vs-suspend.html
[296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk5/igt@kms_flip@2x-flip-vs-suspend.html
* igt@kms_flip@2x-flip-vs-suspend@ac-hdmi-a1-hdmi-a2:
- shard-glk: [INCOMPLETE][297] ([i915#12745]) -> [INCOMPLETE][298] ([i915#12314] / [i915#12745])
[297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk6/igt@kms_flip@2x-flip-vs-suspend@ac-hdmi-a1-hdmi-a2.html
[298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk5/igt@kms_flip@2x-flip-vs-suspend@ac-hdmi-a1-hdmi-a2.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
- shard-rkl: [SKIP][299] ([i915#15643]) -> [SKIP][300] ([i915#14544] / [i915#15643])
[299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
[300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html
* igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile:
- shard-rkl: [SKIP][301] ([i915#14544] / [i915#15643]) -> [SKIP][302] ([i915#15643]) +2 other tests skip
[301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile.html
[302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_flip_scaled_crc@flip-p010-4tile-to-p016-4tile.html
* igt@kms_frontbuffer_tracking@fbchdr-suspend:
- shard-rkl: [SKIP][303] ([i915#15989]) -> [ABORT][304] ([i915#15132])
[303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-8/igt@kms_frontbuffer_tracking@fbchdr-suspend.html
[304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@fbchdr-suspend.html
* igt@kms_frontbuffer_tracking@fbchdr-tiling-4:
- shard-rkl: [SKIP][305] ([i915#14544] / [i915#5439]) -> [SKIP][306] ([i915#5439])
[305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@fbchdr-tiling-4.html
[306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@fbchdr-tiling-4.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-gtt:
- shard-rkl: [SKIP][307] ([i915#15102]) -> [SKIP][308] ([i915#14544] / [i915#15102]) +2 other tests skip
[307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
[308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-rkl: [SKIP][309] ([i915#14544]) -> [SKIP][310] +38 other tests skip
[309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-rgb101010-draw-mmap-cpu:
- shard-rkl: [SKIP][311] ([i915#14544] / [i915#15102]) -> [SKIP][312] ([i915#15102]) +7 other tests skip
[311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-rgb101010-draw-mmap-cpu.html
[312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-rgb101010-draw-mmap-cpu.html
* igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
- shard-rkl: [SKIP][313] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][314] ([i915#15102] / [i915#3023]) +5 other tests skip
[313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
[314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render:
- shard-dg2: [SKIP][315] ([i915#10433] / [i915#15102]) -> [SKIP][316] ([i915#15102]) +1 other test skip
[315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html
[316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render:
- shard-rkl: [SKIP][317] -> [SKIP][318] ([i915#14544]) +5 other tests skip
[317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html
[318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
- shard-rkl: [SKIP][319] ([i915#14544] / [i915#1825]) -> [SKIP][320] ([i915#1825]) +1 other test skip
[319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
[320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_joiner@invalid-modeset-force-ultra-joiner:
- shard-rkl: [SKIP][321] ([i915#15458]) -> [SKIP][322] ([i915#14544] / [i915#15458])
[321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
[322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-rkl: [SKIP][323] ([i915#14544] / [i915#15458]) -> [SKIP][324] ([i915#15458])
[323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_joiner@invalid-modeset-ultra-joiner.html
[324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_pipe_stress@stress-xrgb8888-untiled:
- shard-glk: [DMESG-WARN][325] ([i915#118]) -> [DMESG-FAIL][326] ([i915#118])
[325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk8/igt@kms_pipe_stress@stress-xrgb8888-untiled.html
[326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk9/igt@kms_pipe_stress@stress-xrgb8888-untiled.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping:
- shard-dg1: [SKIP][327] ([i915#15709] / [i915#4423]) -> [SKIP][328] ([i915#15709])
[327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg1-16/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html
[328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg1-15/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier-source-clamping.html
* igt@kms_plane@pixel-format-y-tiled-ccs-modifier:
- shard-rkl: [SKIP][329] ([i915#14544] / [i915#15709]) -> [SKIP][330] ([i915#15709]) +1 other test skip
[329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
[330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_plane@pixel-format-y-tiled-ccs-modifier.html
* igt@kms_plane_lowres@tiling-yf:
- shard-rkl: [SKIP][331] ([i915#3555]) -> [SKIP][332] ([i915#14544] / [i915#3555])
[331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_plane_lowres@tiling-yf.html
[332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_plane_lowres@tiling-yf.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a:
- shard-rkl: [SKIP][333] ([i915#14544] / [i915#15329]) -> [SKIP][334] ([i915#15329]) +3 other tests skip
[333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
[334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-1/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a.html
* igt@kms_pm_dc@dc6-dpms:
- shard-tglu: [FAIL][335] ([i915#16479]) -> [SKIP][336] ([i915#15128])
[335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-tglu-4/igt@kms_pm_dc@dc6-dpms.html
[336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-tglu-6/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf:
- shard-rkl: [SKIP][337] ([i915#11520] / [i915#14544]) -> [SKIP][338] ([i915#11520]) +2 other tests skip
[337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html
[338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-sf.html
* igt@kms_psr@fbc-psr-sprite-plane-move:
- shard-rkl: [SKIP][339] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][340] ([i915#1072] / [i915#9732]) +4 other tests skip
[339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@kms_psr@fbc-psr-sprite-plane-move.html
[340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@kms_psr@fbc-psr-sprite-plane-move.html
* igt@kms_psr@psr-cursor-plane-move:
- shard-rkl: [SKIP][341] ([i915#1072] / [i915#9732]) -> [SKIP][342] ([i915#1072] / [i915#14544] / [i915#9732]) +1 other test skip
[341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-7/igt@kms_psr@psr-cursor-plane-move.html
[342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-6/igt@kms_psr@psr-cursor-plane-move.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
- shard-dg2: [SKIP][343] ([i915#15867] / [i915#5190]) -> [SKIP][344] ([i915#12755] / [i915#15867] / [i915#5190])
[343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-dg2-10/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
[344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-dg2-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
* igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free:
- shard-glk: [DMESG-FAIL][345] ([i915#13179]) -> [ABORT][346] ([i915#13179])
[345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-glk6/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html
[346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-glk1/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html
* igt@sriov_basic@enable-vfs-bind-unbind-each:
- shard-rkl: [SKIP][347] ([i915#14544] / [i915#9917]) -> [SKIP][348] ([i915#9917])
[347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18810/shard-rkl-6/igt@sriov_basic@enable-vfs-bind-unbind-each.html
[348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170304v1/shard-rkl-5/igt@sriov_basic@enable-vfs-bind-unbind-each.html
[i915#10056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10056
[i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
[i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
[i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
[i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
[i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
[i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
[i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
[i915#118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/118
[i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
[i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
[i915#12314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12314
[i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
[i915#12454]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12454
[i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
[i915#12712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12712
[i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
[i915#12745]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12745
[i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
[i915#12756]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12756
[i915#12805]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12805
[i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
[i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
[i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
[i915#1339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1339
[i915#13476]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13476
[i915#13562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13562
[i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
[i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
[i915#13707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13707
[i915#13717]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13717
[i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
[i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
[i915#13781]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13781
[i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
[i915#13809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13809
[i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
[i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
[i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
[i915#14498]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14498
[i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
[i915#14600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14600
[i915#14702]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14702
[i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
[i915#14888]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14888
[i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
[i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
[i915#15128]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15128
[i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
[i915#15243]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15243
[i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
[i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
[i915#15403]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15403
[i915#15458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15458
[i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
[i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
[i915#15500]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15500
[i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
[i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
[i915#15678]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15678
[i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
[i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
[i915#15815]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15815
[i915#15816]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15816
[i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
[i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867
[i915#15948]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15948
[i915#15949]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15949
[i915#15989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15989
[i915#15990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15990
[i915#16056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16056
[i915#16066]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16066
[i915#16080]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16080
[i915#16081]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16081
[i915#16166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16166
[i915#16182]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16182
[i915#16184]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16184
[i915#16226]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16226
[i915#16348]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16348
[i915#16361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16361
[i915#16386]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16386
[i915#16420]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16420
[i915#16471]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16471
[i915#16479]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16479
[i915#16518]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16518
[i915#16593]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16593
[i915#16600]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16600
[i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
[i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
[i915#2065]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2065
[i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
[i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
[i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
[i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
[i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
[i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
[i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
[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#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#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#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
[i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
[i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
[i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
[i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
[i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
[i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
[i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
[i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
[i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
[i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
[i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
[i915#4839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4839
[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#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
[i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
[i915#6113]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6113
[i915#6245]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6245
[i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
[i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
[i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
[i915#6412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6412
[i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
[i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
[i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
[i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
[i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
[i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
[i915#8562]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8562
[i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
[i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
[i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
[i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
[i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
[i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
[i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
[i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
[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_18810 -> Patchwork_170304v1
CI-20190529: 20190529
CI_DRM_18810: 83d782d98f4ebb4a10b8ee107e3a389917e0b218 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9003: 9003
Patchwork_170304v1: 83d782d98f4ebb4a10b8ee107e3a389917e0b218 @ 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_170304v1/index.html
[-- Attachment #2: Type: text/html, Size: 121871 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio
2026-07-13 9:58 ` [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio Krzysztof Karas
@ 2026-07-15 11:18 ` Janusz Krzysztofik
2026-07-20 8:08 ` Krzysztof Karas
0 siblings, 1 reply; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-15 11:18 UTC (permalink / raw)
To: Krzysztof Karas, intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Sebastian Brzezinka, Krzysztof Niemiec
Hi Krzysztof,
Since reading your commit description I was not really able to understand
what the issue you were trying to fix was about, I'm providing some
comments based on my understanding of the issue.
On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> With addition of commit 029ae067431a
> ("drm/i915: Fix potential overflow of shmem scatterlist length")
> max_segment size was included in calculating a number of pages
> for the scatterlist. This meant that segment sizes considerably
> smaller than number of pages in a folio (see shmem_get_pages(),
> rebuild_st label for context),
Two values of max_segment only could and still can be expected, either
maximum capacity of a scatterlist, or PAGE_SIZE. Before the blamed
commit, that argument was mostly (unintentionally?) not respected when
allocating pages from a folio to a scatterlist. IOW, complete folios were
always allocated, possibly overloading the scatterlist capacity,
virtually never limited to PAGE_SIZE when requested via max_segment.
The blamed commit took care of scatterlist overloading, and
unintentionally also of respecting the max_segment == PAGE_SIZE case, by
limiting the number of folio pages allocated to a single scatterlist not
to exceed max_segment, but failed to take care of correctly allocating
remaining pages from folios larger than max_segment. That's what this
commit description should tell us about, I believe.
> were not enough to jump to the
> next folio, which has never been a problem before folios have
> been intoduced. In result, sg_set_folio() was called multiple
> times with nr_pages smaller than folio size, using multitude of
> scatterlists,
I don't think it matters how many times sg_set_folio() was called or how
many scatterlists were used, since we may expect them to be huge when
shmem_sg_alloc_table() is called with max_segment == PAGE_SIZE.
> all pointing to the beginning pages of the folio
> and never fully covering its range of pages.
Yeah, that's the real issue. An offset within a folio should be tracked
and used when allocating pages still left in the folio.
> Track how many pages have already been counted in a folio
... and use that number as an offset on consecutive allocations from the
same folio ...
> to ensure it is fully covered before reading next folio.
> Fixes: 029ae067431a ("drm/i915: Fix potential overflow of shmem scatterlist length")
> Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/15816
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Fixed a bug that caused first folio to never be considered.
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 120 +++++++++++++---------
> 1 file changed, 70 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> index 06543ae60706..0011d76f5b8c 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> @@ -68,10 +68,13 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> unsigned int max_segment)
> {
> unsigned int page_count; /* restricted by sg_alloc_table */
> - unsigned long i;
> + unsigned long next_pfn = 0; /* suppress gcc warning */
> + unsigned long folio_start = 0;
> + unsigned long folio_end = 0;
> + struct folio *folio = NULL;
> struct scatterlist *sg;
> - unsigned long next_pfn = 0; /* suppress gcc warning */
> gfp_t noreclaim;
> + unsigned long i;
> int ret;
>
> if (overflows_type(size / PAGE_SIZE, page_count))
> @@ -101,7 +104,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> sg = st->sgl;
> st->nents = 0;
> for (i = 0; i < page_count; i++) {
> - struct folio *folio;
> + unsigned long folio_page_index = 0;
> unsigned long nr_pages;
> const unsigned int shrink[] = {
> I915_SHRINK_BOUND | I915_SHRINK_UNBOUND,
> @@ -109,71 +112,87 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> }, *s = shrink;
> gfp_t gfp = noreclaim;
>
> - do {
> - cond_resched();
> - folio = shmem_read_folio_gfp(mapping, i, gfp);
> - if (!IS_ERR(folio))
> - break;
> -
> - if (!*s) {
> - ret = PTR_ERR(folio);
> - goto err_sg;
> - }
> -
> - i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
> -
> - /*
> - * We've tried hard to allocate the memory by reaping
> - * our own buffer, now let the real VM do its job and
> - * go down in flames if truly OOM.
> - *
> - * However, since graphics tend to be disposable,
> - * defer the oom here by reporting the ENOMEM back
> - * to userspace.
> - */
> - if (!*s) {
> - /* reclaim and warn, but no oom */
> - gfp = mapping_gfp_mask(mapping);
> + /* Grab the next folio if we exhausted the current one. */
> + if (!i || i > folio_end) {
> + do {
> + cond_resched();
> + folio = shmem_read_folio_gfp(mapping, i, gfp);
> + if (!IS_ERR(folio))
> + break;
> +
> + if (!*s) {
> + ret = PTR_ERR(folio);
> + goto err_sg;
> + }
> +
> + i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
>
> /*
> - * Our bo are always dirty and so we require
> - * kswapd to reclaim our pages (direct reclaim
> - * does not effectively begin pageout of our
> - * buffers on its own). However, direct reclaim
> - * only waits for kswapd when under allocation
> - * congestion. So as a result __GFP_RECLAIM is
> - * unreliable and fails to actually reclaim our
> - * dirty pages -- unless you try over and over
> - * again with !__GFP_NORETRY. However, we still
> - * want to fail this allocation rather than
> - * trigger the out-of-memory killer and for
> - * this we want __GFP_RETRY_MAYFAIL.
> - */
> - gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
> - }
> - } while (1);
> + * We've tried hard to allocate the memory by reaping
> + * our own buffer, now let the real VM do its job and
> + * go down in flames if truly OOM.
> + *
> + * However, since graphics tend to be disposable,
> + * defer the oom here by reporting the ENOMEM back
> + * to userspace.
> + */
> + if (!*s) {
> + /* reclaim and warn, but no oom */
> + gfp = mapping_gfp_mask(mapping);
> +
> + /*
> + * Our bo are always dirty and so we require
> + * kswapd to reclaim our pages (direct reclaim
> + * does not effectively begin pageout of our
> + * buffers on its own). However, direct reclaim
> + * only waits for kswapd when under allocation
> + * congestion. So as a result __GFP_RECLAIM is
> + * unreliable and fails to actually reclaim our
> + * dirty pages -- unless you try over and over
> + * again with !__GFP_NORETRY. However, we still
> + * want to fail this allocation rather than
> + * trigger the out-of-memory killer and for
> + * this we want __GFP_RETRY_MAYFAIL.
> + */
> + gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
> + }
> + } while (1);
> +
> + folio_start = folio_pgoff(folio);
> + folio_end = folio_start + folio_nr_pages(folio) - 1;
> + }
> +
> + folio_page_index = i - folio_start;
> + if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
> + ret = -EINVAL;
> + folio_put(folio);
> + goto err_sg;
> + }
>
> nr_pages = min_array(((unsigned long[]) {
> - folio_nr_pages(folio),
> + folio_nr_pages(folio) - folio_page_index,
> page_count - i,
> - max_segment / PAGE_SIZE,
> + max_t(unsigned int, 1, max_segment / PAGE_SIZE),
Why? This function is never called with max_segment less than PAGE_SIZE,
then max_segment / PAGE_SIZE can't drop to 0. If you want to address the
unexpected 0 case then I think we should just validate max_segment before
using it.
> }), 3);
>
> if (!i ||
> sg->length >= max_segment ||
> - folio_pfn(folio) != next_pfn) {
> + folio_pfn(folio) + folio_page_index != next_pfn) {
> if (i)
> sg = sg_next(sg);
>
> st->nents++;
> - sg_set_folio(sg, folio, nr_pages * PAGE_SIZE, 0);
> + sg_set_page(sg, folio_page(folio, folio_page_index),
> + nr_pages * PAGE_SIZE, 0);
> } else {
> nr_pages = min_t(unsigned long, nr_pages,
> - (max_segment - sg->length) / PAGE_SIZE);
> + max_t(unsigned long, 1,
> + (max_segment - sg->length) / PAGE_SIZE));
The same as above, we may exepect max_segment not less than PAGE_SIZE.
>
> sg->length += nr_pages * PAGE_SIZE;
The only case for appending more pages to a not yet full scatterlist I can
imagine is when first page of next folio is next to the last page of a
previous folio assigned here before so contiguity of pages can be
preserved. Then, I think the above if conditions should better reflect
that only case for clarity.
Thanks,
Janusz
> }
> - next_pfn = folio_pfn(folio) + nr_pages;
> +
> + next_pfn = folio_pfn(folio) + folio_page_index + nr_pages;
> i += nr_pages - 1;
>
> /* Check that the i965g/gm workaround works. */
> @@ -186,6 +205,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> i915_sg_trim(st);
>
> return 0;
> +
> err_sg:
> sg_mark_end(sg);
> if (sg != st->sgl) {
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function
2026-07-13 9:58 ` [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function Krzysztof Karas
@ 2026-07-15 15:21 ` Janusz Krzysztofik
2026-07-20 8:10 ` Krzysztof Karas
0 siblings, 1 reply; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-15 15:21 UTC (permalink / raw)
To: Krzysztof Karas, intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Sebastian Brzezinka, Krzysztof Niemiec
Hi Krzysztof,
On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> shmem_sg_alloc_table is a very large and hard to read function,
> so reduce the number of operations it is responsible for by
> placing "size" validation in a new helper.
>
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Split refactoring and put it after the fix in shmem folio
> counting suggested by Andi.
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 ++++++++++++++++-------
> 1 file changed, 20 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> index 0011d76f5b8c..4a61b012fb6f 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> @@ -62,6 +62,22 @@ void shmem_sg_free_table(struct sg_table *st, struct address_space *mapping,
> sg_free_table(st);
> }
>
> +static int validate_size(size_t size, unsigned int page_count,
> + struct intel_memory_region *mr)
> +{
> + if (overflows_type(size / PAGE_SIZE, page_count))
> + return -E2BIG;
> +
> + /*
> + * If there's no chance of allocating enough pages for the whole
> + * object, bail early.
> + */
> + if (size > resource_size(&mr->region))
> + return -ENOMEM;
> +
> + return 0;
> +}
> +
> int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> size_t size, struct intel_memory_region *mr,
> struct address_space *mapping,
> @@ -77,16 +93,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> unsigned long i;
> int ret;
>
> - if (overflows_type(size / PAGE_SIZE, page_count))
> - return -E2BIG;
> -
> page_count = size / PAGE_SIZE;
Verifying if page_count can accommodate a result before assigning that
result to it looked more correctly to me. Since overflows_type() doesn't
look at the variable's value, only its type, I think you could postpone
page_count initialization and pass its pointer to your helper to preserve
that more reasonable order of operations.
Thanks,
Janusz
> - /*
> - * If there's no chance of allocating enough pages for the whole
> - * object, bail early.
> - */
> - if (size > resource_size(&mr->region))
> - return -ENOMEM;
> +
> + ret = validate_size(size, page_count, mr);
> + if (ret < 0)
> + return ret;
>
> if (sg_alloc_table(st, page_count, GFP_KERNEL | __GFP_NOWARN))
> return -ENOMEM;
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function
2026-07-13 9:58 ` [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in " Krzysztof Karas
2026-07-13 10:10 ` sashiko-bot
@ 2026-07-15 15:31 ` Janusz Krzysztofik
2026-07-20 8:18 ` Krzysztof Karas
1 sibling, 1 reply; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-15 15:31 UTC (permalink / raw)
To: Krzysztof Karas, intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Sebastian Brzezinka, Krzysztof Niemiec
On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> Continue unloading shmem_sg_alloc_table by placing reading
> folios and shrink call into a new helper.
> Make the loop a bit more reader-friendly by removing iteration
> over a structure and replacing it with a do-while loop.
>
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Split refactoring and put it after the fix in shmem folio
> counting suggested by Andi.
> * Use do-while loop suggested by Robin.
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 102 ++++++++++++----------
> 1 file changed, 55 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> index 4a61b012fb6f..7c8de8fe0a22 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> @@ -78,6 +78,55 @@ static int validate_size(size_t size, unsigned int page_count,
> return 0;
> }
>
> +static struct folio *shmem_shrink_get_folio(struct address_space *mapping,
> + unsigned long folio_index,
> + gfp_t gfp, unsigned int page_count,
> + struct drm_i915_private *i915)
> +{
> + struct folio *folio = NULL;
> + unsigned int retries = 2;
> +
> + do {
> + cond_resched();
> + folio = shmem_read_folio_gfp(mapping, folio_index, gfp);
> + if (IS_ERR(folio)) {
Going again through then unused shrinking and modification of gfp doesn't
make sense, I believe. Could be avoided based on retries value as an
additional condition.
Thanks,
Janusz
> + i915_gem_shrink(NULL, i915, 2 * page_count, NULL,
> + I915_SHRINK_BOUND | I915_SHRINK_UNBOUND);
> +
> + /*
> + * We've tried hard to allocate the memory by reaping
> + * our own buffer, now let the real VM do its job and
> + * go down in flames if truly OOM.
> + *
> + * However, since graphics tend to be disposable,
> + * defer the oom here by reporting the ENOMEM back
> + * to userspace.
> + *
> + * Reclaim and warn, but no oom.
> + */
> + gfp = mapping_gfp_mask(mapping);
> +
> + /*
> + * Our bo are always dirty and so we require
> + * kswapd to reclaim our pages (direct reclaim
> + * does not effectively begin pageout of our
> + * buffers on its own). However, direct reclaim
> + * only waits for kswapd when under allocation
> + * congestion. So as a result __GFP_RECLAIM is
> + * unreliable and fails to actually reclaim our
> + * dirty pages -- unless you try over and over
> + * again with !__GFP_NORETRY. However, we still
> + * want to fail this allocation rather than
> + * trigger the out-of-memory killer and for
> + * this we want __GFP_RETRY_MAYFAIL.
> + */
> + gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
> + }
> + } while (IS_ERR(folio) && --retries);
> +
> + return folio;
> +}
> +
> int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> size_t size, struct intel_memory_region *mr,
> struct address_space *mapping,
> @@ -117,57 +166,16 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> for (i = 0; i < page_count; i++) {
> unsigned long folio_page_index = 0;
> unsigned long nr_pages;
> - const unsigned int shrink[] = {
> - I915_SHRINK_BOUND | I915_SHRINK_UNBOUND,
> - 0,
> - }, *s = shrink;
> gfp_t gfp = noreclaim;
>
> /* Grab the next folio if we exhausted the current one. */
> if (!i || i > folio_end) {
> - do {
> - cond_resched();
> - folio = shmem_read_folio_gfp(mapping, i, gfp);
> - if (!IS_ERR(folio))
> - break;
> -
> - if (!*s) {
> - ret = PTR_ERR(folio);
> - goto err_sg;
> - }
> -
> - i915_gem_shrink(NULL, i915, 2 * page_count, NULL, *s++);
> -
> - /*
> - * We've tried hard to allocate the memory by reaping
> - * our own buffer, now let the real VM do its job and
> - * go down in flames if truly OOM.
> - *
> - * However, since graphics tend to be disposable,
> - * defer the oom here by reporting the ENOMEM back
> - * to userspace.
> - */
> - if (!*s) {
> - /* reclaim and warn, but no oom */
> - gfp = mapping_gfp_mask(mapping);
> -
> - /*
> - * Our bo are always dirty and so we require
> - * kswapd to reclaim our pages (direct reclaim
> - * does not effectively begin pageout of our
> - * buffers on its own). However, direct reclaim
> - * only waits for kswapd when under allocation
> - * congestion. So as a result __GFP_RECLAIM is
> - * unreliable and fails to actually reclaim our
> - * dirty pages -- unless you try over and over
> - * again with !__GFP_NORETRY. However, we still
> - * want to fail this allocation rather than
> - * trigger the out-of-memory killer and for
> - * this we want __GFP_RETRY_MAYFAIL.
> - */
> - gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
> - }
> - } while (1);
> + folio = shmem_shrink_get_folio(mapping, i, gfp,
> + page_count, i915);
> + if (IS_ERR(folio)) {
> + ret = PTR_ERR(folio);
> + goto err_sg;
> + }
>
> folio_start = folio_pgoff(folio);
> folio_end = folio_start + folio_nr_pages(folio) - 1;
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop
2026-07-13 9:58 ` [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop Krzysztof Karas
2026-07-13 10:09 ` sashiko-bot
@ 2026-07-15 17:04 ` Janusz Krzysztofik
2026-07-20 8:25 ` Krzysztof Karas
1 sibling, 1 reply; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-15 17:04 UTC (permalink / raw)
To: Krzysztof Karas, intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Robin Murphy, Jason Gunthorpe, Michał Grzelak,
Sebastian Brzezinka, Krzysztof Niemiec
Hi Krzysztof,
On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> Change the main "for" loop into "while" to get rid of obscure
> iterator "i" and use more descriptive name to indicate how many
> pages were already covered. Detect first loop with st->nents and
> put instructions for that case in their own block for easier
> reading.
>
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Split refactoring and put it after the fix in shmem folio
> counting suggested by Andi.
>
> drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 +++++++++++------------
> 1 file changed, 14 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> index 7c8de8fe0a22..66d0f8f6ffcc 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> @@ -135,11 +135,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> unsigned int page_count; /* restricted by sg_alloc_table */
> unsigned long next_pfn = 0; /* suppress gcc warning */
> unsigned long folio_start = 0;
> + unsigned long pages_done = 0;
> unsigned long folio_end = 0;
> struct folio *folio = NULL;
> struct scatterlist *sg;
> gfp_t noreclaim;
> - unsigned long i;
> int ret;
>
> page_count = size / PAGE_SIZE;
> @@ -163,15 +163,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
>
> sg = st->sgl;
> st->nents = 0;
> - for (i = 0; i < page_count; i++) {
> + while (pages_done < page_count) {
> unsigned long folio_page_index = 0;
> unsigned long nr_pages;
> gfp_t gfp = noreclaim;
>
> /* Grab the next folio if we exhausted the current one. */
> - if (!i || i > folio_end) {
> - folio = shmem_shrink_get_folio(mapping, i, gfp,
> - page_count, i915);
> + if (!pages_done || pages_done > folio_end) {
> + folio = shmem_shrink_get_folio(mapping, pages_done, gfp,
> + page_count - pages_done, i915);
> if (IS_ERR(folio)) {
> ret = PTR_ERR(folio);
> goto err_sg;
> @@ -181,7 +181,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> folio_end = folio_start + folio_nr_pages(folio) - 1;
> }
>
> - folio_page_index = i - folio_start;
> + folio_page_index = pages_done - folio_start;
> if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
> ret = -EINVAL;
> folio_put(folio);
> @@ -190,16 +190,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
>
> nr_pages = min_array(((unsigned long[]) {
> folio_nr_pages(folio) - folio_page_index,
> - page_count - i,
> + page_count - pages_done,
> max_t(unsigned int, 1, max_segment / PAGE_SIZE),
> }), 3);
> -
> - if (!i ||
> - sg->length >= max_segment ||
> - folio_pfn(folio) + folio_page_index != next_pfn) {
> - if (i)
> - sg = sg_next(sg);
> -
> + if (!st->nents) {
> + st->nents++;
> + sg_set_page(sg, folio_page(folio, 0), nr_pages * PAGE_SIZE, 0);
> + } else if (sg->length >= max_segment ||
> + folio_pfn(folio) + folio_page_index != next_pfn) {
> + sg = sg_next(sg);
Repeating two or three lines of code to avoid calling another one
conditionally doesn't look optimal to me. Maybe you could invent a simple
replacement of that 'if (i)' conditional expression.
Thanks,
Janusz
> st->nents++;
> sg_set_page(sg, folio_page(folio, folio_page_index),
> nr_pages * PAGE_SIZE, 0);
> @@ -212,7 +211,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> }
>
> next_pfn = folio_pfn(folio) + folio_page_index + nr_pages;
> - i += nr_pages - 1;
> + pages_done += nr_pages;
>
> /* Check that the i965g/gm workaround works. */
> GEM_BUG_ON(gfp & __GFP_DMA32 && next_pfn >= 0x00100000UL);
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
2026-07-13 10:13 ` sashiko-bot
@ 2026-07-16 12:39 ` Andi Shyti
2026-07-16 13:48 ` Robin Murphy
2 siblings, 0 replies; 24+ messages in thread
From: Andi Shyti @ 2026-07-16 12:39 UTC (permalink / raw)
To: Krzysztof Karas
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Janusz Krzysztofik,
Sebastian Brzezinka, Krzysztof Niemiec
Jason, Robin? Any comment here?
Thanks,
Andi
On Mon, Jul 13, 2026 at 09:58:09AM +0000, Krzysztof Karas wrote:
> It is possible, when a very large mapping uses only one
> scatterlist, that padding overflows scatterlist's length field.
> This results in:
> 1) silently wrapping the value
> 2) smaller than desired mappings produced by iommu_map_sg
> 3) leaving mapped bytes in memory (no iommu_unmap)
>
> Address this issue by adding overflow detection for scatterlist
> length field.
>
> Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Used check_add_overflow suggested by Jason.
>
> I decided not to include previous r-bs due to the change in the
> core of this patch: overflows_type -> check_add_overflow and I
> obvserved some folks have heavy preference for one or the other.
>
> drivers/iommu/dma-iommu.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 381b60d9e7ce..1a36fd9bf10b 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
> @@ -1493,7 +1493,18 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
> * time through here (i.e. before it has a meaningful value).
> */
> if (pad_len && pad_len < s_length - 1) {
> - prev->length += pad_len;
> + unsigned int new_pad_len;
> + /*
> + * For large mappings spanning multiple GBs we
> + * may not be able to fit all needed padding into
> + * sg->length.
> + */
> + if (check_add_overflow(prev->length, pad_len, &new_pad_len)) {
> + ret = -EOVERFLOW;
> + goto out_restore_sg;
> + }
> +
> + prev->length = new_pad_len;
> iova_len += pad_len;
> }
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
2026-07-13 10:13 ` sashiko-bot
2026-07-16 12:39 ` Andi Shyti
@ 2026-07-16 13:48 ` Robin Murphy
2026-07-20 7:46 ` Krzysztof Karas
2 siblings, 1 reply; 24+ messages in thread
From: Robin Murphy @ 2026-07-16 13:48 UTC (permalink / raw)
To: Krzysztof Karas, intel-gfx, dri-devel, iommu
Cc: Andi Shyti, Jason Gunthorpe, Michał Grzelak,
Janusz Krzysztofik, Sebastian Brzezinka, Krzysztof Niemiec
On 13/07/2026 10:58 am, Krzysztof Karas wrote:
> It is possible, when a very large mapping uses only one
> scatterlist, that padding overflows scatterlist's length field.
> This results in:
> 1) silently wrapping the value
> 2) smaller than desired mappings produced by iommu_map_sg
> 3) leaving mapped bytes in memory (no iommu_unmap)
>
> Address this issue by adding overflow detection for scatterlist
> length field.
>
> Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
> Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> ---
> v3:
> * Used check_add_overflow suggested by Jason.
>
> I decided not to include previous r-bs due to the change in the
> core of this patch: overflows_type -> check_add_overflow and I
> obvserved some folks have heavy preference for one or the other.
>
> drivers/iommu/dma-iommu.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> index 381b60d9e7ce..1a36fd9bf10b 100644
> --- a/drivers/iommu/dma-iommu.c
> +++ b/drivers/iommu/dma-iommu.c
> @@ -1493,7 +1493,18 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
> * time through here (i.e. before it has a meaningful value).
> */
Sorry to be a pain, but since we *have* now spent the time reasoning
through the details, for completeness I think it would be worth also
explicitly checking "s_length & UINT_MAX != 0" (or equivalent) after the
the prior iova_align() - since that's only rounding up an unsigned int
value to a power of 2 it can't arbitrarily overflow like the addition
below, but it could still wrap to zero in the assignment to s->length,
or indeed in the size_t itself on 32-bit.
> if (pad_len && pad_len < s_length - 1) {
> - prev->length += pad_len;
> + unsigned int new_pad_len;
Super-nit: "pad_len" is the amount of potential padding from the end of
the previous segment up to the next segment boundary; the value we're
calculating here is the updated *total* segment length, so
"new_prev_len" would be more accurate and a bit clearer - the logic here
is fiddly enough as it is, so every little helps :)
With those tweaks (since it sounds like there's still another respin or
two to go for the rest of the series anyway),
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Cheers,
Robin.
> + /*
> + * For large mappings spanning multiple GBs we
> + * may not be able to fit all needed padding into
> + * sg->length.
> + */
> + if (check_add_overflow(prev->length, pad_len, &new_pad_len)) {
> + ret = -EOVERFLOW;
> + goto out_restore_sg;
> + }
> +
> + prev->length = new_pad_len;
> iova_len += pad_len;
> }
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows
2026-07-16 13:48 ` Robin Murphy
@ 2026-07-20 7:46 ` Krzysztof Karas
0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-20 7:46 UTC (permalink / raw)
To: Robin Murphy
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Jason Gunthorpe,
Michał Grzelak, Janusz Krzysztofik, Sebastian Brzezinka,
Krzysztof Niemiec
Hi Robin,
On 2026-07-16 at 14:48:25 +0100, Robin Murphy wrote:
> On 13/07/2026 10:58 am, Krzysztof Karas wrote:
> > It is possible, when a very large mapping uses only one
> > scatterlist, that padding overflows scatterlist's length field.
> > This results in:
> > 1) silently wrapping the value
> > 2) smaller than desired mappings produced by iommu_map_sg
> > 3) leaving mapped bytes in memory (no iommu_unmap)
> >
> > Address this issue by adding overflow detection for scatterlist
> > length field.
> >
> > Fixes: 809eac54cdd6 ("iommu/dma: Implement scatterlist segment merging")
> > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > ---
> > v3:
> > * Used check_add_overflow suggested by Jason.
> >
> > I decided not to include previous r-bs due to the change in the
> > core of this patch: overflows_type -> check_add_overflow and I
> > obvserved some folks have heavy preference for one or the other.
> >
> > drivers/iommu/dma-iommu.c | 13 ++++++++++++-
> > 1 file changed, 12 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
> > index 381b60d9e7ce..1a36fd9bf10b 100644
> > --- a/drivers/iommu/dma-iommu.c
> > +++ b/drivers/iommu/dma-iommu.c
> > @@ -1493,7 +1493,18 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
> > * time through here (i.e. before it has a meaningful value).
> > */
>
> Sorry to be a pain,
Don't be! I'm glad you got some time to look at this again and
being a pain is what gives us quality code.
> but since we *have* now spent the time reasoning through
> the details, for completeness I think it would be worth also explicitly
> checking "s_length & UINT_MAX != 0" (or equivalent) after the the prior
> iova_align() - since that's only rounding up an unsigned int value to a
> power of 2 it can't arbitrarily overflow like the addition below, but it
> could still wrap to zero in the assignment to s->length, or indeed in the
> size_t itself on 32-bit.
>
> > if (pad_len && pad_len < s_length - 1) {
> > - prev->length += pad_len;
> > + unsigned int new_pad_len;
>
> Super-nit: "pad_len" is the amount of potential padding from the end of the
> previous segment up to the next segment boundary; the value we're
> calculating here is the updated *total* segment length, so "new_prev_len"
> would be more accurate and a bit clearer - the logic here is fiddly enough
> as it is, so every little helps :)
Both suggestions sound reasonable, I'll include them in the next
version then.
>
> With those tweaks (since it sounds like there's still another respin or two
> to go for the rest of the series anyway),
>
> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Thanks!
--
Best Regards,
Krzysztof
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio
2026-07-15 11:18 ` Janusz Krzysztofik
@ 2026-07-20 8:08 ` Krzysztof Karas
0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-20 8:08 UTC (permalink / raw)
To: Janusz Krzysztofik
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
Hi Janusz,
On 2026-07-15 at 13:18:21 +0200, Janusz Krzysztofik wrote:
> Hi Krzysztof,
>
> Since reading your commit description I was not really able to understand
> what the issue you were trying to fix was about, I'm providing some
> comments based on my understanding of the issue.
>
> On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > With addition of commit 029ae067431a
> > ("drm/i915: Fix potential overflow of shmem scatterlist length")
> > max_segment size was included in calculating a number of pages
> > for the scatterlist. This meant that segment sizes considerably
> > smaller than number of pages in a folio (see shmem_get_pages(),
> > rebuild_st label for context),
>
> Two values of max_segment only could and still can be expected, either
> maximum capacity of a scatterlist, or PAGE_SIZE. Before the blamed
> commit, that argument was mostly (unintentionally?) not respected when
> allocating pages from a folio to a scatterlist. IOW, complete folios were
> always allocated, possibly overloading the scatterlist capacity,
> virtually never limited to PAGE_SIZE when requested via max_segment.
>
> The blamed commit took care of scatterlist overloading, and
> unintentionally also of respecting the max_segment == PAGE_SIZE case, by
> limiting the number of folio pages allocated to a single scatterlist not
> to exceed max_segment, but failed to take care of correctly allocating
> remaining pages from folios larger than max_segment. That's what this
> commit description should tell us about, I believe.
>
> > were not enough to jump to the
> > next folio, which has never been a problem before folios have
> > been intoduced. In result, sg_set_folio() was called multiple
> > times with nr_pages smaller than folio size, using multitude of
> > scatterlists,
>
> I don't think it matters how many times sg_set_folio() was called or how
> many scatterlists were used, since we may expect them to be huge when
> shmem_sg_alloc_table() is called with max_segment == PAGE_SIZE.
>
> > all pointing to the beginning pages of the folio
> > and never fully covering its range of pages.
>
> Yeah, that's the real issue. An offset within a folio should be tracked
> and used when allocating pages still left in the folio.
>
> > Track how many pages have already been counted in a folio
>
> ... and use that number as an offset on consecutive allocations from the
> same folio ...
Hmm, very well, sounds reasonable.
>
> > to ensure it is fully covered before reading next folio.
>
> > Fixes: 029ae067431a ("drm/i915: Fix potential overflow of shmem scatterlist length")
> > Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/15816
> > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > ---
[...]
> > + folio_page_index = i - folio_start;
> > + if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
> > + ret = -EINVAL;
> > + folio_put(folio);
> > + goto err_sg;
> > + }
> >
> > nr_pages = min_array(((unsigned long[]) {
> > - folio_nr_pages(folio),
> > + folio_nr_pages(folio) - folio_page_index,
> > page_count - i,
> > - max_segment / PAGE_SIZE,
> > + max_t(unsigned int, 1, max_segment / PAGE_SIZE),
>
> Why? This function is never called with max_segment less than PAGE_SIZE,
> then max_segment / PAGE_SIZE can't drop to 0. If you want to address the
> unexpected 0 case then I think we should just validate max_segment before
> using it.
I do not recall why exactly I added that check here. I think
validating max_segment earlier is more visible, so I'll do as
you suggest.
>
> > }), 3);
> >
> > if (!i ||
> > sg->length >= max_segment ||
> > - folio_pfn(folio) != next_pfn) {
> > + folio_pfn(folio) + folio_page_index != next_pfn) {
> > if (i)
> > sg = sg_next(sg);
> >
> > st->nents++;
> > - sg_set_folio(sg, folio, nr_pages * PAGE_SIZE, 0);
> > + sg_set_page(sg, folio_page(folio, folio_page_index),
> > + nr_pages * PAGE_SIZE, 0);
> > } else {
> > nr_pages = min_t(unsigned long, nr_pages,
> > - (max_segment - sg->length) / PAGE_SIZE);
> > + max_t(unsigned long, 1,
> > + (max_segment - sg->length) / PAGE_SIZE));
>
> The same as above, we may exepect max_segment not less than PAGE_SIZE.
Yup, got it.
>
> >
> > sg->length += nr_pages * PAGE_SIZE;
>
> The only case for appending more pages to a not yet full scatterlist I can
> imagine is when first page of next folio is next to the last page of a
> previous folio assigned here before so contiguity of pages can be
> preserved. Then, I think the above if conditions should better reflect
> that only case for clarity.
I think what we are missing here is the assumption that folios
are placed one after another, on which we base next_pfn
calculations. If that assumption is wrong and next_pfn is not
the address of the next folio, then we land in the "if" instead
of "else" block.
In any case, I'll add this info in the next version, either via
modifying the if conditions or adding a comment here.
Thansk for looking at this!
--
Best Regards,
Krzysztof
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function
2026-07-15 15:21 ` Janusz Krzysztofik
@ 2026-07-20 8:10 ` Krzysztof Karas
0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-20 8:10 UTC (permalink / raw)
To: Janusz Krzysztofik
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
Hi Janusz,
On 2026-07-15 at 17:21:39 +0200, Janusz Krzysztofik wrote:
> Hi Krzysztof,
>
> On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > shmem_sg_alloc_table is a very large and hard to read function,
> > so reduce the number of operations it is responsible for by
> > placing "size" validation in a new helper.
> >
> > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > ---
> > v3:
> > * Split refactoring and put it after the fix in shmem folio
> > counting suggested by Andi.
> >
> > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 ++++++++++++++++-------
> > 1 file changed, 20 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > index 0011d76f5b8c..4a61b012fb6f 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > @@ -62,6 +62,22 @@ void shmem_sg_free_table(struct sg_table *st, struct address_space *mapping,
> > sg_free_table(st);
> > }
> >
> > +static int validate_size(size_t size, unsigned int page_count,
> > + struct intel_memory_region *mr)
> > +{
> > + if (overflows_type(size / PAGE_SIZE, page_count))
> > + return -E2BIG;
> > +
> > + /*
> > + * If there's no chance of allocating enough pages for the whole
> > + * object, bail early.
> > + */
> > + if (size > resource_size(&mr->region))
> > + return -ENOMEM;
> > +
> > + return 0;
> > +}
> > +
> > int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > size_t size, struct intel_memory_region *mr,
> > struct address_space *mapping,
> > @@ -77,16 +93,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > unsigned long i;
> > int ret;
> >
> > - if (overflows_type(size / PAGE_SIZE, page_count))
> > - return -E2BIG;
> > -
> > page_count = size / PAGE_SIZE;
>
> Verifying if page_count can accommodate a result before assigning that
> result to it looked more correctly to me. Since overflows_type() doesn't
> look at the variable's value, only its type, I think you could postpone
> page_count initialization and pass its pointer to your helper to preserve
> that more reasonable order of operations.
Yeah, you are right, it would make more sense to validate it
before assignment. I'll do that in the next version.
>
> Thanks,
> Janusz
>
> > - /*
> > - * If there's no chance of allocating enough pages for the whole
> > - * object, bail early.
> > - */
> > - if (size > resource_size(&mr->region))
> > - return -ENOMEM;
> > +
> > + ret = validate_size(size, page_count, mr);
> > + if (ret < 0)
> > + return ret;
> >
> > if (sg_alloc_table(st, page_count, GFP_KERNEL | __GFP_NOWARN))
> > return -ENOMEM;
--
Best Regards,
Krzysztof
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function
2026-07-15 15:31 ` Janusz Krzysztofik
@ 2026-07-20 8:18 ` Krzysztof Karas
2026-07-20 10:15 ` Janusz Krzysztofik
0 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-20 8:18 UTC (permalink / raw)
To: Janusz Krzysztofik
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
Hi Janusz,
On 2026-07-15 at 17:31:56 +0200, Janusz Krzysztofik wrote:
> On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > Continue unloading shmem_sg_alloc_table by placing reading
> > folios and shrink call into a new helper.
> > Make the loop a bit more reader-friendly by removing iteration
> > over a structure and replacing it with a do-while loop.
> >
> > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > ---
> > v3:
> > * Split refactoring and put it after the fix in shmem folio
> > counting suggested by Andi.
> > * Use do-while loop suggested by Robin.
> >
> > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 102 ++++++++++++----------
> > 1 file changed, 55 insertions(+), 47 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > index 4a61b012fb6f..7c8de8fe0a22 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > @@ -78,6 +78,55 @@ static int validate_size(size_t size, unsigned int page_count,
> > return 0;
> > }
> >
> > +static struct folio *shmem_shrink_get_folio(struct address_space *mapping,
> > + unsigned long folio_index,
> > + gfp_t gfp, unsigned int page_count,
> > + struct drm_i915_private *i915)
> > +{
> > + struct folio *folio = NULL;
> > + unsigned int retries = 2;
> > +
> > + do {
> > + cond_resched();
> > + folio = shmem_read_folio_gfp(mapping, folio_index, gfp);
> > + if (IS_ERR(folio)) {
>
> Going again through then unused shrinking and modification of gfp doesn't
> make sense, I believe. Could be avoided based on retries value as an
> additional condition.
If calling i915_gem_shrink again doesn't give us anything, then
looping doesn not really benefit us here. We could do something
like this instead:
folio = shmem_read_folio_gfp(...);
if (IS_ERR(folio)) {
i915_gem_shrink(...);
gfp = mapping_gfp_mask(mapping);
gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
/* again */
folio = shmem_read_folio_gfp(...);
}
return folio;
That way we'd be explicit about shrinking once and retrying
folio reading only once. Reduced indentation would be added
bonus.
What do you think?
--
Best Regards,
Krzysztof
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop
2026-07-15 17:04 ` Janusz Krzysztofik
@ 2026-07-20 8:25 ` Krzysztof Karas
2026-07-20 10:19 ` Janusz Krzysztofik
0 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Karas @ 2026-07-20 8:25 UTC (permalink / raw)
To: Janusz Krzysztofik
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
Hi Janusz,
On 2026-07-15 at 19:04:42 +0200, Janusz Krzysztofik wrote:
> Hi Krzysztof,
>
> On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > Change the main "for" loop into "while" to get rid of obscure
> > iterator "i" and use more descriptive name to indicate how many
> > pages were already covered. Detect first loop with st->nents and
> > put instructions for that case in their own block for easier
> > reading.
> >
> > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > ---
> > v3:
> > * Split refactoring and put it after the fix in shmem folio
> > counting suggested by Andi.
> >
> > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 +++++++++++------------
> > 1 file changed, 14 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > index 7c8de8fe0a22..66d0f8f6ffcc 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > @@ -135,11 +135,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > unsigned int page_count; /* restricted by sg_alloc_table */
> > unsigned long next_pfn = 0; /* suppress gcc warning */
> > unsigned long folio_start = 0;
> > + unsigned long pages_done = 0;
> > unsigned long folio_end = 0;
> > struct folio *folio = NULL;
> > struct scatterlist *sg;
> > gfp_t noreclaim;
> > - unsigned long i;
> > int ret;
> >
> > page_count = size / PAGE_SIZE;
> > @@ -163,15 +163,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> >
> > sg = st->sgl;
> > st->nents = 0;
> > - for (i = 0; i < page_count; i++) {
> > + while (pages_done < page_count) {
> > unsigned long folio_page_index = 0;
> > unsigned long nr_pages;
> > gfp_t gfp = noreclaim;
> >
> > /* Grab the next folio if we exhausted the current one. */
> > - if (!i || i > folio_end) {
> > - folio = shmem_shrink_get_folio(mapping, i, gfp,
> > - page_count, i915);
> > + if (!pages_done || pages_done > folio_end) {
> > + folio = shmem_shrink_get_folio(mapping, pages_done, gfp,
> > + page_count - pages_done, i915);
> > if (IS_ERR(folio)) {
> > ret = PTR_ERR(folio);
> > goto err_sg;
> > @@ -181,7 +181,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > folio_end = folio_start + folio_nr_pages(folio) - 1;
> > }
> >
> > - folio_page_index = i - folio_start;
> > + folio_page_index = pages_done - folio_start;
> > if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
> > ret = -EINVAL;
> > folio_put(folio);
> > @@ -190,16 +190,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> >
> > nr_pages = min_array(((unsigned long[]) {
> > folio_nr_pages(folio) - folio_page_index,
> > - page_count - i,
> > + page_count - pages_done,
> > max_t(unsigned int, 1, max_segment / PAGE_SIZE),
> > }), 3);
> > -
> > - if (!i ||
> > - sg->length >= max_segment ||
> > - folio_pfn(folio) + folio_page_index != next_pfn) {
> > - if (i)
> > - sg = sg_next(sg);
> > -
> > + if (!st->nents) {
> > + st->nents++;
> > + sg_set_page(sg, folio_page(folio, 0), nr_pages * PAGE_SIZE, 0);
> > + } else if (sg->length >= max_segment ||
> > + folio_pfn(folio) + folio_page_index != next_pfn) {
> > + sg = sg_next(sg);
>
> Repeating two or three lines of code to avoid calling another one
> conditionally doesn't look optimal to me. Maybe you could invent a simple
> replacement of that 'if (i)' conditional expression.
Perhaps it is not optimal. I do not feel comfortable having two
conditions that contradict each other in the same block, which
is why I wanted to take out the first iteration setup.
It is more about aesthetics here, so I do not have a strong
argument here besides readability. If that is not enough, then
I'll revert to the previous code.
--
Best Regards,
Krzysztof
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in a separate function
2026-07-20 8:18 ` Krzysztof Karas
@ 2026-07-20 10:15 ` Janusz Krzysztofik
0 siblings, 0 replies; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-20 10:15 UTC (permalink / raw)
To: Krzysztof Karas
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
On Mon, 2026-07-20 at 08:18 +0000, Krzysztof Karas wrote:
> Hi Janusz,
>
> On 2026-07-15 at 17:31:56 +0200, Janusz Krzysztofik wrote:
> > On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > > Continue unloading shmem_sg_alloc_table by placing reading
> > > folios and shrink call into a new helper.
> > > Make the loop a bit more reader-friendly by removing iteration
> > > over a structure and replacing it with a do-while loop.
> > >
> > > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > > ---
> > > v3:
> > > * Split refactoring and put it after the fix in shmem folio
> > > counting suggested by Andi.
> > > * Use do-while loop suggested by Robin.
> > >
> > > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 102 ++++++++++++----------
> > > 1 file changed, 55 insertions(+), 47 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > index 4a61b012fb6f..7c8de8fe0a22 100644
> > > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > @@ -78,6 +78,55 @@ static int validate_size(size_t size, unsigned int page_count,
> > > return 0;
> > > }
> > >
> > > +static struct folio *shmem_shrink_get_folio(struct address_space *mapping,
> > > + unsigned long folio_index,
> > > + gfp_t gfp, unsigned int page_count,
> > > + struct drm_i915_private *i915)
> > > +{
> > > + struct folio *folio = NULL;
> > > + unsigned int retries = 2;
> > > +
> > > + do {
> > > + cond_resched();
> > > + folio = shmem_read_folio_gfp(mapping, folio_index, gfp);
> > > + if (IS_ERR(folio)) {
> >
> > Going again through then unused shrinking and modification of gfp doesn't
> > make sense, I believe. Could be avoided based on retries value as an
> > additional condition.
> If calling i915_gem_shrink again doesn't give us anything, then
> looping doesn not really benefit us here. We could do something
> like this instead:
>
> folio = shmem_read_folio_gfp(...);
> if (IS_ERR(folio)) {
> i915_gem_shrink(...);
> gfp = mapping_gfp_mask(mapping);
> gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
> /* again */
> folio = shmem_read_folio_gfp(...);
> }
>
> return folio;
>
> That way we'd be explicit about shrinking once and retrying
> folio reading only once. Reduced indentation would be added
> bonus.
>
> What do you think?
Yes, that would be much more clear. I would only keep the cond_resched(),
at least before retrying, unless you can justify its removal.
Thanks,
Janusz
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop
2026-07-20 8:25 ` Krzysztof Karas
@ 2026-07-20 10:19 ` Janusz Krzysztofik
0 siblings, 0 replies; 24+ messages in thread
From: Janusz Krzysztofik @ 2026-07-20 10:19 UTC (permalink / raw)
To: Krzysztof Karas
Cc: intel-gfx, dri-devel, iommu, Andi Shyti, Robin Murphy,
Jason Gunthorpe, Michał Grzelak, Sebastian Brzezinka,
Krzysztof Niemiec
On Mon, 2026-07-20 at 08:25 +0000, Krzysztof Karas wrote:
> Hi Janusz,
>
> On 2026-07-15 at 19:04:42 +0200, Janusz Krzysztofik wrote:
> > Hi Krzysztof,
> >
> > On Mon, 2026-07-13 at 09:58 +0000, Krzysztof Karas wrote:
> > > Change the main "for" loop into "while" to get rid of obscure
> > > iterator "i" and use more descriptive name to indicate how many
> > > pages were already covered. Detect first loop with st->nents and
> > > put instructions for that case in their own block for easier
> > > reading.
> > >
> > > Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
> > > ---
> > > v3:
> > > * Split refactoring and put it after the fix in shmem folio
> > > counting suggested by Andi.
> > >
> > > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 29 +++++++++++------------
> > > 1 file changed, 14 insertions(+), 15 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > index 7c8de8fe0a22..66d0f8f6ffcc 100644
> > > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
> > > @@ -135,11 +135,11 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > > unsigned int page_count; /* restricted by sg_alloc_table */
> > > unsigned long next_pfn = 0; /* suppress gcc warning */
> > > unsigned long folio_start = 0;
> > > + unsigned long pages_done = 0;
> > > unsigned long folio_end = 0;
> > > struct folio *folio = NULL;
> > > struct scatterlist *sg;
> > > gfp_t noreclaim;
> > > - unsigned long i;
> > > int ret;
> > >
> > > page_count = size / PAGE_SIZE;
> > > @@ -163,15 +163,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > >
> > > sg = st->sgl;
> > > st->nents = 0;
> > > - for (i = 0; i < page_count; i++) {
> > > + while (pages_done < page_count) {
> > > unsigned long folio_page_index = 0;
> > > unsigned long nr_pages;
> > > gfp_t gfp = noreclaim;
> > >
> > > /* Grab the next folio if we exhausted the current one. */
> > > - if (!i || i > folio_end) {
> > > - folio = shmem_shrink_get_folio(mapping, i, gfp,
> > > - page_count, i915);
> > > + if (!pages_done || pages_done > folio_end) {
> > > + folio = shmem_shrink_get_folio(mapping, pages_done, gfp,
> > > + page_count - pages_done, i915);
> > > if (IS_ERR(folio)) {
> > > ret = PTR_ERR(folio);
> > > goto err_sg;
> > > @@ -181,7 +181,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > > folio_end = folio_start + folio_nr_pages(folio) - 1;
> > > }
> > >
> > > - folio_page_index = i - folio_start;
> > > + folio_page_index = pages_done - folio_start;
> > > if (WARN_ON_ONCE(folio_page_index >= folio_nr_pages(folio))) {
> > > ret = -EINVAL;
> > > folio_put(folio);
> > > @@ -190,16 +190,15 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
> > >
> > > nr_pages = min_array(((unsigned long[]) {
> > > folio_nr_pages(folio) - folio_page_index,
> > > - page_count - i,
> > > + page_count - pages_done,
> > > max_t(unsigned int, 1, max_segment / PAGE_SIZE),
> > > }), 3);
> > > -
> > > - if (!i ||
> > > - sg->length >= max_segment ||
> > > - folio_pfn(folio) + folio_page_index != next_pfn) {
> > > - if (i)
> > > - sg = sg_next(sg);
> > > -
> > > + if (!st->nents) {
> > > + st->nents++;
> > > + sg_set_page(sg, folio_page(folio, 0), nr_pages * PAGE_SIZE, 0);
> > > + } else if (sg->length >= max_segment ||
> > > + folio_pfn(folio) + folio_page_index != next_pfn) {
> > > + sg = sg_next(sg);
> >
> > Repeating two or three lines of code to avoid calling another one
> > conditionally doesn't look optimal to me. Maybe you could invent a simple
> > replacement of that 'if (i)' conditional expression.
> Perhaps it is not optimal. I do not feel comfortable having two
> conditions that contradict each other in the same block, which
> is why I wanted to take out the first iteration setup.
>
> It is more about aesthetics here, so I do not have a strong
> argument here besides readability. If that is not enough, then
> I'll revert to the previous code.
I think that also depends on how you address my comment to your patch 1/5
on that if condition, so we'll see if this comment will be still
applicable.
Thanks,
Janusz
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2026-07-20 10:19 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-13 9:58 [PATCH v3 0/5] drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 1/5] drm/i915/gem: Count mapped pages in a folio Krzysztof Karas
2026-07-15 11:18 ` Janusz Krzysztofik
2026-07-20 8:08 ` Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 2/5] iommu/dma: Catch scatterlist length overflows Krzysztof Karas
2026-07-13 10:13 ` sashiko-bot
2026-07-16 12:39 ` Andi Shyti
2026-07-16 13:48 ` Robin Murphy
2026-07-20 7:46 ` Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 3/5] drm/i915/gem: Pull out size validation into a separate function Krzysztof Karas
2026-07-15 15:21 ` Janusz Krzysztofik
2026-07-20 8:10 ` Krzysztof Karas
2026-07-13 9:58 ` [PATCH v3 4/5] drm/i915/gem: Read and shrink memory in " Krzysztof Karas
2026-07-13 10:10 ` sashiko-bot
2026-07-15 15:31 ` Janusz Krzysztofik
2026-07-20 8:18 ` Krzysztof Karas
2026-07-20 10:15 ` Janusz Krzysztofik
2026-07-13 9:58 ` [PATCH v3 5/5] drm/i915/gem: Remove iterator and use while loop Krzysztof Karas
2026-07-13 10:09 ` sashiko-bot
2026-07-15 17:04 ` Janusz Krzysztofik
2026-07-20 8:25 ` Krzysztof Karas
2026-07-20 10:19 ` Janusz Krzysztofik
2026-07-13 11:01 ` ✓ i915.CI.BAT: success for drivers: Improve memory management for large object allocations when i915/shmem is used with iommu Patchwork
2026-07-13 14:14 ` ✗ i915.CI.Full: failure " Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.