Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
e663ee64
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e663ee64
编写于
5月 31, 2007
作者:
A
Avi Kivity
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
KVM: MMU: Make setting shadow ptes atomic on i386
Signed-off-by:
N
Avi Kivity
<
avi@qumranet.com
>
上级
0d551bb6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
15 addition
and
4 deletion
+15
-4
drivers/kvm/Kconfig
drivers/kvm/Kconfig
+1
-0
drivers/kvm/mmu.c
drivers/kvm/mmu.c
+12
-2
drivers/kvm/paging_tmpl.h
drivers/kvm/paging_tmpl.h
+2
-2
未找到文件。
drivers/kvm/Kconfig
浏览文件 @
e663ee64
...
...
@@ -11,6 +11,7 @@ if VIRTUALIZATION
config KVM
tristate "Kernel-based Virtual Machine (KVM) support"
depends on X86 && EXPERIMENTAL
depends on X86_CMPXCHG64 || 64BIT
---help---
Support hosting fully virtualized guest machines using hardware
virtualization extensions. You will need a fairly recent
...
...
drivers/kvm/mmu.c
浏览文件 @
e663ee64
...
...
@@ -22,6 +22,7 @@
#include <linux/mm.h>
#include <linux/highmem.h>
#include <linux/module.h>
#include <asm/cmpxchg.h>
#include "vmx.h"
#include "kvm.h"
...
...
@@ -204,6 +205,15 @@ static int is_rmap_pte(u64 pte)
==
(
PT_WRITABLE_MASK
|
PT_PRESENT_MASK
);
}
static
void
set_shadow_pte
(
u64
*
sptep
,
u64
spte
)
{
#ifdef CONFIG_X86_64
set_64bit
((
unsigned
long
*
)
sptep
,
spte
);
#else
set_64bit
((
unsigned
long
long
*
)
sptep
,
spte
);
#endif
}
static
int
mmu_topup_memory_cache
(
struct
kvm_mmu_memory_cache
*
cache
,
struct
kmem_cache
*
base_cache
,
int
min
,
gfp_t
gfp_flags
)
...
...
@@ -446,7 +456,7 @@ static void rmap_write_protect(struct kvm_vcpu *vcpu, u64 gfn)
rmap_printk
(
"rmap_write_protect: spte %p %llx
\n
"
,
spte
,
*
spte
);
rmap_remove
(
vcpu
,
spte
);
kvm_arch_ops
->
tlb_flush
(
vcpu
);
*
spte
&=
~
(
u64
)
PT_WRITABLE_MASK
;
set_shadow_pte
(
spte
,
*
spte
&
~
PT_WRITABLE_MASK
)
;
}
}
...
...
@@ -699,7 +709,7 @@ static void kvm_mmu_zap_page(struct kvm_vcpu *vcpu,
}
BUG_ON
(
!
parent_pte
);
kvm_mmu_put_page
(
vcpu
,
page
,
parent_pte
);
*
parent_pte
=
0
;
set_shadow_pte
(
parent_pte
,
0
)
;
}
kvm_mmu_page_unlink_children
(
vcpu
,
page
);
if
(
!
page
->
root_count
)
{
...
...
drivers/kvm/paging_tmpl.h
浏览文件 @
e663ee64
...
...
@@ -234,7 +234,7 @@ static void FNAME(set_pte_common)(struct kvm_vcpu *vcpu,
spte
|=
gaddr
;
spte
|=
PT_SHADOW_IO_MARK
;
spte
&=
~
PT_PRESENT_MASK
;
*
shadow_pte
=
spte
;
set_shadow_pte
(
shadow_pte
,
spte
)
;
return
;
}
...
...
@@ -280,7 +280,7 @@ static void FNAME(set_pte_common)(struct kvm_vcpu *vcpu,
if
(
access_bits
&
PT_WRITABLE_MASK
)
mark_page_dirty
(
vcpu
->
kvm
,
gaddr
>>
PAGE_SHIFT
);
*
shadow_pte
=
spte
;
set_shadow_pte
(
shadow_pte
,
spte
)
;
page_header_update_slot
(
vcpu
->
kvm
,
shadow_pte
,
gaddr
);
if
(
!
was_rmapped
)
rmap_add
(
vcpu
,
shadow_pte
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录