[Intel-gfx] [PATCH 5/7] drm/i915: Move per ring error state to ring_error
Chris Wilson
chris at chris-wilson.co.uk
Tue Jan 28 12:42:37 CET 2014
On Mon, Jan 27, 2014 at 11:07:04PM -0800, Ben Widawsky wrote:
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 62 +++++++--------
> drivers/gpu/drm/i915/i915_gpu_error.c | 137 +++++++++++++++++-----------------
> 2 files changed, 99 insertions(+), 100 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index bb53de5..defdb00 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -313,49 +313,49 @@ struct drm_i915_error_state {
> struct intel_overlay_error_state *overlay;
> struct intel_display_error_state *display;
>
> - /* Per ring register state
> - * TODO: Move these to per ring */
> - u32 tail[I915_NUM_RINGS];
> - u32 head[I915_NUM_RINGS];
> - u32 ctl[I915_NUM_RINGS];
> - u32 hws[I915_NUM_RINGS];
> - u32 ipeir[I915_NUM_RINGS];
> - u32 ipehr[I915_NUM_RINGS];
> - u32 instdone[I915_NUM_RINGS];
> - u32 acthd[I915_NUM_RINGS];
> - u32 bbstate[I915_NUM_RINGS];
> - u32 instpm[I915_NUM_RINGS];
> - u32 instps[I915_NUM_RINGS];
> - u32 seqno[I915_NUM_RINGS];
> - u64 bbaddr[I915_NUM_RINGS];
> - u32 fault_reg[I915_NUM_RINGS];
> - u32 faddr[I915_NUM_RINGS];
> - u32 rc_psmi[I915_NUM_RINGS]; /* sleep state */
> - u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1];
> -
> - /* Software tracked state */
> - bool waiting[I915_NUM_RINGS];
> - int hangcheck_score[I915_NUM_RINGS];
> - enum intel_ring_hangcheck_action hangcheck_action[I915_NUM_RINGS];
> -
> - /* our own tracking of ring head and tail */
> - u32 cpu_ring_head[I915_NUM_RINGS];
> - u32 cpu_ring_tail[I915_NUM_RINGS];
> - u32 semaphore_seqno[I915_NUM_RINGS][I915_NUM_RINGS - 1];
> -
> struct drm_i915_error_ring {
> bool valid;
> + /* Software tracked state */
> + bool waiting;
Looks like we have some bools to coallesce! :)
> + int hangcheck_score;
> + enum intel_ring_hangcheck_action hangcheck_action;
> +
> + /* Register state */
> + u32 tail;
> + u32 head;
> + u32 ctl;
> + u32 ipeir;
> + u32 ipehr;
> + u32 instdone;
> + u32 acthd;
> + u32 bbstate;
> + u32 instpm;
> + u32 instps;
> + u32 seqno;
> + u64 bbaddr;
> + u32 fault_reg;
> + u32 faddr;
> + u32 rc_psmi; /* sleep state */
> + u32 semaphore_mboxes[I915_NUM_RINGS - 1];
> +
> + /* our own tracking of ring head and tail */
> + u32 cpu_ring_head;
> + u32 cpu_ring_tail;
> +
> + u32 semaphore_seqno[I915_NUM_RINGS - 1];
> +
> struct drm_i915_error_object {
> int page_count;
> u32 gtt_offset;
> u32 *pages[0];
> } *ringbuffer, *batchbuffer, *ctx, *hws;
> +
> + int num_requests;
This feels a little odd - we split up a set of pointers with a int+hole.
> struct drm_i915_error_request {
> long jiffies;
> u32 seqno;
> u32 tail;
> } *requests;
> - int num_requests;
> } ring[I915_NUM_RINGS];
>
> struct drm_i915_error_buffer {
The code cleanup is well worth it,
Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list