Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
803497a8
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
803497a8
编写于
8月 03, 2016
作者:
J
Jiri Denemark
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
qemu: Introduce virQEMUCapsIsCPUModeSupported
Signed-off-by:
N
Jiri Denemark
<
jdenemar@redhat.com
>
上级
21dead63
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
46 addition
and
12 deletion
+46
-12
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.c
+42
-12
src/qemu/qemu_capabilities.h
src/qemu/qemu_capabilities.h
+4
-0
未找到文件。
src/qemu/qemu_capabilities.c
浏览文件 @
803497a8
...
...
@@ -2371,6 +2371,32 @@ virQEMUCapsGetHostModel(virQEMUCapsPtr qemuCaps)
}
bool
virQEMUCapsIsCPUModeSupported
(
virQEMUCapsPtr
qemuCaps
,
virCapsPtr
caps
,
virDomainVirtType
type
,
virCPUMode
mode
)
{
switch
(
mode
)
{
case
VIR_CPU_MODE_HOST_PASSTHROUGH
:
return
type
==
VIR_DOMAIN_VIRT_KVM
&&
virQEMUCapsGuestIsNative
(
caps
->
host
.
arch
,
qemuCaps
->
arch
);
case
VIR_CPU_MODE_HOST_MODEL
:
return
!!
qemuCaps
->
hostCPUModel
;
case
VIR_CPU_MODE_CUSTOM
:
return
qemuCaps
->
cpuDefinitions
&&
qemuCaps
->
cpuDefinitions
->
nmodels
>
0
;
case
VIR_CPU_MODE_LAST
:
break
;
}
return
false
;
}
int
virQEMUCapsGetMachineTypesCaps
(
virQEMUCapsPtr
qemuCaps
,
size_t
*
nmachines
,
virCapsGuestMachinePtr
**
machines
)
...
...
@@ -4358,22 +4384,26 @@ virQEMUCapsFillDomainCPUCaps(virCapsPtr caps,
virQEMUCapsPtr
qemuCaps
,
virDomainCapsPtr
domCaps
)
{
virDomainCapsCPUModelsPtr
filtered
=
NULL
;
char
**
models
=
NULL
;
if
(
domCaps
->
virttype
==
VIR_DOMAIN_VIRT_KVM
&&
virQEMUCapsGuestIsNative
(
caps
->
host
.
arch
,
qemuCaps
->
arch
))
if
(
virQEMUCapsIsCPUModeSupported
(
qemuCaps
,
caps
,
domCaps
->
virttype
,
VIR_CPU_MODE_HOST_PASSTHROUGH
))
domCaps
->
cpu
.
hostPassthrough
=
true
;
domCaps
->
cpu
.
hostModel
=
virCPUDefCopy
(
qemuCaps
->
hostCPUModel
);
if
(
virQEMUCapsIsCPUModeSupported
(
qemuCaps
,
caps
,
domCaps
->
virttype
,
VIR_CPU_MODE_HOST_MODEL
))
domCaps
->
cpu
.
hostModel
=
virCPUDefCopy
(
qemuCaps
->
hostCPUModel
);
if
(
virQEMUCapsIsCPUModeSupported
(
qemuCaps
,
caps
,
domCaps
->
virttype
,
VIR_CPU_MODE_CUSTOM
))
{
virDomainCapsCPUModelsPtr
filtered
=
NULL
;
char
**
models
=
NULL
;
if
(
qemuCaps
->
cpuDefinitions
&&
cpuGetModels
(
domCaps
->
arch
,
&
models
)
>=
0
)
{
filtered
=
virDomainCapsCPUModelsFilter
(
qemuCaps
->
cpuDefinitions
,
(
const
char
**
)
models
);
virStringFreeList
(
models
);
if
(
cpuGetModels
(
domCaps
->
arch
,
&
models
)
>=
0
)
{
filtered
=
virDomainCapsCPUModelsFilter
(
qemuCaps
->
cpuDefinitions
,
(
const
char
**
)
models
);
virStringFreeList
(
models
);
}
domCaps
->
cpu
.
custom
=
filtered
;
}
domCaps
->
cpu
.
custom
=
filtered
;
return
0
;
}
...
...
src/qemu/qemu_capabilities.h
浏览文件 @
803497a8
...
...
@@ -430,6 +430,10 @@ int virQEMUCapsGetCPUDefinitions(virQEMUCapsPtr qemuCaps,
char
***
names
,
size_t
*
count
);
virCPUDefPtr
virQEMUCapsGetHostModel
(
virQEMUCapsPtr
qemuCaps
);
bool
virQEMUCapsIsCPUModeSupported
(
virQEMUCapsPtr
qemuCaps
,
virCapsPtr
caps
,
virDomainVirtType
type
,
virCPUMode
mode
);
const
char
*
virQEMUCapsGetCanonicalMachine
(
virQEMUCapsPtr
qemuCaps
,
const
char
*
name
);
int
virQEMUCapsGetMachineMaxCpus
(
virQEMUCapsPtr
qemuCaps
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录