Host OS: Fedora Guest OS: Windows 10 Virtualization: KVM

So the idea is to run a Windows 10 host machine that is unaware that it is a virtual machine. So when I open the task manager on the guest windows machine, and go under performace tab that the "Virtual machine" tag is set to "NO". Thus far I have come to understand that the task manager makes determinations based on these two parameters:

  1. Testing the CPUID hypervisor present bit
  2. Testing the virtual BIOS DMI information and the hypervisor port

I wish to run Windows 10 in a VM (as guest) and have it convinced it is not in a a VM. There are really many reasons: GPU passthrough, driver kill switches, testing etc....

Can anyone help me configure this VM so that it is no longer aware that it is a VM.

I am also using Virt-Manager.

The answer down bellow from Michael solves the issue and provides clear guidelines. However even though the purpose has been achieved and in the task manager this is no longer reported as a VM when a "systeminfo" command is run within the powershell everything is as it should be except for the "BIOS Version" which reads something like "SeaBios-......fedora28....." and "System Manufacturer" which reads "QEMU".

Can these parameters be changed as well?

Thank you for your time and effort.

  • You want to run Windows 10 in a VM (as a guest), and have it convinced it's not in a VM? Or you want to run Windows 10 as a host, and have it unaware that a VM is running?
    – Xen2050
    Dec 26, 2018 at 22:34

2 Answers 2


There are two things you need to do to hide the hypervisor from the guest OS:

  • Hide the hypervisor CPU feature flag.
  • Hide the hypervisor CPUID leaves.

Neither of these can be done entirely in virt-manager; you will have to edit the virtual machine XML.

By default the CPU is set to "Hypervisor default":

virt-manager CPU selection of Hypervisor default

This results in a "QEMU Virtual CPU version 2.5+"

Task Manager with QEMU virtual CPU

First, you will need to set a CPU type in virt-manager. The default QEMU virtual CPU cannot have its hypervisor flag removed within libvirt.

For best performance and functionality you should just select "Copy host CPU configuration" and "Apply". This will allow you to use nested virtualization, running 64-bit accelerated virtual machines inside this virtual machine.

virt-manager CPU setting Copy host CPU configuration

Now there will be a CPU section in the virtual machine XML that you can edit. Run sudo virsh edit <vmname>. The CPU section will look like this:

  <cpu mode='host-model' check='partial'>
    <model fallback='allow'/>

You need to add an element to remove the hypervisor CPU feature, causing it to look like this:

  <cpu mode='host-model' check='partial'>
    <model fallback='allow'/>
    <feature policy='disable' name='hypervisor'/>

Now you also need to disable the hypervisor CPUID leaves. This permits some other things like the NVIDIA drivers to work.

This is done by adding a new element inside the <features> element.

Just above:


You should add:

    <hidden state='on'/>

Now, shut down the VM and start it again (a reboot is not sufficient; a full shutdown is required).

At this point Task Manager shows:

Task Manager with Copy host model CPU

You can also run systeminfo in a PowerShell or command prompt. At the bottom, if all is well you will see all Yes answers in the Hyper-V section:

Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
                           Data Execution Prevention Available: Yes

Now you can do whatever it is you wanted to do.

  • 3
    Thank you @Michael Hampton, this works well. I wish to say that I am grateful for such a long and detailed post, thank you for the time and effort I up-voted it as well. Dec 31, 2018 at 12:49
  • what would systeminfo report if not "all is well" and CPU still ID'd as virtualized?
    – David
    Jun 9, 2022 at 22:21
  • @Micheal Hampton how would these xml tags to hide vm status translate to qemu command line? Aug 28, 2022 at 8:06

Add these to your VMX file:-

monitor_control.virtual_rdtsc = "FALSE"
monitor_control.restrict_backdoor = "TRUE"
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
hypervisor.cpuid.v0 = "FALSE"
  • Welcome to Super User! Before answering an old question having an accepted answer (look for green ✓) as well as other answers ensure your answer adds something new or is otherwise helpful in relation to them. Here is a guide on How to Answer. There is also tour for the site tour, and help center for the help center. BTW - your answer tends to very low quality. Dec 30, 2020 at 17:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .