Commit e2d0ff35 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin
Browse files

drm/i915: Count engine instances per uabi class

parent 2d12d3da
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -193,7 +193,6 @@ static void add_legacy_ring(struct legacy_ring *ring,
void intel_engines_driver_register(struct drm_i915_private *i915)
{
	struct legacy_ring ring = {};
	u8 uabi_instances[5] = {};
	struct list_head *it, *next;
	struct rb_node **p, *prev;
	LIST_HEAD(engines);
@@ -214,8 +213,10 @@ 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];

		GEM_BUG_ON(engine->uabi_class >= ARRAY_SIZE(uabi_instances));
		engine->uabi_instance = uabi_instances[engine->uabi_class]++;
		GEM_BUG_ON(engine->uabi_class >=
			   ARRAY_SIZE(i915->engine_uabi_class_count));
		engine->uabi_instance =
			i915->engine_uabi_class_count[engine->uabi_class]++;

		/* Replace the internal name with the final user facing name */
		memcpy(old, engine->name, sizeof(engine->name));
@@ -245,8 +246,8 @@ void intel_engines_driver_register(struct drm_i915_private *i915)
		int class, inst;
		int errors = 0;

		for (class = 0; class < ARRAY_SIZE(uabi_instances); class++) {
			for (inst = 0; inst < uabi_instances[class]; inst++) {
		for (class = 0; class < ARRAY_SIZE(i915->engine_uabi_class_count); class++) {
			for (inst = 0; inst < i915->engine_uabi_class_count[class]; inst++) {
				engine = intel_engine_lookup_user(i915,
								  class, inst);
				if (!engine) {
+1 −0
Original line number Diff line number Diff line
@@ -533,6 +533,7 @@ struct drm_i915_private {
	struct pci_dev *bridge_dev;

	struct rb_root uabi_engines;
	unsigned int engine_uabi_class_count[I915_LAST_UABI_ENGINE_CLASS + 1];

	struct resource mch_res;