Skip to contentSkip to conversation

Disable automatic load CCS load balancing

PATCH Superseded Andi Shyti 4 participants 14 messages Mar 6, 2024 – Mar 7, 2024

Subsystems (3)

v4 of 8 Superseded Latest is v8 →

lore
Share & tools
lore

Andi Shyti

author
#0 lore raw

v4 cover Disable automatic load CCS load balancing

Hi,

I have to admit that v3 was a lazy attempt. This one should be on the right path.

this series does basically two things:

1. Disables automatic load balancing as adviced by the hardware workaround.

2. Assigns all the CCS slices to one single user engine. The user will then be able to query only one CCS engine

I'm using here the "Requires: " tag, but I'm not sure the commit id will be valid, on the other hand, I don't know what commit id I should use.

Thanks Tvrtko, Matt, John and Joonas for your reviews!

Andi

Changelog
=========
v3 -> v4
- Reword correctly the comment in the workaround
- Fix a buffer overflow (Thanks Joonas)
- Handle properly the fused engines when setting the CCS mode.

v2 -> v3
- Simplified the algorithm for creating the list of the exported uabi engines. (Patch 1) (Thanks, Tvrtko)
- Consider the fused engines when creating the uabi engine list (Patch 2) (Thanks, Matt)
- Patch 4 now uses a the refactoring from patch 1, in a cleaner outcome.

v1 -> v2
- In Patch 1 use the correct workaround number (thanks Matt).
- In Patch 2 do not add the extra CCS engines to the exposed UABI engine list and adapt the engine counting accordingly (thanks Tvrtko).
- Reword the commit of Patch 2 (thanks John).

Andi Shyti (3):
drm/i915/gt: Disable HW load balancing for CCS drm/i915/gt: Refactor uabi engine class/instance list creation drm/i915/gt: Enable only one CCS for compute workload

 drivers/gpu/drm/i915/gt/intel_engine_user.c | 40 ++++++++++++++-------
 drivers/gpu/drm/i915/gt/intel_gt.c          | 23 ++++++++++++
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     |  6 ++++
 drivers/gpu/drm/i915/gt/intel_workarounds.c |  5 +++
 4 files changed, 62 insertions(+), 12 deletions(-)
Signature · 1 line
2.43.0
author
#1 lore raw

PATCH v4 1/3 drm/i915/gt: Disable HW load balancing for CCS

The hardware should not dynamically balance the load between CCS engines. Wa_14019159160 recommends disabling it across all platforms.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")
Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     | 1 +
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 5 +++++
 2 files changed, 6 insertions(+)
drivers/gpu/drm/i915/gt/intel_gt_regs.h +1 -0
index 50962cfd1353..cf709f6c05ae 100644
@@ -1478,6 +1478,7 @@
 
 #define GEN12_RCU_MODE				_MMIO(0x14800)
 #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
+#define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
 #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
 #define   CHV_FGT_DISABLE_SS0			(1 << 10)
drivers/gpu/drm/i915/gt/intel_workarounds.c +5 -0
index d67d44611c28..a2e78cf0b5f5 100644
@@ -2945,6 +2945,11 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
 
 		/* Wa_18028616096 */
 		wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, UGM_FRAGMENT_THRESHOLD_TO_3);
+
+		/*
+		 * Wa_14019159160: disable the automatic CCS load balancing
+		 */
+		wa_masked_en(wal, GEN12_RCU_MODE, XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE);
 	}
 
 	if (IS_DG2_G11(i915)) {
Signature · 1 line
2.43.0
#2 lore raw

Re: [PATCH v4 1/3] drm/i915/gt: Disable HW load balancing for CCS

Quoted 32 lines · Andi Shyti

The hardware should not dynamically balance the load between CCS engines. Wa_14019159160 recommends disabling it across all platforms.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")
Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     | 1 +
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 5 +++++
 2 files changed, 6 insertions(+)
drivers/gpu/drm/i915/gt/intel_gt_regs.h +1 -0
index 50962cfd1353..cf709f6c05ae 100644
@@ -1478,6 +1478,7 @@
 
 #define GEN12_RCU_MODE				_MMIO(0x14800)
 #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
+#define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
 #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
 #define   CHV_FGT_DISABLE_SS0			(1 << 10)
drivers/gpu/drm/i915/gt/intel_workarounds.c +0 -0
index d67d44611c28..a2e78cf0b5f5 100644

drivers/gpu/drm/i915/gt/intel_workarounds.c general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li · line 2950

Quoted 6 lines
drivers/gpu/drm/i915/gt/intel_workarounds.c +3 -0
@@ -2945,6 +2945,11 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
 
 		/* Wa_18028616096 */
 		wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, UGM_FRAGMENT_THRESHOLD_TO_3);
