Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
fec43a72
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
fec43a72
编写于
5月 13, 2013
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nvc0/gr: port mp trap handling from calim's kepler code
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
16b133df
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
6 deletion
+38
-6
drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
+38
-6
未找到文件。
drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
浏览文件 @
fec43a72
...
...
@@ -237,6 +237,43 @@ nvc0_graph_ctxctl_isr(struct nvc0_graph_priv *priv)
nv_wr32
(
priv
,
0x409c20
,
ustat
);
}
static
const
struct
nouveau_enum
nvc0_mp_warp_error
[]
=
{
{
0x00
,
"NO_ERROR"
},
{
0x01
,
"STACK_MISMATCH"
},
{
0x05
,
"MISALIGNED_PC"
},
{
0x08
,
"MISALIGNED_GPR"
},
{
0x09
,
"INVALID_OPCODE"
},
{
0x0d
,
"GPR_OUT_OF_BOUNDS"
},
{
0x0e
,
"MEM_OUT_OF_BOUNDS"
},
{
0x0f
,
"UNALIGNED_MEM_ACCESS"
},
{
0x11
,
"INVALID_PARAM"
},
{}
};
static
const
struct
nouveau_bitfield
nvc0_mp_global_error
[]
=
{
{
0x00000004
,
"MULTIPLE_WARP_ERRORS"
},
{
0x00000008
,
"OUT_OF_STACK_SPACE"
},
{}
};
static
void
nvc0_graph_trap_mp
(
struct
nvc0_graph_priv
*
priv
,
int
gpc
,
int
tpc
)
{
u32
werr
=
nv_rd32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x648
));
u32
gerr
=
nv_rd32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x650
));
nv_error
(
priv
,
"GPC%i/TPC%i/MP trap:"
,
gpc
,
tpc
);
nouveau_bitfield_print
(
nvc0_mp_global_error
,
gerr
);
if
(
werr
)
{
pr_cont
(
" "
);
nouveau_enum_print
(
nvc0_mp_warp_error
,
werr
&
0xffff
);
}
pr_cont
(
"
\n
"
);
nv_wr32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x648
),
0x00000000
);
nv_wr32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x650
),
gerr
);
}
static
void
nvc0_graph_trap_tpc
(
struct
nvc0_graph_priv
*
priv
,
int
gpc
,
int
tpc
)
{
...
...
@@ -251,12 +288,7 @@ nvc0_graph_trap_tpc(struct nvc0_graph_priv *priv, int gpc, int tpc)
}
if
(
stat
&
0x00000002
)
{
u32
trap0
=
nv_rd32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x0644
));
u32
trap1
=
nv_rd32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x064c
));
nv_error
(
priv
,
"GPC%d/TPC%d/MP: 0x%08x 0x%08x
\n
"
,
gpc
,
tpc
,
trap0
,
trap1
);
nv_wr32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x0644
),
0x001ffffe
);
nv_wr32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x064c
),
0x0000000f
);
nvc0_graph_trap_mp
(
priv
,
gpc
,
tpc
);
nv_wr32
(
priv
,
TPC_UNIT
(
gpc
,
tpc
,
0x0508
),
0x00000002
);
stat
&=
~
0x00000002
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录