Message ID | 1435764453-11954-12-git-send-email-michel.thierry@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 7/1/2015 8:57 PM, Michel Thierry wrote: > Signed-off-by: Ben Widawsky <ben@bwidawsk.net> > Signed-off-by: Michel Thierry <michel.thierry@intel.com> > --- > drivers/gpu/drm/i915/i915_drv.h | 4 ++-- > drivers/gpu/drm/i915/i915_gpu_error.c | 17 +++++++++-------- > 2 files changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 7bccfd5..d245c82 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -546,7 +546,7 @@ struct drm_i915_error_state { > > struct drm_i915_error_object { > int page_count; > - u32 gtt_offset; > + u64 gtt_offset; > u32 *pages[0]; > } *ringbuffer, *batchbuffer, *wa_batchbuffer, *ctx, *hws_page; > > @@ -572,7 +572,7 @@ struct drm_i915_error_state { > u32 size; > u32 name; > u32 rseqno[I915_NUM_RINGS], wseqno; > - u32 gtt_offset; > + u64 gtt_offset; > u32 read_domains; > u32 write_domain; > s32 fence_reg:I915_MAX_NUM_FENCE_BITS; > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c > index 6f42569..cdbd4c2 100644 > --- a/drivers/gpu/drm/i915/i915_gpu_error.c > +++ b/drivers/gpu/drm/i915/i915_gpu_error.c > @@ -197,7 +197,7 @@ static void print_error_buffers(struct drm_i915_error_state_buf *m, > err_printf(m, " %s [%d]:\n", name, count); > > while (count--) { > - err_printf(m, " %08x %8u %02x %02x [ ", > + err_printf(m, " %016llx %8u %02x %02x [ ", > err->gtt_offset, > err->size, > err->read_domains, > @@ -426,7 +426,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, > err_printf(m, " (submitted by %s [%d])", > error->ring[i].comm, > error->ring[i].pid); > - err_printf(m, " --- gtt_offset = 0x%08x\n", > + err_printf(m, " --- gtt_offset = 0x%016llx\n", > obj->gtt_offset); > print_error_obj(m, obj); > } > @@ -434,7 +434,8 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, > obj = error->ring[i].wa_batchbuffer; > if (obj) { > err_printf(m, "%s (w/a) --- gtt_offset = 0x%08x\n", > - dev_priv->ring[i].name, obj->gtt_offset); > + dev_priv->ring[i].name, > + lower_32_bits(obj->gtt_offset)); > print_error_obj(m, obj); > } > > @@ -453,14 +454,14 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, > if ((obj = error->ring[i].ringbuffer)) { > err_printf(m, "%s --- ringbuffer = 0x%08x\n", > dev_priv->ring[i].name, > - obj->gtt_offset); > + lower_32_bits(obj->gtt_offset)); > print_error_obj(m, obj); > } > > if ((obj = error->ring[i].hws_page)) { > err_printf(m, "%s --- HW Status = 0x%08x\n", > dev_priv->ring[i].name, > - obj->gtt_offset); > + lower_32_bits(obj->gtt_offset)); > offset = 0; > for (elt = 0; elt < PAGE_SIZE/16; elt += 4) { > err_printf(m, "[%04x] %08x %08x %08x %08x\n", > @@ -476,13 +477,13 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, > if ((obj = error->ring[i].ctx)) { > err_printf(m, "%s --- HW Context = 0x%08x\n", > dev_priv->ring[i].name, > - obj->gtt_offset); > + lower_32_bits(obj->gtt_offset)); > print_error_obj(m, obj); > } > } > > if ((obj = error->semaphore_obj)) { > - err_printf(m, "Semaphore page = 0x%08x\n", obj->gtt_offset); > + err_printf(m, "Semaphore page = 0x%016llx\n", obj->gtt_offset); Can the 'lower_32_bits' be used for the semaphore object also. Its mapped into GGTT during ring init time, so may not have an offset > 4GB. > for (elt = 0; elt < PAGE_SIZE/16; elt += 4) { > err_printf(m, "[%04x] %08x %08x %08x %08x\n", > elt * 4, > @@ -590,7 +591,7 @@ i915_error_object_create(struct drm_i915_private *dev_priv, > int num_pages; > bool use_ggtt; > int i = 0; > - u32 reloc_offset; > + u64 reloc_offset; > > if (src == NULL || src->pages == NULL) > return NULL; >
On 7/7/2015 1:53 PM, Goel, Akash wrote: > On 7/1/2015 8:57 PM, Michel Thierry wrote: >> @@ -476,13 +477,13 @@ int i915_error_state_to_str(struct >> drm_i915_error_state_buf *m, >> if ((obj = error->ring[i].ctx)) { >> err_printf(m, "%s --- HW Context = 0x%08x\n", >> dev_priv->ring[i].name, >> - obj->gtt_offset); >> + lower_32_bits(obj->gtt_offset)); >> print_error_obj(m, obj); >> } >> } >> >> if ((obj = error->semaphore_obj)) { >> - err_printf(m, "Semaphore page = 0x%08x\n", obj->gtt_offset); >> + err_printf(m, "Semaphore page = 0x%016llx\n", obj->gtt_offset); > > Can the 'lower_32_bits' be used for the semaphore object also. Its > mapped into GGTT during ring init time, so may not have an offset > 4GB. > Makes sense, will change to: if ((obj = error->semaphore_obj)) { err_printf(m, "Semaphore page = 0x%08x\n", lower_32_bits(obj->gtt_offset)); >> for (elt = 0; elt < PAGE_SIZE/16; elt += 4) { >> err_printf(m, "[%04x] %08x %08x %08x %08x\n", >> elt * 4, >> @@ -590,7 +591,7 @@ i915_error_object_create(struct drm_i915_private >> *dev_priv, >> int num_pages; >> bool use_ggtt; >> int i = 0; >> - u32 reloc_offset; >> + u64 reloc_offset; >> >> if (src == NULL || src->pages == NULL) >> return NULL; >>
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 7bccfd5..d245c82 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -546,7 +546,7 @@ struct drm_i915_error_state { struct drm_i915_error_object { int page_count; - u32 gtt_offset; + u64 gtt_offset; u32 *pages[0]; } *ringbuffer, *batchbuffer, *wa_batchbuffer, *ctx, *hws_page; @@ -572,7 +572,7 @@ struct drm_i915_error_state { u32 size; u32 name; u32 rseqno[I915_NUM_RINGS], wseqno; - u32 gtt_offset; + u64 gtt_offset; u32 read_domains; u32 write_domain; s32 fence_reg:I915_MAX_NUM_FENCE_BITS; diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index 6f42569..cdbd4c2 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c @@ -197,7 +197,7 @@ static void print_error_buffers(struct drm_i915_error_state_buf *m, err_printf(m, " %s [%d]:\n", name, count); while (count--) { - err_printf(m, " %08x %8u %02x %02x [ ", + err_printf(m, " %016llx %8u %02x %02x [ ", err->gtt_offset, err->size, err->read_domains, @@ -426,7 +426,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, err_printf(m, " (submitted by %s [%d])", error->ring[i].comm, error->ring[i].pid); - err_printf(m, " --- gtt_offset = 0x%08x\n", + err_printf(m, " --- gtt_offset = 0x%016llx\n", obj->gtt_offset); print_error_obj(m, obj); } @@ -434,7 +434,8 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, obj = error->ring[i].wa_batchbuffer; if (obj) { err_printf(m, "%s (w/a) --- gtt_offset = 0x%08x\n", - dev_priv->ring[i].name, obj->gtt_offset); + dev_priv->ring[i].name, + lower_32_bits(obj->gtt_offset)); print_error_obj(m, obj); } @@ -453,14 +454,14 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, if ((obj = error->ring[i].ringbuffer)) { err_printf(m, "%s --- ringbuffer = 0x%08x\n", dev_priv->ring[i].name, - obj->gtt_offset); + lower_32_bits(obj->gtt_offset)); print_error_obj(m, obj); } if ((obj = error->ring[i].hws_page)) { err_printf(m, "%s --- HW Status = 0x%08x\n", dev_priv->ring[i].name, - obj->gtt_offset); + lower_32_bits(obj->gtt_offset)); offset = 0; for (elt = 0; elt < PAGE_SIZE/16; elt += 4) { err_printf(m, "[%04x] %08x %08x %08x %08x\n", @@ -476,13 +477,13 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, if ((obj = error->ring[i].ctx)) { err_printf(m, "%s --- HW Context = 0x%08x\n", dev_priv->ring[i].name, - obj->gtt_offset); + lower_32_bits(obj->gtt_offset)); print_error_obj(m, obj); } } if ((obj = error->semaphore_obj)) { - err_printf(m, "Semaphore page = 0x%08x\n", obj->gtt_offset); + err_printf(m, "Semaphore page = 0x%016llx\n", obj->gtt_offset); for (elt = 0; elt < PAGE_SIZE/16; elt += 4) { err_printf(m, "[%04x] %08x %08x %08x %08x\n", elt * 4, @@ -590,7 +591,7 @@ i915_error_object_create(struct drm_i915_private *dev_priv, int num_pages; bool use_ggtt; int i = 0; - u32 reloc_offset; + u64 reloc_offset; if (src == NULL || src->pages == NULL) return NULL;