1
0
Fork 0

drm/i915: Record AGP memory type upon error

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
hifive-unleashed-5.1
Chris Wilson 2011-01-09 21:07:49 +00:00
parent 0a58705b2f
commit a779e5abda
3 changed files with 16 additions and 4 deletions

View File

@ -624,6 +624,15 @@ static const char *ring_str(int ring)
}
}
static const char *agp_type_str(int type)
{
switch (type) {
case 0: return " uncached";
case 1: return " snooped";
default: return "";
}
}
static const char *pin_flag(int pinned)
{
if (pinned > 0)
@ -662,7 +671,7 @@ static void print_error_buffers(struct seq_file *m,
seq_printf(m, "%s [%d]:\n", name, count);
while (count--) {
seq_printf(m, " %08x %8zd %04x %04x %08x%s%s%s%s%s",
seq_printf(m, " %08x %8zd %04x %04x %08x%s%s%s%s%s%s",
err->gtt_offset,
err->size,
err->read_domains,
@ -672,7 +681,8 @@ static void print_error_buffers(struct seq_file *m,
tiling_flag(err->tiling),
dirty_flag(err->dirty),
purgeable_flag(err->purgeable),
ring_str(err->ring));
ring_str(err->ring),
agp_type_str(err->agp_type));
if (err->name)
seq_printf(m, " (name: %d)", err->name);

View File

@ -174,18 +174,19 @@ struct drm_i915_error_state {
u32 *pages[0];
} *ringbuffer, *batchbuffer[I915_NUM_RINGS];
struct drm_i915_error_buffer {
size_t size;
u32 size;
u32 name;
u32 seqno;
u32 gtt_offset;
u32 read_domains;
u32 write_domain;
u32 fence_reg;
s32 fence_reg:5;
s32 pinned:2;
u32 tiling:2;
u32 dirty:1;
u32 purgeable:1;
u32 ring:4;
u32 agp_type:1;
} *active_bo, *pinned_bo;
u32 active_bo_count, pinned_bo_count;
struct intel_overlay_error_state *overlay;

View File

@ -665,6 +665,7 @@ static u32 capture_bo_list(struct drm_i915_error_buffer *err,
err->dirty = obj->dirty;
err->purgeable = obj->madv != I915_MADV_WILLNEED;
err->ring = obj->ring ? obj->ring->id : 0;
err->agp_type = obj->agp_type == AGP_USER_CACHED_MEMORY;
if (++i == count)
break;