RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1343301 - [Q35] Fail to hotplug virtual block device
Summary: [Q35] Fail to hotplug virtual block device
Keywords:
Status: CLOSED DUPLICATE of bug 1332408
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: qemu-kvm-rhev
Version: 7.3
Hardware: x86_64
OS: Linux
high
high
Target Milestone: rc
: ---
Assignee: Marcel Apfelbaum
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-06-07 05:42 UTC by yduan
Modified: 2016-08-19 01:38 UTC (History)
10 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-08-19 01:38:20 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Hotplug failed with windows10 guest (53.24 KB, image/png)
2016-06-07 05:42 UTC, yduan
no flags Details
OVMF debug log (113.84 KB, text/plain)
2016-06-30 09:41 UTC, yduan
no flags Details
"dmesg" in the guest (70.96 KB, text/plain)
2016-06-30 09:41 UTC, yduan
no flags Details
OVMF debug log when both downstream ports are vacant. (115.77 KB, text/plain)
2016-07-01 07:13 UTC, yduan
no flags Details
"dmesg" in the guest when both downstream ports are vacant. (73.19 KB, text/plain)
2016-07-01 07:14 UTC, yduan
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Bugzilla 1332408 0 high CLOSED Q35 machine can not hot-plug scsi controller under switch 2021-02-22 00:41:40 UTC

Internal Links: 1332408

Description yduan 2016-06-07 05:42:50 UTC
Created attachment 1165485 [details]
Hotplug failed with windows10 guest

Description of problem:
Fail to hotplug virtual block device

Version-Release number of selected component (if applicable):
Host:
  kernel: 3.10.0-418.el7.x86_64
  qemu-kvm-rhev-2.6.0-4.el7.x86_64
  OVMF-20160419-2.git90bb4c5.el7.noarch
Guest:
  kernel: 3.10.0-327.22.1.el7.x86_64

How reproducible:
100%

Steps to Reproduce:
1.Start VM with following commands:
/usr/libexec/qemu-kvm \
 -S \
 -name 'rhel6.8-x86' \
 -machine q35,accel=kvm,usb=off,vmport=off \
 -drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
 -drive file=/usr/share/OVMF/OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
 -m 4096 \
 -smp 4,maxcpus=4,cores=2,threads=2,sockets=1 \
 -cpu SandyBridge,enforce \
 -rtc base=localtime,clock=host,driftfix=slew \
 -nodefaults \
 -vga qxl \
 -device AC97,bus=pcie.0 \
 -chardev socket,id=qmp_id_qmpmonitor1,path=/tmp/monitor-qmpmonitor1-20151214-111528-C6FB1EaX,server,nowait \
 -mon chardev=qmp_id_qmpmonitor1,mode=control \
 -chardev socket,id=qmp_id_catch_monitor,path=/tmp/monitor-catch_monitor-20151214-111528-C6FB1EaX,server,nowait \
 -mon chardev=qmp_id_catch_monitor,mode=control \
 -device pvpanic,ioport=0x505,id=idSWJ5gV \
 -chardev socket,id=serial_id_serial0,path=/tmp/serial-serial0-20151214-111528-C6FB1EaX,server,nowait \
 -device isa-serial,chardev=serial_id_serial0 \
 -debugcon file:q35.ovmf.log \
 -global isa-debugcon.iobase=0x402 \
 -device ich9-usb-ehci1,id=usb1,addr=1e.7,multifunction=on,bus=pcie.0 \
 -device ich9-usb-uhci1,id=usb1.0,multifunction=on,masterbus=usb1.0,addr=1e.0,firstport=0,bus=pcie.0 \
 -device ich9-usb-uhci2,id=usb1.1,multifunction=on,masterbus=usb1.0,addr=1e.2,firstport=2,bus=pcie.0 \
 -device ich9-usb-uhci3,id=usb1.2,multifunction=on,masterbus=usb1.0,addr=1e.4,firstport=4,bus=pcie.0 \
 -device usb-tablet,id=usb-tablet1 \
 -netdev tap,id=netdev0,vhost=on,script=/etc/qemu-ifup,downscript=/etc/ifdown_script \
 -device virtio-net-pci,mac=BA:BC:13:83:4F:BD,id=net0,netdev=netdev0,status=on,bus=pcie.0,disable-legacy=on,disable-modern=off \
 -drive file=/home/backup/RHEL-7.2-20151030.0-Server-x86_64-dvd1.iso,if=none,media=cdrom,id=drive_cd,readonly=on,format=raw \
 -device ide-cd,bus=ide.0,drive=drive_cd,id=device_cd,bootindex=1 \
 -device ioh3420,bus=pcie.0,id=root.0,slot=1 \
 -device x3130-upstream,bus=root.0,id=upstream1 \
 -device xio3130-downstream,bus=upstream1,id=downstream1,chassis=1 \
 -device xio3130-downstream,bus=upstream1,id=downstream2,chassis=2 \
 -object iothread,id=iothread0 \
 -device virtio-scsi-pci,bus=downstream1,id=scsi_pci_bus0,iothread=iothread0,disable-legacy=on,disable-modern=off \
 -drive file=sysdisk.qcow2,format=qcow2,id=drive_sysdisk,if=none,cache=none,aio=native,werror=stop,rerror=stop \
 -device scsi-hd,drive=drive_sysdisk,bus=scsi_pci_bus0.0,id=device_sysdisk,bootindex=0 \
 -object iothread,id=iothread1 \
 -enable-kvm \
 -monitor stdio \
 -spice port=5900,disable-ticketing \
 -qmp tcp:0:9999,server,nowait \

