Bug 2169927

Summary: [virtio-win][vioscsi] Windows guest cannot boot into os after automatically restart triggered by BSOD
Product: Red Hat Enterprise Linux 9 Reporter: Peixiu Hou <phou>
Component: virtio-winAssignee: Yvugenfi <yvugenfi>
virtio-win sub component: virtio-win-prewhql QA Contact: Peixiu Hou <phou>
Status: CLOSED NOTABUG Docs Contact:
Severity: high    
Priority: high CC: coli, gveitmic, jinzhao, juzhang, menli, qizhu, vkuznets, vrozenfe
Version: 9.2Keywords: CustomerScenariosInitiative
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Windows   
Whiteboard:
Fixed In Version: Doc Type: Known Issue
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-08-03 12:20:21 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Peixiu Hou 2023-02-15 06:34:53 UTC
Description of problem:

Set the windows guest "automatically to restart" when system failure, then trigger NMI crash from qmp monitor, the windows guest show BSOD and saved a dump file, but Windows guest cannot boot into os after automatically restart triggered by nmi crash.

Version-Release number of selected component (if applicable):
OS: Windows 2022-64
kernel-5.14.0-249.el9.x86_64
qemu-kvm-7.2.0-5.el9.x86_64
seabios-bin-1.16.1-1.el9.noarch
virtio-win-1.9.31-0.el9_1.iso

How reproducible:
80%

Steps to Reproduce:
1. Boot the windows guest up with follows commands:

/usr/libexec/qemu-kvm \
    -name 'installer' \
    -machine q35 \
    -nodefaults \
    -vga std  \
    -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \
    -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \
    -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \
    -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \
    -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \
    -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 \
    -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 \
    -device pcie-root-port,port=0x17,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 \
    -device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pci.4,addr=0x0 \
    -blockdev node-name=file_image1,driver=file,cache.direct=on,cache.no-flush=off,filename=/home/kvm_autotest_root/images/win2022-64-virtio-scsi.qcow2,aio=threads \
    -blockdev node-name=drive_image1,driver=qcow2,cache.direct=on,cache.no-flush=off,file=file_image1 \
    -device scsi-hd,id=image1,drive=drive_image1,bus=virtio_scsi_pci0.0 \
    -blockdev node-name=file_stg1,driver=file,cache.direct=on,cache.no-flush=off,filename=stgtest1.qcow2,aio=threads \
    -blockdev node-name=drive_stg1,driver=qcow2,cache.direct=on,cache.no-flush=off,file=file_stg1 \
    -device virtio-blk-pci,id=stg1,drive=drive_stg1,bus=pci.8,addr=0x0 \
    -device virtio-net-pci,mac=9a:36:83:b6:3d:06,id=idJVpmsF,netdev=id23ZUK6,bus=pci.3  \
    -netdev tap,id=id23ZUK6,vhost=on \
    -m 14336  \
    -cpu 'Icelake-Server-noTSX',hv_stimer,hv_synic,hv_vpindex,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_frequencies,hv_runtime,hv_tlbflush,hv_reenlightenment,hv_stimer_direct,hv_ipi,+kvm_pv_unhalt \
    -no-hpet \
    -smp 2,maxcpus=4 \
    -drive id=drive_cd1,if=none,snapshot=off,aio=threads,cache=none,media=cdrom,file=/home/kvm_autotest_root/iso/ISO/Win2022/windows_server_2022_x64_testsigned_enable_dvd.iso \
    -device ide-cd,id=cd2,drive=drive_cd1,bus=ide.0,unit=0 \
    -cdrom /home/kvm_autotest_root/iso/windows/virtio-win-1.9.31-0.el9_1.iso\
    -device piix3-usb-uhci,id=usb -device usb-tablet,id=input0 \
    -vnc :2  \
    -rtc base=localtime,clock=host,driftfix=slew  \
    -boot order=cdn,once=c,menu=off,strict=off \
    -enable-kvm \
    -qmp tcp:0:1232,server,nowait \
    -monitor stdio \
    -device vmcoreinfo \
    -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 \

2. Check the guest run normally, and check the "automatically to restart" option when system failure.

3. Send a nmi command through qmp monitor:
(qemu) nmi

4. The windows guest will show BSOD, and start to save dump file.

5. After save dump to 100% progress, guest will restart.

6. Observe the restart status.   ----hit another BSOD, Picture as attachment~

Actual results:
Cannot boot into OS

Expected results:
Boot into OS normally

Additional info:
Tried test with  virtio-win-prewhql-0.1-234.iso, also reproduced it.

Comment 2 Yvugenfi@redhat.com 2023-05-01 08:10:29 UTC
It is mentioned in step 6 that there is a screenshot as an attachment. Can you double-check that the file was attached to BZ?

Thanks.