Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
a25c78d0
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看板
提交
a25c78d0
编写于
10月 18, 2021
作者:
P
Paolo Bonzini
浏览文件
操作
浏览文件
下载
差异文件
Merge commit 'kvm-pagedata-alloc-fixes' into HEAD
上级
a7cc099f
fa13843d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
35 addition
and
5 deletion
+35
-5
arch/arm64/kvm/hyp/include/nvhe/gfp.h
arch/arm64/kvm/hyp/include/nvhe/gfp.h
+1
-0
arch/arm64/kvm/hyp/nvhe/mem_protect.c
arch/arm64/kvm/hyp/nvhe/mem_protect.c
+12
-1
arch/arm64/kvm/hyp/nvhe/page_alloc.c
arch/arm64/kvm/hyp/nvhe/page_alloc.c
+15
-0
arch/arm64/kvm/mmu.c
arch/arm64/kvm/mmu.c
+4
-2
arch/x86/kvm/svm/sev.c
arch/x86/kvm/svm/sev.c
+1
-1
arch/x86/kvm/x86.c
arch/x86/kvm/x86.c
+2
-1
未找到文件。
arch/arm64/kvm/hyp/include/nvhe/gfp.h
浏览文件 @
a25c78d0
...
...
@@ -24,6 +24,7 @@ struct hyp_pool {
/* Allocation */
void
*
hyp_alloc_pages
(
struct
hyp_pool
*
pool
,
unsigned
short
order
);
void
hyp_split_page
(
struct
hyp_page
*
page
);
void
hyp_get_page
(
struct
hyp_pool
*
pool
,
void
*
addr
);
void
hyp_put_page
(
struct
hyp_pool
*
pool
,
void
*
addr
);
...
...
arch/arm64/kvm/hyp/nvhe/mem_protect.c
浏览文件 @
a25c78d0
...
...
@@ -35,7 +35,18 @@ const u8 pkvm_hyp_id = 1;
static
void
*
host_s2_zalloc_pages_exact
(
size_t
size
)
{
return
hyp_alloc_pages
(
&
host_s2_pool
,
get_order
(
size
));
void
*
addr
=
hyp_alloc_pages
(
&
host_s2_pool
,
get_order
(
size
));
hyp_split_page
(
hyp_virt_to_page
(
addr
));
/*
* The size of concatenated PGDs is always a power of two of PAGE_SIZE,
* so there should be no need to free any of the tail pages to make the
* allocation exact.
*/
WARN_ON
(
size
!=
(
PAGE_SIZE
<<
get_order
(
size
)));
return
addr
;
}
static
void
*
host_s2_zalloc_page
(
void
*
pool
)
...
...
arch/arm64/kvm/hyp/nvhe/page_alloc.c
浏览文件 @
a25c78d0
...
...
@@ -152,6 +152,7 @@ static inline void hyp_page_ref_inc(struct hyp_page *p)
static
inline
int
hyp_page_ref_dec_and_test
(
struct
hyp_page
*
p
)
{
BUG_ON
(
!
p
->
refcount
);
p
->
refcount
--
;
return
(
p
->
refcount
==
0
);
}
...
...
@@ -193,6 +194,20 @@ void hyp_get_page(struct hyp_pool *pool, void *addr)
hyp_spin_unlock
(
&
pool
->
lock
);
}
void
hyp_split_page
(
struct
hyp_page
*
p
)
{
unsigned
short
order
=
p
->
order
;
unsigned
int
i
;
p
->
order
=
0
;
for
(
i
=
1
;
i
<
(
1
<<
order
);
i
++
)
{
struct
hyp_page
*
tail
=
p
+
i
;
tail
->
order
=
0
;
hyp_set_page_refcounted
(
tail
);
}
}
void
*
hyp_alloc_pages
(
struct
hyp_pool
*
pool
,
unsigned
short
order
)
{
unsigned
short
i
=
order
;
...
...
arch/arm64/kvm/mmu.c
浏览文件 @
a25c78d0
...
...
@@ -1529,8 +1529,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
* when updating the PG_mte_tagged page flag, see
* sanitise_mte_tags for more details.
*/
if
(
kvm_has_mte
(
kvm
)
&&
vma
->
vm_flags
&
VM_SHARED
)
return
-
EINVAL
;
if
(
kvm_has_mte
(
kvm
)
&&
vma
->
vm_flags
&
VM_SHARED
)
{
ret
=
-
EINVAL
;
break
;
}
if
(
vma
->
vm_flags
&
VM_PFNMAP
)
{
/* IO region dirty page logging not allowed */
...
...
arch/x86/kvm/svm/sev.c
浏览文件 @
a25c78d0
...
...
@@ -2583,7 +2583,7 @@ int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in)
return
-
EINVAL
;
return
kvm_sev_es_string_io
(
&
svm
->
vcpu
,
size
,
port
,
svm
->
ghcb_sa
,
svm
->
ghcb_sa_len
,
in
);
svm
->
ghcb_sa
,
svm
->
ghcb_sa_len
/
size
,
in
);
}
void
sev_es_init_vmcb
(
struct
vcpu_svm
*
svm
)
...
...
arch/x86/kvm/x86.c
浏览文件 @
a25c78d0
...
...
@@ -11370,7 +11370,8 @@ static int memslot_rmap_alloc(struct kvm_memory_slot *slot,
int
level
=
i
+
1
;
int
lpages
=
__kvm_mmu_slot_lpages
(
slot
,
npages
,
level
);
WARN_ON
(
slot
->
arch
.
rmap
[
i
]);
if
(
slot
->
arch
.
rmap
[
i
])
continue
;
slot
->
arch
.
rmap
[
i
]
=
kvcalloc
(
lpages
,
sz
,
GFP_KERNEL_ACCOUNT
);
if
(
!
slot
->
arch
.
rmap
[
i
])
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录