PowerPC L2(nested virt) kvm guest fails to boot with ic-mode=dual,kernel-irqchip=on - `KVM is too old to support ic-mode=dual,kernel-irqchip=on`
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
Greg Kurz |
Bug Description
Env:
HW: Power 9 DD2.3
Host L0: 5.8.0-rc5-
Qemu: 5.0.50 (v5.0.0-
Libvirt: 6.4.0
L1: 5.8.0-rc5-
qemu_version': '5.0.50 (v5.1.0-rc2-dirty)
libvirt_version': '6.4.0'
L2: 5.8.0-rc7-
1. boot a L2 KVM guest with `ic-mode=
/usr/bin/
hreads=4 --import --nographics --serial pty --memballoon model=virtio --disk path=/home/
=bridge=
v/vda2 rw console=tty0 console=
ERROR internal error: process exited while connecting to monitor: 2020-08-
Qemu Log:
```
/usr/share/
-name guest=vm1,
-S \
-object secret,
-machine pseries-
-cpu POWER9 \
-m 8192 \
-overcommit mem-lock=off \
-smp 8,sockets=
-uuid 20a3351b-
-display none \
-no-user-config \
-nodefaults \
-chardev socket,
-mon chardev=
-rtc base=utc \
-no-shutdown \
-boot strict=on \
-kernel /tmp/linux/vmlinux \
-append 'root=/dev/vda2 rw console=tty0 console=
-device qemu-xhci,
-device virtio-
-blockdev '{"driver"
-blockdev '{"node-
-device virtio-
-netdev tap,fd=
-device virtio-
-chardev pty,id=charserial0 \
-device spapr-vty,
-chardev socket,
-device virtserialport,
-device virtio-
-M pseries,
-msg timestamp=on
2020-08-04 11:12:53.169+0000: Domain id=5 is tainted: custom-argv
2020-08-04 11:12:53.179+0000: 11120: info : libvirt version: 6.4.0, package: 1.fc31 (Unknown, 2020-06-
2020-08-04 11:12:53.179+0000: 11120: info : hostname: atest-guest
2020-08-04 11:12:53.179+0000: 11120: info : virObjectUnref:347 : OBJECT_UNREF: obj=0x7fff0c117c40
char device redirected to /dev/pts/0 (label charserial0)
2020-08-
2020-08-04 11:12:53.694+0000: shutting down, reason=failed
```
summary: |
PowerPC L2(nested virt) kvm guest fails to boot with ic- - mode=dual,kernel-irqchip=on + mode=dual,kernel-irqchip=on - `KVM is too old to support ic- + mode=dual,kernel-irqchip=on` |
Changed in qemu: | |
status: | Fix Committed → In Progress |
status: | In Progress → Fix Committed |
This is currently expected because the L2 KVM guest uses the historical KVM XICS device (not the XICS-on-XIVE one) and this can be only created once during the VM lifetime for the moment.
This is a limitation in KVM, that can be addressed in several ways:
1) change the historical KVM XICS device to implement the release() method instead of destroy(), so that userspace can close() and re-create the device multiple times during the VM lifetime, as we have already done in KVM XIVE and KVM XICS-on-XIVE for powernv
2) have the KVM XICS-on-XIVE device to work under pseries
I already have a tentative patch for 1) and I guess 2) would be part of a more global work to supporting nested KVM XIVE.
But it is definitely not an issue in QEMU.