提交 4653a519 编写于 作者: D Daniel Henrique Barboza 提交者: Michal Privoznik

virt-host-validate: warn if kvm_hv is not loaded for POWER hosts

POWER hosts does not implement CPU virtualization extensions like
x86 or s390x. Instead, all bare-metal POWER hosts are considered
to be virtualization ready.

For POWER, the validation is done by checking if the virtualization
module kvm_hv is loaded in the host. If not, we should warn the
user about it.
Signed-off-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: NMichal Privoznik <mprivozn@redhat.com>
上级 1cf2f412
......@@ -412,3 +412,30 @@ int virHostValidateIOMMU(const char *hvname,
virHostMsgPass();
return 0;
}
bool virHostKernelModuleIsLoaded(const char *module)
{
FILE *fp;
bool ret = false;
if (!(fp = fopen("/proc/modules", "r")))
return false;
do {
char line[1024];
if (!fgets(line, sizeof(line), fp))
break;
if (STRPREFIX(line, module)) {
ret = true;
break;
}
} while (1);
VIR_FORCE_FCLOSE(fp);
return ret;
}
......@@ -82,3 +82,5 @@ int virHostValidateCGroupControllers(const char *hvname,
int virHostValidateIOMMU(const char *hvname,
virHostValidateLevel level);
bool virHostKernelModuleIsLoaded(const char *module);
......@@ -57,6 +57,11 @@ int virHostValidateQEMU(void)
if (virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_SIE))
hasHwVirt = true;
break;
case VIR_ARCH_PPC64:
case VIR_ARCH_PPC64LE:
hasVirtFlag = true;
hasHwVirt = true;
break;
default:
hasHwVirt = false;
}
......@@ -84,6 +89,16 @@ int virHostValidateQEMU(void)
ret = -1;
}
if (arch == VIR_ARCH_PPC64 || arch == VIR_ARCH_PPC64LE) {
virHostMsgCheck("QEMU", "%s", _("for PowerPC KVM module loaded"));
if (!virHostKernelModuleIsLoaded("kvm_hv"))
virHostMsgFail(VIR_HOST_VALIDATE_WARN,
_("Load kvm_hv for better performance"));
else
virHostMsgPass();
}
virBitmapFree(flags);
if (virHostValidateDeviceExists("QEMU", "/dev/vhost-net",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册