+
+		/*
+		 * Wa_14019159160: disable the automatic CCS load balancing

I'm still a bit concerned that this doesn't really match what this specific workaround is asking us to do. There seems to be an agreement on various internal email threads that we need to disable load balancing, but there's no single specific workaround that officially documents that decision.

This specific workaround asks us to do a bunch of different things, and the third item it asks for is to disable load balancing in very specific cases (i.e., while the RCS is active at the same time as one or more CCS engines). Taking this workaround in isolation, it would be valid to keep load balancing active if you were just using the CCS engines and leaving the RCS idle, or if balancing was turned on/off by the GuC scheduler according to engine use at the moment, as the documented workaround seems to assume will be the case.

So in general I think we do need to disable load balancing based on other offline discussion, but blaming that entire change on Wa_14019159160 seems a bit questionable since it's not really what this specific workaround is asking us to do and someone may come back and try to "correct" the implementation of this workaround in the future without realizing there are other factors too. It would be great if we could get hardware teams to properly document this expectation somewhere (either in a separate dedicated workaround, or in the MMIO tuning guide) so that we'll have a more direct and authoritative source for such a large behavioral change.

Matt

Quoted 8 lines
drivers/gpu/drm/i915/gt/intel_workarounds.c +2 -0
+		 */
+		wa_masked_en(wal, GEN12_RCU_MODE, XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE);
 	}
 
 	if (IS_DG2_G11(i915)) {
Signature · 1 line
2.43.0
Signature · 4 lines
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
author
#3 lore raw

Re: [PATCH v4 1/3] drm/i915/gt: Disable HW load balancing for CCS

Hi Matt,

Quoted 55 lines · Matt Roper
Quoted 32 lines · Andi Shyti

The hardware should not dynamically balance the load between CCS engines. Wa_14019159160 recommends disabling it across all platforms.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")
Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     | 1 +
 drivers/gpu/drm/i915/gt/intel_workarounds.c | 5 +++++
 2 files changed, 6 insertions(+)
drivers/gpu/drm/i915/gt/intel_gt_regs.h +1 -0
index 50962cfd1353..cf709f6c05ae 100644
@@ -1478,6 +1478,7 @@
 
 #define GEN12_RCU_MODE				_MMIO(0x14800)
 #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
+#define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
 #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
 #define   CHV_FGT_DISABLE_SS0			(1 << 10)
drivers/gpu/drm/i915/gt/intel_workarounds.c +0 -0
index d67d44611c28..a2e78cf0b5f5 100644

drivers/gpu/drm/i915/gt/intel_workarounds.c general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li · line 2950

Quoted 6 lines
drivers/gpu/drm/i915/gt/intel_workarounds.c +3 -0
@@ -2945,6 +2945,11 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
 
 		/* Wa_18028616096 */
 		wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, UGM_FRAGMENT_THRESHOLD_TO_3);
+
+		/*
+		 * Wa_14019159160: disable the automatic CCS load balancing

I'm still a bit concerned that this doesn't really match what this specific workaround is asking us to do. There seems to be an agreement on various internal email threads that we need to disable load balancing, but there's no single specific workaround that officially documents that decision.

This specific workaround asks us to do a bunch of different things, and the third item it asks for is to disable load balancing in very specific cases (i.e., while the RCS is active at the same time as one or more CCS engines). Taking this workaround in isolation, it would be valid to keep load balancing active if you were just using the CCS engines and leaving the RCS idle, or if balancing was turned on/off by the GuC scheduler according to engine use at the moment, as the documented workaround seems to assume will be the case.

Quoted 10 lines

So in general I think we do need to disable load balancing based on other offline discussion, but blaming that entire change on Wa_14019159160 seems a bit questionable since it's not really what this specific workaround is asking us to do and someone may come back and try to "correct" the implementation of this workaround in the future without realizing there are other factors too. It would be great if we could get hardware teams to properly document this expectation somewhere (either in a separate dedicated workaround, or in the MMIO tuning guide) so that we'll have a more direct and authoritative source for such a large behavioral change.

On one had I think you are right, on the other hand I think this workaround has not properly developed in what we have been describing later.

Perhaps, one solution would be to create a new generic workaround for all platforms with more than one CCS and put everyone at peace. But I don't know the process.

Are you able to help here? Or Joonas?

Thanks, Matt!
Andi

#4 lore raw

Re: [PATCH v4 1/3] drm/i915/gt: Disable HW load balancing for CCS

Quoted 67 lines · Andi Shyti

Hi Matt,

Quoted 54 lines · Matt Roper
Quoted 32 lines · Andi Shyti

The hardware should not dynamically balance the load between CCS engines. Wa_14019159160 recommends disabling it across all platforms.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")
Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
  drivers/gpu/drm/i915/gt/intel_gt_regs.h     | 1 +
  drivers/gpu/drm/i915/gt/intel_workarounds.c | 5 +++++
  2 files changed, 6 insertions(+)
drivers/gpu/drm/i915/gt/intel_gt_regs.h +1 -0
index 50962cfd1353..cf709f6c05ae 100644
@@ -1478,6 +1478,7 @@
 
  #define GEN12_RCU_MODE				_MMIO(0x14800)
  #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
+#define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
  #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
  #define   CHV_FGT_DISABLE_SS0			(1 << 10)
drivers/gpu/drm/i915/gt/intel_workarounds.c +0 -0
index d67d44611c28..a2e78cf0b5f5 100644

drivers/gpu/drm/i915/gt/intel_workarounds.c general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li · line 2950

Quoted 6 lines
drivers/gpu/drm/i915/gt/intel_workarounds.c +3 -0
@@ -2945,6 +2945,11 @@ general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li
 
  		/* Wa_18028616096 */
  		wa_mcr_write_or(wal, LSC_CHICKEN_BIT_0_UDW, UGM_FRAGMENT_THRESHOLD_TO_3);
+
+		/*
+		 * Wa_14019159160: disable the automatic CCS load balancing

I'm still a bit concerned that this doesn't really match what this specific workaround is asking us to do. There seems to be an agreement on various internal email threads that we need to disable load balancing, but there's no single specific workaround that officially documents that decision.

This specific workaround asks us to do a bunch of different things, and the third item it asks for is to disable load balancing in very specific cases (i.e., while the RCS is active at the same time as one or more CCS engines). Taking this workaround in isolation, it would be valid to keep load balancing active if you were just using the CCS engines and leaving the RCS idle, or if balancing was turned on/off by the GuC scheduler according to engine use at the moment, as the documented workaround seems to assume will be the case.

Quoted 10 lines

So in general I think we do need to disable load balancing based on other offline discussion, but blaming that entire change on Wa_14019159160 seems a bit questionable since it's not really what this specific workaround is asking us to do and someone may come back and try to "correct" the implementation of this workaround in the future without realizing there are other factors too. It would be great if we could get hardware teams to properly document this expectation somewhere (either in a separate dedicated workaround, or in the MMIO tuning guide) so that we'll have a more direct and authoritative source for such a large behavioral change.

Quoted 3 lines

On one had I think you are right, on the other hand I think this workaround has not properly developed in what we have been describing later.

I think it is not so much that the w/a is 'not properly developed'. It's more that this w/a plus others when taken in combination plus knowledge of future directions has led to an architectural decision that is beyond the scope of the w/a.

As such, I think Matt is definitely correct. Tagging a code change with a w/a number when that change does something very different to what is described in the w/a is wrong and a maintenance issue waiting to happen.

At the very least, you should just put in a comment explaining the situation. E.g.:

/*
* Wa_14019159160: This w/a plus others cause significant issues with the use of
* load balancing. Hence an architectural level decision was taking to simply
* disable automatic CCS load balancing completely.
*/

