Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d371c0c1
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看板
提交
d371c0c1
编写于
2月 21, 2006
作者:
D
David S. Miller
提交者:
David S. Miller
3月 20, 2006
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SPARC64]: Pass multiple CPUs at once to hypervisor cross-call API.
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
c79f7677
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
0 addition
and
54 deletion
+0
-54
arch/sparc64/kernel/smp.c
arch/sparc64/kernel/smp.c
+0
-54
未找到文件。
arch/sparc64/kernel/smp.c
浏览文件 @
d371c0c1
...
...
@@ -557,7 +557,6 @@ static void cheetah_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t mas
}
}
#if 0
/* Multi-cpu list version. */
static
int
init_cpu_list
(
u16
*
list
,
cpumask_t
mask
)
{
...
...
@@ -631,59 +630,6 @@ static void hypervisor_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t
put_cpu
();
}
#else
/* Single-cpu list version. */
static
void
hypervisor_xcall_deliver
(
u64
data0
,
u64
data1
,
u64
data2
,
cpumask_t
mask
)
{
int
this_cpu
=
get_cpu
();
struct
trap_per_cpu
*
tb
=
&
trap_block
[
this_cpu
];
u64
*
mondo
=
__va
(
tb
->
cpu_mondo_block_pa
);
u16
*
cpu_list
=
__va
(
tb
->
cpu_list_pa
);
int
i
;
mondo
[
0
]
=
data0
;
mondo
[
1
]
=
data1
;
mondo
[
2
]
=
data2
;
wmb
();
for_each_cpu_mask
(
i
,
mask
)
{
int
retries
=
0
;
do
{
register
unsigned
long
func
__asm__
(
"%o5"
);
register
unsigned
long
arg0
__asm__
(
"%o0"
);
register
unsigned
long
arg1
__asm__
(
"%o1"
);
register
unsigned
long
arg2
__asm__
(
"%o2"
);
cpu_list
[
0
]
=
i
;
func
=
HV_FAST_CPU_MONDO_SEND
;
arg0
=
1
;
arg1
=
tb
->
cpu_list_pa
;
arg2
=
tb
->
cpu_mondo_block_pa
;
__asm__
__volatile__
(
"ta %8"
:
"=&r"
(
func
),
"=&r"
(
arg0
),
"=&r"
(
arg1
),
"=&r"
(
arg2
)
:
"0"
(
func
),
"1"
(
arg0
),
"2"
(
arg1
),
"3"
(
arg2
),
"i"
(
HV_FAST_TRAP
)
:
"memory"
);
if
(
likely
(
arg0
==
HV_EOK
))
break
;
if
(
unlikely
(
++
retries
>
100
))
{
printk
(
"CPU[%d]: sun4v mondo error %lu
\n
"
,
this_cpu
,
func
);
break
;
}
udelay
(
2
*
i
);
}
while
(
1
);
}
put_cpu
();
}
#endif
/* Send cross call to all processors mentioned in MASK
* except self.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录