[PATCH] drm/i915/gt: Make the slice:unslice ratio request explicit for RPS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In RPS, we have the option to only specify the unslice [ring] clock
ratio and for the pcu to derive the slice [gpu] clock ratio from its
magic table. We also have the option to tell the pcu to use our
requested gpu clock ratio, and for it to try and throttle the unslice
and slice ratios separately.

Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>
---
 drivers/gpu/drm/i915/gt/intel_rps.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 4dcfae16a7ce..07321e1b22f6 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -662,14 +662,17 @@ static int gen6_rps_set(struct intel_rps *rps, u8 val)
 	struct drm_i915_private *i915 = rps_to_i915(rps);
 	u32 swreq;
 
-	if (INTEL_GEN(i915) >= 9)
-		swreq = GEN9_FREQUENCY(val);
-	else if (IS_HASWELL(i915) || IS_BROADWELL(i915))
+	if (INTEL_GEN(i915) >= 9) {
+		swreq = 0x2; /* only throttle slice, not unslice */
+		swreq |= val << 14; /* slice [gpu] ratio */
+		swreq |= val << 23; /* unslice [ring] ratio */
+	} else if (IS_HASWELL(i915) || IS_BROADWELL(i915)) {
 		swreq = HSW_FREQUENCY(val);
-	else
+	} else {
 		swreq = (GEN6_FREQUENCY(val) |
 			 GEN6_OFFSET(0) |
 			 GEN6_AGGRESSIVE_TURBO);
+	}
 	set(uncore, GEN6_RPNSWREQ, swreq);
 
 	return 0;
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux