SEV-SNP VM with H100 GPU Passthrough Fails in KubeVirt

Environment

  • Host OS: Ubuntu 24.04
    CPU: AMD EPYC (SEV-SNP capable, API v1.55, build 39)
    GPU: NVIDIA H100 PCIe (10DE:2331)
    KubeVirt: v1.7.0
    QEMU: qemu-kvm-10.1.0-10.el9
    Machine Type: pc-q35-rhel9.8.0
    OVMF: OVMF.amdsev.fd
    Guest OS: Ubuntu 24.04 Cloud Image (noble-server-cloudimg-amd64.img)

Problem Description

SEV-SNP confidential VM with H100 GPU passthrough pauses immediately after kernel message “Freeing SMP alternatives memory: 48K” with QEMU reporting internal-error status.

Test Matrix

Configuration Result
KubeVirt + SNP + H100 GPU ❌ FAILS - pauses at “Freeing SMP alternatives memory”
KubeVirt + SNP + No GPU ✅ Works - boots fully
KubeVirt + No SNP + H100 GPU ✅ Works - boots fully
Bare-metal QEMU + SNP + H100 GPU ✅ Works - boots fully

QEMU Status When Failed

json

{"return":{"status":"internal-error","running":false}}

SEV Status (SNP is enabled)

json

{"return":{"enabled":true,"api-minor":55,"state":"running","api-major":1,"snp-policy":196608,"sev-type":"sev-snp","build-id":39}}
```

### Last Kernel Messages Before Pause
```
[    2.182403] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format.
[    2.211898] Freeing SMP alternatives memory: 48K
```

### Key QEMU Command Line Parameters
```
-machine pc-q35-rhel9.8.0,usb=off,vmport=off,dump-guest-core=off,acpi=on
-cpu EPYC-v4,mpx=off
-bios /var/run/kubevirt-private/vmi-disks/ovmf-hostdisk/OVMF.amdsev.fd
-object {"qom-type":"memory-backend-memfd","id":"ram-node0","share":true,"size":17179869184}
-object sev-snp-guest,id=sev0,cbitpos=51,reduced-phys-bits=1
-machine confidential-guest-support=sev0
-device {"driver":"vfio-pci","host":"0000:21:00.0","id":"ua-hostdevice-gpu1","bus":"pci.11","addr":"0x0","rombar":0}

Working Bare-Metal Configuration

The same SNP + H100 configuration works when running QEMU directly on bare-metal with:

  • QEMU: qemu-system-x86_64 9.2.1 (Ubuntu)
    Machine type: q35 (generic)
    Same OVMF, same guest image, same GPU

Steps to Reproduce

  1. Deploy KubeVirt v1.7.0 with RHEL QEMU 10.1.0

  2. Create SEV-SNP enabled VM with H100 GPU passthrough

  3. Use standard OVMF.amdsev.fd and Ubuntu 24.04 cloud image

  4. VM boots but pauses at “Freeing SMP alternatives memory: 48K”

Request

  1. Is SEV-SNP + H100 GPU passthrough supported in KubeVirt/QEMU?

  2. Recommended QEMU version and configuration for this use case

  3. Any known workarounds or patches