Ideally yes, we would get an officially trackable software only workaround number or something created and just use that. But in the meantime, just clearly explaining the situation seems reasonable to me.

John.

Quoted 9 lines

Perhaps, one solution would be to create a new generic workaround for all platforms with more than one CCS and put everyone at peace. But I don't know the process.

Are you able to help here? Or Joonas?

Thanks, Matt!
Andi

author
#5 lore raw

Re: [PATCH v4 1/3] drm/i915/gt: Disable HW load balancing for CCS

Hi John,

...

Quoted 40 lines
Quoted 28 lines
Quoted 18 lines

drivers/gpu/drm/i915/gt/intel_workarounds.c general_render_compute_wa_init(struct intel_engine_cs *engine, struct i915_wa_li · line 2950

Quoted 3 lines
drivers/gpu/drm/i915/gt/intel_workarounds.c +3 -0
+
+		/*
+		 * Wa_14019159160: disable the automatic CCS load balancing

I'm still a bit concerned that this doesn't really match what this specific workaround is asking us to do. There seems to be an agreement on various internal email threads that we need to disable load balancing, but there's no single specific workaround that officially documents that decision.

This specific workaround asks us to do a bunch of different things, and the third item it asks for is to disable load balancing in very specific cases (i.e., while the RCS is active at the same time as one or more CCS engines). Taking this workaround in isolation, it would be valid to keep load balancing active if you were just using the CCS engines and leaving the RCS idle, or if balancing was turned on/off by the GuC scheduler according to engine use at the moment, as the documented workaround seems to assume will be the case.

Quoted 10 lines

So in general I think we do need to disable load balancing based on other offline discussion, but blaming that entire change on Wa_14019159160 seems a bit questionable since it's not really what this specific workaround is asking us to do and someone may come back and try to "correct" the implementation of this workaround in the future without realizing there are other factors too. It would be great if we could get hardware teams to properly document this expectation somewhere (either in a separate dedicated workaround, or in the MMIO tuning guide) so that we'll have a more direct and authoritative source for such a large behavioral change.

Quoted 3 lines

On one had I think you are right, on the other hand I think this workaround has not properly developed in what we have been describing later.

I think it is not so much that the w/a is 'not properly developed'. It's more that this w/a plus others when taken in combination plus knowledge of future directions has led to an architectural decision that is beyond the scope of the w/a.

As such, I think Matt is definitely correct. Tagging a code change with a w/a number when that change does something very different to what is described in the w/a is wrong and a maintenance issue waiting to happen.

Quoted 8 lines

At the very least, you should just put in a comment explaining the situation. E.g.:

/*
* Wa_14019159160: This w/a plus others cause significant issues with the use of
* load balancing. Hence an architectural level decision was taking to simply
* disable automatic CCS load balancing completely.
*/

Good suggestion! I will anyway check tomorrow with Joonas if it's worth the effort to set up a new "software" workaround.

Thanks,
Andi

author
#6 lore raw

PATCH v4 2/3 drm/i915/gt: Refactor uabi engine class/instance list creation

In reply to Andi Shyti

For the upcoming changes we need a cleaner way to build the list of uabi engines.

---
 drivers/gpu/drm/i915/gt/intel_engine_user.c | 29 ++++++++++++---------
 1 file changed, 17 insertions(+), 12 deletions(-)
drivers/gpu/drm/i915/gt/intel_engine_user.c +17 -12
index 833987015b8b..11cc06c0c785 100644
@@ -203,7 +203,7 @@ static void engine_rename(struct intel_engine_cs *engine, const char *name, u16
 
 void intel_engines_driver_register(struct drm_i915_private *i915)
 {
-	u16 name_instance, other_instance = 0;
+	u16 class_instance[I915_LAST_UABI_ENGINE_CLASS + 2] = { };
 	struct legacy_ring ring = {};
 	struct list_head *it, *next;
 	struct rb_node **p, *prev;
@@ -214,6 +214,8 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 	prev = NULL;
 	p = &i915->uabi_engines.rb_node;
 	list_for_each_safe(it, next, &engines) {
+		u16 uabi_class;
+
 		struct intel_engine_cs *engine =
 			container_of(it, typeof(*engine), uabi_list);
 
@@ -222,15 +224,14 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 
 		GEM_BUG_ON(engine->class >= ARRAY_SIZE(uabi_classes));
 		engine->uabi_class = uabi_classes[engine->class];
-		if (engine->uabi_class == I915_NO_UABI_CLASS) {
-			name_instance = other_instance++;
-		} else {
-			GEM_BUG_ON(engine->uabi_class >=
-				   ARRAY_SIZE(i915->engine_uabi_class_count));
-			name_instance =
-				i915->engine_uabi_class_count[engine->uabi_class]++;
-		}
-		engine->uabi_instance = name_instance;
+
+		if (engine->uabi_class == I915_NO_UABI_CLASS)
+			uabi_class = I915_LAST_UABI_ENGINE_CLASS + 1;
+		else
+			uabi_class = engine->uabi_class;
+
+		GEM_BUG_ON(uabi_class >= ARRAY_SIZE(class_instance));
+		engine->uabi_instance = class_instance[uabi_class]++;
 
 		/*
 		 * Replace the internal name with the final user and log facing
@@ -238,11 +239,15 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 		 */
 		engine_rename(engine,
 			      intel_engine_class_repr(engine->class),
-			      name_instance);
+			      engine->uabi_instance);
 
-		if (engine->uabi_class == I915_NO_UABI_CLASS)
+		if (uabi_class > I915_LAST_UABI_ENGINE_CLASS)
 			continue;
 
+		GEM_BUG_ON(uabi_class >=
+			   ARRAY_SIZE(i915->engine_uabi_class_count));
+		i915->engine_uabi_class_count[uabi_class]++;
+
 		rb_link_node(&engine->uabi_node, prev, p);
 		rb_insert_color(&engine->uabi_node, &i915->uabi_engines);
 
Signature · 1 line
2.43.0
author
#7 lore raw

PATCH v4 3/3 drm/i915/gt: Enable only one CCS for compute workload

In reply to Andi Shyti

Enable only one CCS engine by default with all the compute sices allocated to it.

While generating the list of UABI engines to be exposed to the user, exclude any additional CCS engines beyond the first instance.

This change can be tested with igt i915_query.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")

Requires: 97aba5e46038 ("drm/i915/gt: Refactor uabi engine class/instance list creation")

Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
 drivers/gpu/drm/i915/gt/intel_engine_user.c | 11 ++++++++++
 drivers/gpu/drm/i915/gt/intel_gt.c          | 23 +++++++++++++++++++++
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     |  5 +++++
 3 files changed, 39 insertions(+)
drivers/gpu/drm/i915/gt/intel_engine_user.c +11 -0
index 11cc06c0c785..9ef1c4ce252d 100644
@@ -208,6 +208,7 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 	struct list_head *it, *next;
 	struct rb_node **p, *prev;
 	LIST_HEAD(engines);
+	u16 uabi_ccs = 0;
 
 	sort_engines(i915, &engines);
 
@@ -244,6 +245,16 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 		if (uabi_class > I915_LAST_UABI_ENGINE_CLASS)
 			continue;
 
+		/*
+		 * The load is balanced among all the available compute
+		 * slices. Expose only the first instance of the compute
+		 * engine.
+		 */
+		if (IS_DG2(i915) &&
+		    uabi_class == I915_ENGINE_CLASS_COMPUTE &&
+		    uabi_ccs++)
+			continue;
+
 		GEM_BUG_ON(uabi_class >=
 			   ARRAY_SIZE(i915->engine_uabi_class_count));
 		i915->engine_uabi_class_count[uabi_class]++;
drivers/gpu/drm/i915/gt/intel_gt.c +23 -0
index a425db5ed3a2..0aac97439552 100644
@@ -168,6 +168,26 @@ static void init_unused_rings(struct intel_gt *gt)
 	}
 }
 
+static void intel_gt_apply_ccs_mode(struct intel_gt *gt)
+{
+	u32 mode;
+	int cslice;
+
+	if (!IS_DG2(gt->i915))
+		return;
+
+	/* Set '0' as a default CCS id to all the cslices */
+	mode = 0;
+
+	for (cslice = 0; cslice < hweight32(CCS_MASK(gt)); cslice++)
+		/* Write 0x7 if no CCS context dispatches to this cslice */
+		if (!(CCS_MASK(gt) & BIT(cslice)))
+			mode |= XEHP_CCS_MODE_CSLICE(cslice,
+						     XEHP_CCS_MODE_CSLICE_MASK);
+
+	intel_uncore_write(gt->uncore, XEHP_CCS_MODE, mode);
+}
+
 int intel_gt_init_hw(struct intel_gt *gt)
 {
 	struct drm_i915_private *i915 = gt->i915;
@@ -195,6 +215,9 @@ int intel_gt_init_hw(struct intel_gt *gt)
 
 	intel_gt_init_swizzling(gt);
 
+	/* Configure CCS mode */
+	intel_gt_apply_ccs_mode(gt);
+
 	/*
 	 * At least 830 can leave some of the unused rings
 	 * "active" (ie. head != tail) after resume which
drivers/gpu/drm/i915/gt/intel_gt_regs.h +5 -0
index cf709f6c05ae..8224dd99c7d7 100644
@@ -1480,6 +1480,11 @@
 #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
 #define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
+#define XEHP_CCS_MODE				_MMIO(0x14804)
+#define   XEHP_CCS_MODE_CSLICE_MASK		REG_GENMASK(2, 0) /* CCS0-3 + rsvd */
+#define   XEHP_CCS_MODE_CSLICE_WIDTH		ilog2(XEHP_CCS_MODE_CSLICE_MASK + 1)
+#define   XEHP_CCS_MODE_CSLICE(cslice, ccs)	(ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))
+
 #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
 #define   CHV_FGT_DISABLE_SS0			(1 << 10)
 #define   CHV_FGT_DISABLE_SS1			(1 << 11)
Signature · 1 line
2.43.0
#8 lore raw

Re: [PATCH v4 3/3] drm/i915/gt: Enable only one CCS for compute workload

Quoted 67 lines · Andi Shyti

Enable only one CCS engine by default with all the compute sices allocated to it.

While generating the list of UABI engines to be exposed to the user, exclude any additional CCS engines beyond the first instance.

This change can be tested with igt i915_query.

Fixes d2eae8e98d59 ("drm/i915/dg2: Drop force_probe requirement")

Requires: 97aba5e46038 ("drm/i915/gt: Refactor uabi engine class/instance list creation")

Cc Chris Wilson <[email protected]>
Cc Joonas Lahtinen <[email protected]>
Cc Matt Roper <[email protected]>
Cc <[email protected]> # v6.2+
---
 drivers/gpu/drm/i915/gt/intel_engine_user.c | 11 ++++++++++
 drivers/gpu/drm/i915/gt/intel_gt.c          | 23 +++++++++++++++++++++
 drivers/gpu/drm/i915/gt/intel_gt_regs.h     |  5 +++++
 3 files changed, 39 insertions(+)
drivers/gpu/drm/i915/gt/intel_engine_user.c +11 -0
index 11cc06c0c785..9ef1c4ce252d 100644
@@ -208,6 +208,7 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 	struct list_head *it, *next;
 	struct rb_node **p, *prev;
 	LIST_HEAD(engines);
+	u16 uabi_ccs = 0;
 
 	sort_engines(i915, &engines);
 
@@ -244,6 +245,16 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
 		if (uabi_class > I915_LAST_UABI_ENGINE_CLASS)
 			continue;
 
+		/*
+		 * The load is balanced among all the available compute
+		 * slices. Expose only the first instance of the compute
+		 * engine.
+		 */
+		if (IS_DG2(i915) &&
+		    uabi_class == I915_ENGINE_CLASS_COMPUTE &&
+		    uabi_ccs++)
+			continue;
+
 		GEM_BUG_ON(uabi_class >=
 			   ARRAY_SIZE(i915->engine_uabi_class_count));
 		i915->engine_uabi_class_count[uabi_class]++;
drivers/gpu/drm/i915/gt/intel_gt.c +8 -0
index a425db5ed3a2..0aac97439552 100644
@@ -168,6 +168,26 @@ static void init_unused_rings(struct intel_gt *gt)
 	}
 }
 
