Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
5287f194
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看板
提交
5287f194
编写于
1月 19, 2010
作者:
A
Avi Kivity
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
KVM: Split mmio completion into a function
Make room for sse mmio completions. Signed-off-by:
N
Avi Kivity
<
avi@redhat.com
>
上级
70252a10
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
14 deletion
+25
-14
arch/x86/kvm/x86.c
arch/x86/kvm/x86.c
+25
-14
未找到文件。
arch/x86/kvm/x86.c
浏览文件 @
5287f194
...
...
@@ -5441,6 +5441,27 @@ static int __vcpu_run(struct kvm_vcpu *vcpu)
return
r
;
}
static
int
complete_mmio
(
struct
kvm_vcpu
*
vcpu
)
{
struct
kvm_run
*
run
=
vcpu
->
run
;
int
r
;
if
(
!
(
vcpu
->
arch
.
pio
.
count
||
vcpu
->
mmio_needed
))
return
1
;
if
(
vcpu
->
mmio_needed
)
{
memcpy
(
vcpu
->
mmio_data
,
run
->
mmio
.
data
,
8
);
vcpu
->
mmio_read_completed
=
1
;
vcpu
->
mmio_needed
=
0
;
}
vcpu
->
srcu_idx
=
srcu_read_lock
(
&
vcpu
->
kvm
->
srcu
);
r
=
emulate_instruction
(
vcpu
,
EMULTYPE_NO_DECODE
);
srcu_read_unlock
(
&
vcpu
->
kvm
->
srcu
,
vcpu
->
srcu_idx
);
if
(
r
!=
EMULATE_DONE
)
return
0
;
return
1
;
}
int
kvm_arch_vcpu_ioctl_run
(
struct
kvm_vcpu
*
vcpu
,
struct
kvm_run
*
kvm_run
)
{
int
r
;
...
...
@@ -5467,20 +5488,10 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
}
}
if
(
vcpu
->
arch
.
pio
.
count
||
vcpu
->
mmio_needed
)
{
if
(
vcpu
->
mmio_needed
)
{
memcpy
(
vcpu
->
mmio_data
,
kvm_run
->
mmio
.
data
,
8
);
vcpu
->
mmio_read_completed
=
1
;
vcpu
->
mmio_needed
=
0
;
}
vcpu
->
srcu_idx
=
srcu_read_lock
(
&
vcpu
->
kvm
->
srcu
);
r
=
emulate_instruction
(
vcpu
,
EMULTYPE_NO_DECODE
);
srcu_read_unlock
(
&
vcpu
->
kvm
->
srcu
,
vcpu
->
srcu_idx
);
if
(
r
!=
EMULATE_DONE
)
{
r
=
0
;
goto
out
;
}
}
r
=
complete_mmio
(
vcpu
);
if
(
r
<=
0
)
goto
out
;
if
(
kvm_run
->
exit_reason
==
KVM_EXIT_HYPERCALL
)
kvm_register_write
(
vcpu
,
VCPU_REGS_RAX
,
kvm_run
->
hypercall
.
ret
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录