2.'fdisk -l' in the guest.
# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
 
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
 
 
#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic
 3      1435648     62912511   29.3G  Linux LVM      
 
Disk /dev/mapper/rhel-root: 28.2 GB, 28210888704 bytes, 55099392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/mapper/rhel-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

3.Hot plug a data disk in QMP.
{"execute":"__com.redhat_drive_add", "arguments": {"file":"datadisk.qcow2","format":"qcow2","id":"drive_datadisk"}}
{"return": {}}

{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi_pci_bus1","bus":"downstream2","iothread":"iothread1"}}
{"return": {}}

{"execute":"device_add","arguments":{"driver":"scsi-hd","drive":"drive_datadisk","bus":"scsi_pci_bus1.0","id":"device_datadisk"}}
{"return": {}}

4.'fdisk -l' in the guest.

# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
 
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
 
 
#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic
 3      1435648     62912511   29.3G  Linux LVM      
 
Disk /dev/mapper/rhel-root: 28.2 GB, 28210888704 bytes, 55099392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
 
Disk /dev/mapper/rhel-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Actual results:
Hotplug failed.

Expected results:
Hotplug should succeed.

Additional info:
1.Hotplug failed with windows10 guest too.
  As attachment.

2.'tailf /var/log/messages' in the guest:

Jun  7 00:41:45 localhost kernel: pciehp 0000:02:01.0:pcie24: Button pressed on Slot(0-1)
Jun  7 00:41:45 localhost kernel: pciehp 0000:02:01.0:pcie24: Card present on Slot(0-1)
Jun  7 00:41:45 localhost kernel: pciehp 0000:02:01.0:pcie24: PCI slot #0-1 - powering on due to button press
Jun  7 00:41:46 localhost journal: Device 0000:04:00.0 not found: could not access /sys/bus/pci/devices/0000:04:00.0/config: No such file or directory
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: no space for [mem size 0x00300000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: failed to assign [mem size 0x00300000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: no space for [mem size 0x00100000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: failed to assign [mem size 0x00100000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pci 0000:04:00.0: BAR 1: no space for [mem size 0x00001000]
Jun  7 00:41:46 localhost kernel: pci 0000:04:00.0: BAR 1: failed to assign [mem size 0x00001000]
Jun  7 00:41:46 localhost kernel: pci 0000:04:00.0: BAR 0: assigned [io  0x2000-0x203f]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: PCI bridge to [bus 04]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0:   bridge window [io  0x2000-0x2fff]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:00.0: PCI bridge to [bus 03]
Jun  7 00:41:46 localhost kernel: pcieport 0000:01:00.0: PCI bridge to [bus 02-04]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: no space for [mem size 0x00300000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: failed to assign [mem size 0x00300000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: no space for [mem size 0x00100000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 14: failed to assign [mem size 0x00100000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
Jun  7 00:41:46 localhost kernel: pci 0000:04:00.0: BAR 1: no space for [mem size 0x00001000]
Jun  7 00:41:46 localhost kernel: pci 0000:04:00.0: BAR 1: failed to assign [mem size 0x00001000]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0: PCI bridge to [bus 04]
Jun  7 00:41:46 localhost kernel: pcieport 0000:02:01.0:   bridge window [io  0x2000-0x2fff]
Jun  7 00:41:46 localhost kernel: virtio-pci 0000:04:00.0: enabling device (0000 -> 0001)
Jun  7 00:41:46 localhost kernel: virtio-pci 0000:04:00.0: virtio_pci: leaving for legacy driver
Jun  7 00:41:46 localhost kernel: scsi host7: Virtio SCSI HBA
Jun  7 00:42:07 localhost kernel: scsi 7:0:0:0: abort
Jun  7 00:43:08 localhost dbus-daemon: dbus[731]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Jun  7 00:43:08 localhost dbus[731]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Jun  7 00:43:08 localhost dbus[731]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
Jun  7 00:43:08 localhost dbus-daemon: dbus[731]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
Jun  7 00:43:19 localhost firefox.desktop: SystemMessageCache: init1465274599178#011addons.update-checker#011WARN#011Update manifest for {972ce4c6-7e08-4474-a285-3208198ce6fd} did not contain an updates property
Jun  7 00:45:40 localhost kernel: INFO: task kworker/u8:5:315 blocked for more than 120 seconds.
Jun  7 00:45:40 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  7 00:45:40 localhost kernel: kworker/u8:5    D 0000000000002003     0   315      2 0x00000000
Jun  7 00:45:40 localhost kernel: Workqueue: scsi_tmf_7 scmd_eh_abort_handler
Jun  7 00:45:40 localhost kernel: ffff8801740dbc50 0000000000000046 ffff88017485dc00 ffff8801740dbfd8
Jun  7 00:45:40 localhost kernel: ffff8801740dbfd8 ffff8801740dbfd8 ffff88017485dc00 ffff8801740dbd80
Jun  7 00:45:40 localhost kernel: ffff8801740dbd88 7fffffffffffffff ffff88017485dc00 0000000000002003
Jun  7 00:45:40 localhost kernel: Call Trace:
Jun  7 00:45:40 localhost kernel: [<ffffffff8163b7f9>] schedule+0x29/0x70
Jun  7 00:45:40 localhost kernel: [<ffffffff816394e9>] schedule_timeout+0x209/0x2d0
Jun  7 00:45:40 localhost kernel: [<ffffffffa0058a96>] ? vp_notify+0x16/0x20 [virtio_pci]
Jun  7 00:45:40 localhost kernel: [<ffffffffa0046086>] ? virtqueue_notify+0x16/0x30 [virtio_ring]
Jun  7 00:45:40 localhost kernel: [<ffffffffa00616df>] ? virtscsi_kick_cmd+0x20f/0x280 [virtio_scsi]
Jun  7 00:45:40 localhost kernel: [<ffffffff8163bbc6>] wait_for_completion+0x116/0x170
Jun  7 00:45:40 localhost kernel: [<ffffffff810b88c0>] ? wake_up_state+0x20/0x20
Jun  7 00:45:40 localhost kernel: [<ffffffffa0061b48>] virtscsi_tmf.constprop.5+0xa8/0x110 [virtio_scsi]
Jun  7 00:45:40 localhost kernel: [<ffffffffa006224a>] virtscsi_abort+0xda/0x170 [virtio_scsi]
Jun  7 00:45:40 localhost kernel: [<ffffffff8141ce13>] scmd_eh_abort_handler+0xc3/0x290
Jun  7 00:45:40 localhost kernel: [<ffffffff8109d5fb>] process_one_work+0x17b/0x470
Jun  7 00:45:40 localhost kernel: [<ffffffff8109e3cb>] worker_thread+0x11b/0x400
Jun  7 00:45:40 localhost kernel: [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400
Jun  7 00:45:40 localhost kernel: [<ffffffff810a5aef>] kthread+0xcf/0xe0
Jun  7 00:45:40 localhost kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
Jun  7 00:45:40 localhost kernel: [<ffffffff816467d8>] ret_from_fork+0x58/0x90
Jun  7 00:45:40 localhost kernel: [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140

Comment 1 yduan 2016-06-07 05:46:17 UTC
Additional Info:

'info block' before hotplug:
(qemu) info block
pflash0 (#block106): /usr/share/OVMF/OVMF_CODE.secboot.fd (raw, read-only)
    Cache mode:       writeback

pflash1 (#block386): /usr/share/OVMF/OVMF_VARS.fd (raw)
    Cache mode:       writeback

drive_cd (#block566): /home/backup/RHEL-7.2-20151030.0-Server-x86_64-dvd1.iso (raw, read-only)
    Removable device: locked, tray closed
    Cache mode:       writeback

drive_sysdisk (#block739): sysdisk.qcow2 (qcow2)
    Cache mode:       writeback, direct

'info block' after hotplug:
(qemu) info block
pflash0 (#block106): /usr/share/OVMF/OVMF_CODE.secboot.fd (raw, read-only)
    Cache mode:       writeback

pflash1 (#block386): /usr/share/OVMF/OVMF_VARS.fd (raw)
    Cache mode:       writeback

drive_cd (#block566): /home/backup/RHEL-7.2-20151030.0-Server-x86_64-dvd1.iso (raw, read-only)
    Removable device: locked, tray closed
    Cache mode:       writeback

drive_sysdisk (#block739): sysdisk.qcow2 (qcow2)
    Cache mode:       writeback, direct

drive_datadisk (#block910): datadisk.qcow2 (qcow2)
    Cache mode:       writeback

Comment 3 Marcel Apfelbaum 2016-06-23 10:16:10 UTC
Hi,

Can you please attach dmesg and lspci full logs?
Can you please try with i440fx machine (not q35)?

Thanks,
Marcel

Comment 4 yduan 2016-06-30 09:40:21 UTC
(In reply to Marcel Apfelbaum from comment #3)

> Can you please attach dmesg and lspci full logs?

I reproduce this bug with :

Version-Release number of selected component (if applicable):
Host:
  kernel: 3.10.0-450.el7.x86_64
  qemu-kvm-rhev-2.6.0-9.el7.x86_64
  OVMF-20160608-1.git988715a.el7.noarch
Guest:
  kernel: 3.10.0-327el7.x86_64


dmesg and ovmf debug log as attachments.

"lspci" in guest before hot-plug:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:02.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:03.0 Ethernet controller: Red Hat, Inc Device 1041 (rev 01)
00:04.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:1e.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1e.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1e.4 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1e.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Upstream) (rev 02)
02:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
02:01.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
03:00.0 SCSI storage controller: Red Hat, Inc Device 1048 (rev 01)


"lspci" in guest after hot-plug:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:02.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:03.0 Ethernet controller: Red Hat, Inc Device 1041 (rev 01)
00:04.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:1e.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1e.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1e.4 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1e.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Upstream) (rev 02)
02:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
02:01.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
03:00.0 SCSI storage controller: Red Hat, Inc Device 1048 (rev 01)
04:00.0 SCSI storage controller: Red Hat, Inc Virtio SCSI

Comment 5 yduan 2016-06-30 09:41:05 UTC
Created attachment 1174445 [details]
OVMF debug log

Comment 6 yduan 2016-06-30 09:41:41 UTC
Created attachment 1174446 [details]
"dmesg" in the guest

Comment 9 Alex Williamson 2016-06-30 16:03:36 UTC
The configuration in comment 0 shows an upstream port with two downstream ports, downstream1 is pre-populated with a virtio-scsi device and the hot added device is into downstream2.  The significant difference from a root port hotplug in this case is that the apertures of the parent root port and upstream port bridges are effectively locked due to the running device under downstream1.  I wonder if both downstream ports were vacant whether the guest would reallocate the entire hierarchy.  Anyway, I don't think the guest OS can reasonably be expected to deal with this unless someone, either the VM user or the VM firmware, defines some space left for hotplug devices.

Comment 10 yduan 2016-07-01 07:09:03 UTC
(In reply to Alex Williamson from comment #9)
> I wonder if both downstream ports were vacant whether the
> guest would reallocate the entire hierarchy.

Hotplug succeeds when both downstream ports are vacant.

dmesg and ovmf debug log as attachments.

Version-Release number of selected component (if applicable):
Host:
  kernel: 3.10.0-450.el7.x86_64
  qemu-kvm-rhev-2.6.0-9.el7.x86_64
  OVMF-20160608-1.git988715a.el7.noarch
Guest:
  kernel: 3.10.0-327el7.x86_64

Start VM with following commands:
/usr/libexec/qemu-kvm \
 -S \
 -name 'rhel6.8-x86' \
 -machine q35,accel=kvm,usb=off,vmport=off \
 -drive file=/usr/share/OVMF/OVMF_CODE.secboot.fd,if=pflash,format=raw,unit=0,readonly=on \
 -drive file=MY_OVMF_VARS.fd,if=pflash,format=raw,unit=1 \
 -m 4096 \
 -smp 4,maxcpus=4,cores=2,threads=2,sockets=1 \
 -cpu SandyBridge,enforce \
 -rtc base=localtime,clock=host,driftfix=slew \
 -nodefaults \
 -vga qxl \
 -device AC97,bus=pcie.0 \
 -chardev socket,id=qmp_id_qmpmonitor1,path=/tmp/monitor-qmpmonitor1-20151214-111528-C6FB1EaX,server,nowait \
 -mon chardev=qmp_id_qmpmonitor1,mode=control \
 -chardev socket,id=qmp_id_catch_monitor,path=/tmp/monitor-catch_monitor-20151214-111528-C6FB1EaX,server,nowait \
 -mon chardev=qmp_id_catch_monitor,mode=control \
 -device pvpanic,ioport=0x505,id=idSWJ5gV \
 -chardev socket,id=serial_id_serial0,path=/tmp/serial-serial0-20151214-111528-C6FB1EaX,server,nowait \
 -device isa-serial,chardev=serial_id_serial0 \
 -debugcon file:q35.ovmf.log \
 -global isa-debugcon.iobase=0x402 \
 -device ich9-usb-ehci1,id=usb1,addr=1e.7,multifunction=on,bus=pcie.0 \
 -device ich9-usb-uhci1,id=usb1.0,multifunction=on,masterbus=usb1.0,addr=1e.0,firstport=0,bus=pcie.0 \
 -device ich9-usb-uhci2,id=usb1.1,multifunction=on,masterbus=usb1.0,addr=1e.2,firstport=2,bus=pcie.0 \
 -device ich9-usb-uhci3,id=usb1.2,multifunction=on,masterbus=usb1.0,addr=1e.4,firstport=4,bus=pcie.0 \
 -device usb-tablet,id=usb-tablet1 \
 -netdev tap,id=netdev0,vhost=on,script=/etc/qemu-ifup,downscript=/etc/ifdown_script \
 -device virtio-net-pci,mac=BA:BC:13:83:4F:BD,id=net0,netdev=netdev0,status=on,bus=pcie.0,disable-legacy=on,disable-modern=off \
 -drive file=/home/backup/RHEL-7.2-20151030.0-Server-x86_64-dvd1.iso,if=none,media=cdrom,id=drive_cd,readonly=on,format=raw \
 -device ide-cd,bus=ide.0,drive=drive_cd,id=device_cd,bootindex=1 \
 -device ioh3420,bus=pcie.0,id=root.0,slot=1 \
 -device ioh3420,bus=pcie.0,id=root.1,slot=2 \
 -device x3130-upstream,bus=root.0,id=upstream1 \
 -device xio3130-downstream,bus=upstream1,id=downstream1,chassis=1 \
 -device xio3130-downstream,bus=upstream1,id=downstream2,chassis=2 \
 -object iothread,id=iothread0 \
 -device virtio-scsi-pci,bus=root.1,id=scsi_pci_bus0,iothread=iothread0,disable-legacy=on,disable-modern=off \
 -drive file=sysdisk.qcow2,format=qcow2,id=drive_sysdisk,if=none,cache=none,aio=native,werror=stop,rerror=stop \
 -device scsi-hd,drive=drive_sysdisk,bus=scsi_pci_bus0.0,id=device_sysdisk,bootindex=0 \
 -object iothread,id=iothread1 \
 -enable-kvm \
 -monitor stdio \
 -spice port=5900,disable-ticketing \
 -qmp tcp:0:9999,server,nowait \


Before hot-plug:
# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic 
 3      1435648     41940991   19.3G  Linux LVM       

Disk /dev/mapper/rhel_dhcp--10--78-root: 18.5 GB, 18547212288 bytes, 36225024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel_dhcp--10--78-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


#lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:02.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:03.0 Ethernet controller: Red Hat, Inc Device 1041 (rev 01)
00:04.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:05.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:1e.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1e.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1e.4 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1e.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Upstream) (rev 02)
02:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
02:01.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
05:00.0 SCSI storage controller: Red Hat, Inc Device 1048 (rev 01)




Hotplug first virtual block device:
{"execute":"__com.redhat_drive_add", "arguments": {"file":"datadisk.qcow2","format":"qcow2","id":"drive_datadisk"}}
{"return": {}}
{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi_pci_bus1","bus":"downstream2","iothread":"iothread1"}}
{"return": {}}
{"execute":"device_add","arguments":{"driver":"scsi-hd","drive":"drive_datadisk","bus":"scsi_pci_bus1.0","id":"device_datadisk"}}
{"return": {}}

# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic 
 3      1435648     41940991   19.3G  Linux LVM       

Disk /dev/mapper/rhel_dhcp--10--78-root: 18.5 GB, 18547212288 bytes, 36225024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel_dhcp--10--78-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:02.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:03.0 Ethernet controller: Red Hat, Inc Device 1041 (rev 01)
00:04.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:05.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:1e.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1e.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1e.4 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1e.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Upstream) (rev 02)
02:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
02:01.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
04:00.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
05:00.0 SCSI storage controller: Red Hat, Inc Device 1048 (rev 01)



Hotplug second virtual block device:
{"execute":"__com.redhat_drive_add", "arguments": {"file":"datadisk1.qcow2","format":"qcow2","id":"drive_datadisk1"}}
{"return": {}}
{"execute":"device_add","arguments":{"driver":"virtio-scsi-pci","id":"scsi_pci_bus2","bus":"downstream1","iothread":"iothread1"}}
{"return": {}}
{"execute":"device_add","arguments":{"driver":"scsi-hd","drive":"drive_datadisk1","bus":"scsi_pci_bus2.0","id":"device_datadisk1"}}
{"return": {}}

# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt


#         Start          End    Size  Type            Name
 1         2048       411647    200M  EFI System      EFI System Partition
 2       411648      1435647    500M  Microsoft basic 
 3      1435648     41940991   19.3G  Linux LVM       

Disk /dev/mapper/rhel_dhcp--10--78-root: 18.5 GB, 18547212288 bytes, 36225024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel_dhcp--10--78-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

#lspci
00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
00:01.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:02.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:03.0 Ethernet controller: Red Hat, Inc Device 1041 (rev 01)
00:04.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:05.0 PCI bridge: Intel Corporation 7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 (rev 02)
00:1e.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1e.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1e.4 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1e.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801IB (ICH9) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Upstream) (rev 02)
02:00.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
02:01.0 PCI bridge: Texas Instruments XIO3130 PCI Express Switch (Downstream) (rev 01)
03:00.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
04:00.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
05:00.0 SCSI storage controller: Red Hat, Inc Device 1048 (rev 01)

Comment 11 yduan 2016-07-01 07:13:33 UTC
Created attachment 1174821 [details]
OVMF debug log when both downstream ports are vacant.

Comment 12 yduan 2016-07-01 07:14:33 UTC
Created attachment 1174822 [details]
"dmesg" in the guest when both downstream ports are vacant.

Comment 15 Marcel Apfelbaum 2016-08-08 14:58:21 UTC
Hi,

Can you please re-test as suggested by Laszlo in Comment #14?
If there is no problem with latest RHEL-7.3 host kernel please close
this BZ as duplicate of bug 1332408.

Thanks,
Marcel


Note You need to log in before you can comment on or make changes to this bug.