Description of problem: cross migration from rhel8.0av to rhel8.1av fails with rebootTimeout='-1' Version-Release number of selected component (if applicable): RHEL8.0av: libvirt-daemon-kvm-5.0.0-12.module+el8.0.1+3755+6782b0ed.x86_64 qemu-kvm-3.1.0-30.module+el8.0.1+3755+6782b0ed.x86_64 RHEL8.1av: libvirt-5.6.0-6.module+el8.1.0+4160+b50057dc.x86_64 qemu-kvm-4.1.0-13.module+el8.1.0+4164+854d66f5.x86_64 How reproducible: 100% Steps to Reproduce: 1.On rhel8.0.1 host, prepare a running guest with rebootTimeout='-1': #virsh dumpxml iommu2 <os> ... <bios rebootTimeout='-1'/> </os> 2.Check the qemu cmd line: #ps aux | grep -i qemu /usr/libexec/qemu-kvm -name guest=iommu2,..-boot reboot-timeout=-1,.. 3.Migrate the guest from rhel8.0.1 host to rhel8.1.0 host: ## virsh migrate iommu2 qemu+ssh://10.73.73.110/system --live --verbose root.73.110's password: error: internal error: process exited while connecting to monitor: 2019-10-25T05:52:54.615360Z qemu-kvm: reboot timeout is invalid,it should be a value between 0 and 65535 Actual results: Migration fails Expected results: Migration succeeds Additional info:
This happens before we actually get to migration; qemu rejects reboot-timeout=-1 at startup due to commit ee5d0f89de3. Yet qemu documents reboot-timeout=-1 as being both the default and meaning 'guest will not reboot. Lets ask Philippe what fw_cfg is expecting to happen.
It's also documented as working in the libvirt xml: https://libvirt.org/formatdomain.html#elementsOSBIOS Since 0.9.4. Since 0.10.2 (QEMU only) there is another attribute, rebootTimeout that controls whether and after how long the guest should start booting again in case the boot fails (according to BIOS). The value is in milliseconds with maximum of 65535 and special value -1 disables the reboot.
actually, looks like an easy fix, will post.
posted: fw_cfg: Allow reboot-timeout=-1 again
CC'ing Michal Privoznik since I see he was reviewing a libvirt change to remove the -1 feature.
merged upstream for 4.2; commit: 20a192203222efde055d fw_cfg: Allow reboot-timeout=-1 again should get it when we upgrade to 4.2
Please check if it is worthwhile to be fixed in RHEL8.1-AV. Because the problem is introduced in qemu-4.0, it will obviously cause migration failure when <bios rebootTimeout='-1'/> dest host RHEL8.1-AV. For the influence of products, I have no evindence that any uplayer products like vdsm, nova, and kubevirt are using this attrib. So I think there is no impact on these products.
(In reply to Han Han from comment #8) > Please check if it is worthwhile to be fixed in RHEL8.1-AV. > Because the problem is introduced in qemu-4.0, it will obviously cause > migration failure > when <bios rebootTimeout='-1'/> dest host RHEL8.1-AV. > > For the influence of products, I have no evindence that any uplayer products > like vdsm, nova, > and kubevirt are using this attrib. So I think there is no impact on these > products. Agreed Thanks Jing
QEMU has been recently split into sub-components and as a one-time operation to avoid breakage of tools, we are setting the QEMU sub-component of this BZ to "General". Please review and change the sub-component if necessary the next time you review this BZ. Thanks
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2020:2017