Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 2178385

Summary: System hang when do cpu hotplug on Win2022 guest
Product: Red Hat Enterprise Linux Advanced Virtualization Reporter: Peixiu Hou <phou>
Component: qemu-kvmAssignee: Virtualization Maintenance <virt-maint>
qemu-kvm sub component: CPU Models QA Contact: Virtualization Bugs <virt-bugs>
Status: CLOSED DUPLICATE Docs Contact:
Severity: high    
Priority: high CC: coli, jinzhao, juzhang, nanliu, qizhu, virt-maint
Version: 8.0Flags: pm-rhel: mirror+
Target Milestone: rc   
Target Release: 8.5   
Hardware: x86_64   
OS: Windows   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-03-15 03:17:09 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-03-15 03:13:59 UTC
Description of problem:

System hang when do cpu hotplug on Win2022 guest.
Tested with seabios mode, hit it on Win2022 guest, and did not hit on Win2019 guest.

Version-Release number of selected component (if applicable):
HOST: RHEL9.2.0
Guest: Win2022
kernel-5.14.0-249.el9.x86_64
qemu-kvm-7.2.0-8.el9.x86_64
seabios-bin-1.16.1-1.el9.noarch
virtio-win-prewhql-234

How reproducible:
100%

Steps to Reproduce:
1.Boot the Win2022 guest up with all hv flags:

/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/hyper-v-run/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_reset,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_frequencies,hv_runtime,hv_tlbflush,hv_reenlightenment,hv_stimer_direct,hv_evmcs,hv_crash,hv_ipi,+kvm_pv_unhalt \
    -no-hpet \
    -smp 4,maxcpus=6,cores=3,threads=1,dies=1,sockets=2 \
    -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/winutils.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.$ telnet 10.73.72.118 1232
3.{"QMP": {"version": {"qemu": {"micro": 0, "minor": 2, "major": 7}, "package": "qemu-kvm-7.2.0-8.el9"}, "capabilities": ["oob"]}}
{"execute": "qmp_capabilities"}

4. {"execute": "query-hotpluggable-cpus"}

{"return": [{"props": {"core-id": 2, "thread-id": 0, "socket-id": 1}, "vcpus-count": 1, "type": "Icelake-Server-noTSX-x86_64-cpu"}, {"props": {"core-id": 1, "thread-id": 0, "socket-id": 1}, "vcpus-count": 1, "type": "Icelake-Server-noTSX-x86_64-cpu"}, {"props": {"core-id": 0, "thread-id": 0, "socket-id": 1}, "vcpus-count": 1, "qom-path": "/machine/unattached/device[4]", "type": "Icelake-Server-noTSX-x86_64-cpu"}, {"props": {"core-id": 2, "thread-id": 0, "socket-id": 0}, "vcpus-count": 1, "qom-path": "/machine/unattached/device[3]", "type": "Icelake-Server-noTSX-x86_64-cpu"}, {"props": {"core-id": 1, "thread-id": 0, "socket-id": 0}, "vcpus-count": 1, "qom-path": "/machine/unattached/device[2]", "type": "Icelake-Server-noTSX-x86_64-cpu"}, {"props": {"core-id": 0, "thread-id": 0, "socket-id": 0}, "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]", "type": "Icelake-Server-noTSX-x86_64-cpu"}]}

5. On the guest, check the Processors in Device manager.
There are 4 processors show out.

6. Do Cpu hotplug on qmp monitor:
{ "execute": "device_add","arguments":{"driver":"Icelake-Server-noTSX-x86_64-cpu","core-id": 1, "thread-id": 0, "socket-id": 1,"id":"cpu2" }}

{"timestamp": {"seconds": 1678090670, "microseconds": 169066}, "event": "ACPI_DEVICE_OST", "data": {"info": {"device": "cpu2", "source": 0, "status": 0, "slot": "4", "slot-type": "CPU"}}}
{"return": {}}

7. Check the processor status in windows guest device manager.
There are 5 processors shown, but the system was hang, mouse cannot be moved on the desktop.

8. Try to system_reset the system, after reset, the system restore to work.

9. Try to hotplug another cpu:
{ "execute": "device_add","arguments":{"driver":"Icelake-Server-noTSX-x86_64-cpu","core-id": 2, "thread-id": 0, "socket-id": 1,"id":"cpu1" }}

{"return": {}}
{"timestamp": {"seconds": 1678090958, "microseconds": 503971}, "event": "ACPI_DEVICE_OST", "data": {"info": {"device": "cpu1", "source": 0, "status": 0, "slot": "5", "slot-type": "CPU"}}}

Actual results:
System hang

Expected results:
Smoothly pass

Additional info:

Comment 1 Peixiu Hou 2023-03-15 03:17:09 UTC

*** This bug has been marked as a duplicate of bug 2178384 ***