Linux: Find Out If CPU Support Intel VT and AMD-V Virtualization Support

by on May 26, 2010 · 21 comments· LAST UPDATED February 11, 2015

in , ,

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 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.
Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsIntel/AMD x86 server
Estimated completion time2m

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 check Intel VT -  if my server can run full virtualization or not

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
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:

 
lscpu
 

Sample outputs:

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.

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

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.

References
Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 21 comments… read them below or add one }

1 Philippe Petrinko May 26, 2010 at 11:55 am

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

Reply

2 nixCraft May 26, 2010 at 4:31 pm

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.

HTH

Reply

3 Gal Frishman May 26, 2010 at 2:55 pm

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:
Link

Reply

4 nixCraft May 26, 2010 at 4:26 pm

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.

Reply

5 Nilesh May 26, 2010 at 6:12 pm

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.

Reply

6 nixCraft May 26, 2010 at 8:28 pm

Run

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

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

Reply

7 Solaris May 26, 2010 at 8:14 pm

$ kvm-ok

Reply

8 nixCraft May 26, 2010 at 8:29 pm

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

Reply

9 Solaris May 27, 2010 at 9:16 am

Hey Vivek,

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

Reply

10 Yogesh Kumar Singh November 21, 2012 at 12:10 pm

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…

Reply

11 Nilesh May 27, 2010 at 2:42 am

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

Reply

12 SIFE June 2, 2010 at 3:21 pm

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

Reply

13 nixCraft June 2, 2010 at 4:03 pm

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

Reply

14 Milind October 31, 2010 at 3:33 pm

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

Thanks,
– Milind

Reply

15 gal October 25, 2010 at 8:52 pm

Hey,

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 ;-)

Reply

16 Faisal December 31, 2010 at 10:13 am

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

Reply

17 S Khan September 14, 2011 at 1:29 pm

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?

Reply

18 nixCraft September 14, 2011 at 2:49 pm

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

Reply

19 khan July 8, 2013 at 12:27 am

hi
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 .

Reply

20 abhijit January 10, 2014 at 5:31 pm

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.

Reply

21 anvita rathi August 28, 2014 at 10:19 am

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

Reply

Leave a Comment

Tagged as: , ,

Previous Faq:

Next Faq: