Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
d82bf490
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d82bf490
编写于
8月 20, 2008
作者:
P
Paul Mackerras
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'merge' of
git://git.kernel.org/pub/scm/linux/kernel/git/jk/spufs
into merge
上级
a7f5aaf3
cb9808d3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
9 deletion
+17
-9
arch/powerpc/platforms/cell/spufs/run.c
arch/powerpc/platforms/cell/spufs/run.c
+8
-7
arch/powerpc/platforms/cell/spufs/sched.c
arch/powerpc/platforms/cell/spufs/sched.c
+9
-2
未找到文件。
arch/powerpc/platforms/cell/spufs/run.c
浏览文件 @
d82bf490
...
...
@@ -206,11 +206,6 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
(
SPU_RUNCNTL_RUNNABLE
|
SPU_RUNCNTL_ISOLATE
);
if
(
runcntl
==
0
)
runcntl
=
SPU_RUNCNTL_RUNNABLE
;
}
if
(
ctx
->
flags
&
SPU_CREATE_NOSCHED
)
{
spuctx_switch_state
(
ctx
,
SPU_UTIL_USER
);
ctx
->
ops
->
runcntl_write
(
ctx
,
runcntl
);
}
else
{
unsigned
long
privcntl
;
...
...
@@ -219,9 +214,15 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
else
privcntl
=
SPU_PRIVCNTL_MODE_NORMAL
;
ctx
->
ops
->
npc_write
(
ctx
,
*
npc
);
ctx
->
ops
->
privcntl_write
(
ctx
,
privcntl
);
ctx
->
ops
->
runcntl_write
(
ctx
,
runcntl
);
ctx
->
ops
->
npc_write
(
ctx
,
*
npc
);
}
ctx
->
ops
->
runcntl_write
(
ctx
,
runcntl
);
if
(
ctx
->
flags
&
SPU_CREATE_NOSCHED
)
{
spuctx_switch_state
(
ctx
,
SPU_UTIL_USER
);
}
else
{
if
(
ctx
->
state
==
SPU_STATE_SAVED
)
{
ret
=
spu_activate
(
ctx
,
0
);
...
...
arch/powerpc/platforms/cell/spufs/sched.c
浏览文件 @
d82bf490
...
...
@@ -641,8 +641,10 @@ static struct spu *find_victim(struct spu_context *ctx)
if
(
tmp
&&
tmp
->
prio
>
ctx
->
prio
&&
!
(
tmp
->
flags
&
SPU_CREATE_NOSCHED
)
&&
(
!
victim
||
tmp
->
prio
>
victim
->
prio
))
(
!
victim
||
tmp
->
prio
>
victim
->
prio
))
{
victim
=
spu
->
ctx
;
get_spu_context
(
victim
);
}
}
mutex_unlock
(
&
cbe_spu_info
[
node
].
list_mutex
);
...
...
@@ -658,6 +660,7 @@ static struct spu *find_victim(struct spu_context *ctx)
* look at another context or give up after X retries.
*/
if
(
!
mutex_trylock
(
&
victim
->
state_mutex
))
{
put_spu_context
(
victim
);
victim
=
NULL
;
goto
restart
;
}
...
...
@@ -670,6 +673,7 @@ static struct spu *find_victim(struct spu_context *ctx)
* restart the search.
*/
mutex_unlock
(
&
victim
->
state_mutex
);
put_spu_context
(
victim
);
victim
=
NULL
;
goto
restart
;
}
...
...
@@ -687,6 +691,7 @@ static struct spu *find_victim(struct spu_context *ctx)
spu_add_to_rq
(
victim
);
mutex_unlock
(
&
victim
->
state_mutex
);
put_spu_context
(
victim
);
return
spu
;
}
...
...
@@ -985,9 +990,11 @@ static int spusched_thread(void *unused)
struct
spu_context
*
ctx
=
spu
->
ctx
;
if
(
ctx
)
{
get_spu_context
(
ctx
);
mutex_unlock
(
mtx
);
spusched_tick
(
ctx
);
mutex_lock
(
mtx
);
put_spu_context
(
ctx
);
}
}
mutex_unlock
(
mtx
);
...
...
@@ -1030,7 +1037,7 @@ void spuctx_switch_state(struct spu_context *ctx,
node
=
spu
->
node
;
if
(
old_state
==
SPU_UTIL_USER
)
atomic_dec
(
&
cbe_spu_info
[
node
].
busy_spus
);
if
(
new_state
==
SPU_UTIL_USER
)
;
if
(
new_state
==
SPU_UTIL_USER
)
atomic_inc
(
&
cbe_spu_info
[
node
].
busy_spus
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录