|
@@ -764,6 +764,22 @@ static void gen9_sseu_info_init(struct drm_device *dev)
|
|
|
(info->slice_total > 1));
|
|
|
info->has_subslice_pg = (IS_BROXTON(dev) && (info->subslice_total > 1));
|
|
|
info->has_eu_pg = (info->eu_per_subslice > 2);
|
|
|
+
|
|
|
+ if (IS_BROXTON(dev)) {
|
|
|
+#define IS_SS_DISABLED(_ss_disable, ss) (_ss_disable & (0x1 << ss))
|
|
|
+
|
|
|
+ info->min_eu_in_pool = 0;
|
|
|
+ if (info->has_pooled_eu) {
|
|
|
+ if (IS_SS_DISABLED(ss_disable, 0) ||
|
|
|
+ IS_SS_DISABLED(ss_disable, 2))
|
|
|
+ info->min_eu_in_pool = 3;
|
|
|
+ else if (IS_SS_DISABLED(ss_disable, 1))
|
|
|
+ info->min_eu_in_pool = 6;
|
|
|
+ else
|
|
|
+ info->min_eu_in_pool = 9;
|
|
|
+ }
|
|
|
+#undef IS_SS_DISABLED
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void broadwell_sseu_info_init(struct drm_device *dev)
|
|
@@ -962,6 +978,9 @@ static void intel_device_info_runtime_init(struct drm_device *dev)
|
|
|
DRM_DEBUG_DRIVER("subslice per slice: %u\n", info->subslice_per_slice);
|
|
|
DRM_DEBUG_DRIVER("EU total: %u\n", info->eu_total);
|
|
|
DRM_DEBUG_DRIVER("EU per subslice: %u\n", info->eu_per_subslice);
|
|
|
+ DRM_DEBUG_DRIVER("Has Pooled EU: %s\n", HAS_POOLED_EU(dev) ? "y" : "n");
|
|
|
+ if (HAS_POOLED_EU(dev))
|
|
|
+ DRM_DEBUG_DRIVER("Min EU in pool: %u\n", info->min_eu_in_pool);
|
|
|
DRM_DEBUG_DRIVER("has slice power gating: %s\n",
|
|
|
info->has_slice_pg ? "y" : "n");
|
|
|
DRM_DEBUG_DRIVER("has subslice power gating: %s\n",
|