@@ -4338,11 +4338,11 @@ static void gen10_sseu_device_status(struct drm_i915_private *dev_priv,
4338
4338
struct sseu_dev_info * sseu )
4339
4339
{
4340
4340
const struct intel_device_info * info = INTEL_INFO (dev_priv );
4341
- int s_max = 6 , ss_max = 4 ;
4342
4341
int s , ss ;
4343
- u32 s_reg [s_max ], eu_reg [2 * s_max ], eu_mask [2 ];
4342
+ u32 s_reg [info -> sseu .max_slices ];
4343
+ u32 eu_reg [2 * info -> sseu .max_subslices ], eu_mask [2 ];
4344
4344
4345
- for (s = 0 ; s < s_max ; s ++ ) {
4345
+ for (s = 0 ; s < info -> sseu . max_slices ; s ++ ) {
4346
4346
/*
4347
4347
* FIXME: Valid SS Mask respects the spec and read
4348
4348
* only valid bits for those registers, excluding reserverd
@@ -4364,15 +4364,15 @@ static void gen10_sseu_device_status(struct drm_i915_private *dev_priv,
4364
4364
GEN9_PGCTL_SSB_EU210_ACK |
4365
4365
GEN9_PGCTL_SSB_EU311_ACK ;
4366
4366
4367
- for (s = 0 ; s < s_max ; s ++ ) {
4367
+ for (s = 0 ; s < info -> sseu . max_slices ; s ++ ) {
4368
4368
if ((s_reg [s ] & GEN9_PGCTL_SLICE_ACK ) == 0 )
4369
4369
/* skip disabled slice */
4370
4370
continue ;
4371
4371
4372
4372
sseu -> slice_mask |= BIT (s );
4373
4373
sseu -> subslice_mask [s ] = info -> sseu .subslice_mask [s ];
4374
4374
4375
- for (ss = 0 ; ss < ss_max ; ss ++ ) {
4375
+ for (ss = 0 ; ss < info -> sseu . max_subslices ; ss ++ ) {
4376
4376
unsigned int eu_cnt ;
4377
4377
4378
4378
if (!(s_reg [s ] & (GEN9_PGCTL_SS_ACK (ss ))))
@@ -4392,17 +4392,12 @@ static void gen10_sseu_device_status(struct drm_i915_private *dev_priv,
4392
4392
static void gen9_sseu_device_status (struct drm_i915_private * dev_priv ,
4393
4393
struct sseu_dev_info * sseu )
4394
4394
{
4395
- int s_max = 3 , ss_max = 4 ;
4395
+ const struct intel_device_info * info = INTEL_INFO ( dev_priv ) ;
4396
4396
int s , ss ;
4397
- u32 s_reg [s_max ], eu_reg [2 * s_max ], eu_mask [2 ];
4398
-
4399
- /* BXT has a single slice and at most 3 subslices. */
4400
- if (IS_GEN9_LP (dev_priv )) {
4401
- s_max = 1 ;
4402
- ss_max = 3 ;
4403
- }
4397
+ u32 s_reg [info -> sseu .max_slices ];
4398
+ u32 eu_reg [2 * info -> sseu .max_subslices ], eu_mask [2 ];
4404
4399
4405
- for (s = 0 ; s < s_max ; s ++ ) {
4400
+ for (s = 0 ; s < info -> sseu . max_slices ; s ++ ) {
4406
4401
s_reg [s ] = I915_READ (GEN9_SLICE_PGCTL_ACK (s ));
4407
4402
eu_reg [2 * s ] = I915_READ (GEN9_SS01_EU_PGCTL_ACK (s ));
4408
4403
eu_reg [2 * s + 1 ] = I915_READ (GEN9_SS23_EU_PGCTL_ACK (s ));
@@ -4417,7 +4412,7 @@ static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
4417
4412
GEN9_PGCTL_SSB_EU210_ACK |
4418
4413
GEN9_PGCTL_SSB_EU311_ACK ;
4419
4414
4420
- for (s = 0 ; s < s_max ; s ++ ) {
4415
+ for (s = 0 ; s < info -> sseu . max_slices ; s ++ ) {
4421
4416
if ((s_reg [s ] & GEN9_PGCTL_SLICE_ACK ) == 0 )
4422
4417
/* skip disabled slice */
4423
4418
continue ;
@@ -4428,7 +4423,7 @@ static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
4428
4423
sseu -> subslice_mask [s ] =
4429
4424
INTEL_INFO (dev_priv )-> sseu .subslice_mask [s ];
4430
4425
4431
- for (ss = 0 ; ss < ss_max ; ss ++ ) {
4426
+ for (ss = 0 ; ss < info -> sseu . max_subslices ; ss ++ ) {
4432
4427
unsigned int eu_cnt ;
4433
4428
4434
4429
if (IS_GEN9_LP (dev_priv )) {
0 commit comments