How do I find out if my system support Intel – VT / AMD -V hardware virtualization extensions for host CPU using the command line options? How do I check if my Linux hardware from HP/IBM/Dell supports virtualization?

Both Intel and AMD CPU support virtualization technology which allows multiple operating systems to run simultaneously on an x86 server or computer in a safe and efficient manner using hardware virtualization. XEN, KVM, Vmware and other virtualization software can use Intel and AMD hardware virtualization for full virtualization. In other words with Intel VT, or AMD-V you can run an unmodified guest OS, like MS-Windows without any problems. To run KVM, you need a CPU that supports hardware virtualization.[donotprint]
Tutorial details
Difficulty level Easy
Root privileges No
Requirements Intel/AMD x86 server
Est. reading time 2m

Say hello to /proc/cpuinfo file

The /proc/cpuinfo file has information about your CPU. The information includes, the number of CPUs, threads, cores, sockets, and Non-Uniform Memory Access (NUMA) nodes. There is also formation about the CPU caches and cache sharing, family, model, bogoMIPS, byte order, and stepping. You need to note down the following vendor specific cpu flags:

Am I using 64 bit CPU/system [x86_64/AMD64/Intel64]?

  1. lm – If you see lm flag means you’ve 64 bit Intel or AMD cpu.

Do I have hardware virtualization support?

  1. vmx – Intel VT-x, virtualization support enabled in BIOS.
  2. svm – AMD SVM,virtualization enabled in BIOS.

Do I have hardware AES/AES-NI advanced encryption support?

  1. aes – Applications performing encryption and decryption using the Advanced Encryption Standard on Intel and AMD cpus.

Commands to check if your hardware supports virtualization

Use the following commands to verify if hardware virtualization extensions is enabled or not in your BIOS.

Verify Intel VT CPU virtualization extensions on a Linux

Type the following command as root to verify that host cpu has support for Intel VT technology, enter:
# grep --color vmx /proc/cpuinfo
Sample outputs:

Fig.01: Linux Find Out If CPU Support Intel VT/AMD-V Virtualization For KVM

Fig.01: Linux check Intel VT - if my server can run full virtualization or not

If the output has the vmx flags, then Intel CPU host is capable of running hardware virtualization.

Verify AMD V CPU virtualization extensions on a Linux

Type the following command as root to verify that host cpu has support for AMD – V technology:
# grep --color svm /proc/cpuinfo

Linux lscpu command to find Virtualization AMD-V support

Linux lscpu command to find Virtualization AMD-V support

Again, the output has the svm flags, then AND CPU host is capable of running hardware virtualization.

Verify Intel or AMD 64 bit CPU

Type the following grep command:
grep -w -o lm /proc/cpuinfo | uniq
See our tutorial “Find If Processor (CPU) is 64 bit / 32 bit on a Linux” for more info.

lscpu command

The lscpu command shows CPU architecture information on a Linux server:
Sample outputs from Intel server:

Fig.02: lscpu command on a Linux server to find out Virtualization support

Fig.02: lscpu command on a Linux server to find out Virtualization support

Putting it all together

Type the following egrep command:

egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo 
## Only show Intel CPU flags ##
egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo  | sort | uniq
## OR better use the following ##
egrep -wo 'vmx|lm|aes' /proc/cpuinfo  | sort | uniq\
| sed -e 's/aes/Hardware encryption=Yes (&)/g' \
-e 's/lm/64 bit cpu=Yes (&)/g' -e 's/vmx/Intel hardware virtualization=Yes (&)/g'

Sample outputs:

Fig.03: Finding Intel virtualization, encryption and 64 bit cpu in a single command

Fig.03: Finding Intel virtualization, encryption and 64 bit cpu in a single command

Additional Intel x86 CPU specific virtualization flags

  1. ept – Intel extended page table support enabled to make emulation of guest page tables faster.
  2. vpid – Intel virtual processor ID. Make expensive TLB flushes unnecessary when context switching between guests.
  3. tpr_shadow and flexpriority – Intel feature that reduces calls into the hypervisor when accessing the Task Priority Register, which helps when running certain types of SMP guests.
  4. vnmi – Intel Virtual NMI helps with selected interrupt events in guests.

Additional AMD x86 CPU specific virtualization flags

  1. npt – AMD Nested Page Tables, similar to Intel EPT.
  2. lbrv – AMD LBR Virtualization support.
  3. svm_lock – AMD SVM locking MSR.
  4. nrip_save – AMD SVM next_rip save.
  5. tsc_scale – AMD TSC scaling support.
  6. vmcb_clean – AMD VMCB clean bits support.
  7. flushbyasid – AMD flush-by-ASID support.
  8. decodeassists – AMD Decode Assists support.
  9. pausefilter – AMD filtered pause intercept.
  10. pfthreshold – AMD pause filter threshold.

Some tips to solve your problems.

Tip #1: See Linux kernel messages

Type the following command to see kvm support enabled or not in BIOS:
# dmesg | less
# dmesg | grep -i kvm

Tip # 2: Check your BIOS settings

By default, many system manufacturers disables an AMD or Intel hardware CPU virtualization technology in the BIOS. You need to reboot the system and turn it in the BIOS. Once turned on, run lscpu or grep command as discussed earlier to see if your virtualization support enabled:
$ lscpu
$ egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo | sort | uniq
$ egrep -o '(vmx|svm)' /proc/cpuinfo | sort | uniq

Sampple outputs:


Tip # 3: XEN Kernel

By default, if you booted into XEN kernel it will not display svm or vmx flag using the grep command. To see if it is enabled or not from xen, enter:
cat /sys/hypervisor/properties/capabilities
You must see hvm flags in the output. If not reboot the box and set Virtualization in the BIOS.


🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 24 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
24 comments… add one
  • Philippe Petrinko May 26, 2010 @ 11:55

    Useful topic, thanks Vivek, and I didn’t know of “–color” fro grep, nice too.
    Please give us some more topics related to virtualization, pleeeease !!! :-)
    — Philippe

    • 🐧 nixCraft May 26, 2010 @ 16:31

      We have covered XEN, Vmware server and OpenVZ in the past.

      However, I’m going to write a bit about central storage for VM, VM live migration, KVM (which seems like a winner to me), VM security & advanced networking in coming days. Let me know if you want to see any specific topics here or at vivek at nixcraft dot com.


  • Gal Frishman May 26, 2010 @ 14:55

    It is possible that your processor supports virtualization while BIOS disables it (as mentioned) but have no option to enable it! That was the case with my Acer Aspire L5100.

    I wrote about this problem and how I solved it:

    • 🐧 nixCraft May 26, 2010 @ 16:26

      Interesting read; this is the main reason why I stick to Intel or Supermicro motherboards for server usage They never do this kind of silly stuff. I paid for it and I’ve full right to use hardware.

  • Nilesh May 26, 2010 @ 18:12

    Vivek, how do I find if my processor can use a 64-bit version of Arch Linux or for that matter any Linux ? I got from my vendor as 32-bit. Someone on IRC told me something similar. Please help me out.

    • 🐧 nixCraft May 26, 2010 @ 20:28


      egrep '^flags|lm' /proc/cpuinfo  --color

      If you get lm (long mode); it means 64 bit CPU. See this FAQ.

  • Solaris May 26, 2010 @ 20:14

    $ kvm-ok

    • 🐧 nixCraft May 26, 2010 @ 20:29

      Yes, but it is Debian / ubuntu thingy (script). So it is better if one learn to use direct command ;)

      • Solaris May 27, 2010 @ 9:16

        Hey Vivek,

        I agree. But lets keep it posted, maybe someone can find it useful :)

        • Yogesh Kumar Singh Nov 21, 2012 @ 12:10

          Thanks Solaris I did find it useful…. I was unable to run virtual machine on my comp and was thinking that there is problem with my installation but then kvm-ok returned that virtualization is disabled from my BIOS…

  • Nilesh May 27, 2010 @ 2:42

    Thanks. Got it from some referencing posts on your blog. You rock man.

  • SIFE Jun 2, 2010 @ 15:21

    hi ,if am planing to run full virtulasions ,do i need intel VT or AMD-V to make that work ?

    • 🐧 nixCraft Jun 2, 2010 @ 16:03

      Yes, you need Intel VT for Intel CPUS and AMD V for AMD CPUS.

      • Milind Oct 31, 2010 @ 15:33

        Shouldn’t it be possible to use paravirtualization? Will need tweaked kernels but those are available.

        – Milind

  • gal Oct 25, 2010 @ 20:52


    What about taking many physical servers and making from them a single “super server” via Xen/VMware? Is there any article/guide that explains how to do so?

    * When I say “super server” I mean to take 1 physical server and make him the “master” (where the OS sitting on, i.e – linux) and the other pysical servers are the “guest” (they have no OS (or just not regular OS, i.e – linux)

    Thanks ;-)

  • Faisal Dec 31, 2010 @ 10:13

    actually i am new to this tech stuff. i dont know whats all this about but want to know more. were do you write these commands if you are running windows xp

  • S Khan Sep 14, 2011 @ 13:29

    ok, so I have the exact same CPU, Intel E8400, that you have. I have enabled Virtualization Technology in the BIOS. But I still do not see, vmx, when do this: grep –color vmx /proc/cpuinfo

    But I do see hvm when do this:
    > cat /sys/hypervisor/properties/capabilities
    > xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
    What does this mean? I have VMX or I don’t ?
    Though I have compiled the linux kernel 3.0, is it possible that it might be disabled in the kernel?

    • 🐧 nixCraft Sep 14, 2011 @ 14:49

      Yes, it is possible that some options may not been included in your kernel config.

  • khan Jul 8, 2013 @ 0:27

    i am running vmware workstation 9.0.2 on windows 7 host .
    i have installed ubuntu 10.04 in it and also rhel 6 .. and when i enter the above command in any of these guest oses i dont see the vmx flag ? am i suppose to not see it in guest oses ?

    my system is dell optiplex 755 . cpu is e6550 . and board supports virtualization and is enabled .

  • abhijit Jan 10, 2014 @ 17:31

    I have 64bit dell machine with VT support. I have enabled it in BIOS, but “vmx” flag is missing from cpuinfo. I am using fedora 20 . The uname o/p below –
    Linux localhost.localdomain 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

    Can somebody help with this.

  • anvita rathi Aug 28, 2014 @ 10:19

    can anyone please help me with the code in c++ to check virtualization?
    rply asap

  • jeff Oct 26, 2015 @ 20:36

    Vivek, this is great information. Thank you. Let’s say I’m running a Linux guest on a recent x86 model that contains hardware crypto instructions. Does the presence of the aes flag mean that from my guest, if I call the crypto library to, say, encrypt a buffer, that it means that the call will go directly to the hardware from my guest, or does that sort of call always get passed through KVM first? Thanks!

  • Aaron Dec 16, 2015 @ 22:26

    I have VT disabled by BIOS and vmx is still reported by /proc/cpuinfo. Kvm-ok seems to be the best test for this case. And it works just fine on Red Hat/CentOS/etc. (I installed the msr-tools RPM from EPEL to provide the rdmsr binary.) This is necessary for the check to determine if VT is supported, but disabled in BIOS.

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum