summaryrefslogtreecommitdiffstats
path: root/sys-utils/lscpu.c
diff options
context:
space:
mode:
authorRuediger Meier2014-05-20 13:26:48 +0200
committerRuediger Meier2014-05-29 01:27:25 +0200
commit96ce475f96b2a3bfb8be0824e38dfc5e9892e05e (patch)
treed94ed42e340b1c11652f0f8d9c18d839ed96f992 /sys-utils/lscpu.c
parentfsck.cramfs: cleanup usage() and warning messages (diff)
downloadkernel-qcow2-util-linux-96ce475f96b2a3bfb8be0824e38dfc5e9892e05e.tar.gz
kernel-qcow2-util-linux-96ce475f96b2a3bfb8be0824e38dfc5e9892e05e.tar.xz
kernel-qcow2-util-linux-96ce475f96b2a3bfb8be0824e38dfc5e9892e05e.zip
lscpu: minor cleanup and improve hypervisor detection
- add HYPER_VBOX - improve HYPER_VMWARE This patch comes from openSUSE / SLE. Original author was probably Petr Uzel. Internal SUSE references: fate310255, sr226509 CC: Stanislav Brabec <sbrabec@suse.cz> CC: Petr Uzel <petr.uzel@suse.cz> Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'sys-utils/lscpu.c')
-rw-r--r--sys-utils/lscpu.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c
index ad1a6b352..7203d0d7b 100644
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -87,7 +87,26 @@ const char *hv_vendors[] = {
[HYPER_UML] = "User-mode Linux",
[HYPER_INNOTEK] = "Innotek GmbH",
[HYPER_HITACHI] = "Hitachi",
- [HYPER_PARALLELS] = "Parallels"
+ [HYPER_PARALLELS] = "Parallels",
+ [HYPER_VBOX] = "Oracle",
+};
+
+const int hv_vendor_pci[] = {
+ [HYPER_NONE] = 0x0000,
+ [HYPER_XEN] = 0x5853,
+ [HYPER_KVM] = 0x0000,
+ [HYPER_MSHV] = 0x1414,
+ [HYPER_VMWARE] = 0x15ad,
+ [HYPER_VBOX] = 0x80ee,
+};
+
+const int hv_graphics_pci[] = {
+ [HYPER_NONE] = 0x0000,
+ [HYPER_XEN] = 0x0001,
+ [HYPER_KVM] = 0x0000,
+ [HYPER_MSHV] = 0x5353,
+ [HYPER_VMWARE] = 0x0710,
+ [HYPER_VBOX] = 0xbeef,
};
/* CPU modes */
@@ -589,9 +608,15 @@ read_hypervisor(struct lscpu_desc *desc, struct lscpu_modifier *mod)
desc->hyper = HYPER_XEN;
/* Xen full-virt on non-x86_64 */
- } else if (has_pci_device(0x5853, 0x0001)) {
+ } else if (has_pci_device( hv_vendor_pci[HYPER_XEN], hv_graphics_pci[HYPER_XEN])) {
desc->hyper = HYPER_XEN;
desc->virtype = VIRT_FULL;
+ } else if (has_pci_device( hv_vendor_pci[HYPER_VMWARE], hv_graphics_pci[HYPER_VMWARE])) {
+ desc->hyper = HYPER_VMWARE;
+ desc->virtype = VIRT_FULL;
+ } else if (has_pci_device( hv_vendor_pci[HYPER_VBOX], hv_graphics_pci[HYPER_VBOX])) {
+ desc->hyper = HYPER_VBOX;
+ desc->virtype = VIRT_FULL;
/* IBM PR/SM */
} else if (path_exist(_PATH_PROC_SYSINFO)) {