staging: sync: Dump sync state to console on timeout
If we hit a timeout, dump sync state to console Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: Erik Gilling <konkers@android.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Rob Clark <robclark@gmail.com> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: dri-devel@lists.freedesktop.org Cc: Android Kernel Team <kernel-team@android.com> Signed-off-by: Erik Gilling <konkers@android.com> [jstultz: Add commit message, whitespace fixups] Signed-off-by: John Stultz <john.stultz@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3b640f5dd0
commit
f56388f3bd
@ -31,6 +31,7 @@
|
||||
static void sync_fence_signal_pt(struct sync_pt *pt);
|
||||
static int _sync_pt_has_signaled(struct sync_pt *pt);
|
||||
static void sync_fence_free(struct kref *kref);
|
||||
static void sync_dump(void);
|
||||
|
||||
static LIST_HEAD(sync_timeline_list_head);
|
||||
static DEFINE_SPINLOCK(sync_timeline_list_lock);
|
||||
@ -574,8 +575,10 @@ int sync_fence_wait(struct sync_fence *fence, long timeout)
|
||||
if (fence->status < 0)
|
||||
return fence->status;
|
||||
|
||||
if (fence->status == 0)
|
||||
if (fence->status == 0) {
|
||||
sync_dump();
|
||||
return -ETIME;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -914,7 +917,34 @@ static __init int sync_debugfs_init(void)
|
||||
debugfs_create_file("sync", S_IRUGO, NULL, NULL, &sync_debugfs_fops);
|
||||
return 0;
|
||||
}
|
||||
|
||||
late_initcall(sync_debugfs_init);
|
||||
|
||||
#define DUMP_CHUNK 256
|
||||
static char sync_dump_buf[64 * 1024];
|
||||
void sync_dump(void)
|
||||
{
|
||||
struct seq_file s = {
|
||||
.buf = sync_dump_buf,
|
||||
.size = sizeof(sync_dump_buf) - 1,
|
||||
};
|
||||
int i;
|
||||
|
||||
sync_debugfs_show(&s, NULL);
|
||||
|
||||
for (i = 0; i < s.count; i += DUMP_CHUNK) {
|
||||
if ((s.count - i) > DUMP_CHUNK) {
|
||||
char c = s.buf[i + DUMP_CHUNK];
|
||||
s.buf[i + DUMP_CHUNK] = 0;
|
||||
pr_cont("%s", s.buf + i);
|
||||
s.buf[i + DUMP_CHUNK] = c;
|
||||
} else {
|
||||
s.buf[s.count] = 0;
|
||||
pr_cont("%s", s.buf + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void sync_dump(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user