VM Feature Identification

From Xen

When you control your own hypervisor, you are aware of the features you are using, since you have configured the system and the VMs. However, if you are using a service provider for your hosting or cloud, you need to do some detective work to determine the hypervisor mode and features employed.


The output of the dmesg command contains many useful bits of information about the processor mode:


If your VM is either HVM or PVHVM, look for:

[    0.000000] Hypervisor detected: Xen HVM


[    0.000000] Booting paravirtualized kernel on Xen HVM

If it is actually PVHVM, you could see messages like:

[    0.127240] Xen: using vcpuop timer interface


[    1.424040] Initialising Xen virtual ethernet driver.


[    0.000000] Xen HVM callback vector for event delivery is enabled

indicating that PV drivers are being utilized within the HVM machine.

Also, some newer versions might have:

[    0.000000] xen: PV spinlocks enabled

indicating that PV spinlocks are used, so an HVM VM with this message must be PVHVM.


If your VM is PV or PVH, look for:

[    0.000000] Booting paravirtualized kernel on Xen

Note the lack of reference to HVM, as seen in the messages above.

This message indicates that PV timers are in use:

[    0.000000] Xen: using vcpuop timer interface

If PV network drivers are in use, you might see:

[    0.432488] Initialising Xen virtual ethernet driver.


  • Disk names: names in the format xvdXN (e.g., xvda1, or xvdc3) indicates that the PV disk driver is in use.
  • Network drivers: a network driver of vif is a PV driver


Brendan Gregg has written a Perl-based script called xen-features.pl which can be retrieved from git here.

It takes the value stored in /sys/hypervisor/properties/features and decodes it into output like:

Xen features: 00000705
enabled: writable_page_tables
enabled: auto_translated_physmap
enabled: hvm_callback_vector
enabled: hvm_safe_pvclock
enabled: hvm_pirqs