Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a659383 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin
Browse files

drm/i915: Use binary search when looking for shadowed registers



Simply replace the linear search with the kernel's binary
search implementation. There is only six registers currently
in that table so this may not be that interesting. It adds a
function call so hopefully remains performance neutral for now.

v2: No need for manual conversion to bool for return.
    (Joonas Lahtinen)

Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 47188574
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -691,14 +691,30 @@ static void intel_shadow_table_check(void)
	}
}

static int mmio_reg_cmp(const void *key, const void *elt)
{
	u32 offset = (u32)(unsigned long)key;
	i915_reg_t *reg = (i915_reg_t *)elt;

	if (offset < i915_mmio_reg_offset(*reg))
		return -1;
	else if (offset > i915_mmio_reg_offset(*reg))
		return 1;
	else
		return 0;
}

static bool is_gen8_shadowed(u32 offset)
{
	int i;
	for (i = 0; i < ARRAY_SIZE(gen8_shadowed_regs); i++)
		if (offset == gen8_shadowed_regs[i].reg)
			return true;
	i915_reg_t *reg;

	return false;
	reg = bsearch((void *)(unsigned long)offset,
		      (const void *)gen8_shadowed_regs,
		      ARRAY_SIZE(gen8_shadowed_regs),
		      sizeof(i915_reg_t),
		      mmio_reg_cmp);

	return reg;
}

#define __gen8_reg_write_fw_domains(offset) \