Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
e5c65260
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e5c65260
编写于
11月 01, 2010
作者:
C
Chris Wilson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/i915/debugfs: Report ring in error state
Signed-off-by:
N
Chris Wilson
<
chris@chris-wilson.co.uk
>
上级
100519e2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
28 deletion
+36
-28
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_debugfs.c
+34
-28
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_drv.h
+1
-0
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_irq.c
+1
-0
未找到文件。
drivers/gpu/drm/i915/i915_debugfs.c
浏览文件 @
e5c65260
...
...
@@ -32,6 +32,7 @@
#include "drmP.h"
#include "drm.h"
#include "intel_drv.h"
#include "intel_ringbuffer.h"
#include "i915_drm.h"
#include "i915_drv.h"
...
...
@@ -48,12 +49,6 @@ enum {
DEFERRED_FREE_LIST
,
};
enum
{
RENDER_RING
,
BSD_RING
,
BLT_RING
,
};
static
const
char
*
yesno
(
int
v
)
{
return
v
?
"yes"
:
"no"
;
...
...
@@ -450,9 +445,9 @@ static int i915_hws_info(struct seq_file *m, void *data)
int
i
;
switch
((
uintptr_t
)
node
->
info_ent
->
data
)
{
case
R
ENDER_RING
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
BSD_RING
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
BLT_RING
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
case
R
ING_RENDER
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
RING_BSD
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
RING_BLT
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
default:
return
-
EINVAL
;
}
...
...
@@ -520,9 +515,9 @@ static int i915_ringbuffer_data(struct seq_file *m, void *data)
int
ret
;
switch
((
uintptr_t
)
node
->
info_ent
->
data
)
{
case
R
ENDER_RING
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
BSD_RING
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
BLT_RING
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
case
R
ING_RENDER
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
RING_BSD
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
RING_BLT
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
default:
return
-
EINVAL
;
}
...
...
@@ -554,9 +549,9 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
struct
intel_ring_buffer
*
ring
;
switch
((
uintptr_t
)
node
->
info_ent
->
data
)
{
case
R
ENDER_RING
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
BSD_RING
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
BLT_RING
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
case
R
ING_RENDER
:
ring
=
&
dev_priv
->
render_ring
;
break
;
case
RING_BSD
:
ring
=
&
dev_priv
->
bsd_ring
;
break
;
case
RING_BLT
:
ring
=
&
dev_priv
->
blt_ring
;
break
;
default:
return
-
EINVAL
;
}
...
...
@@ -574,6 +569,16 @@ static int i915_ringbuffer_info(struct seq_file *m, void *data)
return
0
;
}
static
const
char
*
ring_str
(
int
ring
)
{
switch
(
ring
)
{
case
RING_RENDER
:
return
"render"
;
case
RING_BSD
:
return
"bsd"
;
case
RING_BLT
:
return
"blt"
;
default:
return
""
;
}
}
static
const
char
*
pin_flag
(
int
pinned
)
{
if
(
pinned
>
0
)
...
...
@@ -630,14 +635,14 @@ static int i915_error_state(struct seq_file *m, void *unused)
seq_printf
(
m
,
"ERROR: 0x%08x
\n
"
,
error
->
error
);
seq_printf
(
m
,
"Blitter command stream:
\n
"
);
seq_printf
(
m
,
" ACTHD: 0x%08x
\n
"
,
error
->
bcs_acthd
);
seq_printf
(
m
,
" IPEHR: 0x%08x
\n
"
,
error
->
bcs_ipehr
);
seq_printf
(
m
,
" IPEIR: 0x%08x
\n
"
,
error
->
bcs_ipeir
);
seq_printf
(
m
,
" IPEHR: 0x%08x
\n
"
,
error
->
bcs_ipehr
);
seq_printf
(
m
,
" INSTDONE: 0x%08x
\n
"
,
error
->
bcs_instdone
);
seq_printf
(
m
,
" seqno: 0x%08x
\n
"
,
error
->
bcs_seqno
);
seq_printf
(
m
,
"Video (BSD) command stream:
\n
"
);
seq_printf
(
m
,
" ACTHD: 0x%08x
\n
"
,
error
->
vcs_acthd
);
seq_printf
(
m
,
" IPEHR: 0x%08x
\n
"
,
error
->
vcs_ipehr
);
seq_printf
(
m
,
" IPEIR: 0x%08x
\n
"
,
error
->
vcs_ipeir
);
seq_printf
(
m
,
" IPEHR: 0x%08x
\n
"
,
error
->
vcs_ipehr
);
seq_printf
(
m
,
" INSTDONE: 0x%08x
\n
"
,
error
->
vcs_instdone
);
seq_printf
(
m
,
" seqno: 0x%08x
\n
"
,
error
->
vcs_seqno
);
}
...
...
@@ -657,7 +662,7 @@ static int i915_error_state(struct seq_file *m, void *unused)
seq_printf
(
m
,
"Buffers [%d]:
\n
"
,
error
->
active_bo_count
);
for
(
i
=
0
;
i
<
error
->
active_bo_count
;
i
++
)
{
seq_printf
(
m
,
" %08x %8zd %08x %08x %08x%s%s%s%s"
,
seq_printf
(
m
,
" %08x %8zd %08x %08x %08x%s%s%s%s
%s
"
,
error
->
active_bo
[
i
].
gtt_offset
,
error
->
active_bo
[
i
].
size
,
error
->
active_bo
[
i
].
read_domains
,
...
...
@@ -666,7 +671,8 @@ static int i915_error_state(struct seq_file *m, void *unused)
pin_flag
(
error
->
active_bo
[
i
].
pinned
),
tiling_flag
(
error
->
active_bo
[
i
].
tiling
),
dirty_flag
(
error
->
active_bo
[
i
].
dirty
),
purgeable_flag
(
error
->
active_bo
[
i
].
purgeable
));
purgeable_flag
(
error
->
active_bo
[
i
].
purgeable
),
ring_str
(
error
->
active_bo
[
i
].
ring
));
if
(
error
->
active_bo
[
i
].
name
)
seq_printf
(
m
,
" (name: %d)"
,
error
->
active_bo
[
i
].
name
);
...
...
@@ -1101,15 +1107,15 @@ static struct drm_info_list i915_debugfs_list[] = {
{
"i915_gem_seqno"
,
i915_gem_seqno_info
,
0
},
{
"i915_gem_fence_regs"
,
i915_gem_fence_regs_info
,
0
},
{
"i915_gem_interrupt"
,
i915_interrupt_info
,
0
},
{
"i915_gem_hws"
,
i915_hws_info
,
0
,
(
void
*
)
R
ENDER_RING
},
{
"i915_gem_hws_blt"
,
i915_hws_info
,
0
,
(
void
*
)
BLT_RING
},
{
"i915_gem_hws_bsd"
,
i915_hws_info
,
0
,
(
void
*
)
BSD_RING
},
{
"i915_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
R
ENDER_RING
},
{
"i915_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
R
ENDER_RING
},
{
"i915_bsd_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
BSD_RING
},
{
"i915_bsd_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
BSD_RING
},
{
"i915_blt_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
BLT_RING
},
{
"i915_blt_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
BLT_RING
},
{
"i915_gem_hws"
,
i915_hws_info
,
0
,
(
void
*
)
R
ING_RENDER
},
{
"i915_gem_hws_blt"
,
i915_hws_info
,
0
,
(
void
*
)
RING_BLT
},
{
"i915_gem_hws_bsd"
,
i915_hws_info
,
0
,
(
void
*
)
RING_BSD
},
{
"i915_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
R
ING_RENDER
},
{
"i915_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
R
ING_RENDER
},
{
"i915_bsd_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
RING_BSD
},
{
"i915_bsd_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
RING_BSD
},
{
"i915_blt_ringbuffer_data"
,
i915_ringbuffer_data
,
0
,
(
void
*
)
RING_BLT
},
{
"i915_blt_ringbuffer_info"
,
i915_ringbuffer_info
,
0
,
(
void
*
)
RING_BLT
},
{
"i915_batchbuffers"
,
i915_batchbuffer_info
,
0
},
{
"i915_error_state"
,
i915_error_state
,
0
},
{
"i915_rstdby_delays"
,
i915_rstdby_delays
,
0
},
...
...
drivers/gpu/drm/i915/i915_drv.h
浏览文件 @
e5c65260
...
...
@@ -182,6 +182,7 @@ struct drm_i915_error_state {
u32
tiling
:
2
;
u32
dirty
:
1
;
u32
purgeable
:
1
;
u32
ring
:
4
;
}
*
active_bo
;
u32
active_bo_count
;
struct
intel_overlay_error_state
*
overlay
;
...
...
drivers/gpu/drm/i915/i915_irq.c
浏览文件 @
e5c65260
...
...
@@ -728,6 +728,7 @@ static void i915_capture_error_state(struct drm_device *dev)
error
->
active_bo
[
i
].
tiling
=
obj_priv
->
tiling_mode
;
error
->
active_bo
[
i
].
dirty
=
obj_priv
->
dirty
;
error
->
active_bo
[
i
].
purgeable
=
obj_priv
->
madv
!=
I915_MADV_WILLNEED
;
error
->
active_bo
[
i
].
ring
=
obj_priv
->
ring
->
id
;
if
(
++
i
==
count
)
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录