mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
drm/i915: Add information needed to track engine preempt state
We shouldn't inspect ELSP context status (or any other bits depending on specific submission backend) when using GuC submission. Let's use another piece of HWSP for preempt context, to write its bit of information, meaning that preemption has finished, and hardware is now idle. Signed-off-by: Michał Winiarski <michal.winiarski@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jeff McGee <jeff.mcgee@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Oscar Mateo <oscar.mateo@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Jeff McGee <jeff.mcgee@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20171025200020.16636-9-michal.winiarski@intel.com
This commit is contained in:
parent
df77cd83d5
commit
3b8a8a3006
1 changed files with 7 additions and 0 deletions
|
@ -626,6 +626,8 @@ intel_write_status_page(struct intel_engine_cs *engine, int reg, u32 value)
|
||||||
*/
|
*/
|
||||||
#define I915_GEM_HWS_INDEX 0x30
|
#define I915_GEM_HWS_INDEX 0x30
|
||||||
#define I915_GEM_HWS_INDEX_ADDR (I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT)
|
#define I915_GEM_HWS_INDEX_ADDR (I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT)
|
||||||
|
#define I915_GEM_HWS_PREEMPT_INDEX 0x32
|
||||||
|
#define I915_GEM_HWS_PREEMPT_ADDR (I915_GEM_HWS_PREEMPT_INDEX << MI_STORE_DWORD_INDEX_SHIFT)
|
||||||
#define I915_GEM_HWS_SCRATCH_INDEX 0x40
|
#define I915_GEM_HWS_SCRATCH_INDEX 0x40
|
||||||
#define I915_GEM_HWS_SCRATCH_ADDR (I915_GEM_HWS_SCRATCH_INDEX << MI_STORE_DWORD_INDEX_SHIFT)
|
#define I915_GEM_HWS_SCRATCH_ADDR (I915_GEM_HWS_SCRATCH_INDEX << MI_STORE_DWORD_INDEX_SHIFT)
|
||||||
|
|
||||||
|
@ -778,6 +780,11 @@ static inline u32 intel_hws_seqno_address(struct intel_engine_cs *engine)
|
||||||
return engine->status_page.ggtt_offset + I915_GEM_HWS_INDEX_ADDR;
|
return engine->status_page.ggtt_offset + I915_GEM_HWS_INDEX_ADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline u32 intel_hws_preempt_done_address(struct intel_engine_cs *engine)
|
||||||
|
{
|
||||||
|
return engine->status_page.ggtt_offset + I915_GEM_HWS_PREEMPT_ADDR;
|
||||||
|
}
|
||||||
|
|
||||||
/* intel_breadcrumbs.c -- user interrupt bottom-half for waiters */
|
/* intel_breadcrumbs.c -- user interrupt bottom-half for waiters */
|
||||||
int intel_engine_init_breadcrumbs(struct intel_engine_cs *engine);
|
int intel_engine_init_breadcrumbs(struct intel_engine_cs *engine);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue