** Description changed:

+ [ Impact ]
+ Users reported that when trying to launch a VM from the UEFI-enabled image on 
Ubuntu 24.04 (Noble) with ovmf package versions 2024.02-2ubuntu0.5 and later, 
the VM fails to launch because nova doesn't know some of the libvirt-provided 
firmware features. As a result, they can't run UEFI-booted VMs.
+ 
+ This problem has already been resolved in the upstream code [1]. I have
+ verified that the upstream patch fixes the problem with launching a
+ UEFI-enabled VM on Resolute and Questing.
+ 
+ [1]
+ 
https://opendev.org/openstack/nova/commit/d2188b9e6b35ba512661711165cef706f8bed693
+ 
+ [ Test Plan ]
+ 1. Deploy the regress-stack on a Resolute VM
+ (make sure the VM has enough resources to run regress-stack):
+ sudo apt update && sudo apt upgrade -y
+ sudo apt install -y dpkg-dev python3-dev python-apt-dev
+ sudo snap install astral-uv --classic
+ git clone https://github.com/canonical/regress-stack.git
+ cd regress-stack
+ # Python and dependency version pinning
+ uv python pin 3.13
+ sed -i 's/requires-python = ".*"/requires-python = ">=3.13"/' pyproject.toml
+ sed -i 's/^    "python-apt"/#    "python-apt"/' pyproject.toml
+ sed -i 's/^python-apt =/#python-apt = /' pyproject.toml
+ 
+ # Nova and Neutron service name fixes
+ sed -i 's/    core_utils.restart_service("neutron-server")/    
core_utils.restart_service("apache2")/' src/regress_stack/modules/neutron.py
+ sed -i '/    core_utils.restart_service("neutron-ovn-metadata-agent")/a\    
core_utils.restart_service("neutron-periodic-workers")' 
src/regress_stack/modules/neutron.py
+ sed -i '/    core_utils.restart_service("neutron-ovn-metadata-agent")/a\    
core_utils.restart_service("neutron-rpc-server")' 
src/regress_stack/modules/neutron.py
+ sed -i 's/    core_utils.restart_service("nova-api")/    
core_utils.restart_service("apache2")/' src/regress_stack/modules/nova.py
+ uvx pre-commit install
+ uv venv --system-site-packages --python-preference system
+ uv sync
+ uv run py.test
+ sudo apt install -y crudini ceph-mgr ceph-mon ceph-osd ceph-volume 
mysql-server keystone apache2 libapache2-mod-wsgi-py3 glance-api ovn-central 
openvswitch-switch ovn-host placement-api rabbitmq-server cinder-api 
cinder-scheduler cinder-volume neutron-server neutron-ovn-metadata-agent 
nova-api nova-conductor nova-scheduler nova-compute nova-spiceproxy spice-html5
+ sudo uv run regress-stack setup
+ sudo cp /root/auth.rc ~
+ sudo chown $(id -u):$(id -g) ~/auth.rc
+ source ~/auth.rc
+ 
+ # verify OpenStack is up and running:
+ openstack endpoint list
+ openstack service list
+ openstack hypervisor list
+ 
+ 2. Create required resources in OpenStack
+ wget 
https://cloud-images.ubuntu.com/releases/noble/release/ubuntu-24.04-server-cloudimg-amd64.img
+ openstack flavor create --ram 2048 --vcpus 1 --disk 20 m1.small
+ openstack keypair create testkey
+ openstack network create private
+ openstack subnet create --network private --ip-version 4 --subnet-range 
192.168.21.0/24 --allocation-pool start=192.168.21.2,end=192.168.21.254 
private_subnet
+ openstack image create --container-format bare --disk-format qcow2 --public 
--file ubuntu-24.04-server-cloudimg-amd64.img noble_uefi
+ openstack image set --property hw_machine_type=q35 --property 
hw_firmware_type=uefi noble_uefi
+ 
+ 3. Try to create a UEFI-enabled VM:
+ openstack server create --image noble_uefi --flavor m1.small --key-name 
testkey --network private noble1
+ 
+ Without the patch, the VM will end up in the ERROR state, 
/var/log/nova/nova-compute.log will contain the following error messages:
+ 2026-02-12 16:11:34.693 47928 INFO nova.virt.libvirt.host [None 
req-e741f97a-3201-40fc-9bb5-a76e2d378697 85da01e2dffd4b7d83a4ce1fb1713a39 
b71f3390a85142b2aa247e9070bd469b - - default default] UEFI support detected
+ 2026-02-12 16:11:34.694 47928 ERROR nova.compute.manager [None 
req-e741f97a-3201-40fc-9bb5-a76e2d378697 85da01e2dffd4b7d83a4ce1fb1713a39 
b71f3390a85142b2aa247e9070bd469b - - default default] [instance: 
c5c12f18-4189-4eeb-8784-97e6f77ea8fb] Instance failed to spawn: KeyError: 
'nvram-template'
+ 
+ With the patch applied, the VM will be successfully created
+ 
+ [ Where problems could occur ]
+ The patch modifies the code related/isolated to the UEFI-enabled VMs on 
KVM/libvirt hypervisors. The code change is small. If it causes a regression, 
most likely, a UEFI-enabled VM would not launch  (but they don't launch already 
due to this bug). The  /var/log/nova/nova-compute.log log should be examined to 
get a better understanding wof hat went wrong.
+ 
+ [ Other Info ]
+ 
+ The original bug description:
+ 
  Description
  ===========
  
  Recent CentOS and Fedora introduced a few new architecture patterns of OVMF 
firmware.
  However current nova does not handle these patterns appropriately and assumes 
that every firmware is always "statefull" and also "plash" type.
  
  1) mode=stateless
  example. 60-edk2-ovmf-x64-amdsev.json in Fedora 40
  ---
  {
      "description": "OVMF with SEV-ES support",
      "interface-types": [
          "uefi"
      ],
      "mapping": {
          "device": "flash",
          "mode": "stateless",
          "executable": {
              "filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd",
              "format": "raw"
          }
      },
      "targets": [
          {
              "architecture": "x86_64",
              "machines": [
                  "pc-q35-*"
              ]
          }
      ],
      "features": [
          "amd-sev",
          "amd-sev-es",
          "amd-sev-snp",
          "verbose-dynamic"
      ],
      "tags": [
  
      ]
  }
  ---
  
  2) device=memory
  example. 60-edk2-ovmf-x64-amdsev.json in CentOS Stream 10
  
  ---
  {
      "description": "OVMF with SEV-ES support",
      "interface-types": [
          "uefi"
      ],
      "mapping": {
          "device": "memory",
          "filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd"
      },
      "targets": [
          {
              "architecture": "x86_64",
              "machines": [
                  "pc-q35-*"
              ]
          }
      ],
      "features": [
          "amd-sev",
          "amd-sev-es",
          "amd-sev-snp",
          "verbose-dynamic"
      ],
      "tags": [
  
      ]
  }
  ---
  
  These files should be excluded when detecting the loader files, to avoid
  KeyError or launch time error.

** Also affects: nova (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: nova (Ubuntu Questing)
   Importance: Undecided
       Status: New

** Also affects: nova (Ubuntu Resolute)
   Importance: Undecided
       Status: New

** Also affects: nova (Ubuntu Noble)
   Importance: Undecided
       Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2122288

Title:
  Lack of proper handling of new firmware architectures

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2122288/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to