+static void intel_gt_apply_ccs_mode(struct intel_gt *gt)
+{
+	u32 mode;
+	int cslice;
+
+	if (!IS_DG2(gt->i915))
+		return;
+

drivers/gpu/drm/i915/gt/intel_gt.c static void init_unused_rings(struct intel_gt *gt) · line 188

Quoted 10 lines
drivers/gpu/drm/i915/gt/intel_gt.c +10 -0
+	/* Set '0' as a default CCS id to all the cslices */
+	mode = 0;
+
+	for (cslice = 0; cslice < hweight32(CCS_MASK(gt)); cslice++)
+		/* Write 0x7 if no CCS context dispatches to this cslice */
+		if (!(CCS_MASK(gt) & BIT(cslice)))
+			mode |= XEHP_CCS_MODE_CSLICE(cslice,
+						     XEHP_CCS_MODE_CSLICE_MASK);
+
+	intel_uncore_write(gt->uncore, XEHP_CCS_MODE, mode);

This is still going to hook all available cslices up to hardware engine ccs0. But what you actually want is to hook them all up to what userspace sees as CCS0 (i.e., the first CCS engine that wasn't fused off). Hardware's engine numbering and userspace's numbering aren't the same.

Also, if you have a part that only has hardware ccs1/cslice1 for example, you're not going to set cslices 2 & 3 to 0x7 properly.

So probably what you want is something like this (untested):

static void intel_gt_apply_ccs_mode(struct intel_gt *gt)

{
        u32 mode = 0;
        int first_ccs = __ffs(CCS_MASK(gt));

        /*
         * Re-assign every present cslice to the first available CCS
         * engine; mark unavailable cslices as unused.
         */
        for (int cslice = 0; cslice < 4; cslice++) {
                if (CCS_MASK(gt) & BIT(cslice))
                        mode |= XEHP_CCS_MODE_CSLICE(cslice, first_ccs);
                else
                        mode |= XEHP_CCS_MODE_CSLICE(cslice,
                                                     XEHP_CCS_MODE_CSLICE_MASK);
        }

        intel_uncore_write(gt->uncore, XEHP_CCS_MODE, mode);
}

drivers/gpu/drm/i915/gt/intel_gt.c int intel_gt_init_hw(struct intel_gt *gt) · line 219

Quoted 11 lines
drivers/gpu/drm/i915/gt/intel_gt.c +4 -0
+}
+
 int intel_gt_init_hw(struct intel_gt *gt)
 {
 	struct drm_i915_private *i915 = gt->i915;
@@ -195,6 +215,9 @@ int intel_gt_init_hw(struct intel_gt *gt)
 
 	intel_gt_init_swizzling(gt);
 
+	/* Configure CCS mode */
+	intel_gt_apply_ccs_mode(gt);

This is only setting this once during init. The value gets lost on every RCS/CCS reset, so we need to make sure it gets reapplied when necessary. That means you either need to add this to the GuC regset, or you need to implement the programming as a "fake workaround" so that the workaround framework will take care of the re-application for you.

Matt

Quoted 23 lines
drivers/gpu/drm/i915/gt/intel_gt.c +1 -0
+
 	/*
 	 * At least 830 can leave some of the unused rings
 	 * "active" (ie. head != tail) after resume which
drivers/gpu/drm/i915/gt/intel_gt_regs.h +5 -0
index cf709f6c05ae..8224dd99c7d7 100644
@@ -1480,6 +1480,11 @@
 #define   GEN12_RCU_MODE_CCS_ENABLE		REG_BIT(0)
 #define   XEHP_RCU_MODE_FIXED_SLICE_CCS_MODE	REG_BIT(1)
 
+#define XEHP_CCS_MODE				_MMIO(0x14804)
+#define   XEHP_CCS_MODE_CSLICE_MASK		REG_GENMASK(2, 0) /* CCS0-3 + rsvd */
+#define   XEHP_CCS_MODE_CSLICE_WIDTH		ilog2(XEHP_CCS_MODE_CSLICE_MASK + 1)
+#define   XEHP_CCS_MODE_CSLICE(cslice, ccs)	(ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))
+
 #define CHV_FUSE_GT				_MMIO(VLV_GUNIT_BASE + 0x2168)
 #define   CHV_FGT_DISABLE_SS0			(1 << 10)
 #define   CHV_FGT_DISABLE_SS1			(1 << 11)
Signature · 1 line
2.43.0
Signature · 4 lines
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
author
#9 lore raw

Re: [PATCH v4 3/3] drm/i915/gt: Enable only one CCS for compute workload

Hi Matt,

Quoted 16 lines
Quoted 16 lines
drivers/gpu/drm/i915/gt/intel_gt.c +16 -0
+static void intel_gt_apply_ccs_mode(struct intel_gt *gt)
+{
+	u32 mode;
+	int cslice;
+
+	if (!IS_DG2(gt->i915))
+		return;
+
+	/* Set '0' as a default CCS id to all the cslices */
+	mode = 0;
+
+	for (cslice = 0; cslice < hweight32(CCS_MASK(gt)); cslice++)
+		/* Write 0x7 if no CCS context dispatches to this cslice */
+		if (!(CCS_MASK(gt) & BIT(cslice)))
+			mode |= XEHP_CCS_MODE_CSLICE(cslice,
+						     XEHP_CCS_MODE_CSLICE_MASK);
Quoted 8 lines

Review

Quoted 2 lines
(quoted diff) +2 -0
+
+	intel_uncore_write(gt->uncore, XEHP_CCS_MODE, mode);

This is still going to hook all available cslices up to hardware engine ccs0. But what you actually want is to hook them all up to what userspace sees as CCS0 (i.e., the first CCS engine that wasn't fused off). Hardware's engine numbering and userspace's numbering aren't the same.

Yes, correct... we had so many discussions and I forgot about it :-)

Quoted 2 lines

Also, if you have a part that only has hardware ccs1/cslice1 for example, you're not going to set cslices 2 & 3 to 0x7 properly.

Good point also here, the XEHP_CCS_MODE register is indeed generic to all platforms.

Quoted 31 lines

So probably what you want is something like this (untested):

static void intel_gt_apply_ccs_mode(struct intel_gt *gt)

{
        u32 mode = 0;
        int first_ccs = __ffs(CCS_MASK(gt));

        /*
         * Re-assign every present cslice to the first available CCS
         * engine; mark unavailable cslices as unused.
         */
        for (int cslice = 0; cslice < 4; cslice++) {
                if (CCS_MASK(gt) & BIT(cslice))
                        mode |= XEHP_CCS_MODE_CSLICE(cslice, first_ccs);
                else
                        mode |= XEHP_CCS_MODE_CSLICE(cslice,
                                                     XEHP_CCS_MODE_CSLICE_MASK);
        }

        intel_uncore_write(gt->uncore, XEHP_CCS_MODE, mode);
}
Quoted 9 lines
drivers/gpu/drm/i915/gt/intel_gt.c +2 -0
+}
+
 int intel_gt_init_hw(struct intel_gt *gt)
 {
 	struct drm_i915_private *i915 = gt->i915;
@@ -195,6 +215,9 @@ int intel_gt_init_hw(struct intel_gt *gt)
 
 	intel_gt_init_swizzling(gt);
 
Quoted 8 lines

drivers/gpu/drm/i915/gt/intel_gt.c int intel_gt_init_hw(struct intel_gt *gt) · line 219

Quoted 2 lines
drivers/gpu/drm/i915/gt/intel_gt.c +2 -0
+	/* Configure CCS mode */
+	intel_gt_apply_ccs_mode(gt);

This is only setting this once during init. The value gets lost on every RCS/CCS reset, so we need to make sure it gets reapplied when necessary. That means you either need to add this to the GuC regset, or you need to implement the programming as a "fake workaround" so that the workaround framework will take care of the re-application for you.

OK, I'll hook everything up in the ccs_engine_wa_init().

Thanks,
Andi

#10 lore raw

✗ Fi.CI.CHECKPATCH: warning for Disable automatic load CCS load balancing (rev5)

In reply to Andi Shyti
== Series Details ==

== Series Details ==

Series: Disable automatic load CCS load balancing (rev5)
URL : https://patchwork.freedesktop.org/series/129951/
State : warning

== Summary ==

Error: dim checkpatch failed
5b93f1cd8989 drm/i915/gt: Disable HW load balancing for CCS
380b317702a8 drm/i915/gt: Refactor uabi engine class/instance list creation
-:55: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants #55: FILE: drivers/gpu/drm/i915/gt/intel_engine_user.c:233:
+ GEM_BUG_ON(uabi_class >= ARRAY_SIZE(class_instance));

-:71: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants #71: FILE: drivers/gpu/drm/i915/gt/intel_engine_user.c:247:
+ GEM_BUG_ON(uabi_class >=

total: 0 errors, 2 warnings, 0 checks, 56 lines checked
4cdfe2cf85b2 drm/i915/gt: Enable only one CCS for compute workload
-:16: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #16:
Requires: 97aba5e46038 ("drm/i915/gt: Refactor uabi engine class/instance list creation")

-:104: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'cslice' may be better as '(cslice)' to avoid precedence issues #104: FILE: drivers/gpu/drm/i915/gt/intel_gt_regs.h:1486:
+#define XEHP_CCS_MODE_CSLICE(cslice, ccs) (ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))

-:104: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'ccs' may be better as '(ccs)' to avoid precedence issues #104: FILE: drivers/gpu/drm/i915/gt/intel_gt_regs.h:1486:
+#define XEHP_CCS_MODE_CSLICE(cslice, ccs) (ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))

total: 0 errors, 1 warnings, 2 checks, 69 lines checked

#11 lore raw

✗ Fi.CI.BAT: failure for Disable automatic load CCS load balancing (rev5)

In reply to Andi Shyti
== Series Details ==

== Series Details ==

Series: Disable automatic load CCS load balancing (rev5)
URL : https://patchwork.freedesktop.org/series/129951/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14395 -> Patchwork_129951v5
====================================================

Summary
-------

**FAILURE**

Serious unknown changes coming with Patchwork_129951v5 absolutely need to be verified manually.

If you think the reported changes have nothing to do with the changes
introduced in Patchwork_129951v5, please notify your bug team ([email protected]) to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/index.html

Participating hosts (41 -> 36)
------------------------------

Missing (5): bat-dg1-7 bat-arls-2 fi-snb-2520m fi-glk-j4005 bat-mtlp-8

Possible new issues
-------------------

Here are the unknown changes that may have been introduced in Patchwork_129951v5:

### IGT changes ###

#### Possible regressions ####

* igt@i915_selftest@live@hangcheck:
- bat-atsm-1: [PASS][1] -> [DMESG-FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-atsm-1/igt@i915_selftest@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-atsm-1/igt@i915_selftest@[email protected]
- bat-dg2-9: [PASS][3] -> [DMESG-FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-dg2-9/igt@i915_selftest@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-dg2-9/igt@i915_selftest@[email protected]
- bat-dg2-8: [PASS][5] -> [DMESG-FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-dg2-8/igt@i915_selftest@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-dg2-8/igt@i915_selftest@[email protected]
- bat-dg2-14: [PASS][7] -> [DMESG-FAIL][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-dg2-14/igt@i915_selftest@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-dg2-14/igt@i915_selftest@[email protected]

Known issues
------------

Here are the changes found in Patchwork_129951v5 that come from known issues:

### CI changes ###

#### Issues hit ####

* boot:
- fi-cfl-8109u: [PASS][9] -> [FAIL][10] ([i915#8293])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/fi-cfl-8109u/boot.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/fi-cfl-8109u/boot.html

### IGT changes ###

#### Issues hit ####

* igt@i915_selftest@live@client:
- bat-dg2-11: [PASS][11] -> [ABORT][12] ([i915#10366])
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-dg2-11/igt@i915_selftest@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-dg2-11/igt@i915_selftest@[email protected]

* igt@i915_selftest@live@hangcheck:
- fi-skl-guc: [PASS][13] -> [DMESG-FAIL][14] ([i915#10112])
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/fi-skl-guc/igt@i915_selftest@[email protected]
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/fi-skl-guc/igt@i915_selftest@[email protected]

#### Possible fixes ####

* igt@i915_selftest@live@guc_hang:
- bat-arls-3: [DMESG-FAIL][15] ([i915#10262]) -> [PASS][16] +12 other tests pass
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-arls-3/igt@i915_selftest@live@guc_hang.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-arls-3/igt@i915_selftest@live@guc_hang.html

* igt@i915_selftest@live@hangcheck:
- {bat-rpls-3}: [DMESG-WARN][17] ([i915#5591]) -> [PASS][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14395/bat-rpls-3/igt@i915_selftest@[email protected]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/bat-rpls-3/igt@i915_selftest@[email protected]

{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).

[i915#10112]: https://gitlab.freedesktop.org/drm/intel/issues/10112
[i915#10262]: https://gitlab.freedesktop.org/drm/intel/issues/10262
[i915#10366]: https://gitlab.freedesktop.org/drm/intel/issues/10366
[i915#10373]: https://gitlab.freedesktop.org/drm/intel/issues/10373
[i915#5591]: https://gitlab.freedesktop.org/drm/intel/issues/5591
[i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293

Build changes
-------------

* Linux: CI_DRM_14395 -> Patchwork_129951v5

CI-20190529: 20190529
CI_DRM_14395: dd08fd912fdc1b72984a39852fdbee49b97b8ce4 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7746: 7746
Patchwork_129951v5: dd08fd912fdc1b72984a39852fdbee49b97b8ce4 @ git://anongit.freedesktop.org/gfx-ci/linux

### Linux commits

3c93de5b3a9f drm/i915/gt: Enable only one CCS for compute workload 799b867a12ff drm/i915/gt: Refactor uabi engine class/instance list creation f9818d3502ea drm/i915/gt: Disable HW load balancing for CCS

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v5/index.html

#12 lore raw

✗ Fi.CI.CHECKPATCH: warning for Disable automatic load CCS load balancing (rev6)

In reply to Andi Shyti
== Series Details ==

== Series Details ==

Series: Disable automatic load CCS load balancing (rev6)
URL : https://patchwork.freedesktop.org/series/129951/
State : warning

== Summary ==

Error: dim checkpatch failed
c4061a06af34 drm/i915/gt: Disable HW load balancing for CCS
cb3a146b7a46 drm/i915/gt: Refactor uabi engine class/instance list creation
-:55: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants #55: FILE: drivers/gpu/drm/i915/gt/intel_engine_user.c:233:
+ GEM_BUG_ON(uabi_class >= ARRAY_SIZE(class_instance));

-:71: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants #71: FILE: drivers/gpu/drm/i915/gt/intel_engine_user.c:247:
+ GEM_BUG_ON(uabi_class >=

total: 0 errors, 2 warnings, 0 checks, 56 lines checked
ce40a44279fe drm/i915/gt: Enable only one CCS for compute workload
-:16: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #16:
Requires: 97aba5e46038 ("drm/i915/gt: Refactor uabi engine class/instance list creation")

-:104: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'cslice' may be better as '(cslice)' to avoid precedence issues #104: FILE: drivers/gpu/drm/i915/gt/intel_gt_regs.h:1486:
+#define XEHP_CCS_MODE_CSLICE(cslice, ccs) (ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))

-:104: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'ccs' may be better as '(ccs)' to avoid precedence issues #104: FILE: drivers/gpu/drm/i915/gt/intel_gt_regs.h:1486:
+#define XEHP_CCS_MODE_CSLICE(cslice, ccs) (ccs << (cslice * XEHP_CCS_MODE_CSLICE_WIDTH))

total: 0 errors, 1 warnings, 2 checks, 69 lines checked

#13 lore raw

✗ Fi.CI.BAT: failure for Disable automatic load CCS load balancing (rev6)

In reply to Andi Shyti
== Series Details ==

== Series Details ==

Series: Disable automatic load CCS load balancing (rev6)
URL : https://patchwork.freedesktop.org/series/129951/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_14398 -> Patchwork_129951v6
====================================================

Summary
-------

**FAILURE**

Serious unknown changes coming with Patchwork_129951v6 absolutely need to be verified manually.

If you think the reported changes have nothing to do with the changes
introduced in Patchwork_129951v6, please notify your bug team ([email protected]) to allow them to document this new failure mode, which will reduce false positives in CI.

External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/index.html

Participating hosts (41 -> 40)
------------------------------

Missing (1): fi-snb-2520m

Possible new issues
-------------------

Here are the unknown changes that may have been introduced in Patchwork_129951v6:

### IGT changes ###

#### Possible regressions ####

* igt@i915_selftest@live@hangcheck:
- bat-atsm-1: [PASS][1] -> [DMESG-FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-atsm-1/igt@i915_selftest@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-atsm-1/igt@i915_selftest@[email protected]
- bat-dg2-9: [PASS][3] -> [DMESG-FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-dg2-9/igt@i915_selftest@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-dg2-9/igt@i915_selftest@[email protected]
- bat-dg2-8: [PASS][5] -> [DMESG-FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-dg2-8/igt@i915_selftest@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-dg2-8/igt@i915_selftest@[email protected]
- bat-dg2-14: NOTRUN -> [DMESG-FAIL][7]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-dg2-14/igt@i915_selftest@[email protected]

Known issues
------------

Here are the changes found in Patchwork_129951v6 that come from known issues:

### CI changes ###

#### Issues hit ####

* boot:
- bat-arls-3: [PASS][8] -> [FAIL][9] ([i915#10234])
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-arls-3/boot.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-3/boot.html

#### Possible fixes ####

* boot:
- fi-cfl-8109u: [FAIL][10] ([i915#8293]) -> [PASS][11]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/fi-cfl-8109u/boot.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/fi-cfl-8109u/boot.html

### IGT changes ###

#### Issues hit ####

* igt@gem_huc_copy@huc-copy:
- fi-cfl-8109u: NOTRUN -> [SKIP][12] ([i915#2190])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/fi-cfl-8109u/igt@[email protected]

* igt@gem_lmem_swapping@verify-random:
- fi-cfl-8109u: NOTRUN -> [SKIP][13] ([i915#4613]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/fi-cfl-8109u/igt@[email protected]

* igt@gem_mmap@basic:
- bat-arls-2: NOTRUN -> [SKIP][14] ([i915#4083])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@[email protected]

* igt@gem_mmap_gtt@basic:
- bat-arls-2: NOTRUN -> [SKIP][15] ([i915#10196] / [i915#4077]) +2 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@[email protected]

* igt@gem_render_tiled_blits@basic:
- bat-arls-2: NOTRUN -> [SKIP][16] ([i915#10197] / [i915#10211] / [i915#4079])
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@[email protected]

* igt@gem_tiled_pread_basic:
- bat-arls-2: NOTRUN -> [SKIP][17] ([i915#10206] / [i915#4079])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@gem_tiled_pread_basic.html

* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-arls-2: NOTRUN -> [SKIP][18] ([i915#10200]) +9 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@[email protected]

* igt@kms_pm_backlight@basic-brightness:
- fi-cfl-8109u: NOTRUN -> [SKIP][19] +11 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/fi-cfl-8109u/igt@[email protected]

#### Possible fixes ####

* igt@gem_exec_parallel@engines@contexts:
- bat-arls-2: [ABORT][20] -> [PASS][21]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-arls-2/igt@gem_exec_parallel@[email protected]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-2/igt@gem_exec_parallel@[email protected]

* igt@gem_lmem_swapping@basic@lmem0:
- bat-dg2-14: [FAIL][22] ([i915#10378]) -> [PASS][23]
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-dg2-14/igt@gem_lmem_swapping@[email protected]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-dg2-14/igt@gem_lmem_swapping@[email protected]

* igt@i915_selftest@live@gt_pm:
- bat-dg2-14: [ABORT][24] ([i915#10366]) -> [PASS][25]
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-dg2-14/igt@i915_selftest@live@gt_pm.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-dg2-14/igt@i915_selftest@live@gt_pm.html

* igt@i915_selftest@live@gt_timelines:
- bat-arls-1: [INCOMPLETE][26] -> [PASS][27]
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_14398/bat-arls-1/igt@i915_selftest@live@gt_timelines.html
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/bat-arls-1/igt@i915_selftest@live@gt_timelines.html

[i915#10196]: https://gitlab.freedesktop.org/drm/intel/issues/10196
[i915#10197]: https://gitlab.freedesktop.org/drm/intel/issues/10197
[i915#10200]: https://gitlab.freedesktop.org/drm/intel/issues/10200
[i915#10206]: https://gitlab.freedesktop.org/drm/intel/issues/10206
[i915#10211]: https://gitlab.freedesktop.org/drm/intel/issues/10211
[i915#10234]: https://gitlab.freedesktop.org/drm/intel/issues/10234
[i915#10366]: https://gitlab.freedesktop.org/drm/intel/issues/10366
[i915#10378]: https://gitlab.freedesktop.org/drm/intel/issues/10378
[i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
[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#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
[i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293

Build changes
-------------

* Linux: CI_DRM_14398 -> Patchwork_129951v6

CI-20190529: 20190529
CI_DRM_14398: e96742a33719079709b8e180448b491622e6a427 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7749: 2fd91b8c3cf9aa2b0bb78537a6b5e2bc3de50e0e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_129951v6: e96742a33719079709b8e180448b491622e6a427 @ git://anongit.freedesktop.org/gfx-ci/linux

### Linux commits

00a9e476b832 drm/i915/gt: Enable only one CCS for compute workload 00970ed7fa1a drm/i915/gt: Refactor uabi engine class/instance list creation 69f5fb890319 drm/i915/gt: Disable HW load balancing for CCS

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_129951v6/index.html