How to Fix “KVM Disabled by BIOS” Error Despite VT-x Being Enabled in Dell OptiPlex 755


15 views

Many users encounter this confusing scenario where virtualization appears enabled in BIOS, but Linux KVM still reports it as disabled. The key error messages we're seeing:

[   57.887352] kvm: disable TXT in the BIOS or activate TXT before enabling KVM
[   57.887354] kvm: disabled by bios

The root cause is a conflict with Intel's Trusted Execution Technology (TXT). On older Dell systems like the OptiPlex 755, TXT takes precedence over VT-x. You'll need to either:

  1. Completely disable TXT in BIOS, or
  2. Activate TXT properly before enabling KVM (requires additional configuration)

Here's the most reliable fix for Dell OptiPlex systems:

# First verify your CPU actually supports VT-x
grep -E 'vmx|svm' /proc/cpuinfo

# Check loaded modules
lsmod | grep kvm

# Clear any stale modules
sudo modprobe -r kvm_intel
sudo modprobe -r kvm

# Reinsert with TXT workaround
sudo modprobe kvm ignore_msrs=1
sudo modprobe kvm_intel

To make these changes persistent across reboots:

# Create modprobe config file
echo "options kvm ignore_msrs=1" | sudo tee /etc/modprobe.d/kvm.conf

# Update initramfs (for Debian/Ubuntu)
sudo update-initramfs -u

After applying these changes, verify with:

# Check kernel messages
dmesg | grep kvm

# Verify KVM device exists
ls -la /dev/kvm

# Final check
kvm-ok

If the software workaround doesn't work, you'll need to:

  1. Enter BIOS setup (F2 during boot)
  2. Navigate to Security → Trusted Execution
  3. Disable "Trusted Execution Technology"
  4. Save changes and power cycle (full shutdown, not reboot)

Note: Some Dell systems hide these options under "Virtualization" → "VT for Direct I/O".

With older Intel Core 2 processors (like in OptiPlex 755), you might also need:

# For very old kernels
echo "options kvm-intel enable_apicv=0" | sudo tee /etc/modprobe.d/kvm-intel.conf

When working with KVM virtualization on older Dell hardware like the Optiplex 755, you might encounter a particularly frustrating scenario where VT (Virtualization Technology) appears enabled in BIOS but KVM stubbornly refuses to acknowledge it. The diagnostic messages tell two conflicting stories:

dmesg output shows:
[   57.887352] kvm: disable TXT in the BIOS or activate TXT before enabling KVM
[   57.887354] kvm: disabled by bios

Trusted Execution Technology (TXT) is often intertwined with VT-x on Dell systems. The BIOS might be reporting VT as "enabled" while actually keeping it disabled due to TXT-related security policies.

Try this diagnostic command to verify CPU flags:

grep -E 'vmx|svm' /proc/cpuinfo
# If no output appears, virtualization truly isn't available

Many pre-2010 Dell systems have a quirk where VT settings don't properly "stick" after BIOS changes. Here's the nuclear option that often works:

  1. Power off completely (not reboot)
  2. Unplug power cable for 2 minutes
  3. Enter BIOS and disable both VT and TXT
  4. Save and power off completely again
  5. Re-enable VT (leave TXT disabled)
  6. Perform another full power cycle

As a last resort, you can force KVM to ignore BIOS restrictions (not recommended for production):

# Edit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... ignore_msrs=1 kvm.ignore_bios=1"

# Then update grub and reboot
update-grub
reboot

If hardware VT remains unavailable, consider nested virt on a capable host:

# On the physical host:
modprobe kvm-intel nested=1
echo "options kvm-intel nested=1" > /etc/modprobe.d/kvm-intel.conf

Then configure your VM to pass through virtualization:

<cpu mode='host-passthrough' check='none'>
  <feature policy='require' name='vmx'/>
</cpu>