Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915: Count engine instances per uabi class

This will be useful to have at hand in a following patch.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220401142205.3123159-8-tvrtko.ursulin@linux.intel.com

+7 -5
+6 -5
drivers/gpu/drm/i915/gt/intel_engine_user.c
··· 193 193 void intel_engines_driver_register(struct drm_i915_private *i915) 194 194 { 195 195 struct legacy_ring ring = {}; 196 - u8 uabi_instances[5] = {}; 197 196 struct list_head *it, *next; 198 197 struct rb_node **p, *prev; 199 198 LIST_HEAD(engines); ··· 213 214 GEM_BUG_ON(engine->class >= ARRAY_SIZE(uabi_classes)); 214 215 engine->uabi_class = uabi_classes[engine->class]; 215 216 216 - GEM_BUG_ON(engine->uabi_class >= ARRAY_SIZE(uabi_instances)); 217 - engine->uabi_instance = uabi_instances[engine->uabi_class]++; 217 + GEM_BUG_ON(engine->uabi_class >= 218 + ARRAY_SIZE(i915->engine_uabi_class_count)); 219 + engine->uabi_instance = 220 + i915->engine_uabi_class_count[engine->uabi_class]++; 218 221 219 222 /* Replace the internal name with the final user facing name */ 220 223 memcpy(old, engine->name, sizeof(engine->name)); ··· 246 245 int class, inst; 247 246 int errors = 0; 248 247 249 - for (class = 0; class < ARRAY_SIZE(uabi_instances); class++) { 250 - for (inst = 0; inst < uabi_instances[class]; inst++) { 248 + for (class = 0; class < ARRAY_SIZE(i915->engine_uabi_class_count); class++) { 249 + for (inst = 0; inst < i915->engine_uabi_class_count[class]; inst++) { 251 250 engine = intel_engine_lookup_user(i915, 252 251 class, inst); 253 252 if (!engine) {
+1
drivers/gpu/drm/i915/i915_drv.h
··· 533 533 struct pci_dev *bridge_dev; 534 534 535 535 struct rb_root uabi_engines; 536 + unsigned int engine_uabi_class_count[I915_LAST_UABI_ENGINE_CLASS + 1]; 536 537 537 538 struct resource mch_res; 538 539