andrijapanicsb opened a new issue, #13806:
URL: https://github.com/apache/cloudstack/issues/13806
## Summary
On KVM, CloudStack does not specify a video model unless `vm.video.hardware`
(agent
property) or the `video.hardware` VM setting is set. libvirt then falls back
to its
x86 default, **cirrus** — a device QEMU deprecated years ago. With Windows
Server 2025
**Core**, the guest boots fine but the console never renders: `LogonUI.exe`
stays
completely blank (mouse cursor moves, keyboard input incl. Ctrl-Alt-Del is
delivered,
qemu-guest-agent works — only the display output is missing). The VM is
effectively
unusable via the console.
Switching the same VM to `video.hardware=vga` renders the logon UI
immediately.
Reported against 4.22/4.23-era code; the selection logic is unchanged on main
(`LibvirtComputingResource.createVideoDef()`: uses `vm.video.hardware`,
default null →
no `<video>` model emitted → libvirt default cirrus).
## Reproduction (A/B on the same VM)
Environment: EL9 KVM host (qemu-kvm 9.x), CloudStack KVM agent, guest =
Windows Server
2025 Standard Evaluation, **Server Core**, UEFI (OVMF), q35, virtio disk/NIC.
1. Start the VM with no video setting → libvirt gives `<model type='cirrus'
vram='16384'/>`.
- Guest boots (qemu-guest-agent responds, `guest-exec` works, CPU active).
- Console: LogonUI window frame visible, content area entirely black.
Mouse moves,
Ctrl-Alt-Del (sent via console and via `virsh send-key`) is accepted
but nothing
ever paints. (Screenshots available; can attach on request.)
2. Stop the VM, set VM setting `video.hardware=vga` (+ `video.ram=32768`),
start.
- Same boot, console immediately shows `Press Ctrl-Alt-Del to unlock` at
high
resolution. (Screenshot available.)
Data point narrowing the scope: a **Desktop Experience** (full UI) Windows
Server 2025
deployed on the same platform renders on cirrus — the total render failure
appears
specific to **Server Core**'s minimal logon/display stack. (Cirrus is still
limited to
1024x768-ish modes and 16 MB VRAM for every guest.)
## Why cirrus is the wrong default in 2026 (references)
1. **QEMU deprecation warning, emitted live on EL9** when CloudStack starts
such a VM:
`qemu-kvm: warning: 'cirrus-vga' is deprecated, please use a different
VGA card instead`
2. **QEMU switched its own default** away from cirrus to `-vga std` in
**QEMU 2.2 (2014)**
(see QEMU 2.2 changelog).
3. **Gerd Hoffmann (QEMU display maintainer), "qemu: using cirrus considered
harmful"**
(kraxel.org, 2014): 16 MB VRAM ceiling, no modes beyond 1024x768@24bpp,
depends on
ancient guest drivers; recommends stdvga for Windows guests.
4. **Ecosystem defaults**: virt-manager/virt-install (via libosinfo) select
vga/QXL/virtio
for modern guests; Proxmox VE defaults to std VGA; OpenStack Nova moved
its default
video model off cirrus. CloudStack is the outlier by inheriting libvirt's
legacy default.
## Proposal
- Emit an explicit `<video>` model on KVM instead of inheriting libvirt's
cirrus default.
`vga` (standard VBE) is the conservative candidate — every mainstream OS
since ~2005
drives it with inbox drivers; virtio-gpu could be opt-in where guest
drivers exist.
- A default change needs an OS render matrix (Windows 7/10/11, Server
2016-2025 Core and
Desktop, EL7-9, Ubuntu LTS, FreeBSD) — listing it here explicitly so the
scope is clear.
- At minimum until then: document that Windows Server 2025 Core requires
`video.hardware=vga`, and consider defaulting vga for Windows guest-OS
types.
## Workarounds (verified)
- Per VM: settings `video.hardware=vga`, `video.ram=32768` (stopped VM),
then start.
- Per host: agent property `vm.video.hardware=vga` in `agent.properties`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]