}
 }
 
+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)
        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,
                           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);
 
                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;