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


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