diff --git a/tests/templates/globals-default.j2 b/tests/templates/globals-default.j2
index 31d96bc619..c548417b5c 100644
--- a/tests/templates/globals-default.j2
+++ b/tests/templates/globals-default.j2
@@ -23,6 +23,8 @@ keepalived_virtual_router_id: "{{ 250 | random(1) }}"
 mariadb_wsrep_extra_provider_options:
   - "gmcast.peer_timeout=PT15S"
 
+nova_compute_virt_type: "{{ virt_type }}"
+
 enable_openstack_core: "{{ openstack_core_enabled }}"
 enable_horizon: "{{ dashboard_enabled }}"
 enable_heat: "{{ openstack_core_tested }}"
diff --git a/tests/templates/nova-compute-overrides.j2 b/tests/templates/nova-compute-overrides.j2
index 5ad30c8e4b..26c756a043 100644
--- a/tests/templates/nova-compute-overrides.j2
+++ b/tests/templates/nova-compute-overrides.j2
@@ -1,9 +1,5 @@
 [libvirt]
-virt_type=qemu
-# NOTE(Jeffrey4l): fix the gate in iax-ord nodes for libvirt 2.0.
 {% if ansible_architecture == 'aarch64' %}
 cpu_mode=custom
 cpu_model=max
-{% else %}
-cpu_mode=none
 {% endif %}
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index c59141e57b..e554a2d2d8 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -28,6 +28,7 @@
     vars:
       previous_release: ussuri
       scenario: core
+      virt_type: qemu
       is_upgrade: no
       api_network_prefix: "192.0.2."
       api_network_prefix_length: "24"
@@ -44,6 +45,15 @@
     roles:
       - zuul: zuul/zuul-jobs
 
+- job:
+    name: kolla-ansible-kvm-base
+    parent: kolla-ansible-base
+    voting: false
+    files:
+      - ^ansible/roles/(nova-cell)/
+    vars:
+      virt_type: kvm
+
 - job:
     name: kolla-ansible-ipv6-base
     parent: kolla-ansible-base
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index c7e9f3f220..ff91397e1f 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -36,6 +36,14 @@
       install_type: source
       tls_enabled: true
 
+- job:
+    name: kolla-ansible-ubuntu-source-kvm
+    parent: kolla-ansible-kvm-base
+    nodeset: kolla-ansible-bionic-nested-virt
+    vars:
+      base_distro: ubuntu
+      install_type: source
+
 - job:
     name: kolla-ansible-ubuntu-source-multinode-ipv6
     parent: kolla-ansible-ipv6-base
diff --git a/zuul.d/nodesets.yaml b/zuul.d/nodesets.yaml
index d6f573b025..25ad0936e0 100644
--- a/zuul.d/nodesets.yaml
+++ b/zuul.d/nodesets.yaml
@@ -82,3 +82,9 @@
         nodes:
           - secondary1
           - secondary2
+
+- nodeset:
+    name: kolla-ansible-bionic-nested-virt
+    nodes:
+      - name: primary
+        label: nested-virt-ubuntu-bionic
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index dfb23cda50..16286751e0 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -14,6 +14,7 @@
         - kolla-ansible-centos8-source
         - kolla-ansible-debian-source
         - kolla-ansible-ubuntu-source
+        - kolla-ansible-ubuntu-source-kvm
         - kolla-ansible-ubuntu-source-multinode-ipv6
         - kolla-ansible-centos8-source-bifrost
         - kolla-ansible-centos8-source-zun