* Rework TTMs busy handling
@ 2024-01-09 7:47 Christian König
2024-01-09 7:47 ` [PATCH 1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Christian König
` (9 more replies)
0 siblings, 10 replies; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Hi guys,
I'm trying to make this functionality a bit more useful for years now
since we multiple reports that behavior of drivers can be suboptimal
when multiple placements be given.
So basically instead of hacking around the TTM behavior in the driver
once more I've gone ahead and changed the idle/busy placement list
into idle/busy placement flags. This not only saves a bunch of code,
but also allows setting some placements as fallback which are used if
allocating from the preferred ones didn't worked.
Zack pointed out that some removed VMWGFX code was brought back because
of rebasing, fixed in this version.
Intel CI seems to be happy with those patches, so any more comments?
Regards,
Christian.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
2024-01-09 7:47 Rework TTMs busy handling Christian König
@ 2024-01-09 7:47 ` Christian König
2024-01-09 7:47 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
` (8 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Seems to be unused.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 -
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 28 ----------------------
2 files changed, 29 deletions(-)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index 3cd5090dedfc..12efecc17df6 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -942,7 +942,6 @@ vmw_is_cursor_bypass3_enabled(const struct vmw_private *dev_priv)
extern const size_t vmw_tt_size;
extern struct ttm_placement vmw_vram_placement;
-extern struct ttm_placement vmw_vram_gmr_placement;
extern struct ttm_placement vmw_sys_placement;
extern struct ttm_device_funcs vmw_bo_driver;
extern const struct vmw_sg_table *
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
index af8562c95cc3..a84fffcef8e1 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
@@ -43,13 +43,6 @@ static const struct ttm_place sys_placement_flags = {
.flags = 0
};
-static const struct ttm_place gmr_placement_flags = {
- .fpfn = 0,
- .lpfn = 0,
- .mem_type = VMW_PL_GMR,
- .flags = 0
-};
-
struct ttm_placement vmw_vram_placement = {
.num_placement = 1,
.placement = &vram_placement_flags,
@@ -57,27 +50,6 @@ struct ttm_placement vmw_vram_placement = {
.busy_placement = &vram_placement_flags
};
-static const struct ttm_place vram_gmr_placement_flags[] = {
- {
- .fpfn = 0,
- .lpfn = 0,
- .mem_type = TTM_PL_VRAM,
- .flags = 0
- }, {
- .fpfn = 0,
- .lpfn = 0,
- .mem_type = VMW_PL_GMR,
- .flags = 0
- }
-};
-
-struct ttm_placement vmw_vram_gmr_placement = {
- .num_placement = 2,
- .placement = vram_gmr_placement_flags,
- .num_busy_placement = 1,
- .busy_placement = &gmr_placement_flags
-};
-
struct ttm_placement vmw_sys_placement = {
.num_placement = 1,
.placement = &sys_placement_flags,
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space
2024-01-09 7:47 Rework TTMs busy handling Christian König
2024-01-09 7:47 ` [PATCH 1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Christian König
@ 2024-01-09 7:47 ` Christian König
2024-01-09 9:17 ` Thomas Hellström
2024-01-09 7:47 ` [PATCH 3/5] drm/ttm: replace busy placement with flags v5 Christian König
` (7 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Only convert it to ENOMEM in ttm_bo_validate.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
drivers/gpu/drm/ttm/ttm_bo.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index edf10618fe2b..8c1eaa74fa21 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -830,7 +830,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
goto error;
}
- ret = -ENOMEM;
+ ret = -ENOSPC;
if (!type_found) {
pr_err(TTM_PFX "No compatible memory type found\n");
ret = -EINVAL;
@@ -916,6 +916,9 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
return -EINVAL;
ret = ttm_bo_move_buffer(bo, placement, ctx);
+ /* For backward compatibility with userspace */
+ if (ret == -ENOSPC)
+ return -ENOMEM;
if (ret)
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/5] drm/ttm: replace busy placement with flags v5
2024-01-09 7:47 Rework TTMs busy handling Christian König
2024-01-09 7:47 ` [PATCH 1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Christian König
2024-01-09 7:47 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
@ 2024-01-09 7:47 ` Christian König
2024-01-09 17:29 ` Zack Rusin
2024-01-09 7:47 ` [PATCH 4/5] drm/ttm: improve idle/busy handling v2 Christian König
` (6 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
From: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
Instead of a list of separate busy placement add flags which indicate
that a placement should only be used when there is room or if we need to
evict.
v2: add missing TTM_PL_FLAG_IDLE for i915
v3: fix auto build test ERROR on drm-tip/drm-tip
v4: fix some typos pointed out by checkpatch
v5: cleanup some rebase problems with VMWGFX
Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 6 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 11 +---
drivers/gpu/drm/drm_gem_vram_helper.c | 2 -
drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 37 +++++------
drivers/gpu/drm/loongson/lsdc_ttm.c | 2 -
drivers/gpu/drm/nouveau/nouveau_bo.c | 59 +++++++----------
drivers/gpu/drm/nouveau/nouveau_bo.h | 1 -
drivers/gpu/drm/qxl/qxl_object.c | 2 -
drivers/gpu/drm/qxl/qxl_ttm.c | 2 -
drivers/gpu/drm/radeon/radeon_object.c | 2 -
drivers/gpu/drm/radeon/radeon_ttm.c | 8 +--
drivers/gpu/drm/radeon/radeon_uvd.c | 1 -
drivers/gpu/drm/ttm/ttm_bo.c | 21 ++++---
drivers/gpu/drm/ttm/ttm_resource.c | 73 +++++-----------------
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 2 -
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 4 --
include/drm/ttm/ttm_placement.h | 10 +--
include/drm/ttm/ttm_resource.h | 8 +--
18 files changed, 79 insertions(+), 172 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index cef920a93924..aa0dd6dad068 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -220,9 +220,6 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)
placement->num_placement = c;
placement->placement = places;
-
- placement->num_busy_placement = c;
- placement->busy_placement = places;
}
/**
@@ -1406,8 +1403,7 @@ vm_fault_t amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
AMDGPU_GEM_DOMAIN_GTT);
/* Avoid costly evictions; only set GTT as a busy placement */
- abo->placement.num_busy_placement = 1;
- abo->placement.busy_placement = &abo->placements[1];
+ abo->placements[0].flags |= TTM_PL_FLAG_IDLE;
r = ttm_bo_validate(bo, &abo->placement, &ctx);
if (unlikely(r == -EBUSY || r == -ERESTARTSYS))
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 05991c5c8ddb..9a6a00b1af40 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -102,23 +102,19 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
/* Don't handle scatter gather BOs */
if (bo->type == ttm_bo_type_sg) {
placement->num_placement = 0;
- placement->num_busy_placement = 0;
return;
}
/* Object isn't an AMDGPU object so ignore */
if (!amdgpu_bo_is_amdgpu_bo(bo)) {
placement->placement = &placements;
- placement->busy_placement = &placements;
placement->num_placement = 1;
- placement->num_busy_placement = 1;
return;
}
abo = ttm_to_amdgpu_bo(bo);
if (abo->flags & AMDGPU_GEM_CREATE_DISCARDABLE) {
placement->num_placement = 0;
- placement->num_busy_placement = 0;
return;
}
@@ -128,13 +124,13 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
case AMDGPU_PL_OA:
case AMDGPU_PL_DOORBELL:
placement->num_placement = 0;
- placement->num_busy_placement = 0;
return;
case TTM_PL_VRAM:
if (!adev->mman.buffer_funcs_enabled) {
/* Move to system memory */
amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
+
} else if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
!(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
amdgpu_bo_in_cpu_visible_vram(abo)) {
@@ -149,8 +145,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
AMDGPU_GEM_DOMAIN_CPU);
abo->placements[0].fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
abo->placements[0].lpfn = 0;
- abo->placement.busy_placement = &abo->placements[1];
- abo->placement.num_busy_placement = 1;
+ abo->placements[0].flags |= TTM_PL_FLAG_IDLE;
} else {
/* Move to GTT memory */
amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT |
@@ -967,8 +962,6 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
/* allocate GART space */
placement.num_placement = 1;
placement.placement = &placements;
- placement.num_busy_placement = 1;
- placement.busy_placement = &placements;
placements.fpfn = 0;
placements.lpfn = adev->gmc.gart_size >> PAGE_SHIFT;
placements.mem_type = TTM_PL_TT;
diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c
index b67eafa55715..75f2eaf0d5b6 100644
--- a/drivers/gpu/drm/drm_gem_vram_helper.c
+++ b/drivers/gpu/drm/drm_gem_vram_helper.c
@@ -147,7 +147,6 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
invariant_flags = TTM_PL_FLAG_TOPDOWN;
gbo->placement.placement = gbo->placements;
- gbo->placement.busy_placement = gbo->placements;
if (pl_flag & DRM_GEM_VRAM_PL_FLAG_VRAM) {
gbo->placements[c].mem_type = TTM_PL_VRAM;
@@ -160,7 +159,6 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
}
gbo->placement.num_placement = c;
- gbo->placement.num_busy_placement = c;
for (i = 0; i < c; ++i) {
gbo->placements[i].fpfn = 0;
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
index 9227f8146a58..48fc9779fd50 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
@@ -65,8 +65,6 @@ static const struct ttm_place sys_placement_flags = {
static struct ttm_placement i915_sys_placement = {
.num_placement = 1,
.placement = &sys_placement_flags,
- .num_busy_placement = 1,
- .busy_placement = &sys_placement_flags,
};
/**
@@ -157,32 +155,28 @@ i915_ttm_place_from_region(const struct intel_memory_region *mr,
static void
i915_ttm_placement_from_obj(const struct drm_i915_gem_object *obj,
- struct ttm_place *requested,
- struct ttm_place *busy,
+ struct ttm_place *places,
struct ttm_placement *placement)
{
unsigned int num_allowed = obj->mm.n_placements;
unsigned int flags = obj->flags;
unsigned int i;
- placement->num_placement = 1;
+ places[0].flags |= TTM_PL_FLAG_IDLE;
i915_ttm_place_from_region(num_allowed ? obj->mm.placements[0] :
- obj->mm.region, requested, obj->bo_offset,
+ obj->mm.region, &places[0], obj->bo_offset,
obj->base.size, flags);
/* Cache this on object? */
- placement->num_busy_placement = num_allowed;
- for (i = 0; i < placement->num_busy_placement; ++i)
- i915_ttm_place_from_region(obj->mm.placements[i], busy + i,
- obj->bo_offset, obj->base.size, flags);
-
- if (num_allowed == 0) {
- *busy = *requested;
- placement->num_busy_placement = 1;
+ for (i = 0; i < num_allowed; ++i) {
+ i915_ttm_place_from_region(obj->mm.placements[i],
+ &places[i + 1], obj->bo_offset,
+ obj->base.size, flags);
+ places[i + 1].flags |= TTM_PL_FLAG_BUSY;
}
- placement->placement = requested;
- placement->busy_placement = busy;
+ placement->num_placement = num_allowed + 1;
+ placement->placement = places;
}
static int i915_ttm_tt_shmem_populate(struct ttm_device *bdev,
@@ -789,7 +783,8 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
int ret;
/* First try only the requested placement. No eviction. */
- real_num_busy = fetch_and_zero(&placement->num_busy_placement);
+ real_num_busy = placement->num_placement;
+ placement->num_placement = 1;
ret = ttm_bo_validate(bo, placement, &ctx);
if (ret) {
ret = i915_ttm_err_to_gem(ret);
@@ -805,7 +800,7 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
* If the initial attempt fails, allow all accepted placements,
* evicting if necessary.
*/
- placement->num_busy_placement = real_num_busy;
+ placement->num_placement = real_num_busy;
ret = ttm_bo_validate(bo, placement, &ctx);
if (ret)
return i915_ttm_err_to_gem(ret);
@@ -839,7 +834,7 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
static int i915_ttm_get_pages(struct drm_i915_gem_object *obj)
{
- struct ttm_place requested, busy[I915_TTM_MAX_PLACEMENTS];
+ struct ttm_place places[I915_TTM_MAX_PLACEMENTS + 1];
struct ttm_placement placement;
/* restricted by sg_alloc_table */
@@ -849,7 +844,7 @@ static int i915_ttm_get_pages(struct drm_i915_gem_object *obj)
GEM_BUG_ON(obj->mm.n_placements > I915_TTM_MAX_PLACEMENTS);
/* Move to the requested placement. */
- i915_ttm_placement_from_obj(obj, &requested, busy, &placement);
+ i915_ttm_placement_from_obj(obj, places, &placement);
return __i915_ttm_get_pages(obj, &placement);
}
@@ -879,9 +874,7 @@ static int __i915_ttm_migrate(struct drm_i915_gem_object *obj,
i915_ttm_place_from_region(mr, &requested, obj->bo_offset,
obj->base.size, flags);
placement.num_placement = 1;
- placement.num_busy_placement = 1;
placement.placement = &requested;
- placement.busy_placement = &requested;
ret = __i915_ttm_get_pages(obj, &placement);
if (ret)
diff --git a/drivers/gpu/drm/loongson/lsdc_ttm.c b/drivers/gpu/drm/loongson/lsdc_ttm.c
index bf79dc55afa4..465f622ac05d 100644
--- a/drivers/gpu/drm/loongson/lsdc_ttm.c
+++ b/drivers/gpu/drm/loongson/lsdc_ttm.c
@@ -54,7 +54,6 @@ static void lsdc_bo_set_placement(struct lsdc_bo *lbo, u32 domain)
pflags |= TTM_PL_FLAG_TOPDOWN;
lbo->placement.placement = lbo->placements;
- lbo->placement.busy_placement = lbo->placements;
if (domain & LSDC_GEM_DOMAIN_VRAM) {
lbo->placements[c].mem_type = TTM_PL_VRAM;
@@ -77,7 +76,6 @@ static void lsdc_bo_set_placement(struct lsdc_bo *lbo, u32 domain)
}
lbo->placement.num_placement = c;
- lbo->placement.num_busy_placement = c;
for (i = 0; i < c; ++i) {
lbo->placements[i].fpfn = 0;
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index b7dda486a7ea..575875b6e47e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -403,27 +403,6 @@ nouveau_bo_new(struct nouveau_cli *cli, u64 size, int align,
return 0;
}
-static void
-set_placement_list(struct ttm_place *pl, unsigned *n, uint32_t domain)
-{
- *n = 0;
-
- if (domain & NOUVEAU_GEM_DOMAIN_VRAM) {
- pl[*n].mem_type = TTM_PL_VRAM;
- pl[*n].flags = 0;
- (*n)++;
- }
- if (domain & NOUVEAU_GEM_DOMAIN_GART) {
- pl[*n].mem_type = TTM_PL_TT;
- pl[*n].flags = 0;
- (*n)++;
- }
- if (domain & NOUVEAU_GEM_DOMAIN_CPU) {
- pl[*n].mem_type = TTM_PL_SYSTEM;
- pl[(*n)++].flags = 0;
- }
-}
-
static void
set_placement_range(struct nouveau_bo *nvbo, uint32_t domain)
{
@@ -451,10 +430,6 @@ set_placement_range(struct nouveau_bo *nvbo, uint32_t domain)
nvbo->placements[i].fpfn = fpfn;
nvbo->placements[i].lpfn = lpfn;
}
- for (i = 0; i < nvbo->placement.num_busy_placement; ++i) {
- nvbo->busy_placements[i].fpfn = fpfn;
- nvbo->busy_placements[i].lpfn = lpfn;
- }
}
}
@@ -462,15 +437,32 @@ void
nouveau_bo_placement_set(struct nouveau_bo *nvbo, uint32_t domain,
uint32_t busy)
{
- struct ttm_placement *pl = &nvbo->placement;
+ unsigned int *n = &nvbo->placement.num_placement;
+ struct ttm_place *pl = nvbo->placements;
- pl->placement = nvbo->placements;
- set_placement_list(nvbo->placements, &pl->num_placement, domain);
+ domain |= busy;
- pl->busy_placement = nvbo->busy_placements;
- set_placement_list(nvbo->busy_placements, &pl->num_busy_placement,
- domain | busy);
+ *n = 0;
+ if (domain & NOUVEAU_GEM_DOMAIN_VRAM) {
+ pl[*n].mem_type = TTM_PL_VRAM;
+ pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_VRAM ?
+ TTM_PL_FLAG_BUSY : 0;
+ (*n)++;
+ }
+ if (domain & NOUVEAU_GEM_DOMAIN_GART) {
+ pl[*n].mem_type = TTM_PL_TT;
+ pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_GART ?
+ TTM_PL_FLAG_BUSY : 0;
+ (*n)++;
+ }
+ if (domain & NOUVEAU_GEM_DOMAIN_CPU) {
+ pl[*n].mem_type = TTM_PL_SYSTEM;
+ pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_CPU ?
+ TTM_PL_FLAG_BUSY : 0;
+ (*n)++;
+ }
+ nvbo->placement.placement = nvbo->placements;
set_placement_range(nvbo, domain);
}
@@ -1313,11 +1305,6 @@ vm_fault_t nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
nvbo->placements[i].lpfn = mappable;
}
- for (i = 0; i < nvbo->placement.num_busy_placement; ++i) {
- nvbo->busy_placements[i].fpfn = 0;
- nvbo->busy_placements[i].lpfn = mappable;
- }
-
nouveau_bo_placement_set(nvbo, NOUVEAU_GEM_DOMAIN_VRAM, 0);
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
index 70c551921a9e..e9dfab6a8156 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
@@ -15,7 +15,6 @@ struct nouveau_bo {
struct ttm_placement placement;
u32 valid_domains;
struct ttm_place placements[3];
- struct ttm_place busy_placements[3];
bool force_coherent;
struct ttm_bo_kmap_obj kmap;
struct list_head head;
diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
index 06a58dad5f5c..1e46b0a6e478 100644
--- a/drivers/gpu/drm/qxl/qxl_object.c
+++ b/drivers/gpu/drm/qxl/qxl_object.c
@@ -66,7 +66,6 @@ void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain)
pflag |= TTM_PL_FLAG_TOPDOWN;
qbo->placement.placement = qbo->placements;
- qbo->placement.busy_placement = qbo->placements;
if (domain == QXL_GEM_DOMAIN_VRAM) {
qbo->placements[c].mem_type = TTM_PL_VRAM;
qbo->placements[c++].flags = pflag;
@@ -86,7 +85,6 @@ void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain)
qbo->placements[c++].flags = 0;
}
qbo->placement.num_placement = c;
- qbo->placement.num_busy_placement = c;
for (i = 0; i < c; ++i) {
qbo->placements[i].fpfn = 0;
qbo->placements[i].lpfn = 0;
diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
index 1a82629bce3f..765a144cea14 100644
--- a/drivers/gpu/drm/qxl/qxl_ttm.c
+++ b/drivers/gpu/drm/qxl/qxl_ttm.c
@@ -60,9 +60,7 @@ static void qxl_evict_flags(struct ttm_buffer_object *bo,
if (!qxl_ttm_bo_is_qxl_bo(bo)) {
placement->placement = &placements;
- placement->busy_placement = &placements;
placement->num_placement = 1;
- placement->num_busy_placement = 1;
return;
}
qbo = to_qxl_bo(bo);
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
index 10c0fbd9d2b4..a955f8a2f7fe 100644
--- a/drivers/gpu/drm/radeon/radeon_object.c
+++ b/drivers/gpu/drm/radeon/radeon_object.c
@@ -78,7 +78,6 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
u32 c = 0, i;
rbo->placement.placement = rbo->placements;
- rbo->placement.busy_placement = rbo->placements;
if (domain & RADEON_GEM_DOMAIN_VRAM) {
/* Try placing BOs which don't need CPU access outside of the
* CPU accessible part of VRAM
@@ -114,7 +113,6 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
}
rbo->placement.num_placement = c;
- rbo->placement.num_busy_placement = c;
for (i = 0; i < c; ++i) {
if ((rbo->flags & RADEON_GEM_CPU_ACCESS) &&
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index de4e6d78f1e1..d641f3040117 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -92,9 +92,7 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
if (!radeon_ttm_bo_is_radeon_bo(bo)) {
placement->placement = &placements;
- placement->busy_placement = &placements;
placement->num_placement = 1;
- placement->num_busy_placement = 1;
return;
}
rbo = container_of(bo, struct radeon_bo, tbo);
@@ -114,15 +112,11 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
*/
radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM |
RADEON_GEM_DOMAIN_GTT);
- rbo->placement.num_busy_placement = 0;
for (i = 0; i < rbo->placement.num_placement; i++) {
if (rbo->placements[i].mem_type == TTM_PL_VRAM) {
if (rbo->placements[i].fpfn < fpfn)
rbo->placements[i].fpfn = fpfn;
- } else {
- rbo->placement.busy_placement =
- &rbo->placements[i];
- rbo->placement.num_busy_placement = 1;
+ rbo->placements[0].flags |= TTM_PL_FLAG_IDLE;
}
}
} else
diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c
index a2cda184b2b2..058a1c8451b2 100644
--- a/drivers/gpu/drm/radeon/radeon_uvd.c
+++ b/drivers/gpu/drm/radeon/radeon_uvd.c
@@ -324,7 +324,6 @@ void radeon_uvd_force_into_uvd_segment(struct radeon_bo *rbo,
rbo->placements[1].fpfn += (256 * 1024 * 1024) >> PAGE_SHIFT;
rbo->placements[1].lpfn += (256 * 1024 * 1024) >> PAGE_SHIFT;
rbo->placement.num_placement++;
- rbo->placement.num_busy_placement++;
}
void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 8c1eaa74fa21..aa12bd5cfd17 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -410,8 +410,8 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
struct ttm_resource *hop_mem;
int ret;
- hop_placement.num_placement = hop_placement.num_busy_placement = 1;
- hop_placement.placement = hop_placement.busy_placement = hop;
+ hop_placement.num_placement = 1;
+ hop_placement.placement = hop;
/* find space in the bounce domain */
ret = ttm_bo_mem_space(bo, &hop_placement, &hop_mem, ctx);
@@ -440,10 +440,9 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
dma_resv_assert_held(bo->base.resv);
placement.num_placement = 0;
- placement.num_busy_placement = 0;
bdev->funcs->evict_flags(bo, &placement);
- if (!placement.num_placement && !placement.num_busy_placement) {
+ if (!placement.num_placement) {
ret = ttm_bo_wait_ctx(bo, ctx);
if (ret)
return ret;
@@ -791,6 +790,9 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
const struct ttm_place *place = &placement->placement[i];
struct ttm_resource_manager *man;
+ if (place->flags & TTM_PL_FLAG_BUSY)
+ continue;
+
man = ttm_manager_type(bdev, place->mem_type);
if (!man || !ttm_resource_manager_used(man))
continue;
@@ -813,10 +815,13 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
return 0;
}
- for (i = 0; i < placement->num_busy_placement; ++i) {
- const struct ttm_place *place = &placement->busy_placement[i];
+ for (i = 0; i < placement->num_placement; ++i) {
+ const struct ttm_place *place = &placement->placement[i];
struct ttm_resource_manager *man;
+ if (place->flags & TTM_PL_FLAG_IDLE)
+ continue;
+
man = ttm_manager_type(bdev, place->mem_type);
if (!man || !ttm_resource_manager_used(man))
continue;
@@ -904,11 +909,11 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
/*
* Remove the backing store if no placement is given.
*/
- if (!placement->num_placement && !placement->num_busy_placement)
+ if (!placement->num_placement)
return ttm_bo_pipeline_gutting(bo);
/* Check whether we need to move buffer. */
- if (bo->resource && ttm_resource_compat(bo->resource, placement))
+ if (bo->resource && ttm_resource_compatible(bo->resource, placement))
return 0;
/* Moving of pinned BOs is forbidden */
diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
index 02b96d23fdb9..fb14f7716cf8 100644
--- a/drivers/gpu/drm/ttm/ttm_resource.c
+++ b/drivers/gpu/drm/ttm/ttm_resource.c
@@ -291,37 +291,15 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
}
/**
- * ttm_resource_compatible - test for compatibility
+ * ttm_resource_compatible - check if resource is compatible with placement
*
- * @bdev: TTM device structure
- * @res: The resource to test
- * @place: The placement to test
- * @size: How many bytes the new allocation needs.
- *
- * Test if @res compatible with @place and @size.
+ * @res: the resource to check
+ * @placement: the placement to check against
*
- * Returns true if the res placement compatible with @place and @size.
+ * Returns true if the placement is compatible.
*/
-bool ttm_resource_compatible(struct ttm_device *bdev,
- struct ttm_resource *res,
- const struct ttm_place *place,
- size_t size)
-{
- struct ttm_resource_manager *man;
-
- if (!res || !place)
- return false;
-
- man = ttm_manager_type(bdev, res->mem_type);
- if (!man->func->compatible)
- return true;
-
- return man->func->compatible(man, res, place, size);
-}
-
-static bool ttm_resource_places_compat(struct ttm_resource *res,
- const struct ttm_place *places,
- unsigned num_placement)
+bool ttm_resource_compatible(struct ttm_resource *res,
+ struct ttm_placement *placement)
{
struct ttm_buffer_object *bo = res->bo;
struct ttm_device *bdev = bo->bdev;
@@ -330,44 +308,25 @@ static bool ttm_resource_places_compat(struct ttm_resource *res,
if (res->placement & TTM_PL_FLAG_TEMPORARY)
return false;
- for (i = 0; i < num_placement; i++) {
- const struct ttm_place *heap = &places[i];
+ for (i = 0; i < placement->num_placement; i++) {
+ const struct ttm_place *place = &placement->placement[i];
+ struct ttm_resource_manager *man;
- if (!ttm_resource_compatible(bdev, res, heap, bo->base.size))
+ if (res->mem_type != place->mem_type)
+ continue;
+
+ man = ttm_manager_type(bdev, res->mem_type);
+ if (man->func->compatible &&
+ !man->func->compatible(man, res, place, bo->base.size))
continue;
- if ((res->mem_type == heap->mem_type) &&
- (!(heap->flags & TTM_PL_FLAG_CONTIGUOUS) ||
+ if ((!(place->flags & TTM_PL_FLAG_CONTIGUOUS) ||
(res->placement & TTM_PL_FLAG_CONTIGUOUS)))
return true;
}
return false;
}
-/**
- * ttm_resource_compat - check if resource is compatible with placement
- *
- * @res: the resource to check
- * @placement: the placement to check against
- *
- * Returns true if the placement is compatible.
- */
-bool ttm_resource_compat(struct ttm_resource *res,
- struct ttm_placement *placement)
-{
- if (ttm_resource_places_compat(res, placement->placement,
- placement->num_placement))
- return true;
-
- if ((placement->busy_placement != placement->placement ||
- placement->num_busy_placement > placement->num_placement) &&
- ttm_resource_places_compat(res, placement->busy_placement,
- placement->num_busy_placement))
- return true;
-
- return false;
-}
-
void ttm_resource_set_bo(struct ttm_resource *res,
struct ttm_buffer_object *bo)
{
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
index 2bfac3aad7b7..7d7b33fcb5cf 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
@@ -821,8 +821,6 @@ void vmw_bo_placement_set(struct vmw_bo *bo, u32 domain, u32 busy_domain)
__func__, bo->tbo.resource->mem_type, domain);
}
- pl->busy_placement = bo->busy_places;
- pl->num_busy_placement = set_placement_list(bo->busy_places, busy_domain);
}
void vmw_bo_placement_set_default_accelerated(struct vmw_bo *bo)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
index a84fffcef8e1..4d23d0a70bcb 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
@@ -46,15 +46,11 @@ static const struct ttm_place sys_placement_flags = {
struct ttm_placement vmw_vram_placement = {
.num_placement = 1,
.placement = &vram_placement_flags,
- .num_busy_placement = 1,
- .busy_placement = &vram_placement_flags
};
struct ttm_placement vmw_sys_placement = {
.num_placement = 1,
.placement = &sys_placement_flags,
- .num_busy_placement = 1,
- .busy_placement = &sys_placement_flags
};
const size_t vmw_tt_size = sizeof(struct vmw_ttm_tt);
diff --git a/include/drm/ttm/ttm_placement.h b/include/drm/ttm/ttm_placement.h
index 8074d0f6cae5..c70e489e1f1e 100644
--- a/include/drm/ttm/ttm_placement.h
+++ b/include/drm/ttm/ttm_placement.h
@@ -64,6 +64,12 @@
/* For multihop handling */
#define TTM_PL_FLAG_TEMPORARY (1 << 2)
+/* Placement is never used during eviction */
+#define TTM_PL_FLAG_IDLE (1 << 3)
+
+/* Placement is only used during eviction */
+#define TTM_PL_FLAG_BUSY (1 << 4)
+
/**
* struct ttm_place
*
@@ -86,16 +92,12 @@ struct ttm_place {
*
* @num_placement: number of preferred placements
* @placement: preferred placements
- * @num_busy_placement: number of preferred placements when need to evict buffer
- * @busy_placement: preferred placements when need to evict buffer
*
* Structure indicating the placement you request for an object.
*/
struct ttm_placement {
unsigned num_placement;
const struct ttm_place *placement;
- unsigned num_busy_placement;
- const struct ttm_place *busy_placement;
};
#endif
diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
index 78a226eba953..1afa13f0c22b 100644
--- a/include/drm/ttm/ttm_resource.h
+++ b/include/drm/ttm/ttm_resource.h
@@ -365,12 +365,8 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
struct ttm_resource *res,
const struct ttm_place *place,
size_t size);
-bool ttm_resource_compatible(struct ttm_device *bdev,
- struct ttm_resource *res,
- const struct ttm_place *place,
- size_t size);
-bool ttm_resource_compat(struct ttm_resource *res,
- struct ttm_placement *placement);
+bool ttm_resource_compatible(struct ttm_resource *res,
+ struct ttm_placement *placement);
void ttm_resource_set_bo(struct ttm_resource *res,
struct ttm_buffer_object *bo);
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/5] drm/ttm: improve idle/busy handling v2
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (2 preceding siblings ...)
2024-01-09 7:47 ` [PATCH 3/5] drm/ttm: replace busy placement with flags v5 Christian König
@ 2024-01-09 7:47 ` Christian König
2024-01-09 7:47 ` [PATCH 5/5] drm/amdgpu: use GTT only as fallback for VRAM|GTT Christian König
` (5 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Previously we would never try to move a BO into the preferred placements
when it ever landed in a busy placement since those were considered
compatible.
Rework the whole handling and finally unify the idle and busy handling.
ttm_bo_validate() is now responsible to try idle placement first and then
use the busy placement if that didn't worked.
Drawback is that we now always try the idle placement first for each
validation which might cause some additional CPU overhead on overcommit.
v2: fix kerneldoc warning and coding style
Signed-off-by: Christian König <christian.koenig@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +-
drivers/gpu/drm/ttm/ttm_bo.c | 131 ++++++++-------------
drivers/gpu/drm/ttm/ttm_resource.c | 15 ++-
include/drm/ttm/ttm_bo.h | 3 +-
include/drm/ttm/ttm_resource.h | 3 +-
6 files changed, 65 insertions(+), 91 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index aa0dd6dad068..f110dfdc4feb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -404,7 +404,7 @@ int amdgpu_bo_create_kernel_at(struct amdgpu_device *adev,
(*bo_ptr)->placements[i].lpfn = (offset + size) >> PAGE_SHIFT;
}
r = ttm_bo_mem_space(&(*bo_ptr)->tbo, &(*bo_ptr)->placement,
- &(*bo_ptr)->tbo.resource, &ctx);
+ &(*bo_ptr)->tbo.resource, &ctx, false);
if (r)
goto error;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 9a6a00b1af40..00da9a81cf6c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -967,7 +967,7 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
placements.mem_type = TTM_PL_TT;
placements.flags = bo->resource->placement;
- r = ttm_bo_mem_space(bo, &placement, &tmp, &ctx);
+ r = ttm_bo_mem_space(bo, &placement, &tmp, &ctx, true);
if (unlikely(r))
return r;
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index aa12bd5cfd17..17bfc252f76d 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -414,7 +414,7 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
hop_placement.placement = hop;
/* find space in the bounce domain */
- ret = ttm_bo_mem_space(bo, &hop_placement, &hop_mem, ctx);
+ ret = ttm_bo_mem_space(bo, &hop_placement, &hop_mem, ctx, true);
if (ret)
return ret;
/* move to the bounce domain */
@@ -454,7 +454,7 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
return ttm_bo_pipeline_gutting(bo);
}
- ret = ttm_bo_mem_space(bo, &placement, &evict_mem, ctx);
+ ret = ttm_bo_mem_space(bo, &placement, &evict_mem, ctx, true);
if (ret) {
if (ret != -ERESTARTSYS) {
pr_err("Failed to find memory space for buffer 0x%p eviction\n",
@@ -724,37 +724,6 @@ static int ttm_bo_add_move_fence(struct ttm_buffer_object *bo,
return ret;
}
-/*
- * Repeatedly evict memory from the LRU for @mem_type until we create enough
- * space, or we've evicted everything and there isn't enough space.
- */
-static int ttm_bo_mem_force_space(struct ttm_buffer_object *bo,
- const struct ttm_place *place,
- struct ttm_resource **mem,
- struct ttm_operation_ctx *ctx)
-{
- struct ttm_device *bdev = bo->bdev;
- struct ttm_resource_manager *man;
- struct ww_acquire_ctx *ticket;
- int ret;
-
- man = ttm_manager_type(bdev, place->mem_type);
- ticket = dma_resv_locking_ctx(bo->base.resv);
- do {
- ret = ttm_resource_alloc(bo, place, mem);
- if (likely(!ret))
- break;
- if (unlikely(ret != -ENOSPC))
- return ret;
- ret = ttm_mem_evict_first(bdev, man, place, ctx,
- ticket);
- if (unlikely(ret != 0))
- return ret;
- } while (1);
-
- return ttm_bo_add_move_fence(bo, man, *mem, ctx->no_wait_gpu);
-}
-
/**
* ttm_bo_mem_space
*
@@ -763,6 +732,7 @@ static int ttm_bo_mem_force_space(struct ttm_buffer_object *bo,
* @placement: Proposed new placement for the buffer object.
* @mem: A struct ttm_resource.
* @ctx: if and how to sleep, lock buffers and alloc memory
+ * @force_space: If we should evict buffers to force space
*
* Allocate memory space for the buffer object pointed to by @bo, using
* the placement flags in @placement, potentially evicting other idle buffer objects.
@@ -776,12 +746,14 @@ static int ttm_bo_mem_force_space(struct ttm_buffer_object *bo,
int ttm_bo_mem_space(struct ttm_buffer_object *bo,
struct ttm_placement *placement,
struct ttm_resource **mem,
- struct ttm_operation_ctx *ctx)
+ struct ttm_operation_ctx *ctx,
+ bool force_space)
{
struct ttm_device *bdev = bo->bdev;
- bool type_found = false;
+ struct ww_acquire_ctx *ticket;
int i, ret;
+ ticket = dma_resv_locking_ctx(bo->base.resv);
ret = dma_resv_reserve_fences(bo->base.resv, 1);
if (unlikely(ret))
return ret;
@@ -790,19 +762,30 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
const struct ttm_place *place = &placement->placement[i];
struct ttm_resource_manager *man;
- if (place->flags & TTM_PL_FLAG_BUSY)
- continue;
-
man = ttm_manager_type(bdev, place->mem_type);
if (!man || !ttm_resource_manager_used(man))
continue;
- type_found = true;
- ret = ttm_resource_alloc(bo, place, mem);
- if (ret == -ENOSPC)
+ if (place->flags & (force_space ? TTM_PL_FLAG_IDLE :
+ TTM_PL_FLAG_BUSY))
+ continue;
+
+ do {
+ ret = ttm_resource_alloc(bo, place, mem);
+ if (unlikely(ret != -ENOSPC))
+ return ret;
+ if (likely(!ret) || !force_space)
+ break;
+
+ ret = ttm_mem_evict_first(bdev, man, place, ctx,
+ ticket);
+ if (unlikely(ret == -EBUSY))
+ break;
+ if (unlikely(ret))
+ return ret;
+ } while (1);
+ if (ret)
continue;
- if (unlikely(ret))
- goto error;
ret = ttm_bo_add_move_fence(bo, man, *mem, ctx->no_wait_gpu);
if (unlikely(ret)) {
@@ -810,45 +793,19 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
if (ret == -EBUSY)
continue;
- goto error;
+ return ret;
}
return 0;
}
- for (i = 0; i < placement->num_placement; ++i) {
- const struct ttm_place *place = &placement->placement[i];
- struct ttm_resource_manager *man;
-
- if (place->flags & TTM_PL_FLAG_IDLE)
- continue;
-
- man = ttm_manager_type(bdev, place->mem_type);
- if (!man || !ttm_resource_manager_used(man))
- continue;
-
- type_found = true;
- ret = ttm_bo_mem_force_space(bo, place, mem, ctx);
- if (likely(!ret))
- return 0;
-
- if (ret && ret != -EBUSY)
- goto error;
- }
-
- ret = -ENOSPC;
- if (!type_found) {
- pr_err(TTM_PFX "No compatible memory type found\n");
- ret = -EINVAL;
- }
-
-error:
- return ret;
+ return -ENOSPC;
}
EXPORT_SYMBOL(ttm_bo_mem_space);
static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
struct ttm_placement *placement,
- struct ttm_operation_ctx *ctx)
+ struct ttm_operation_ctx *ctx,
+ bool force_space)
{
struct ttm_resource *mem;
struct ttm_place hop;
@@ -865,7 +822,7 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
* stop and the driver will be called to make
* the second hop.
*/
- ret = ttm_bo_mem_space(bo, placement, &mem, ctx);
+ ret = ttm_bo_mem_space(bo, placement, &mem, ctx, force_space);
if (ret)
return ret;
bounce:
@@ -902,6 +859,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
struct ttm_placement *placement,
struct ttm_operation_ctx *ctx)
{
+ bool force_space;
int ret;
dma_resv_assert_held(bo->base.resv);
@@ -912,20 +870,27 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
if (!placement->num_placement)
return ttm_bo_pipeline_gutting(bo);
- /* Check whether we need to move buffer. */
- if (bo->resource && ttm_resource_compatible(bo->resource, placement))
- return 0;
+ force_space = false;
+ do {
+ /* Check whether we need to move buffer. */
+ if (bo->resource &&
+ ttm_resource_compatible(bo->resource, placement,
+ force_space))
+ return 0;
+
+ /* Moving of pinned BOs is forbidden */
+ if (bo->pin_count)
+ return -EINVAL;
- /* Moving of pinned BOs is forbidden */
- if (bo->pin_count)
- return -EINVAL;
+ ret = ttm_bo_move_buffer(bo, placement, ctx, force_space);
+ if (ret && ret != -ENOSPC)
+ return ret;
- ret = ttm_bo_move_buffer(bo, placement, ctx);
+ force_space = !force_space;
+ } while (force_space);
/* For backward compatibility with userspace */
if (ret == -ENOSPC)
return -ENOMEM;
- if (ret)
- return ret;
/*
* We might need to add a TTM.
diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
index fb14f7716cf8..67052891314c 100644
--- a/drivers/gpu/drm/ttm/ttm_resource.c
+++ b/drivers/gpu/drm/ttm/ttm_resource.c
@@ -295,11 +295,13 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
*
* @res: the resource to check
* @placement: the placement to check against
+ * @busy: controls which places to check
*
* Returns true if the placement is compatible.
*/
bool ttm_resource_compatible(struct ttm_resource *res,
- struct ttm_placement *placement)
+ struct ttm_placement *placement,
+ bool busy)
{
struct ttm_buffer_object *bo = res->bo;
struct ttm_device *bdev = bo->bdev;
@@ -315,14 +317,19 @@ bool ttm_resource_compatible(struct ttm_resource *res,
if (res->mem_type != place->mem_type)
continue;
+ if (place->flags & (busy ? TTM_PL_FLAG_IDLE : TTM_PL_FLAG_BUSY))
+ continue;
+
+ if (place->flags & TTM_PL_FLAG_CONTIGUOUS &&
+ !(res->placement & TTM_PL_FLAG_CONTIGUOUS))
+ continue;
+
man = ttm_manager_type(bdev, res->mem_type);
if (man->func->compatible &&
!man->func->compatible(man, res, place, bo->base.size))
continue;
- if ((!(place->flags & TTM_PL_FLAG_CONTIGUOUS) ||
- (res->placement & TTM_PL_FLAG_CONTIGUOUS)))
- return true;
+ return true;
}
return false;
}
diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h
index 0223a41a64b2..64d738f152d1 100644
--- a/include/drm/ttm/ttm_bo.h
+++ b/include/drm/ttm/ttm_bo.h
@@ -397,7 +397,8 @@ vm_fault_t ttm_bo_vm_dummy_page(struct vm_fault *vmf, pgprot_t prot);
int ttm_bo_mem_space(struct ttm_buffer_object *bo,
struct ttm_placement *placement,
struct ttm_resource **mem,
- struct ttm_operation_ctx *ctx);
+ struct ttm_operation_ctx *ctx,
+ bool force_space);
void ttm_bo_unmap_virtual(struct ttm_buffer_object *bo);
/*
diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
index 1afa13f0c22b..514858c49848 100644
--- a/include/drm/ttm/ttm_resource.h
+++ b/include/drm/ttm/ttm_resource.h
@@ -366,7 +366,8 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
const struct ttm_place *place,
size_t size);
bool ttm_resource_compatible(struct ttm_resource *res,
- struct ttm_placement *placement);
+ struct ttm_placement *placement,
+ bool busy);
void ttm_resource_set_bo(struct ttm_resource *res,
struct ttm_buffer_object *bo);
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/5] drm/amdgpu: use GTT only as fallback for VRAM|GTT
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (3 preceding siblings ...)
2024-01-09 7:47 ` [PATCH 4/5] drm/ttm: improve idle/busy handling v2 Christian König
@ 2024-01-09 7:47 ` Christian König
2024-01-09 8:14 ` Rework TTMs busy handling Thomas Hellström
` (4 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Christian König @ 2024-01-09 7:47 UTC (permalink / raw)
To: zack.rusin, thomas.hellstrom, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Try to fill up VRAM as well by setting the busy flag on GTT allocations.
This fixes the issue that when VRAM was evacuated for suspend it's never
filled up again unless the application is restarted.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index f110dfdc4feb..979cecf18f17 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -173,6 +173,12 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)
abo->flags & AMDGPU_GEM_CREATE_PREEMPTIBLE ?
AMDGPU_PL_PREEMPT : TTM_PL_TT;
places[c].flags = 0;
+ /*
+ * When GTT is just an alternative to VRAM make sure that we
+ * only use it as fallback and still try to fill up VRAM first.
+ */
+ if (domain & abo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM)
+ places[c].flags |= TTM_PL_FLAG_BUSY;
c++;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: Rework TTMs busy handling
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (4 preceding siblings ...)
2024-01-09 7:47 ` [PATCH 5/5] drm/amdgpu: use GTT only as fallback for VRAM|GTT Christian König
@ 2024-01-09 8:14 ` Thomas Hellström
2024-01-09 8:34 ` Christian König
2024-01-09 8:18 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Patchwork
` (3 subsequent siblings)
9 siblings, 1 reply; 17+ messages in thread
From: Thomas Hellström @ 2024-01-09 8:14 UTC (permalink / raw)
To: Christian König, zack.rusin, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Hi, Christian
On Tue, 2024-01-09 at 08:47 +0100, Christian König wrote:
> Hi guys,
>
> I'm trying to make this functionality a bit more useful for years now
> since we multiple reports that behavior of drivers can be suboptimal
> when multiple placements be given.
>
> So basically instead of hacking around the TTM behavior in the driver
> once more I've gone ahead and changed the idle/busy placement list
> into idle/busy placement flags. This not only saves a bunch of code,
> but also allows setting some placements as fallback which are used if
> allocating from the preferred ones didn't worked.
>
> Zack pointed out that some removed VMWGFX code was brought back
> because
> of rebasing, fixed in this version.
>
> Intel CI seems to be happy with those patches, so any more comments?
Looks like Xe changes are missing? (xe is now in drm-tip).
I also have some doubts about the naming "idle" vs "busy", since an
elaborate eviction mechanism would probably at some point want to check
for gpu idle vs gpu busy, and this might create some confusion moving
forward for people confusing busy as in memory overcommit with busy as
in gpu activity.
I can't immediately think of something better, though.
/Thomas
>
> Regards,
> Christian.
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (5 preceding siblings ...)
2024-01-09 8:14 ` Rework TTMs busy handling Thomas Hellström
@ 2024-01-09 8:18 ` Patchwork
2024-01-09 8:18 ` ✗ Fi.CI.SPARSE: " Patchwork
` (2 subsequent siblings)
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-01-09 8:18 UTC (permalink / raw)
To: Christian König; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
URL : https://patchwork.freedesktop.org/series/128355/
State : warning
== Summary ==
Error: dim checkpatch failed
3215387b42ab drm/vmwgfx: remove vmw_vram_gmr_placement
-:70: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: "Christian König" <ckoenig.leichtzumerken@gmail.com>' != 'Signed-off-by: Christian König <christian.koenig@amd.com>'
total: 0 errors, 1 warnings, 0 checks, 47 lines checked
6c54d65338a8 drm/ttm: return ENOSPC from ttm_bo_mem_space
-:35: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: "Christian König" <ckoenig.leichtzumerken@gmail.com>' != 'Signed-off-by: Christian König <christian.koenig@amd.com>'
total: 0 errors, 1 warnings, 0 checks, 17 lines checked
649aee04eb37 drm/ttm: replace busy placement with flags v5
14e27651bb55 drm/ttm: improve idle/busy handling v2
-:347: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: "Christian König" <ckoenig.leichtzumerken@gmail.com>' != 'Signed-off-by: Christian König <christian.koenig@amd.com>'
total: 0 errors, 1 warnings, 0 checks, 284 lines checked
224e2d78eae5 drm/amdgpu: use GTT only as fallback for VRAM|GTT
-:32: WARNING:FROM_SIGN_OFF_MISMATCH: From:/Signed-off-by: email address mismatch: 'From: "Christian König" <ckoenig.leichtzumerken@gmail.com>' != 'Signed-off-by: Christian König <christian.koenig@amd.com>'
total: 0 errors, 1 warnings, 0 checks, 12 lines checked
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.SPARSE: warning for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (6 preceding siblings ...)
2024-01-09 8:18 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Patchwork
@ 2024-01-09 8:18 ` Patchwork
2024-01-09 8:31 ` ✓ Fi.CI.BAT: success " Patchwork
2024-01-09 14:09 ` ✗ Fi.CI.IGT: failure " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-01-09 8:18 UTC (permalink / raw)
To: Christian König; +Cc: intel-gfx
== Series Details ==
Series: series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
URL : https://patchwork.freedesktop.org/series/128355/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✓ Fi.CI.BAT: success for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (7 preceding siblings ...)
2024-01-09 8:18 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-01-09 8:31 ` Patchwork
2024-01-09 14:09 ` ✗ Fi.CI.IGT: failure " Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-01-09 8:31 UTC (permalink / raw)
To: Christian König; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 11332 bytes --]
== Series Details ==
Series: series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
URL : https://patchwork.freedesktop.org/series/128355/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_14099 -> Patchwork_128355v1
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/index.html
Participating hosts (34 -> 36)
------------------------------
Additional (3): bat-kbl-2 bat-adlm-1 bat-mtlp-8
Missing (1): fi-snb-2520m
Known issues
------------
Here are the changes found in Patchwork_128355v1 that come from known issues:
### CI changes ###
#### Issues hit ####
* boot:
- bat-jsl-1: [PASS][1] -> [FAIL][2] ([i915#8293])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/bat-jsl-1/boot.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-jsl-1/boot.html
### IGT changes ###
#### Issues hit ####
* igt@debugfs_test@basic-hwmon:
- bat-mtlp-8: NOTRUN -> [SKIP][3] ([i915#9318])
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@debugfs_test@basic-hwmon.html
- bat-adlm-1: NOTRUN -> [SKIP][4] ([i915#3826])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@debugfs_test@basic-hwmon.html
* igt@fbdev@eof:
- bat-adlm-1: NOTRUN -> [SKIP][5] ([i915#2582]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@fbdev@eof.html
* igt@fbdev@info:
- bat-kbl-2: NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#1849])
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-kbl-2/igt@fbdev@info.html
- bat-adlm-1: NOTRUN -> [SKIP][7] ([i915#1849] / [i915#2582])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@fbdev@info.html
* igt@gem_lmem_swapping@parallel-random-engines:
- bat-kbl-2: NOTRUN -> [SKIP][8] ([fdo#109271]) +36 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-kbl-2/igt@gem_lmem_swapping@parallel-random-engines.html
- bat-adlm-1: NOTRUN -> [SKIP][9] ([i915#4613]) +3 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@gem_lmem_swapping@parallel-random-engines.html
* igt@gem_lmem_swapping@verify-random:
- bat-mtlp-8: NOTRUN -> [SKIP][10] ([i915#4613]) +3 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@gem_lmem_swapping@verify-random.html
* igt@gem_mmap@basic:
- bat-mtlp-8: NOTRUN -> [SKIP][11] ([i915#4083])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@gem_mmap@basic.html
* igt@gem_mmap_gtt@basic:
- bat-mtlp-8: NOTRUN -> [SKIP][12] ([i915#4077]) +2 other tests skip
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@gem_mmap_gtt@basic.html
* igt@gem_render_tiled_blits@basic:
- bat-mtlp-8: NOTRUN -> [SKIP][13] ([i915#4079]) +1 other test skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@gem_render_tiled_blits@basic.html
* igt@gem_tiled_pread_basic:
- bat-adlm-1: NOTRUN -> [SKIP][14] ([i915#3282])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@gem_tiled_pread_basic.html
* igt@i915_pm_rps@basic-api:
- bat-mtlp-8: NOTRUN -> [SKIP][15] ([i915#6621])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@i915_pm_rps@basic-api.html
- bat-adlm-1: NOTRUN -> [SKIP][16] ([i915#6621])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@i915_pm_rps@basic-api.html
* igt@i915_suspend@basic-s3-without-i915:
- bat-mtlp-8: NOTRUN -> [SKIP][17] ([i915#6645])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@i915_suspend@basic-s3-without-i915.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-mtlp-8: NOTRUN -> [SKIP][18] ([i915#5190])
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_addfb_basic@basic-y-tiled-legacy:
- bat-mtlp-8: NOTRUN -> [SKIP][19] ([i915#4212]) +8 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
- bat-mtlp-8: NOTRUN -> [SKIP][20] ([i915#4213]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size:
- bat-adlm-1: NOTRUN -> [SKIP][21] ([i915#9875] / [i915#9900]) +17 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_cursor_legacy@basic-flip-after-cursor-varying-size.html
* igt@kms_dsc@dsc-basic:
- bat-mtlp-8: NOTRUN -> [SKIP][22] ([i915#3555] / [i915#3840] / [i915#9159])
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_dsc@dsc-basic.html
* igt@kms_flip@basic-plain-flip:
- bat-adlm-1: NOTRUN -> [SKIP][23] ([i915#3637]) +3 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_flip@basic-plain-flip.html
* igt@kms_force_connector_basic@force-load-detect:
- bat-adlm-1: NOTRUN -> [SKIP][24] ([fdo#109285])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_force_connector_basic@force-load-detect.html
- bat-mtlp-8: NOTRUN -> [SKIP][25] ([fdo#109285])
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_force_connector_basic@force-load-detect.html
* igt@kms_force_connector_basic@prune-stale-modes:
- bat-mtlp-8: NOTRUN -> [SKIP][26] ([i915#5274])
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_force_connector_basic@prune-stale-modes.html
* igt@kms_frontbuffer_tracking@basic:
- bat-adlm-1: NOTRUN -> [SKIP][27] ([i915#1849] / [i915#4342])
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_pm_backlight@basic-brightness:
- bat-adlm-1: NOTRUN -> [SKIP][28] ([i915#5354])
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_pm_backlight@basic-brightness.html
* igt@kms_setmode@basic-clone-single-crtc:
- bat-mtlp-8: NOTRUN -> [SKIP][29] ([i915#3555] / [i915#8809])
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@kms_setmode@basic-clone-single-crtc.html
- bat-adlm-1: NOTRUN -> [SKIP][30] ([i915#3555])
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@kms_setmode@basic-clone-single-crtc.html
* igt@prime_vgem@basic-fence-flip:
- bat-adlm-1: NOTRUN -> [SKIP][31] ([i915#3708] / [i915#9900])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@prime_vgem@basic-fence-flip.html
* igt@prime_vgem@basic-fence-mmap:
- bat-mtlp-8: NOTRUN -> [SKIP][32] ([i915#3708] / [i915#4077]) +1 other test skip
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@prime_vgem@basic-fence-mmap.html
* igt@prime_vgem@basic-fence-read:
- bat-mtlp-8: NOTRUN -> [SKIP][33] ([i915#3708]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-mtlp-8/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@basic-write:
- bat-adlm-1: NOTRUN -> [SKIP][34] ([i915#3708]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/bat-adlm-1/igt@prime_vgem@basic-write.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
[i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
[i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
[i915#4342]: https://gitlab.freedesktop.org/drm/intel/issues/4342
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
[i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
[i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
[i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293
[i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
[i915#9159]: https://gitlab.freedesktop.org/drm/intel/issues/9159
[i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
[i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
[i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688
[i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
[i915#9875]: https://gitlab.freedesktop.org/drm/intel/issues/9875
[i915#9900]: https://gitlab.freedesktop.org/drm/intel/issues/9900
Build changes
-------------
* Linux: CI_DRM_14099 -> Patchwork_128355v1
CI-20190529: 20190529
CI_DRM_14099: c93d23d8562e6cc46b325ac10b2cb54973a79bf2 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7663: b5eca7b97430309e320874594feaeaa8e770e25e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_128355v1: c93d23d8562e6cc46b325ac10b2cb54973a79bf2 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
f0c49f6c3791 drm/amdgpu: use GTT only as fallback for VRAM|GTT
79eafd8f2577 drm/ttm: improve idle/busy handling v2
677df41d2ce4 drm/ttm: replace busy placement with flags v5
f5f0282f1325 drm/ttm: return ENOSPC from ttm_bo_mem_space
2dabceef06c7 drm/vmwgfx: remove vmw_vram_gmr_placement
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/index.html
[-- Attachment #2: Type: text/html, Size: 13391 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Rework TTMs busy handling
2024-01-09 8:14 ` Rework TTMs busy handling Thomas Hellström
@ 2024-01-09 8:34 ` Christian König
2024-01-10 9:03 ` Michel Dänzer
0 siblings, 1 reply; 17+ messages in thread
From: Christian König @ 2024-01-09 8:34 UTC (permalink / raw)
To: Thomas Hellström, zack.rusin, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
Am 09.01.24 um 09:14 schrieb Thomas Hellström:
> Hi, Christian
>
> On Tue, 2024-01-09 at 08:47 +0100, Christian König wrote:
>> Hi guys,
>>
>> I'm trying to make this functionality a bit more useful for years now
>> since we multiple reports that behavior of drivers can be suboptimal
>> when multiple placements be given.
>>
>> So basically instead of hacking around the TTM behavior in the driver
>> once more I've gone ahead and changed the idle/busy placement list
>> into idle/busy placement flags. This not only saves a bunch of code,
>> but also allows setting some placements as fallback which are used if
>> allocating from the preferred ones didn't worked.
>>
>> Zack pointed out that some removed VMWGFX code was brought back
>> because
>> of rebasing, fixed in this version.
>>
>> Intel CI seems to be happy with those patches, so any more comments?
> Looks like Xe changes are missing? (xe is now in drm-tip).
>
> I also have some doubts about the naming "idle" vs "busy", since an
> elaborate eviction mechanism would probably at some point want to check
> for gpu idle vs gpu busy, and this might create some confusion moving
> forward for people confusing busy as in memory overcommit with busy as
> in gpu activity.
>
> I can't immediately think of something better, though.
Yeah, I was wondering about that as well. Especially since I wanted to
add some more flags in the future when for example a bandwidth quota how
much memory can be moved in/out is exceeded.
Something like phase1, phase2, phase3 etc..., but that's also not very
descriptive either.
Going to take a look at XE as well, thanks for the notice.
Regards,
Christian.
>
> /Thomas
>
>
>> Regards,
>> Christian.
>>
>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space
2024-01-09 7:47 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
@ 2024-01-09 9:17 ` Thomas Hellström
0 siblings, 0 replies; 17+ messages in thread
From: Thomas Hellström @ 2024-01-09 9:17 UTC (permalink / raw)
To: Christian König, zack.rusin, lyude, kherbst, jani.nikula,
nouveau, intel-gfx, dri-devel
On Tue, 2024-01-09 at 08:47 +0100, Christian König wrote:
> Only convert it to ENOMEM in ttm_bo_validate.
>
Could we have a more elaborate commit description here, (why is this
change needed)?
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/ttm/ttm_bo.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c
> b/drivers/gpu/drm/ttm/ttm_bo.c
> index edf10618fe2b..8c1eaa74fa21 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -830,7 +830,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object
> *bo,
> goto error;
> }
>
> - ret = -ENOMEM;
> + ret = -ENOSPC;
> if (!type_found) {
> pr_err(TTM_PFX "No compatible memory type found\n");
> ret = -EINVAL;
> @@ -916,6 +916,9 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
> return -EINVAL;
>
> ret = ttm_bo_move_buffer(bo, placement, ctx);
> + /* For backward compatibility with userspace */
> + if (ret == -ENOSPC)
> + return -ENOMEM;
> if (ret)
> return ret;
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* ✗ Fi.CI.IGT: failure for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
2024-01-09 7:47 Rework TTMs busy handling Christian König
` (8 preceding siblings ...)
2024-01-09 8:31 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2024-01-09 14:09 ` Patchwork
9 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2024-01-09 14:09 UTC (permalink / raw)
To: Christian König; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 68894 bytes --]
== Series Details ==
Series: series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement
URL : https://patchwork.freedesktop.org/series/128355/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_14099_full -> Patchwork_128355v1_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_128355v1_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_128355v1_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (9 -> 9)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_128355v1_full:
### IGT changes ###
#### Possible regressions ####
* igt@gem_eio@kms:
- shard-mtlp: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-7/igt@gem_eio@kms.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-4/igt@gem_eio@kms.html
* igt@gem_exec_schedule@u-submit-early-slice@ccs3:
- shard-dg2: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-7/igt@gem_exec_schedule@u-submit-early-slice@ccs3.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-3/igt@gem_exec_schedule@u-submit-early-slice@ccs3.html
* igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
- shard-dg2: [PASS][5] -> [FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-11/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html
* igt@i915_suspend@forcewake:
- shard-tglu: [PASS][7] -> [ABORT][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-6/igt@i915_suspend@forcewake.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-9/igt@i915_suspend@forcewake.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-dg2: NOTRUN -> [SKIP][9] +1 other test skip
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
- shard-mtlp: NOTRUN -> [SKIP][10]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
Known issues
------------
Here are the changes found in Patchwork_128355v1_full that come from known issues:
### CI changes ###
#### Possible fixes ####
* boot:
- shard-glk: ([PASS][11], [PASS][12], [PASS][13], [PASS][14], [PASS][15], [PASS][16], [PASS][17], [PASS][18], [FAIL][19], [PASS][20], [PASS][21], [PASS][22], [PASS][23], [PASS][24], [PASS][25], [PASS][26], [PASS][27], [PASS][28], [PASS][29], [PASS][30], [PASS][31], [FAIL][32]) ([i915#8293]) -> ([PASS][33], [PASS][34], [PASS][35], [PASS][36], [PASS][37], [PASS][38], [PASS][39], [PASS][40], [PASS][41], [PASS][42], [PASS][43], [PASS][44], [PASS][45], [PASS][46], [PASS][47], [PASS][48], [PASS][49], [PASS][50], [PASS][51], [PASS][52])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk9/boot.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk9/boot.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk9/boot.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk8/boot.html
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk8/boot.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk8/boot.html
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk8/boot.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk7/boot.html
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk7/boot.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk7/boot.html
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk7/boot.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk6/boot.html
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk6/boot.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk4/boot.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk4/boot.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk4/boot.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk3/boot.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk3/boot.html
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk3/boot.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk3/boot.html
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk1/boot.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk1/boot.html
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk1/boot.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk1/boot.html
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk1/boot.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk1/boot.html
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/boot.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/boot.html
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/boot.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/boot.html
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk4/boot.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk4/boot.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk4/boot.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk7/boot.html
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk7/boot.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/boot.html
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/boot.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk7/boot.html
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk8/boot.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk8/boot.html
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk8/boot.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/boot.html
### IGT changes ###
#### Issues hit ####
* igt@device_reset@cold-reset-bound:
- shard-dg2: NOTRUN -> [SKIP][53] ([i915#7701])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@device_reset@cold-reset-bound.html
* igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
- shard-rkl: NOTRUN -> [FAIL][54] ([i915#7742])
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
* igt@drm_fdinfo@most-busy-idle-check-all@vecs1:
- shard-dg2: NOTRUN -> [SKIP][55] ([i915#8414]) +9 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@drm_fdinfo@most-busy-idle-check-all@vecs1.html
* igt@drm_fdinfo@virtual-busy:
- shard-mtlp: NOTRUN -> [SKIP][56] ([i915#8414])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@drm_fdinfo@virtual-busy.html
* igt@drm_fdinfo@virtual-idle:
- shard-rkl: [PASS][57] -> [FAIL][58] ([i915#7742])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-5/igt@drm_fdinfo@virtual-idle.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-6/igt@drm_fdinfo@virtual-idle.html
* igt@gem_basic@multigpu-create-close:
- shard-rkl: NOTRUN -> [SKIP][59] ([i915#7697])
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_basic@multigpu-create-close.html
- shard-dg2: NOTRUN -> [SKIP][60] ([i915#7697])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_basic@multigpu-create-close.html
* igt@gem_ccs@block-copy-compressed:
- shard-mtlp: NOTRUN -> [SKIP][61] ([i915#3555])
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_ccs@block-copy-compressed.html
* igt@gem_ctx_persistence@heartbeat-hostile:
- shard-dg2: NOTRUN -> [SKIP][62] ([i915#8555])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@gem_ctx_persistence@heartbeat-hostile.html
- shard-mtlp: NOTRUN -> [SKIP][63] ([i915#8555])
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@gem_ctx_persistence@heartbeat-hostile.html
* igt@gem_ctx_persistence@legacy-engines-mixed-process:
- shard-snb: NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#1099])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb6/igt@gem_ctx_persistence@legacy-engines-mixed-process.html
* igt@gem_ctx_sseu@invalid-sseu:
- shard-dg2: NOTRUN -> [SKIP][65] ([i915#280]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_ctx_sseu@invalid-sseu.html
- shard-rkl: NOTRUN -> [SKIP][66] ([i915#280])
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_ctx_sseu@invalid-sseu.html
* igt@gem_exec_balancer@bonded-sync:
- shard-mtlp: NOTRUN -> [SKIP][67] ([i915#4771])
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_exec_balancer@bonded-sync.html
* igt@gem_exec_capture@many-4k-incremental:
- shard-glk: NOTRUN -> [FAIL][68] ([i915#9606]) +1 other test fail
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/igt@gem_exec_capture@many-4k-incremental.html
* igt@gem_exec_fair@basic-flow:
- shard-dg2: NOTRUN -> [SKIP][69] ([i915#3539] / [i915#4852])
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_exec_fair@basic-flow.html
* igt@gem_exec_fair@basic-none:
- shard-mtlp: NOTRUN -> [SKIP][70] ([i915#4473] / [i915#4771])
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_exec_fair@basic-none.html
* igt@gem_exec_fair@basic-pace-solo@rcs0:
- shard-tglu: [PASS][71] -> [FAIL][72] ([i915#2842])
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-8/igt@gem_exec_fair@basic-pace-solo@rcs0.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-2/igt@gem_exec_fair@basic-pace-solo@rcs0.html
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-rkl: [PASS][73] -> [FAIL][74] ([i915#2842]) +2 other tests fail
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-7/igt@gem_exec_fair@basic-pace@rcs0.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-3/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_reloc@basic-gtt:
- shard-dg2: NOTRUN -> [SKIP][75] ([i915#3281]) +6 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@gem_exec_reloc@basic-gtt.html
* igt@gem_exec_reloc@basic-gtt-wc:
- shard-mtlp: NOTRUN -> [SKIP][76] ([i915#3281]) +5 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_exec_reloc@basic-gtt-wc.html
* igt@gem_exec_reloc@basic-wc-cpu-noreloc:
- shard-rkl: NOTRUN -> [SKIP][77] ([i915#3281])
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_exec_reloc@basic-wc-cpu-noreloc.html
* igt@gem_exec_schedule@semaphore-power:
- shard-mtlp: NOTRUN -> [SKIP][78] ([i915#4537] / [i915#4812])
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@gem_exec_schedule@semaphore-power.html
- shard-dg2: NOTRUN -> [SKIP][79] ([i915#4537] / [i915#4812])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@gem_exec_schedule@semaphore-power.html
* igt@gem_fence_thrash@bo-copy:
- shard-dg2: NOTRUN -> [SKIP][80] ([i915#4860])
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@gem_fence_thrash@bo-copy.html
* igt@gem_huc_copy@huc-copy:
- shard-glk: NOTRUN -> [SKIP][81] ([fdo#109271] / [i915#2190])
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/igt@gem_huc_copy@huc-copy.html
* igt@gem_lmem_swapping@massive-random:
- shard-rkl: NOTRUN -> [SKIP][82] ([i915#4613])
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_lmem_swapping@massive-random.html
* igt@gem_lmem_swapping@parallel-multi:
- shard-mtlp: NOTRUN -> [SKIP][83] ([i915#4613])
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_lmem_swapping@parallel-multi.html
* igt@gem_lmem_swapping@verify-ccs:
- shard-glk: NOTRUN -> [SKIP][84] ([fdo#109271] / [i915#4613]) +2 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk1/igt@gem_lmem_swapping@verify-ccs.html
* igt@gem_media_vme:
- shard-mtlp: NOTRUN -> [SKIP][85] ([i915#284])
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@gem_media_vme.html
- shard-dg2: NOTRUN -> [SKIP][86] ([i915#284])
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@gem_media_vme.html
* igt@gem_mmap@basic-small-bo:
- shard-dg2: NOTRUN -> [SKIP][87] ([i915#4083]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_mmap@basic-small-bo.html
* igt@gem_mmap@short-mmap:
- shard-mtlp: NOTRUN -> [SKIP][88] ([i915#4083]) +3 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_mmap@short-mmap.html
* igt@gem_mmap_gtt@basic:
- shard-mtlp: NOTRUN -> [SKIP][89] ([i915#4077]) +3 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_mmap_gtt@basic.html
* igt@gem_mmap_gtt@coherency:
- shard-rkl: NOTRUN -> [SKIP][90] ([fdo#111656])
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_mmap_gtt@coherency.html
* igt@gem_mmap_gtt@fault-concurrent-x:
- shard-dg2: NOTRUN -> [SKIP][91] ([i915#4077]) +7 other tests skip
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_mmap_gtt@fault-concurrent-x.html
* igt@gem_pwrite@basic-random:
- shard-dg2: NOTRUN -> [SKIP][92] ([i915#3282]) +3 other tests skip
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_pwrite@basic-random.html
- shard-rkl: NOTRUN -> [SKIP][93] ([i915#3282]) +1 other test skip
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gem_pwrite@basic-random.html
* igt@gem_pxp@create-regular-context-1:
- shard-dg2: NOTRUN -> [SKIP][94] ([i915#4270]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@gem_pxp@create-regular-context-1.html
* igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted:
- shard-mtlp: NOTRUN -> [SKIP][95] ([i915#4270])
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gem_pxp@dmabuf-shared-protected-dst-is-context-refcounted.html
* igt@gem_render_copy@y-tiled-to-vebox-x-tiled:
- shard-mtlp: NOTRUN -> [SKIP][96] ([i915#8428]) +3 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@gem_render_copy@y-tiled-to-vebox-x-tiled.html
* igt@gem_render_copy@y-tiled-to-vebox-yf-tiled:
- shard-dg2: NOTRUN -> [SKIP][97] ([i915#5190]) +10 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@gem_render_copy@y-tiled-to-vebox-yf-tiled.html
* igt@gem_userptr_blits@dmabuf-sync:
- shard-glk: NOTRUN -> [SKIP][98] ([fdo#109271] / [i915#3323])
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/igt@gem_userptr_blits@dmabuf-sync.html
* igt@gem_userptr_blits@map-fixed-invalidate-overlap:
- shard-dg2: NOTRUN -> [SKIP][99] ([i915#3297] / [i915#4880])
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_userptr_blits@map-fixed-invalidate-overlap.html
* igt@gem_userptr_blits@sd-probe:
- shard-dg2: NOTRUN -> [SKIP][100] ([i915#3297] / [i915#4958])
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@gem_userptr_blits@sd-probe.html
* igt@gen9_exec_parse@allowed-single:
- shard-tglu: NOTRUN -> [SKIP][101] ([i915#2527] / [i915#2856])
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@gen9_exec_parse@allowed-single.html
* igt@gen9_exec_parse@bb-secure:
- shard-rkl: NOTRUN -> [SKIP][102] ([i915#2527])
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@gen9_exec_parse@bb-secure.html
* igt@gen9_exec_parse@shadow-peek:
- shard-dg2: NOTRUN -> [SKIP][103] ([i915#2856]) +2 other tests skip
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@gen9_exec_parse@shadow-peek.html
* igt@gen9_exec_parse@unaligned-jump:
- shard-mtlp: NOTRUN -> [SKIP][104] ([i915#2856]) +2 other tests skip
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@gen9_exec_parse@unaligned-jump.html
* igt@i915_fb_tiling:
- shard-mtlp: NOTRUN -> [SKIP][105] ([i915#4881])
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@i915_fb_tiling.html
- shard-dg2: NOTRUN -> [SKIP][106] ([i915#4881])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@i915_fb_tiling.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-dg1: [PASS][107] -> [INCOMPLETE][108] ([i915#9820] / [i915#9849])
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg1-15/igt@i915_module_load@reload-with-fault-injection.html
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-17/igt@i915_module_load@reload-with-fault-injection.html
* igt@i915_pm_rps@thresholds-idle@gt0:
- shard-dg2: NOTRUN -> [SKIP][109] ([i915#8925])
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-1/igt@i915_pm_rps@thresholds-idle@gt0.html
* igt@i915_pm_rps@waitboost:
- shard-mtlp: NOTRUN -> [FAIL][110] ([i915#8346])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@i915_pm_rps@waitboost.html
* igt@i915_power@sanity:
- shard-mtlp: [PASS][111] -> [SKIP][112] ([i915#7984])
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-3/igt@i915_power@sanity.html
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-7/igt@i915_power@sanity.html
* igt@i915_selftest@mock@memory_region:
- shard-glk: NOTRUN -> [DMESG-WARN][113] ([i915#9311])
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk8/igt@i915_selftest@mock@memory_region.html
* igt@kms_addfb_basic@basic-x-tiled-legacy:
- shard-dg2: NOTRUN -> [SKIP][114] ([i915#4212])
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_addfb_basic@basic-x-tiled-legacy.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-1-y-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][115] ([i915#8709]) +3 other tests skip
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-4/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-hdmi-a-1-y-rc-ccs-cc.html
* igt@kms_async_flips@crc@pipe-c-hdmi-a-3:
- shard-dg2: NOTRUN -> [FAIL][116] ([i915#8247]) +3 other tests fail
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_async_flips@crc@pipe-c-hdmi-a-3.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-90:
- shard-tglu: NOTRUN -> [SKIP][117] ([fdo#111615] / [i915#5286])
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-rkl: NOTRUN -> [SKIP][118] ([i915#5286])
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/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-64bpp-rotate-0:
- shard-mtlp: [PASS][119] -> [FAIL][120] ([i915#5138]) +1 other test fail
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
* igt@kms_big_fb@x-tiled-16bpp-rotate-270:
- shard-mtlp: NOTRUN -> [SKIP][121] ([fdo#111614]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][122] ([fdo#111614]) +2 other tests skip
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
- shard-rkl: NOTRUN -> [SKIP][123] ([fdo#111614] / [i915#3638])
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_big_fb@x-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
- shard-mtlp: NOTRUN -> [SKIP][124] ([fdo#111615]) +5 other tests skip
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
- shard-dg2: NOTRUN -> [SKIP][125] ([i915#4538] / [i915#5190]) +3 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-rkl: NOTRUN -> [SKIP][126] ([fdo#110723]) +2 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_ccs@pipe-b-bad-rotation-90-y-tiled-gen12-mc-ccs:
- shard-dg2: NOTRUN -> [SKIP][127] ([i915#5354]) +49 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_ccs@pipe-b-bad-rotation-90-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@pipe-b-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][128] ([i915#5354] / [i915#6095]) +8 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_ccs@pipe-b-crc-primary-rotation-180-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_ccs@pipe-d-bad-pixel-format-yf-tiled-ccs:
- shard-tglu: NOTRUN -> [SKIP][129] ([i915#5354] / [i915#6095])
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@kms_ccs@pipe-d-bad-pixel-format-yf-tiled-ccs.html
* igt@kms_ccs@pipe-d-crc-primary-basic-4-tiled-mtl-rc-ccs-cc:
- shard-rkl: NOTRUN -> [SKIP][130] ([i915#5354]) +10 other tests skip
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_ccs@pipe-d-crc-primary-basic-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs:
- shard-mtlp: NOTRUN -> [SKIP][131] ([i915#5354] / [i915#6095]) +19 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4-tiled-dg2-rc-ccs.html
* igt@kms_cdclk@mode-transition@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][132] ([i915#7213] / [i915#9010]) +3 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html
* igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][133] ([i915#7213]) +3 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-2.html
* igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][134] ([i915#4087]) +3 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-3/igt@kms_cdclk@plane-scaling@pipe-d-hdmi-a-2.html
* igt@kms_chamelium_color@ctm-max:
- shard-dg2: NOTRUN -> [SKIP][135] ([fdo#111827])
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_chamelium_color@ctm-max.html
* igt@kms_chamelium_color@gamma:
- shard-mtlp: NOTRUN -> [SKIP][136] ([fdo#111827])
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_chamelium_color@gamma.html
* igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k:
- shard-dg2: NOTRUN -> [SKIP][137] ([i915#7828]) +5 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_chamelium_edid@dp-edid-stress-resolution-non-4k.html
* igt@kms_chamelium_frames@hdmi-crc-single:
- shard-rkl: NOTRUN -> [SKIP][138] ([i915#7828]) +3 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_chamelium_frames@hdmi-crc-single.html
* igt@kms_chamelium_hpd@dp-hpd-storm-disable:
- shard-mtlp: NOTRUN -> [SKIP][139] ([i915#7828]) +2 other tests skip
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_chamelium_hpd@dp-hpd-storm-disable.html
* igt@kms_content_protection@content-type-change:
- shard-mtlp: NOTRUN -> [SKIP][140] ([i915#6944] / [i915#9424])
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_content_protection@content-type-change.html
* igt@kms_content_protection@dp-mst-type-1:
- shard-dg2: NOTRUN -> [SKIP][141] ([i915#3299])
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_content_protection@dp-mst-type-1.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-mtlp: NOTRUN -> [SKIP][142] ([i915#3555] / [i915#8814])
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-onscreen-128x42:
- shard-mtlp: NOTRUN -> [SKIP][143] ([i915#8814])
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_cursor_crc@cursor-onscreen-128x42.html
* igt@kms_cursor_crc@cursor-rapid-movement-32x32:
- shard-dg2: NOTRUN -> [SKIP][144] ([i915#3555]) +6 other tests skip
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
- shard-rkl: NOTRUN -> [SKIP][145] ([i915#3555]) +1 other test skip
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_cursor_crc@cursor-rapid-movement-32x32.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-tglu: NOTRUN -> [SKIP][146] ([i915#3359])
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
* igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic:
- shard-mtlp: NOTRUN -> [SKIP][147] ([fdo#111767])
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_cursor_legacy@2x-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- shard-dg2: NOTRUN -> [SKIP][148] ([i915#4103] / [i915#4213])
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-tglu: NOTRUN -> [SKIP][149] ([fdo#109274])
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
- shard-dg2: NOTRUN -> [SKIP][150] ([fdo#109274] / [i915#5354]) +4 other tests skip
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:
- shard-mtlp: NOTRUN -> [SKIP][151] ([i915#9809])
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-glk: [PASS][152] -> [FAIL][153] ([i915#2346])
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
[153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
* igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
- shard-mtlp: NOTRUN -> [SKIP][154] ([i915#9067])
[154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html
* igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-1-pipe-b-vga-1:
- shard-snb: NOTRUN -> [FAIL][155] ([i915#9841]) +3 other tests fail
[155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb7/igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-1-pipe-b-vga-1.html
* igt@kms_draw_crc@draw-method-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][156] ([i915#8812])
[156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_draw_crc@draw-method-mmap-gtt.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-dg2: NOTRUN -> [SKIP][157] ([i915#3840] / [i915#9688])
[157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_dsc@dsc-fractional-bpp.html
- shard-rkl: NOTRUN -> [SKIP][158] ([i915#3840])
[158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_feature_discovery@display-2x:
- shard-dg2: NOTRUN -> [SKIP][159] ([i915#1839]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_feature_discovery@display-2x.html
* igt@kms_flip@2x-flip-vs-dpms:
- shard-rkl: NOTRUN -> [SKIP][160] ([fdo#111825]) +4 other tests skip
[160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_flip@2x-flip-vs-dpms.html
* igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-dg2: NOTRUN -> [SKIP][161] ([fdo#109274] / [fdo#111767])
[161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
- shard-rkl: NOTRUN -> [SKIP][162] ([fdo#111767] / [fdo#111825])
[162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html
* igt@kms_flip@2x-flip-vs-fences-interruptible:
- shard-dg2: NOTRUN -> [SKIP][163] ([i915#8381])
[163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_flip@2x-flip-vs-fences-interruptible.html
* igt@kms_flip@2x-flip-vs-modeset:
- shard-mtlp: NOTRUN -> [SKIP][164] ([i915#3637]) +2 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_flip@2x-flip-vs-modeset.html
* igt@kms_flip@2x-flip-vs-modeset-vs-hang:
- shard-dg2: NOTRUN -> [SKIP][165] ([fdo#109274]) +4 other tests skip
[165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html
* igt@kms_flip@flip-vs-fences:
- shard-mtlp: NOTRUN -> [SKIP][166] ([i915#8381]) +1 other test skip
[166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_flip@flip-vs-fences.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode:
- shard-mtlp: NOTRUN -> [SKIP][167] ([i915#2672]) +1 other test skip
[167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-dg2: NOTRUN -> [SKIP][168] ([i915#2672])
[168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode:
- shard-rkl: NOTRUN -> [SKIP][169] ([i915#2672])
[169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling:
- shard-snb: NOTRUN -> [SKIP][170] ([fdo#109271]) +8 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb6/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite:
- shard-snb: [PASS][171] -> [SKIP][172] ([fdo#109271]) +11 other tests skip
[171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite.html
[172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt:
- shard-mtlp: NOTRUN -> [SKIP][173] ([i915#8708]) +3 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-indfb-fliptrack-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt:
- shard-rkl: NOTRUN -> [SKIP][174] ([fdo#111825] / [i915#1825]) +10 other tests skip
[174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
- shard-glk: NOTRUN -> [SKIP][175] ([fdo#109271]) +266 other tests skip
[175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
- shard-dg2: NOTRUN -> [SKIP][176] ([i915#3458]) +12 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render:
- shard-rkl: NOTRUN -> [SKIP][177] ([i915#3023]) +6 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-pwrite:
- shard-mtlp: NOTRUN -> [SKIP][178] ([i915#1825]) +14 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-pwrite.html
* igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt:
- shard-dg2: NOTRUN -> [SKIP][179] ([i915#8708]) +7 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-gtt.html
* igt@kms_hdr@static-toggle-suspend:
- shard-dg2: NOTRUN -> [SKIP][180] ([i915#3555] / [i915#8228])
[180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-6/igt@kms_hdr@static-toggle-suspend.html
* igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c:
- shard-dg2: NOTRUN -> [SKIP][181] ([fdo#109289])
[181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_pipe_b_c_ivb@pipe-b-double-modeset-then-modeset-pipe-c.html
* igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][182] ([i915#7862]) +1 other test fail
[182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk9/igt@kms_plane_alpha_blend@alpha-basic@pipe-c-hdmi-a-1.html
* igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
- shard-glk: NOTRUN -> [FAIL][183] ([i915#4573]) +1 other test fail
[183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [FAIL][184] ([i915#8292])
[184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-16/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-2:
- shard-dg2: NOTRUN -> [SKIP][185] ([i915#9423]) +3 other tests skip
[185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-c-hdmi-a-2.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][186] ([i915#5176]) +7 other tests skip
[186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-modifiers@pipe-b-edp-1.html
* igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][187] ([i915#9423]) +7 other tests skip
[187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-18/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-a-hdmi-a-4.html
* igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][188] ([i915#9423]) +7 other tests skip
[188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-1/igt@kms_plane_scaling@plane-downscale-factor-0-75-with-rotation@pipe-a-hdmi-a-2.html
* igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-hdmi-a-1:
- shard-rkl: NOTRUN -> [SKIP][189] ([i915#5176] / [i915#9423]) +1 other test skip
[189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-hdmi-a-1.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-2:
- shard-rkl: NOTRUN -> [SKIP][190] ([i915#5235]) +9 other tests skip
[190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-b-hdmi-a-2.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-dp-4:
- shard-dg2: NOTRUN -> [SKIP][191] ([i915#5235] / [i915#9423]) +15 other tests skip
[191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-11/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b-dp-4.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][192] ([i915#5235]) +6 other tests skip
[192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b-edp-1.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-d-edp-1:
- shard-mtlp: NOTRUN -> [SKIP][193] ([i915#3555] / [i915#5235])
[193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-d-edp-1.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4:
- shard-dg1: NOTRUN -> [SKIP][194] ([i915#5235]) +7 other tests skip
[194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-15/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d-hdmi-a-4.html
* igt@kms_pm_lpsp@screens-disabled:
- shard-rkl: NOTRUN -> [SKIP][195] ([i915#8430])
[195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_pm_lpsp@screens-disabled.html
* igt@kms_pm_rpm@dpms-lpsp:
- shard-rkl: [PASS][196] -> [SKIP][197] ([i915#9519])
[196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-7/igt@kms_pm_rpm@dpms-lpsp.html
[197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-1/igt@kms_pm_rpm@dpms-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-dg2: NOTRUN -> [SKIP][198] ([i915#9519])
[198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@kms_pm_rpm@modeset-lpsp-stress.html
* igt@kms_pm_rpm@modeset-pc8-residency-stress:
- shard-rkl: NOTRUN -> [SKIP][199] ([fdo#109293] / [fdo#109506])
[199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_pm_rpm@modeset-pc8-residency-stress.html
* igt@kms_pm_rpm@pc8-residency:
- shard-mtlp: NOTRUN -> [SKIP][200] ([fdo#109293])
[200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_pm_rpm@pc8-residency.html
- shard-dg2: NOTRUN -> [SKIP][201] ([fdo#109293] / [fdo#109506])
[201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_pm_rpm@pc8-residency.html
* igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area:
- shard-rkl: NOTRUN -> [SKIP][202] ([fdo#111068] / [i915#9683])
[202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb:
- shard-rkl: NOTRUN -> [SKIP][203] ([i915#9683])
[203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html
* igt@kms_psr2_su@page_flip-xrgb8888:
- shard-mtlp: NOTRUN -> [SKIP][204] ([i915#4348])
[204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_psr2_su@page_flip-xrgb8888.html
- shard-dg2: NOTRUN -> [SKIP][205] ([i915#9683]) +2 other tests skip
[205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_psr2_su@page_flip-xrgb8888.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-rkl: NOTRUN -> [SKIP][206] ([i915#9685]) +1 other test skip
[206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
- shard-dg2: NOTRUN -> [SKIP][207] ([i915#9685]) +1 other test skip
[207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-mtlp: NOTRUN -> [SKIP][208] ([i915#5289])
[208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
- shard-dg2: NOTRUN -> [SKIP][209] ([i915#4235])
[209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
- shard-mtlp: NOTRUN -> [SKIP][210] ([i915#4235]) +1 other test skip
[210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
* igt@kms_sysfs_edid_timing:
- shard-dg2: [PASS][211] -> [FAIL][212] ([IGT#2])
[211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-11/igt@kms_sysfs_edid_timing.html
[212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-6/igt@kms_sysfs_edid_timing.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1:
- shard-mtlp: [PASS][213] -> [FAIL][214] ([i915#9196])
[213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1.html
[214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-4/igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
- shard-tglu: [PASS][215] -> [FAIL][216] ([i915#9196]) +2 other tests fail
[215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-4/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
[216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-2/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
* igt@kms_vrr@flip-basic-fastset:
- shard-dg2: NOTRUN -> [SKIP][217] ([i915#9906])
[217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@kms_vrr@flip-basic-fastset.html
- shard-rkl: NOTRUN -> [SKIP][218] ([i915#9906])
[218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@kms_vrr@flip-basic-fastset.html
* igt@kms_writeback@writeback-check-output-xrgb2101010:
- shard-glk: NOTRUN -> [SKIP][219] ([fdo#109271] / [i915#2437])
[219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk3/igt@kms_writeback@writeback-check-output-xrgb2101010.html
* igt@kms_writeback@writeback-pixel-formats:
- shard-mtlp: NOTRUN -> [SKIP][220] ([i915#2437])
[220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@kms_writeback@writeback-pixel-formats.html
* igt@perf@non-zero-reason@0-rcs0:
- shard-dg2: NOTRUN -> [FAIL][221] ([i915#7484])
[221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@perf@non-zero-reason@0-rcs0.html
* igt@perf_pmu@busy-idle@ccs0:
- shard-mtlp: [PASS][222] -> [FAIL][223] ([i915#4349])
[222]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-5/igt@perf_pmu@busy-idle@ccs0.html
[223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-7/igt@perf_pmu@busy-idle@ccs0.html
* igt@perf_pmu@faulting-read@gtt:
- shard-mtlp: NOTRUN -> [SKIP][224] ([i915#8440])
[224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@perf_pmu@faulting-read@gtt.html
* igt@prime_vgem@basic-fence-read:
- shard-dg2: NOTRUN -> [SKIP][225] ([i915#3291] / [i915#3708])
[225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@prime_vgem@basic-fence-read.html
- shard-rkl: NOTRUN -> [SKIP][226] ([fdo#109295] / [i915#3291] / [i915#3708])
[226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@prime_vgem@basic-fence-read.html
* igt@prime_vgem@fence-flip-hang:
- shard-rkl: NOTRUN -> [SKIP][227] ([fdo#109295] / [i915#3708])
[227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-7/igt@prime_vgem@fence-flip-hang.html
* igt@sriov_basic@bind-unbind-vf:
- shard-dg2: NOTRUN -> [SKIP][228] ([i915#9917])
[228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@sriov_basic@bind-unbind-vf.html
- shard-rkl: NOTRUN -> [SKIP][229] ([i915#9917])
[229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@sriov_basic@bind-unbind-vf.html
* igt@v3d/v3d_create_bo@create-bo-0:
- shard-rkl: NOTRUN -> [SKIP][230] ([fdo#109315]) +4 other tests skip
[230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@v3d/v3d_create_bo@create-bo-0.html
* igt@v3d/v3d_submit_cl@bad-flag:
- shard-mtlp: NOTRUN -> [SKIP][231] ([i915#2575]) +5 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-8/igt@v3d/v3d_submit_cl@bad-flag.html
* igt@v3d/v3d_submit_cl@simple-flush-cache:
- shard-dg2: NOTRUN -> [SKIP][232] ([i915#2575]) +8 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-7/igt@v3d/v3d_submit_cl@simple-flush-cache.html
* igt@vc4/vc4_create_bo@create-bo-0:
- shard-rkl: NOTRUN -> [SKIP][233] ([i915#7711]) +1 other test skip
[233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-5/igt@vc4/vc4_create_bo@create-bo-0.html
* igt@vc4/vc4_purgeable_bo@access-purged-bo-mem:
- shard-mtlp: NOTRUN -> [SKIP][234] ([i915#7711]) +4 other tests skip
[234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-2/igt@vc4/vc4_purgeable_bo@access-purged-bo-mem.html
* igt@vc4/vc4_purgeable_bo@mark-unpurgeable-check-retained:
- shard-dg2: NOTRUN -> [SKIP][235] ([i915#7711]) +5 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-2/igt@vc4/vc4_purgeable_bo@mark-unpurgeable-check-retained.html
#### Possible fixes ####
* igt@fbdev@pan:
- shard-snb: [FAIL][236] ([i915#4435]) -> [PASS][237]
[236]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb7/igt@fbdev@pan.html
[237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb6/igt@fbdev@pan.html
* igt@gem_exec_fair@basic-pace@vcs0:
- shard-rkl: [FAIL][238] ([i915#2842]) -> [PASS][239]
[238]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-7/igt@gem_exec_fair@basic-pace@vcs0.html
[239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-3/igt@gem_exec_fair@basic-pace@vcs0.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg1: [DMESG-WARN][240] ([i915#4936] / [i915#5493]) -> [PASS][241]
[240]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg1-19/igt@gem_lmem_swapping@smem-oom@lmem0.html
[241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-13/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
- shard-tglu: [FAIL][242] ([i915#3743]) -> [PASS][243]
[242]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
[243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
- shard-snb: [SKIP][244] ([fdo#109271] / [fdo#111767]) -> [PASS][245]
[244]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb4/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
[245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
* igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1:
- shard-tglu: [ABORT][246] -> [PASS][247]
[246]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-9/igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1.html
[247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-6/igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-snb: [SKIP][248] ([fdo#109271]) -> [PASS][249] +12 other tests pass
[248]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
[249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbc-tiling-4:
- shard-dg2: [FAIL][250] ([i915#6880]) -> [PASS][251]
[250]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
[251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-tiling-4.html
* igt@kms_pm_dc@dc9-dpms:
- shard-tglu: [SKIP][252] ([i915#4281]) -> [PASS][253]
[252]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-tglu-7/igt@kms_pm_dc@dc9-dpms.html
[253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-tglu-4/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@modeset-lpsp:
- shard-rkl: [SKIP][254] ([i915#9519]) -> [PASS][255] +1 other test pass
[254]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-6/igt@kms_pm_rpm@modeset-lpsp.html
[255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-4/igt@kms_pm_rpm@modeset-lpsp.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-dg2: [SKIP][256] ([i915#9519]) -> [PASS][257]
[256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-5/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
[257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-10/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
#### Warnings ####
* igt@device_reset@unbind-reset-rebind:
- shard-dg1: [ABORT][258] ([i915#9618]) -> [INCOMPLETE][259] ([i915#9408] / [i915#9618])
[258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg1-13/igt@device_reset@unbind-reset-rebind.html
[259]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg1-18/igt@device_reset@unbind-reset-rebind.html
* igt@gem_lmem_swapping@smem-oom@lmem0:
- shard-dg2: [DMESG-WARN][260] ([i915#4936] / [i915#5493]) -> [TIMEOUT][261] ([i915#5493])
[260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-5/igt@gem_lmem_swapping@smem-oom@lmem0.html
[261]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-5/igt@gem_lmem_swapping@smem-oom@lmem0.html
* igt@gem_pwrite@basic-exhaustion:
- shard-glk: [WARN][262] ([i915#2658]) -> [INCOMPLETE][263] ([i915#10042])
[262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-glk8/igt@gem_pwrite@basic-exhaustion.html
[263]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-glk8/igt@gem_pwrite@basic-exhaustion.html
* igt@i915_module_load@reload-with-fault-injection:
- shard-mtlp: [ABORT][264] ([i915#9697]) -> [ABORT][265] ([i915#9820])
[264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-mtlp-7/igt@i915_module_load@reload-with-fault-injection.html
[265]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-mtlp-4/igt@i915_module_load@reload-with-fault-injection.html
* igt@kms_content_protection@mei-interface:
- shard-snb: [INCOMPLETE][266] ([i915#9878]) -> [SKIP][267] ([fdo#109271])
[266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb7/igt@kms_content_protection@mei-interface.html
[267]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb2/igt@kms_content_protection@mei-interface.html
* igt@kms_content_protection@type1:
- shard-snb: [SKIP][268] ([fdo#109271]) -> [INCOMPLETE][269] ([i915#8816])
[268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-snb1/igt@kms_content_protection@type1.html
[269]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-snb7/igt@kms_content_protection@type1.html
* igt@kms_fbcon_fbt@psr:
- shard-rkl: [SKIP][270] ([i915#3955]) -> [SKIP][271] ([fdo#110189] / [i915#3955])
[270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-rkl-4/igt@kms_fbcon_fbt@psr.html
[271]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-rkl-2/igt@kms_fbcon_fbt@psr.html
* igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
- shard-dg2: [CRASH][272] ([i915#9351]) -> [INCOMPLETE][273] ([i915#5493])
[272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14099/shard-dg2-7/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html
[273]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_128355v1/shard-dg2-3/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
[fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
[fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293
[fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
[fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
[fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
[fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
[fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
[fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
[fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
[fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
[fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
[fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
[fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[i915#10042]: https://gitlab.freedesktop.org/drm/intel/issues/10042
[i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
[i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
[i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
[i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
[i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
[i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
[i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
[i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
[i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
[i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
[i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
[i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
[i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
[i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
[i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
[i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
[i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
[i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
[i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
[i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
[i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
[i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
[i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
[i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
[i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
[i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
[i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
[i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
[i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
[i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
[i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
[i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
[i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
[i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
[i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
[i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
[i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
[i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
[i915#4348]: https://gitlab.freedesktop.org/drm/intel/issues/4348
[i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
[i915#4435]: https://gitlab.freedesktop.org/drm/intel/issues/4435
[i915#4473]: https://gitlab.freedesktop.org/drm/intel/issues/4473
[i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537
[i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
[i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
[i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
[i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
[i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
[i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
[i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
[i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
[i915#4936]: https://gitlab.freedesktop.org/drm/intel/issues/4936
[i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
[i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
[i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
[i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
[i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
[i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
[i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
[i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
[i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
[i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
[i915#6880]: https://gitlab.freedesktop.org/drm/intel/issues/6880
[i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
[i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213
[i915#7484]: https://gitlab.freedesktop.org/drm/intel/issues/7484
[i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
[i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
[i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
[i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
[i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
[i915#7862]: https://gitlab.freedesktop.org/drm/intel/issues/7862
[i915#7984]: https://gitlab.freedesktop.org/drm/intel/issues/7984
[i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
[i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247
[i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
[i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293
[i915#8346]: https://gitlab.freedesktop.org/drm/intel/issues/8346
[i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
[i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
[i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
[i915#8430]: https://gitlab.freedesktop.org/drm/intel/issues/8430
[i915#8440]: https://gitlab.freedesktop.org/drm/intel/issues/8440
[i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
[i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
[i915#8709]: https://gitlab.freedesktop.org/drm/intel/issues/8709
[i915#8812]: https://gitlab.freedesktop.org/drm/intel/issues/8812
[i915#8814]: https://gitlab.freedesktop.org/drm/intel/issues/8814
[i915#8816]: https://gitlab.freedesktop.org/drm/intel/issues/8816
[i915#8925]: https://gitlab.freedesktop.org/drm/intel/issues/8925
[i915#9010]: https://gitlab.freedesktop.org/drm/intel/issues/9010
[i915#9067]: https://gitlab.freedesktop.org/drm/intel/issues/9067
[i915#9196]: https://gitlab.freedesktop.org/drm/intel/issues/9196
[i915#9311]: https://gitlab.freedesktop.org/drm/intel/issues/9311
[i915#9351]: https://gitlab.freedesktop.org/drm/intel/issues/9351
[i915#9408]: https://gitlab.freedesktop.org/drm/intel/issues/9408
[i915#9423]: https://gitlab.freedesktop.org/drm/intel/issues/9423
[i915#9424]: https://gitlab.freedesktop.org/drm/intel/issues/9424
[i915#9519]: https://gitlab.freedesktop.org/drm/intel/issues/9519
[i915#9606]: https://gitlab.freedesktop.org/drm/intel/issues/9606
[i915#9618]: https://gitlab.freedesktop.org/drm/intel/issues/9618
[i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
[i915#9683]: https://gitlab.freedesktop.org/drm/intel/issues/9683
[i915#9685]: https://gitlab.freedesktop.org/drm/intel/issues/9685
[i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688
[i915#9697]: https://gitlab.freedesktop.org/drm/intel/issues/9697
[i915#9732]: https://gitlab.freedesktop.org/drm/intel/issues/9732
[i915#9809]: https://gitlab.freedesktop.org/drm/intel/issues/9809
[i915#9820]: https://gitlab.freedesktop.org/drm/intel/issues/9820
[i915#9841]: https://gitlab.freedesktop.org/drm/intel/issues/9841
[i915#9849]: https://gitlab.freedesktop.org/drm/intel/issues/9849
[i915#9878]: https://gitlab.freedesktop.org/drm/intel/issues/9878
[i915#9906]: https://gitlab.freedesktop.org/drm/intel/issues/9906
[i915#9917]: https://gitlab.freedesktop.org/drm/intel/issues/9917
Build changes
-------------
* Linux: CI_DRM_14099 -> Patchwork_128355v1
CI-20190529: 20190529
CI_DRM_14099: c93d23d8562e6cc46b325ac10b2cb54973a79bf2 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7663: b5eca7b97430309e320874594feaeaa8e770e25e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_128355v1: c93d23d8562e6cc46b325ac10b2cb54973a79bf2 @ 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_128355v1/index.html
[-- Attachment #2: Type: text/html, Size: 81909 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/5] drm/ttm: replace busy placement with flags v5
2024-01-09 7:47 ` [PATCH 3/5] drm/ttm: replace busy placement with flags v5 Christian König
@ 2024-01-09 17:29 ` Zack Rusin
0 siblings, 0 replies; 17+ messages in thread
From: Zack Rusin @ 2024-01-09 17:29 UTC (permalink / raw)
To: Christian König
Cc: thomas.hellstrom, kherbst, nouveau, intel-gfx, dri-devel
On Tue, Jan 9, 2024 at 2:47 AM Christian König
<ckoenig.leichtzumerken@gmail.com> wrote:
>
> From: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
>
> Instead of a list of separate busy placement add flags which indicate
> that a placement should only be used when there is room or if we need to
> evict.
>
> v2: add missing TTM_PL_FLAG_IDLE for i915
> v3: fix auto build test ERROR on drm-tip/drm-tip
> v4: fix some typos pointed out by checkpatch
> v5: cleanup some rebase problems with VMWGFX
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> Signed-off-by: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 6 +-
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 11 +---
> drivers/gpu/drm/drm_gem_vram_helper.c | 2 -
> drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 37 +++++------
> drivers/gpu/drm/loongson/lsdc_ttm.c | 2 -
> drivers/gpu/drm/nouveau/nouveau_bo.c | 59 +++++++----------
> drivers/gpu/drm/nouveau/nouveau_bo.h | 1 -
> drivers/gpu/drm/qxl/qxl_object.c | 2 -
> drivers/gpu/drm/qxl/qxl_ttm.c | 2 -
> drivers/gpu/drm/radeon/radeon_object.c | 2 -
> drivers/gpu/drm/radeon/radeon_ttm.c | 8 +--
> drivers/gpu/drm/radeon/radeon_uvd.c | 1 -
> drivers/gpu/drm/ttm/ttm_bo.c | 21 ++++---
> drivers/gpu/drm/ttm/ttm_resource.c | 73 +++++-----------------
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 2 -
> drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 4 --
> include/drm/ttm/ttm_placement.h | 10 +--
> include/drm/ttm/ttm_resource.h | 8 +--
> 18 files changed, 79 insertions(+), 172 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> index cef920a93924..aa0dd6dad068 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
> @@ -220,9 +220,6 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain)
>
> placement->num_placement = c;
> placement->placement = places;
> -
> - placement->num_busy_placement = c;
> - placement->busy_placement = places;
> }
>
> /**
> @@ -1406,8 +1403,7 @@ vm_fault_t amdgpu_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
> AMDGPU_GEM_DOMAIN_GTT);
>
> /* Avoid costly evictions; only set GTT as a busy placement */
> - abo->placement.num_busy_placement = 1;
> - abo->placement.busy_placement = &abo->placements[1];
> + abo->placements[0].flags |= TTM_PL_FLAG_IDLE;
>
> r = ttm_bo_validate(bo, &abo->placement, &ctx);
> if (unlikely(r == -EBUSY || r == -ERESTARTSYS))
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 05991c5c8ddb..9a6a00b1af40 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -102,23 +102,19 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
> /* Don't handle scatter gather BOs */
> if (bo->type == ttm_bo_type_sg) {
> placement->num_placement = 0;
> - placement->num_busy_placement = 0;
> return;
> }
>
> /* Object isn't an AMDGPU object so ignore */
> if (!amdgpu_bo_is_amdgpu_bo(bo)) {
> placement->placement = &placements;
> - placement->busy_placement = &placements;
> placement->num_placement = 1;
> - placement->num_busy_placement = 1;
> return;
> }
>
> abo = ttm_to_amdgpu_bo(bo);
> if (abo->flags & AMDGPU_GEM_CREATE_DISCARDABLE) {
> placement->num_placement = 0;
> - placement->num_busy_placement = 0;
> return;
> }
>
> @@ -128,13 +124,13 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
> case AMDGPU_PL_OA:
> case AMDGPU_PL_DOORBELL:
> placement->num_placement = 0;
> - placement->num_busy_placement = 0;
> return;
>
> case TTM_PL_VRAM:
> if (!adev->mman.buffer_funcs_enabled) {
> /* Move to system memory */
> amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_CPU);
> +
> } else if (!amdgpu_gmc_vram_full_visible(&adev->gmc) &&
> !(abo->flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
> amdgpu_bo_in_cpu_visible_vram(abo)) {
> @@ -149,8 +145,7 @@ static void amdgpu_evict_flags(struct ttm_buffer_object *bo,
> AMDGPU_GEM_DOMAIN_CPU);
> abo->placements[0].fpfn = adev->gmc.visible_vram_size >> PAGE_SHIFT;
> abo->placements[0].lpfn = 0;
> - abo->placement.busy_placement = &abo->placements[1];
> - abo->placement.num_busy_placement = 1;
> + abo->placements[0].flags |= TTM_PL_FLAG_IDLE;
> } else {
> /* Move to GTT memory */
> amdgpu_bo_placement_from_domain(abo, AMDGPU_GEM_DOMAIN_GTT |
> @@ -967,8 +962,6 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
> /* allocate GART space */
> placement.num_placement = 1;
> placement.placement = &placements;
> - placement.num_busy_placement = 1;
> - placement.busy_placement = &placements;
> placements.fpfn = 0;
> placements.lpfn = adev->gmc.gart_size >> PAGE_SHIFT;
> placements.mem_type = TTM_PL_TT;
> diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c
> index b67eafa55715..75f2eaf0d5b6 100644
> --- a/drivers/gpu/drm/drm_gem_vram_helper.c
> +++ b/drivers/gpu/drm/drm_gem_vram_helper.c
> @@ -147,7 +147,6 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
> invariant_flags = TTM_PL_FLAG_TOPDOWN;
>
> gbo->placement.placement = gbo->placements;
> - gbo->placement.busy_placement = gbo->placements;
>
> if (pl_flag & DRM_GEM_VRAM_PL_FLAG_VRAM) {
> gbo->placements[c].mem_type = TTM_PL_VRAM;
> @@ -160,7 +159,6 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
> }
>
> gbo->placement.num_placement = c;
> - gbo->placement.num_busy_placement = c;
>
> for (i = 0; i < c; ++i) {
> gbo->placements[i].fpfn = 0;
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> index 9227f8146a58..48fc9779fd50 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> @@ -65,8 +65,6 @@ static const struct ttm_place sys_placement_flags = {
> static struct ttm_placement i915_sys_placement = {
> .num_placement = 1,
> .placement = &sys_placement_flags,
> - .num_busy_placement = 1,
> - .busy_placement = &sys_placement_flags,
> };
>
> /**
> @@ -157,32 +155,28 @@ i915_ttm_place_from_region(const struct intel_memory_region *mr,
>
> static void
> i915_ttm_placement_from_obj(const struct drm_i915_gem_object *obj,
> - struct ttm_place *requested,
> - struct ttm_place *busy,
> + struct ttm_place *places,
> struct ttm_placement *placement)
> {
> unsigned int num_allowed = obj->mm.n_placements;
> unsigned int flags = obj->flags;
> unsigned int i;
>
> - placement->num_placement = 1;
> + places[0].flags |= TTM_PL_FLAG_IDLE;
> i915_ttm_place_from_region(num_allowed ? obj->mm.placements[0] :
> - obj->mm.region, requested, obj->bo_offset,
> + obj->mm.region, &places[0], obj->bo_offset,
> obj->base.size, flags);
>
> /* Cache this on object? */
> - placement->num_busy_placement = num_allowed;
> - for (i = 0; i < placement->num_busy_placement; ++i)
> - i915_ttm_place_from_region(obj->mm.placements[i], busy + i,
> - obj->bo_offset, obj->base.size, flags);
> -
> - if (num_allowed == 0) {
> - *busy = *requested;
> - placement->num_busy_placement = 1;
> + for (i = 0; i < num_allowed; ++i) {
> + i915_ttm_place_from_region(obj->mm.placements[i],
> + &places[i + 1], obj->bo_offset,
> + obj->base.size, flags);
> + places[i + 1].flags |= TTM_PL_FLAG_BUSY;
> }
>
> - placement->placement = requested;
> - placement->busy_placement = busy;
> + placement->num_placement = num_allowed + 1;
> + placement->placement = places;
> }
>
> static int i915_ttm_tt_shmem_populate(struct ttm_device *bdev,
> @@ -789,7 +783,8 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
> int ret;
>
> /* First try only the requested placement. No eviction. */
> - real_num_busy = fetch_and_zero(&placement->num_busy_placement);
> + real_num_busy = placement->num_placement;
> + placement->num_placement = 1;
> ret = ttm_bo_validate(bo, placement, &ctx);
> if (ret) {
> ret = i915_ttm_err_to_gem(ret);
> @@ -805,7 +800,7 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
> * If the initial attempt fails, allow all accepted placements,
> * evicting if necessary.
> */
> - placement->num_busy_placement = real_num_busy;
> + placement->num_placement = real_num_busy;
> ret = ttm_bo_validate(bo, placement, &ctx);
> if (ret)
> return i915_ttm_err_to_gem(ret);
> @@ -839,7 +834,7 @@ static int __i915_ttm_get_pages(struct drm_i915_gem_object *obj,
>
> static int i915_ttm_get_pages(struct drm_i915_gem_object *obj)
> {
> - struct ttm_place requested, busy[I915_TTM_MAX_PLACEMENTS];
> + struct ttm_place places[I915_TTM_MAX_PLACEMENTS + 1];
> struct ttm_placement placement;
>
> /* restricted by sg_alloc_table */
> @@ -849,7 +844,7 @@ static int i915_ttm_get_pages(struct drm_i915_gem_object *obj)
> GEM_BUG_ON(obj->mm.n_placements > I915_TTM_MAX_PLACEMENTS);
>
> /* Move to the requested placement. */
> - i915_ttm_placement_from_obj(obj, &requested, busy, &placement);
> + i915_ttm_placement_from_obj(obj, places, &placement);
>
> return __i915_ttm_get_pages(obj, &placement);
> }
> @@ -879,9 +874,7 @@ static int __i915_ttm_migrate(struct drm_i915_gem_object *obj,
> i915_ttm_place_from_region(mr, &requested, obj->bo_offset,
> obj->base.size, flags);
> placement.num_placement = 1;
> - placement.num_busy_placement = 1;
> placement.placement = &requested;
> - placement.busy_placement = &requested;
>
> ret = __i915_ttm_get_pages(obj, &placement);
> if (ret)
> diff --git a/drivers/gpu/drm/loongson/lsdc_ttm.c b/drivers/gpu/drm/loongson/lsdc_ttm.c
> index bf79dc55afa4..465f622ac05d 100644
> --- a/drivers/gpu/drm/loongson/lsdc_ttm.c
> +++ b/drivers/gpu/drm/loongson/lsdc_ttm.c
> @@ -54,7 +54,6 @@ static void lsdc_bo_set_placement(struct lsdc_bo *lbo, u32 domain)
> pflags |= TTM_PL_FLAG_TOPDOWN;
>
> lbo->placement.placement = lbo->placements;
> - lbo->placement.busy_placement = lbo->placements;
>
> if (domain & LSDC_GEM_DOMAIN_VRAM) {
> lbo->placements[c].mem_type = TTM_PL_VRAM;
> @@ -77,7 +76,6 @@ static void lsdc_bo_set_placement(struct lsdc_bo *lbo, u32 domain)
> }
>
> lbo->placement.num_placement = c;
> - lbo->placement.num_busy_placement = c;
>
> for (i = 0; i < c; ++i) {
> lbo->placements[i].fpfn = 0;
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index b7dda486a7ea..575875b6e47e 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -403,27 +403,6 @@ nouveau_bo_new(struct nouveau_cli *cli, u64 size, int align,
> return 0;
> }
>
> -static void
> -set_placement_list(struct ttm_place *pl, unsigned *n, uint32_t domain)
> -{
> - *n = 0;
> -
> - if (domain & NOUVEAU_GEM_DOMAIN_VRAM) {
> - pl[*n].mem_type = TTM_PL_VRAM;
> - pl[*n].flags = 0;
> - (*n)++;
> - }
> - if (domain & NOUVEAU_GEM_DOMAIN_GART) {
> - pl[*n].mem_type = TTM_PL_TT;
> - pl[*n].flags = 0;
> - (*n)++;
> - }
> - if (domain & NOUVEAU_GEM_DOMAIN_CPU) {
> - pl[*n].mem_type = TTM_PL_SYSTEM;
> - pl[(*n)++].flags = 0;
> - }
> -}
> -
> static void
> set_placement_range(struct nouveau_bo *nvbo, uint32_t domain)
> {
> @@ -451,10 +430,6 @@ set_placement_range(struct nouveau_bo *nvbo, uint32_t domain)
> nvbo->placements[i].fpfn = fpfn;
> nvbo->placements[i].lpfn = lpfn;
> }
> - for (i = 0; i < nvbo->placement.num_busy_placement; ++i) {
> - nvbo->busy_placements[i].fpfn = fpfn;
> - nvbo->busy_placements[i].lpfn = lpfn;
> - }
> }
> }
>
> @@ -462,15 +437,32 @@ void
> nouveau_bo_placement_set(struct nouveau_bo *nvbo, uint32_t domain,
> uint32_t busy)
> {
> - struct ttm_placement *pl = &nvbo->placement;
> + unsigned int *n = &nvbo->placement.num_placement;
> + struct ttm_place *pl = nvbo->placements;
>
> - pl->placement = nvbo->placements;
> - set_placement_list(nvbo->placements, &pl->num_placement, domain);
> + domain |= busy;
>
> - pl->busy_placement = nvbo->busy_placements;
> - set_placement_list(nvbo->busy_placements, &pl->num_busy_placement,
> - domain | busy);
> + *n = 0;
> + if (domain & NOUVEAU_GEM_DOMAIN_VRAM) {
> + pl[*n].mem_type = TTM_PL_VRAM;
> + pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_VRAM ?
> + TTM_PL_FLAG_BUSY : 0;
> + (*n)++;
> + }
> + if (domain & NOUVEAU_GEM_DOMAIN_GART) {
> + pl[*n].mem_type = TTM_PL_TT;
> + pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_GART ?
> + TTM_PL_FLAG_BUSY : 0;
> + (*n)++;
> + }
> + if (domain & NOUVEAU_GEM_DOMAIN_CPU) {
> + pl[*n].mem_type = TTM_PL_SYSTEM;
> + pl[*n].flags = busy & NOUVEAU_GEM_DOMAIN_CPU ?
> + TTM_PL_FLAG_BUSY : 0;
> + (*n)++;
> + }
>
> + nvbo->placement.placement = nvbo->placements;
> set_placement_range(nvbo, domain);
> }
>
> @@ -1313,11 +1305,6 @@ vm_fault_t nouveau_ttm_fault_reserve_notify(struct ttm_buffer_object *bo)
> nvbo->placements[i].lpfn = mappable;
> }
>
> - for (i = 0; i < nvbo->placement.num_busy_placement; ++i) {
> - nvbo->busy_placements[i].fpfn = 0;
> - nvbo->busy_placements[i].lpfn = mappable;
> - }
> -
> nouveau_bo_placement_set(nvbo, NOUVEAU_GEM_DOMAIN_VRAM, 0);
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
> index 70c551921a9e..e9dfab6a8156 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.h
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
> @@ -15,7 +15,6 @@ struct nouveau_bo {
> struct ttm_placement placement;
> u32 valid_domains;
> struct ttm_place placements[3];
> - struct ttm_place busy_placements[3];
> bool force_coherent;
> struct ttm_bo_kmap_obj kmap;
> struct list_head head;
> diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
> index 06a58dad5f5c..1e46b0a6e478 100644
> --- a/drivers/gpu/drm/qxl/qxl_object.c
> +++ b/drivers/gpu/drm/qxl/qxl_object.c
> @@ -66,7 +66,6 @@ void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain)
> pflag |= TTM_PL_FLAG_TOPDOWN;
>
> qbo->placement.placement = qbo->placements;
> - qbo->placement.busy_placement = qbo->placements;
> if (domain == QXL_GEM_DOMAIN_VRAM) {
> qbo->placements[c].mem_type = TTM_PL_VRAM;
> qbo->placements[c++].flags = pflag;
> @@ -86,7 +85,6 @@ void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain)
> qbo->placements[c++].flags = 0;
> }
> qbo->placement.num_placement = c;
> - qbo->placement.num_busy_placement = c;
> for (i = 0; i < c; ++i) {
> qbo->placements[i].fpfn = 0;
> qbo->placements[i].lpfn = 0;
> diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c
> index 1a82629bce3f..765a144cea14 100644
> --- a/drivers/gpu/drm/qxl/qxl_ttm.c
> +++ b/drivers/gpu/drm/qxl/qxl_ttm.c
> @@ -60,9 +60,7 @@ static void qxl_evict_flags(struct ttm_buffer_object *bo,
>
> if (!qxl_ttm_bo_is_qxl_bo(bo)) {
> placement->placement = &placements;
> - placement->busy_placement = &placements;
> placement->num_placement = 1;
> - placement->num_busy_placement = 1;
> return;
> }
> qbo = to_qxl_bo(bo);
> diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
> index 10c0fbd9d2b4..a955f8a2f7fe 100644
> --- a/drivers/gpu/drm/radeon/radeon_object.c
> +++ b/drivers/gpu/drm/radeon/radeon_object.c
> @@ -78,7 +78,6 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
> u32 c = 0, i;
>
> rbo->placement.placement = rbo->placements;
> - rbo->placement.busy_placement = rbo->placements;
> if (domain & RADEON_GEM_DOMAIN_VRAM) {
> /* Try placing BOs which don't need CPU access outside of the
> * CPU accessible part of VRAM
> @@ -114,7 +113,6 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
> }
>
> rbo->placement.num_placement = c;
> - rbo->placement.num_busy_placement = c;
>
> for (i = 0; i < c; ++i) {
> if ((rbo->flags & RADEON_GEM_CPU_ACCESS) &&
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index de4e6d78f1e1..d641f3040117 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -92,9 +92,7 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
>
> if (!radeon_ttm_bo_is_radeon_bo(bo)) {
> placement->placement = &placements;
> - placement->busy_placement = &placements;
> placement->num_placement = 1;
> - placement->num_busy_placement = 1;
> return;
> }
> rbo = container_of(bo, struct radeon_bo, tbo);
> @@ -114,15 +112,11 @@ static void radeon_evict_flags(struct ttm_buffer_object *bo,
> */
> radeon_ttm_placement_from_domain(rbo, RADEON_GEM_DOMAIN_VRAM |
> RADEON_GEM_DOMAIN_GTT);
> - rbo->placement.num_busy_placement = 0;
> for (i = 0; i < rbo->placement.num_placement; i++) {
> if (rbo->placements[i].mem_type == TTM_PL_VRAM) {
> if (rbo->placements[i].fpfn < fpfn)
> rbo->placements[i].fpfn = fpfn;
> - } else {
> - rbo->placement.busy_placement =
> - &rbo->placements[i];
> - rbo->placement.num_busy_placement = 1;
> + rbo->placements[0].flags |= TTM_PL_FLAG_IDLE;
> }
> }
> } else
> diff --git a/drivers/gpu/drm/radeon/radeon_uvd.c b/drivers/gpu/drm/radeon/radeon_uvd.c
> index a2cda184b2b2..058a1c8451b2 100644
> --- a/drivers/gpu/drm/radeon/radeon_uvd.c
> +++ b/drivers/gpu/drm/radeon/radeon_uvd.c
> @@ -324,7 +324,6 @@ void radeon_uvd_force_into_uvd_segment(struct radeon_bo *rbo,
> rbo->placements[1].fpfn += (256 * 1024 * 1024) >> PAGE_SHIFT;
> rbo->placements[1].lpfn += (256 * 1024 * 1024) >> PAGE_SHIFT;
> rbo->placement.num_placement++;
> - rbo->placement.num_busy_placement++;
> }
>
> void radeon_uvd_free_handles(struct radeon_device *rdev, struct drm_file *filp)
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 8c1eaa74fa21..aa12bd5cfd17 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -410,8 +410,8 @@ static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
> struct ttm_resource *hop_mem;
> int ret;
>
> - hop_placement.num_placement = hop_placement.num_busy_placement = 1;
> - hop_placement.placement = hop_placement.busy_placement = hop;
> + hop_placement.num_placement = 1;
> + hop_placement.placement = hop;
>
> /* find space in the bounce domain */
> ret = ttm_bo_mem_space(bo, &hop_placement, &hop_mem, ctx);
> @@ -440,10 +440,9 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
> dma_resv_assert_held(bo->base.resv);
>
> placement.num_placement = 0;
> - placement.num_busy_placement = 0;
> bdev->funcs->evict_flags(bo, &placement);
>
> - if (!placement.num_placement && !placement.num_busy_placement) {
> + if (!placement.num_placement) {
> ret = ttm_bo_wait_ctx(bo, ctx);
> if (ret)
> return ret;
> @@ -791,6 +790,9 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
> const struct ttm_place *place = &placement->placement[i];
> struct ttm_resource_manager *man;
>
> + if (place->flags & TTM_PL_FLAG_BUSY)
> + continue;
> +
> man = ttm_manager_type(bdev, place->mem_type);
> if (!man || !ttm_resource_manager_used(man))
> continue;
> @@ -813,10 +815,13 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
> return 0;
> }
>
> - for (i = 0; i < placement->num_busy_placement; ++i) {
> - const struct ttm_place *place = &placement->busy_placement[i];
> + for (i = 0; i < placement->num_placement; ++i) {
> + const struct ttm_place *place = &placement->placement[i];
> struct ttm_resource_manager *man;
>
> + if (place->flags & TTM_PL_FLAG_IDLE)
> + continue;
> +
> man = ttm_manager_type(bdev, place->mem_type);
> if (!man || !ttm_resource_manager_used(man))
> continue;
> @@ -904,11 +909,11 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
> /*
> * Remove the backing store if no placement is given.
> */
> - if (!placement->num_placement && !placement->num_busy_placement)
> + if (!placement->num_placement)
> return ttm_bo_pipeline_gutting(bo);
>
> /* Check whether we need to move buffer. */
> - if (bo->resource && ttm_resource_compat(bo->resource, placement))
> + if (bo->resource && ttm_resource_compatible(bo->resource, placement))
> return 0;
>
> /* Moving of pinned BOs is forbidden */
> diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
> index 02b96d23fdb9..fb14f7716cf8 100644
> --- a/drivers/gpu/drm/ttm/ttm_resource.c
> +++ b/drivers/gpu/drm/ttm/ttm_resource.c
> @@ -291,37 +291,15 @@ bool ttm_resource_intersects(struct ttm_device *bdev,
> }
>
> /**
> - * ttm_resource_compatible - test for compatibility
> + * ttm_resource_compatible - check if resource is compatible with placement
> *
> - * @bdev: TTM device structure
> - * @res: The resource to test
> - * @place: The placement to test
> - * @size: How many bytes the new allocation needs.
> - *
> - * Test if @res compatible with @place and @size.
> + * @res: the resource to check
> + * @placement: the placement to check against
> *
> - * Returns true if the res placement compatible with @place and @size.
> + * Returns true if the placement is compatible.
> */
> -bool ttm_resource_compatible(struct ttm_device *bdev,
> - struct ttm_resource *res,
> - const struct ttm_place *place,
> - size_t size)
> -{
> - struct ttm_resource_manager *man;
> -
> - if (!res || !place)
> - return false;
> -
> - man = ttm_manager_type(bdev, res->mem_type);
> - if (!man->func->compatible)
> - return true;
> -
> - return man->func->compatible(man, res, place, size);
> -}
> -
> -static bool ttm_resource_places_compat(struct ttm_resource *res,
> - const struct ttm_place *places,
> - unsigned num_placement)
> +bool ttm_resource_compatible(struct ttm_resource *res,
> + struct ttm_placement *placement)
> {
> struct ttm_buffer_object *bo = res->bo;
> struct ttm_device *bdev = bo->bdev;
> @@ -330,44 +308,25 @@ static bool ttm_resource_places_compat(struct ttm_resource *res,
> if (res->placement & TTM_PL_FLAG_TEMPORARY)
> return false;
>
> - for (i = 0; i < num_placement; i++) {
> - const struct ttm_place *heap = &places[i];
> + for (i = 0; i < placement->num_placement; i++) {
> + const struct ttm_place *place = &placement->placement[i];
> + struct ttm_resource_manager *man;
>
> - if (!ttm_resource_compatible(bdev, res, heap, bo->base.size))
> + if (res->mem_type != place->mem_type)
> + continue;
> +
> + man = ttm_manager_type(bdev, res->mem_type);
> + if (man->func->compatible &&
> + !man->func->compatible(man, res, place, bo->base.size))
> continue;
>
> - if ((res->mem_type == heap->mem_type) &&
> - (!(heap->flags & TTM_PL_FLAG_CONTIGUOUS) ||
> + if ((!(place->flags & TTM_PL_FLAG_CONTIGUOUS) ||
> (res->placement & TTM_PL_FLAG_CONTIGUOUS)))
> return true;
> }
> return false;
> }
>
> -/**
> - * ttm_resource_compat - check if resource is compatible with placement
> - *
> - * @res: the resource to check
> - * @placement: the placement to check against
> - *
> - * Returns true if the placement is compatible.
> - */
> -bool ttm_resource_compat(struct ttm_resource *res,
> - struct ttm_placement *placement)
> -{
> - if (ttm_resource_places_compat(res, placement->placement,
> - placement->num_placement))
> - return true;
> -
> - if ((placement->busy_placement != placement->placement ||
> - placement->num_busy_placement > placement->num_placement) &&
> - ttm_resource_places_compat(res, placement->busy_placement,
> - placement->num_busy_placement))
> - return true;
> -
> - return false;
> -}
> -
> void ttm_resource_set_bo(struct ttm_resource *res,
> struct ttm_buffer_object *bo)
> {
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> index 2bfac3aad7b7..7d7b33fcb5cf 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> @@ -821,8 +821,6 @@ void vmw_bo_placement_set(struct vmw_bo *bo, u32 domain, u32 busy_domain)
> __func__, bo->tbo.resource->mem_type, domain);
> }
>
> - pl->busy_placement = bo->busy_places;
> - pl->num_busy_placement = set_placement_list(bo->busy_places, busy_domain);
> }
Sorry, one last thing. Could you add the exact same code you've added
to nouveau_bo.c here or add a fixme mentioning that it should be done?
With that, for the series:
Reviewed-by: Zack Rusin <zack.rusin@broadcom.com>
z
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: Rework TTMs busy handling
2024-01-09 8:34 ` Christian König
@ 2024-01-10 9:03 ` Michel Dänzer
0 siblings, 0 replies; 17+ messages in thread
From: Michel Dänzer @ 2024-01-10 9:03 UTC (permalink / raw)
To: Christian König, Thomas Hellström, zack.rusin, lyude,
kherbst, jani.nikula, nouveau, intel-gfx, dri-devel
On 2024-01-09 09:34, Christian König wrote:
> Am 09.01.24 um 09:14 schrieb Thomas Hellström:
>> On Tue, 2024-01-09 at 08:47 +0100, Christian König wrote:
>>>
>>> I'm trying to make this functionality a bit more useful for years now
>>> since we multiple reports that behavior of drivers can be suboptimal
>>> when multiple placements be given.
>>>
>>> So basically instead of hacking around the TTM behavior in the driver
>>> once more I've gone ahead and changed the idle/busy placement list
>>> into idle/busy placement flags. This not only saves a bunch of code,
>>> but also allows setting some placements as fallback which are used if
>>> allocating from the preferred ones didn't worked.
>>
>> I also have some doubts about the naming "idle" vs "busy", since an
>> elaborate eviction mechanism would probably at some point want to check
>> for gpu idle vs gpu busy, and this might create some confusion moving
>> forward for people confusing busy as in memory overcommit with busy as
>> in gpu activity.
>>
>> I can't immediately think of something better, though.
>
> Yeah, I was wondering about that as well. Especially since I wanted to add some more flags in the future when for example a bandwidth quota how much memory can be moved in/out is exceeded.
>
> Something like phase1, phase2, phase3 etc..., but that's also not very descriptive either.
Maybe something like "desired" vs "fallback"?
--
Earthling Michel Dänzer | https://redhat.com
Libre software enthusiast | Mesa and Xwayland developer
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space
2024-01-12 12:51 Rework TTMs busy handling Christian König
@ 2024-01-12 12:51 ` Christian König
2024-01-17 10:18 ` Thomas Hellström
0 siblings, 1 reply; 17+ messages in thread
From: Christian König @ 2024-01-12 12:51 UTC (permalink / raw)
To: dri-devel, intel-gfx, thomas.hellstrom, nouveau, jani.nikula,
kherbst, lyude, zackr, michel.daenzer
Only convert it to ENOMEM in ttm_bo_validate.
This allows ttm_bo_validate to distinct between an out of memory
situation and just out of space in a placement domain.
Signed-off-by: Christian König <christian.koenig@amd.com>
---
drivers/gpu/drm/ttm/ttm_bo.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index edf10618fe2b..8c1eaa74fa21 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -830,7 +830,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
goto error;
}
- ret = -ENOMEM;
+ ret = -ENOSPC;
if (!type_found) {
pr_err(TTM_PFX "No compatible memory type found\n");
ret = -EINVAL;
@@ -916,6 +916,9 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
return -EINVAL;
ret = ttm_bo_move_buffer(bo, placement, ctx);
+ /* For backward compatibility with userspace */
+ if (ret == -ENOSPC)
+ return -ENOMEM;
if (ret)
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space
2024-01-12 12:51 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
@ 2024-01-17 10:18 ` Thomas Hellström
0 siblings, 0 replies; 17+ messages in thread
From: Thomas Hellström @ 2024-01-17 10:18 UTC (permalink / raw)
To: Christian König, dri-devel, intel-gfx, nouveau, jani.nikula,
kherbst, lyude, zackr, michel.daenzer
Hi,
On 1/12/24 13:51, Christian König wrote:
> Only convert it to ENOMEM in ttm_bo_validate.
>
> This allows ttm_bo_validate to distinct between an out of memory
NIT: s/distinct/distinguish/
> situation and just out of space in a placement domain.
In fact it would be nice if this could be propagated back to drivers as
well at some point, but then perhaps guarded with a flag in the
operation context.
In any case
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
>
> Signed-off-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/ttm/ttm_bo.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index edf10618fe2b..8c1eaa74fa21 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -830,7 +830,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
> goto error;
> }
>
> - ret = -ENOMEM;
> + ret = -ENOSPC;
> if (!type_found) {
> pr_err(TTM_PFX "No compatible memory type found\n");
> ret = -EINVAL;
> @@ -916,6 +916,9 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
> return -EINVAL;
>
> ret = ttm_bo_move_buffer(bo, placement, ctx);
> + /* For backward compatibility with userspace */
> + if (ret == -ENOSPC)
> + return -ENOMEM;
> if (ret)
> return ret;
>
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2024-01-17 10:19 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-09 7:47 Rework TTMs busy handling Christian König
2024-01-09 7:47 ` [PATCH 1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Christian König
2024-01-09 7:47 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
2024-01-09 9:17 ` Thomas Hellström
2024-01-09 7:47 ` [PATCH 3/5] drm/ttm: replace busy placement with flags v5 Christian König
2024-01-09 17:29 ` Zack Rusin
2024-01-09 7:47 ` [PATCH 4/5] drm/ttm: improve idle/busy handling v2 Christian König
2024-01-09 7:47 ` [PATCH 5/5] drm/amdgpu: use GTT only as fallback for VRAM|GTT Christian König
2024-01-09 8:14 ` Rework TTMs busy handling Thomas Hellström
2024-01-09 8:34 ` Christian König
2024-01-10 9:03 ` Michel Dänzer
2024-01-09 8:18 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/5] drm/vmwgfx: remove vmw_vram_gmr_placement Patchwork
2024-01-09 8:18 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-01-09 8:31 ` ✓ Fi.CI.BAT: success " Patchwork
2024-01-09 14:09 ` ✗ Fi.CI.IGT: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-01-12 12:51 Rework TTMs busy handling Christian König
2024-01-12 12:51 ` [PATCH 2/5] drm/ttm: return ENOSPC from ttm_bo_mem_space Christian König
2024-01-17 10:18 ` Thomas Hellström
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox