mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 02:04:19 +08:00
drm/i915/gt: Use caller provided forcewake for intel_mocs_init_engine
During post-reset resume, we call intel_mocs_init_engine to reinitialise the MOCS registers. Suprisingly, especially when enhanced by lockdep, the acquisition of the forcewake lock around each register write takes a substantial portion of the reset time. We don't need to use the individual forcewake here as we can assume that the caller is holding a blanket forcewake for the reset&resume and the resume is serialised. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190703155225.9501-2-chris@chris-wilson.co.uk
This commit is contained in:
parent
b7dc9395c5
commit
56e0f78e47
@ -346,6 +346,9 @@ void intel_mocs_init_engine(struct intel_engine_cs *engine)
|
||||
unsigned int index;
|
||||
u32 unused_value;
|
||||
|
||||
/* Called under a blanket forcewake */
|
||||
assert_forcewakes_active(uncore, FORCEWAKE_ALL);
|
||||
|
||||
if (!get_mocs_settings(gt, &table))
|
||||
return;
|
||||
|
||||
@ -355,16 +358,16 @@ void intel_mocs_init_engine(struct intel_engine_cs *engine)
|
||||
for (index = 0; index < table.size; index++) {
|
||||
u32 value = get_entry_control(&table, index);
|
||||
|
||||
intel_uncore_write(uncore,
|
||||
mocs_register(engine->id, index),
|
||||
value);
|
||||
intel_uncore_write_fw(uncore,
|
||||
mocs_register(engine->id, index),
|
||||
value);
|
||||
}
|
||||
|
||||
/* All remaining entries are also unused */
|
||||
for (; index < table.n_entries; index++)
|
||||
intel_uncore_write(uncore,
|
||||
mocs_register(engine->id, index),
|
||||
unused_value);
|
||||
intel_uncore_write_fw(uncore,
|
||||
mocs_register(engine->id, index),
|
||||
unused_value);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user