Bug 1440584

Summary: [pci-bridge] The hotplugged virtio-blk-pci disk attached to a pci bridge disapears after hotplugging a virtio-scsi-pci device to another parallel pci bridge in Windows 10 guest
Product: Red Hat Enterprise Linux 7 Reporter: yduan
Component: qemu-kvm-rhevAssignee: Marcel Apfelbaum <marcel>
Status: CLOSED DUPLICATE QA Contact: Virtualization Bugs <virt-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.4CC: chayang, jinzhao, juzhang, knoel, lijin, qzhang, virt-maint, xfu, yduan
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-05-16 08:00:36 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:
Attachments:
Description Flags
Device Manager none

Description yduan 2017-04-10 03:10:03 UTC
Created attachment 1270361 [details]
Device Manager

Description of problem:
  The hotplugged virtio-blk-pci disk attached to a pci bridge disapears after hotplugging a virtio-scsi-pci device to another parallel pci bridge in Windows 10 guest.

Version-Release number of selected component (if applicable):
Host:
# rpm -q qemu-kvm-rhev
qemu-kvm-rhev-2.9.0-0.el7.patchwork201703291116.x86_64
# uname -r
3.10.0-635.el7.x86_64
Guest:
Windows 10 x64

How reproducible:
5/5

Steps to Reproduce:
1.Boot a guest with 8 pci-bridges:
/usr/libexec/qemu-kvm \
 -machine pc \
 -m 4096 \
 -smp 2,maxcpus=2,sockets=1,cores=2,threads=1 \
 -cpu SandyBridge,enforce \
 -rtc base=localtime,clock=host,driftfix=slew \
 -nodefaults \
 -device AC97 \
 -vga qxl \
 -chardev socket,id=seabioslog_log,path=/tmp/seabios-log,server,nowait \
 -device isa-debugcon,chardev=seabioslog_log,iobase=0x402 \
 -device usb-ehci,id=usb1 \
 -device usb-tablet,id=usb-tablet1 \
 -boot menu=on \
 -enable-kvm \
 -monitor stdio \
 -spice port=5900,disable-ticketing \
 -qmp tcp:0:9999,server,nowait \
 -drive file=/mnt/virtio-win-prewhql-0.1-135.iso,id=drive_cd,format=raw,if=none,cache=none,media=cdrom,readonly=on \
 -device ide-cd,drive=drive_cd,id=device_cd \
 -drive file=/mnt/win10-64-virtio.qcow2,format=qcow2,id=drive_sysdisk,if=none,cache=none,aio=native,werror=stop,rerror=stop \
 -device virtio-blk-pci,drive=drive_sysdisk,id=device_sysdisk,bootindex=0 \
 -device pci-bridge,id=bridge1,chassis_nr=1 \
 -device pci-bridge,id=bridge2,chassis_nr=2 \
 -device pci-bridge,id=bridge3,chassis_nr=3 \
 -device pci-bridge,id=bridge4,chassis_nr=4 \
 -device pci-bridge,id=bridge5,chassis_nr=5 \
 -device pci-bridge,id=bridge6,chassis_nr=6 \
 -device pci-bridge,id=bridge7,chassis_nr=7 \
 -device pci-bridge,id=bridge8,chassis_nr=8 \

2.Hotplug a virtio-blk-pci disk attached to bridge1:
{"execute":"__com.redhat_drive_add","arguments":{"file":"/mnt/blk5.qcow2","format":"qcow2","id":"drive_blk"}}
{"return":{}}
{"execute":"device_add","arguments":{"driver":"virtio-blk-pci","drive":"drive_blk","id":"device_blk","bus":"bridge1","addr":0}}
{"return":{}}

3.Hotplug a scsi disk attached to bridge2:
{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi1","bus":"bridge2","addr":1}}
{"return":{}}
{"execute":"__com.redhat_drive_add","arguments":{"file":"/mnt/scsi6.qcow2","format":"qcow2","id":"drive_scsi"}}
{"return":{}}
{"execute":"device_add","arguments":{"driver":"scsi-hd","drive":"drive_scsi","id":"device_scsi","bus":"scsi1.0"}}
{"return":{}}

Actual results:
The hotplugged virtio-blk-pci disk disappears after hotplugging virtio-scsi-pci device to bridge2.
{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi1","bus":"bridge2","addr":1}}

Expected results:
The hotplugged virtio-blk-pci disk should not be interfered by step 3.

Additional info:
1.Cannot be reproduced with qemu-kvm-rhev-2.8.0-6.el7.x86_64.

2.The screenshot of Device Manager is as attachment.

3.Cannot be reproduced with reverse hotplug order blew:
{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi1","bus":"bridge2","addr":1}}
{"return":{}}
{"execute":"__com.redhat_drive_add","arguments":{"file":"/mnt/scsi6.qcow2","format":"qcow2","id":"drive_scsi"}}
{"return":{}}
{"execute":"device_add","arguments":{"driver":"scsi-hd","drive":"drive_scsi","id":"device_scsi","bus":"scsi1.0"}}
{"return":{}}
{"execute":"__com.redhat_drive_add","arguments":{"file":"/mnt/blk5.qcow2","format":"qcow2","id":"drive_blk"}}
{"return":{}}
{"execute":"device_add","arguments":{"driver":"virtio-blk-pci","drive":"drive_blk","id":"device_blk","bus":"bridge1","addr":0}}
{"return":{}}

Comment 3 yduan 2017-04-14 10:12:40 UTC
Can not reproduced with Win2012R2 guest.

Additional info:
virtio-win-prewhql-0.1-135

Comment 4 yduan 2017-04-14 10:34:52 UTC
Correct:

> Can not reproduced with Win2012R2 guest.

  Can be reproduced with Win2012R2 guest.
> 
> Additional info:
> virtio-win-prewhql-0.1-135

Comment 5 Marcel Apfelbaum 2017-05-15 13:25:42 UTC
I think the problem is related to:
   https://bugzilla.redhat.com/show_bug.cgi?id=1434706
Because of the above issue, empty bridges can't be used.

To ensure this is the problem add please to bridges: shpc=on

 -device pci-bridge,id=bridge1,chassis_nr=1,shpc=on \
 -device pci-bridge,id=bridge2,chassis_nr=2,shpc=on \
 -device pci-bridge,id=bridge3,chassis_nr=3,shpc=on \
 -device pci-bridge,id=bridge4,chassis_nr=4,shpc=on \
 -device pci-bridge,id=bridge5,chassis_nr=5,shpc=on \
 -device pci-bridge,id=bridge6,chassis_nr=6,shpc=on \
 -device pci-bridge,id=bridge7,chassis_nr=7,shpc=on \
 -device pci-bridge,id=bridge8,chassis_nr=8,shpc=on \


I incline to close this BZ as duplicate, please let me know
if setting shpc=on solves the problem.

Thanks,
Marcel

Comment 6 yduan 2017-05-16 03:05:29 UTC
(In reply to Marcel Apfelbaum from comment #5)
> I think the problem is related to:
>    https://bugzilla.redhat.com/show_bug.cgi?id=1434706
> Because of the above issue, empty bridges can't be used.
> 
> To ensure this is the problem add please to bridges: shpc=on
> 
>  -device pci-bridge,id=bridge1,chassis_nr=1,shpc=on \
> 
> I incline to close this BZ as duplicate, please let me know
> if setting shpc=on solves the problem.
> 
Hi Marcel,

  Yes, you're right. The problem cannot be reproducible when set "shpc=on".

Thanks,
yduan

Comment 7 Marcel Apfelbaum 2017-05-16 08:00:36 UTC

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