virt: detect bhyve (FreeBSD hypervisor) (#3840)

The CPUID and DMI vendor strings do not seem to be documented.
Values were found experimentally and by inspecting the source code.
This commit is contained in:
Leonardo Brondani Schenkel 2016-08-01 15:04:49 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent 494294d6f8
commit aa0c34279e
3 changed files with 12 additions and 1 deletions

View File

@ -88,7 +88,7 @@
</thead>
<tbody>
<row>
<entry valign="top" morerows="9">VM</entry>
<entry valign="top" morerows="10">VM</entry>
<entry><varname>qemu</varname></entry>
<entry>QEMU software virtualization</entry>
</row>
@ -138,6 +138,11 @@
<entry>Parallels Desktop, Parallels Server</entry>
</row>
<row>
<entry><varname>bhyve</varname></entry>
<entry>bhyve, FreeBSD hypervisor</entry>
</row>
<row>
<entry valign="top" morerows="5">Container</entry>
<entry><varname>openvz</varname></entry>

View File

@ -49,6 +49,8 @@ static int detect_vm_cpuid(void) {
{ "VMwareVMware", VIRTUALIZATION_VMWARE },
/* http://msdn.microsoft.com/en-us/library/ff542428.aspx */
{ "Microsoft Hv", VIRTUALIZATION_MICROSOFT },
/* https://wiki.freebsd.org/bhyve */
{ "bhyve bhyve ", VIRTUALIZATION_BHYVE },
};
uint32_t eax, ecx;
@ -178,6 +180,8 @@ static int detect_vm_dmi(void) {
{ "Xen", VIRTUALIZATION_XEN },
{ "Bochs", VIRTUALIZATION_BOCHS },
{ "Parallels", VIRTUALIZATION_PARALLELS },
/* https://wiki.freebsd.org/bhyve */
{ "BHYVE", VIRTUALIZATION_BHYVE },
};
unsigned i;
int r;
@ -502,6 +506,7 @@ static const char *const virtualization_table[_VIRTUALIZATION_MAX] = {
[VIRTUALIZATION_MICROSOFT] = "microsoft",
[VIRTUALIZATION_ZVM] = "zvm",
[VIRTUALIZATION_PARALLELS] = "parallels",
[VIRTUALIZATION_BHYVE] = "bhyve",
[VIRTUALIZATION_VM_OTHER] = "vm-other",
[VIRTUALIZATION_SYSTEMD_NSPAWN] = "systemd-nspawn",

View File

@ -37,6 +37,7 @@ enum {
VIRTUALIZATION_MICROSOFT,
VIRTUALIZATION_ZVM,
VIRTUALIZATION_PARALLELS,
VIRTUALIZATION_BHYVE,
VIRTUALIZATION_VM_OTHER,
VIRTUALIZATION_VM_LAST = VIRTUALIZATION_VM_OTHER,