Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
dcf7435c
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
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看板
提交
dcf7435c
编写于
12月 17, 2010
作者:
J
Jeremy Fitzhardinge
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xen/mmu: use extend_args for more mmuext updates
Signed-off-by:
N
Jeremy Fitzhardinge
<
jeremy.fitzhardinge@citrix.com
>
上级
c8eed171
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
15 deletion
+27
-15
arch/x86/xen/mmu.c
arch/x86/xen/mmu.c
+27
-15
未找到文件。
arch/x86/xen/mmu.c
浏览文件 @
dcf7435c
...
...
@@ -229,6 +229,24 @@ static void xen_extend_mmu_update(const struct mmu_update *update)
*
u
=
*
update
;
}
static
void
xen_extend_mmuext_op
(
const
struct
mmuext_op
*
op
)
{
struct
multicall_space
mcs
;
struct
mmuext_op
*
u
;
mcs
=
xen_mc_extend_args
(
__HYPERVISOR_mmuext_op
,
sizeof
(
*
u
));
if
(
mcs
.
mc
!=
NULL
)
{
mcs
.
mc
->
args
[
1
]
++
;
}
else
{
mcs
=
__xen_mc_entry
(
sizeof
(
*
u
));
MULTI_mmuext_op
(
mcs
.
mc
,
mcs
.
args
,
1
,
NULL
,
DOMID_SELF
);
}
u
=
mcs
.
args
;
*
u
=
*
op
;
}
static
void
xen_set_pmd_hyper
(
pmd_t
*
ptr
,
pmd_t
val
)
{
struct
mmu_update
u
;
...
...
@@ -810,14 +828,12 @@ static void xen_pte_unlock(void *v)
static
void
xen_do_pin
(
unsigned
level
,
unsigned
long
pfn
)
{
struct
mmuext_op
*
op
;
struct
multicall_space
mcs
;
struct
mmuext_op
op
;
mcs
=
__xen_mc_entry
(
sizeof
(
*
op
));
op
=
mcs
.
args
;
op
->
cmd
=
level
;
op
->
arg1
.
mfn
=
pfn_to_mfn
(
pfn
);
MULTI_mmuext_op
(
mcs
.
mc
,
op
,
1
,
NULL
,
DOMID_SELF
);
op
.
cmd
=
level
;
op
.
arg1
.
mfn
=
pfn_to_mfn
(
pfn
);
xen_extend_mmuext_op
(
&
op
);
}
static
int
xen_pin_page
(
struct
mm_struct
*
mm
,
struct
page
*
page
,
...
...
@@ -1307,8 +1323,7 @@ static void set_current_cr3(void *v)
static
void
__xen_write_cr3
(
bool
kernel
,
unsigned
long
cr3
)
{
struct
mmuext_op
*
op
;
struct
multicall_space
mcs
;
struct
mmuext_op
op
;
unsigned
long
mfn
;
trace_xen_mmu_write_cr3
(
kernel
,
cr3
);
...
...
@@ -1320,13 +1335,10 @@ static void __xen_write_cr3(bool kernel, unsigned long cr3)
WARN_ON
(
mfn
==
0
&&
kernel
);
mcs
=
__xen_mc_entry
(
sizeof
(
*
op
));
op
.
cmd
=
kernel
?
MMUEXT_NEW_BASEPTR
:
MMUEXT_NEW_USER_BASEPTR
;
op
.
arg1
.
mfn
=
mfn
;
op
=
mcs
.
args
;
op
->
cmd
=
kernel
?
MMUEXT_NEW_BASEPTR
:
MMUEXT_NEW_USER_BASEPTR
;
op
->
arg1
.
mfn
=
mfn
;
MULTI_mmuext_op
(
mcs
.
mc
,
op
,
1
,
NULL
,
DOMID_SELF
);
xen_extend_mmuext_op
(
&
op
);
if
(
kernel
)
{
percpu_write
(
xen_cr3
,
cr3
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录