Bug 1257407

Summary: win2016 BSOD if hotplug cpu via qemu
Product: Red Hat Enterprise Linux 7 Reporter: Qian Guo <qiguo>
Component: qemu-kvm-rhevAssignee: Yvugenfi <yvugenfi>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.2CC: juzhang, knoel, lijin, michen, qiguo, virt-maint, zhguo
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-08-16 07:17:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1288337    
Attachments:
Description Flags
The minidump file of the BSOD none

Description Qian Guo 2015-08-27 03:33:53 UTC
Description of problem:
Once execute "cpu-add $cpuid", guest hit BSOD

Version-Release number of selected component (if applicable):
qemu-kvm-rhev-2.3.0-19.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.Boot win2016 with maxcpus
...
    -smp 4,sockets=1,cores=4,threads=1,maxcpus=240 \
...

2.Hotplug cpu
(qemu) cpu-add 4

3.

Actual results:
gueset BSOD

Expected results:
works well after hotplug cpu.

Additional info:
the full cli:
/usr/libexec/qemu-kvm \
    -name rhel7.0 \
    -S \
    -machine pc-i440fx-rhel7.2.0,accel=kvm,usb=off,vmport=off \
    -cpu SandyBridge \
    -m 4096 \
    -realtime mlock=off \
    -sandbox off \
    -smp 4,sockets=1,cores=4,threads=1,maxcpus=240 \
    -uuid fbf54917-5833-48f2-b3fb-5ce2ad294d93 \
    -no-user-config \
    -nodefaults \
    -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/rhel7cp1.0.monitor,server,nowait \
    -mon chardev=charmonitor,id=monitor,mode=control \
    -rtc base=utc,driftfix=slew \
    -global kvm-pit.lost_tick_policy=discard \
    -no-hpet \
    -no-shutdown \
    -global PIIX4_PM.disable_s3=1 \
    -global PIIX4_PM.disable_s4=1 \
    -boot menu=on \
    -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 \
    -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 \
    -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 \
    -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 \
    -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
    -drive file=/home/win2016.qcow2,snapshot=off,cache=none,if=none,id=drive-virtio-disk0,format=qcow2 \
    -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
    -netdev tap,vhost=on,script=/etc/qemu-ifup,id=hostnet0 \
    -device virtio-net-pci,disable-modern=on,disable-legacy=off,netdev=hostnet0,id=net0,mac=52:54:00:0b:02:81,bus=pci.0,addr=0x3 \
    -chardev pty,id=charserial0 \
    -device isa-serial,chardev=charserial0,id=serial0 \
    -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/rhel7cp1.0.org.qemu.guest_agent.0,server,nowait \
    -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 \
    -chardev spicevmc,id=charchannel1,name=vdagent \
    -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 \
    -device usb-tablet,id=input0 \
    -spice port=5901,disable-ticketing,seamless-migration=on \
    -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,bus=pci.0,addr=0x2 \
    -device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
    -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
    -chardev spicevmc,id=charredir0,name=usbredir \
    -device usb-redir,chardev=charredir0,id=redir0 \
    -chardev spicevmc,id=charredir1,name=usbredir \
    -device usb-redir,chardev=charredir1,id=redir1 \
    -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 \
    -msg timestamp=on \
    -monitor stdio \
    -qmp unix:/tmp/q1,server,nowait \



Did not hit it with RHEL7.2 guest.

Comment 2 Qian Guo 2015-08-27 03:56:05 UTC
Created attachment 1067489 [details]
The minidump file of the BSOD

Comment 3 Yvugenfi@redhat.com 2015-09-07 15:04:47 UTC
2016 is not fully supported yet, moving to 7.3

Comment 4 Yvugenfi@redhat.com 2015-10-04 08:34:35 UTC
What release of Windows 2016 was tested?

Comment 5 Qian Guo 2015-10-08 01:14:09 UTC
(In reply to Yan Vugenfirer from comment #4)
> What release of Windows 2016 was tested?

Hi, Yan

I can not recall it, but it is one of the followings:
en_windows_server_2016_technical_preview_3_x64_dvd_6942082.iso
en_windows_server_technical_preview_2_x64_dvd_6687981.iso


Thanks,
Qian

Comment 8 Yvugenfi@redhat.com 2016-08-01 08:47:28 UTC
Please retest with latest release of Windows Server 2016 - https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview

Comment 9 juzhang 2016-08-01 08:49:00 UTC
(In reply to Yan Vugenfirer from comment #8)
> Please retest with latest release of Windows Server 2016 -
> https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-
> preview

Hi Zhiyi,

Could you have a try when you are available?

Best Regards,
Junyi

Comment 10 Guo, Zhiyi 2016-08-16 06:11:50 UTC
Test against latest windows 2016 pt5 datacenter guest & latest cpu hotplug method, guest obtain a hotplug cpu successfully without BSOD.
qemu package used:
qemu-kvm-rhev-2.6.0-20.el7
host kernel:
3.10.0-489.el7.x86_64

qemu-cmd used:
/usr/libexec/qemu-kvm \
-name win2k16 \
-machine pc-i440fx-rhel7.0.0,accel=kvm,usb=off \
-cpu Haswell,-hle,-rtm \
-m 4096 \
-realtime mlock=off \
-smp 1,sockets=1,cores=6,threads=1,maxcpus=6 \
-uuid d4988cbb-eed4-4f43-b771-74c2500f9d34 \
-no-user-config \
-nodefaults \
-rtc base=utc,driftfix=slew \
-global kvm-pit.lost_tick_policy=discard \
-no-hpet \
-no-shutdown \
-global PIIX4_PM.disable_s3=1 \
-global PIIX4_PM.disable_s4=1 \
-boot strict=on \
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x6.0x7 \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x6 \
-device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x6.0x1 \
-device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x6.0x2 \
-device ahci,id=sata0,bus=pci.0,addr=0x5 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 \
-drive file=/home/win2k16.qcow2,format=qcow2,if=none,id=drive-sata0-0-0 \
-device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0,bootindex=1 \
-drive if=none,id=drive-ide0-0-1,readonly=on \
-device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-0-1,id=ide0-0-1 \
-chardev spicevmc,id=charchannel0,name=vdagent \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 \
-vnc :0 \
-vga std \
-global VGA.vgamem_mb=16 \
-device intel-hda,id=sound0,bus=pci.0,addr=0x4 \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-chardev spicevmc,id=charredir0,name=usbredir \
-device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 \
-chardev spicevmc,id=charredir1,name=usbredir \
-device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 \
-qmp tcp:localhost:4444,server,nowait \
-msg timestamp=on \
-monitor stdio \

steps:
issue following cmd to qmp port:
{ "execute": "qmp_capabilities" }
{ "execute": "device_add","arguments":{"driver":"Haswell-x86_64-cpu","core-id": 4, "thread-id": 0, "socket-id": 0,"id":"core5"}}

Results:
guest obtain a hotplug cpu successfully without BSOD.

Use (qemu) cpu-add 1/2/3, guest also obtain correct hotplug cpus successfully without BSOD

Comment 11 Yvugenfi@redhat.com 2016-08-16 07:17:21 UTC
The issue was fixed by MS in the latest Windows Server 2016 preview.