mirror of
git://git.proxmox.com/git/qemu-server.git
synced 2025-01-05 09:17:55 +03:00
cfg2cmd: turn smm off when SeaBIOS and serial display are used
Since commit 277d33454f77ec1d1e0bc04e37621e4dd2424b67 in pve-qemu, smm=off is no longer the default, but with SeaBIOS and serial display, this can lead to a boot loop. Reported in the community forum [0] and reproduced with a Debian 10 VM. [0]: https://forum.proxmox.com/threads/pve-7-0-all-vms-with-cloud-init-seabios-fail-during-boot-process-bootloop-disk-not-found.97310/post-427129 Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
bf67da2bf7
commit
e5a6919c38
@ -3403,6 +3403,16 @@ my sub get_cpuunits {
|
||||
my ($conf) = @_;
|
||||
return $conf->{cpuunits} // (PVE::CGroup::cgroup_mode() == 2 ? 100 : 1024);
|
||||
}
|
||||
|
||||
# Since commit 277d33454f77ec1d1e0bc04e37621e4dd2424b67 in pve-qemu, smm is not off by default
|
||||
# anymore. But smm=off seems to be required when using SeaBIOS and serial display.
|
||||
my sub should_disable_smm {
|
||||
my ($conf, $vga) = @_;
|
||||
|
||||
return (!defined($conf->{bios}) || $conf->{bios} eq 'seabios') &&
|
||||
$vga->{type} && $vga->{type} =~ m/^serial\d+$/;
|
||||
}
|
||||
|
||||
sub config_to_command {
|
||||
my ($storecfg, $vmid, $conf, $defaults, $forcemachine, $forcecpu,
|
||||
$pbs_backing) = @_;
|
||||
@ -4002,6 +4012,8 @@ sub config_to_command {
|
||||
push @$machineFlags, 'accel=tcg';
|
||||
}
|
||||
|
||||
push @$machineFlags, 'smm=off' if should_disable_smm($conf, $vga);
|
||||
|
||||
my $machine_type_min = $machine_type;
|
||||
if ($add_pve_version) {
|
||||
$machine_type_min =~ s/\+pve\d+$//;
|
||||
|
16
test/cfg2cmd/seabios_serial.conf
Normal file
16
test/cfg2cmd/seabios_serial.conf
Normal file
@ -0,0 +1,16 @@
|
||||
# TEST: Test for smm-related regression with SeaBIOS and serial display
|
||||
bootdisk: scsi0
|
||||
cores: 3
|
||||
ide2: none,media=cdrom
|
||||
memory: 768
|
||||
name: seabiosserial
|
||||
net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0
|
||||
numa: 0
|
||||
ostype: l26
|
||||
scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K
|
||||
scsihw: virtio-scsi-pci
|
||||
serial0: socket
|
||||
smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
|
||||
sockets: 1
|
||||
vga: serial0
|
||||
vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
|
33
test/cfg2cmd/seabios_serial.conf.cmd
Normal file
33
test/cfg2cmd/seabios_serial.conf.cmd
Normal file
@ -0,0 +1,33 @@
|
||||
/usr/bin/kvm \
|
||||
-id 8006 \
|
||||
-name seabiosserial \
|
||||
-no-shutdown \
|
||||
-chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
|
||||
-mon 'chardev=qmp,mode=control' \
|
||||
-chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \
|
||||
-mon 'chardev=qmp-event,mode=control' \
|
||||
-pidfile /var/run/qemu-server/8006.pid \
|
||||
-daemonize \
|
||||
-smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
|
||||
-smp '3,sockets=1,cores=3,maxcpus=3' \
|
||||
-nodefaults \
|
||||
-boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
|
||||
-nographic \
|
||||
-cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \
|
||||
-m 768 \
|
||||
-device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \
|
||||
-device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \
|
||||
-device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
|
||||
-device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \
|
||||
-chardev 'socket,id=serial0,path=/var/run/qemu-server/8006.serial0,server=on,wait=off' \
|
||||
-device 'isa-serial,chardev=serial0' \
|
||||
-device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \
|
||||
-iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
|
||||
-drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' \
|
||||
-device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' \
|
||||
-device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' \
|
||||
-drive 'file=/var/lib/vz/images/8006/vm-8006-disk-0.qcow2,if=none,id=drive-scsi0,discard=on,format=qcow2,cache=none,aio=io_uring,detect-zeroes=unmap' \
|
||||
-device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' \
|
||||
-netdev 'type=tap,id=net0,ifname=tap8006i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' \
|
||||
-device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' \
|
||||
-machine 'smm=off,type=pc+pve0'
|
Loading…
Reference in New Issue
Block a user