Note: This bug is displayed in read-only format because
the product is no longer active in Red Hat Bugzilla.
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.
Description of problem:
If setting the function of a device's address to be !=0, the device cannot be detected in guest. The issue can be reproduced with virtio blk, virtio scsi controller, virtio serial controller, pci bridge and usb controller
Version-Release number of selected component (if applicable):
qemu-kvm-rhev-2.6.0-4.el7.x86_64
How reproducible:
100%
Steps to Reproduce:
1. boot a guest. I have 2 virtio blk in guest, 1st is plugged into pci:0.0.0xf.0, 2nd is plugged into pci:0.0.0x10.0x2, and 2 virtio scsi controllers, 1st is plugged into pci:0.0.0x1f.01, 2nd is plugged into pci:0.0.1e.0, and 2 virtio-serial controllers, 1st is plugged into pci:0.0.05.0
2nd is plugged into pci:0.0.0x14.0x2, and 1 pci bridge, plugged into pci:0.0.0x6.0x2
/usr/libexec/qemu-kvm \
-drive file=/mnt/nfs2/RHEL-7.3-latest.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xf,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
-drive file=/mnt/nfs2/virtio1.img,format=qcow2,if=none,id=drive-virtio-disk1 \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x10.0x2,drive=drive-virtio-disk1,id=virtio-disk1 \
-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
-device piix3-usb-uhci,id=usb1,bus=pci.0,addr=0x13.0x2 \
-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x1f.0x2 \
-device virtio-scsi-pci,id=scsi1,bus=pci.0,addr=0x1e \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \
-device virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0x14.0x2 \
-device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x6.0x2 \
-monitor stdio -spice port=5931,disable-ticketing -boot menu=on -m 2G -qmp tcp:0:6666,server,nowait
2.(qemu) info pci
Bus 0, device 0, function 0:
Host bridge: PCI device 8086:1237
id ""
Bus 0, device 1, function 0:
ISA bridge: PCI device 8086:7000
id ""
Bus 0, device 1, function 1:
IDE controller: PCI device 8086:7010
BAR4: I/O at 0xc100 [0xc10f].
id ""
Bus 0, device 1, function 2:
USB controller: PCI device 8086:7020
IRQ 11.
BAR4: I/O at 0xc0c0 [0xc0df].
id "usb"
Bus 0, device 1, function 3:
Bridge: PCI device 8086:7113
IRQ 9.
id ""
Bus 0, device 2, function 0:
VGA controller: PCI device 1234:1111
BAR0: 32 bit prefetchable memory at 0xfd000000 [0xfdffffff].
BAR2: 32 bit memory at 0xfebf0000 [0xfebf0fff].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
id ""
Bus 0, device 3, function 0:
Ethernet controller: PCI device 8086:100e
IRQ 11.
BAR0: 32 bit memory at 0xfebc0000 [0xfebdffff].
BAR1: I/O at 0xc000 [0xc03f].
BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
id ""
Bus 0, device 5, function 0:
Class 1920: PCI device 1af4:1003
IRQ 10.
BAR0: I/O at 0xc0e0 [0xc0ff].
BAR1: 32 bit memory at 0xfebf1000 [0xfebf1fff].
id "virtio-serial0"
Bus 0, device 6, function 2:
PCI bridge: PCI device 1b36:0001
IRQ 0.
BUS 0.
secondary bus 0.
subordinate bus 0.
IO range [0x0000, 0x0fff]
memory range [0x00000000, 0x000fffff]
prefetchable memory range [0x00000000, 0x000fffff]
BAR0: 64 bit memory at 0xffffffffffffffff [0x000000fe].
id "pci.1"
Bus 0, device 15, function 0:
SCSI controller: PCI device 1af4:1001
IRQ 11.
BAR0: I/O at 0xc040 [0xc07f].
BAR1: 32 bit memory at 0xfebf2000 [0xfebf2fff].
id "virtio-disk0"
Bus 0, device 16, function 2:
SCSI controller: PCI device 1af4:1001
IRQ 0.
BAR0: I/O at 0xffffffffffffffff [0x003e].
BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
id "virtio-disk1"
Bus 0, device 19, function 2:
USB controller: PCI device 8086:7020
IRQ 0.
BAR4: I/O at 0xffffffffffffffff [0x001e].
id "usb1"
Bus 0, device 20, function 2:
Class 1920: PCI device 1af4:1003
IRQ 0.
BAR0: I/O at 0xffffffffffffffff [0x001e].
BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
id "virtio-serial1"
Bus 0, device 30, function 0:
SCSI controller: PCI device 1af4:1004
IRQ 10.
BAR0: I/O at 0xc080 [0xc0bf].
BAR1: 32 bit memory at 0xfebf3000 [0xfebf3fff].
id "scsi1"
Bus 0, device 31, function 2:
SCSI controller: PCI device 1af4:1004
IRQ 0.
BAR0: I/O at 0xffffffffffffffff [0x003e].
BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
id "scsi0"
(qemu) info block
drive-virtio-disk0 (#block138): /mnt/nfs2/RHEL-7.3-latest.qcow2 (qcow2)
Cache mode: writeback
drive-virtio-disk1 (#block346): /mnt/nfs2/virtio1.img (qcow2)
Cache mode: writeback
ide1-cd0: [not inserted]
Removable device: not locked, tray closed
floppy0: [not inserted]
Removable device: not locked, tray closed
sd0: [not inserted]
Removable device: not locked, tray closed
3. check in guest
guest]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (rev 20)
00:05.0 Communication controller: Red Hat, Inc Virtio console
00:0f.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:1e.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
guest]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 10G 0 disk
├─vda1 252:1 0 500M 0 part /boot
└─vda2 252:2 0 9.5G 0 part
├─rhel-root 253:0 0 8.5G 0 lvm /
└─rhel-swap 253:1 0 1G 0 lvm [SWAP]
Actual results:
pci bridge, 2nd virtio blk, 1st virtio scsi controller and 2nd virtio serial cannot be detected in guest.
If the function of a device's address is set to be !=0, it cannot be detected in guest
Expected results:
If the function of a device's address can be set to be !=0, device should work
If the function of a device's address can NOT be set to be !=0, provide proper error
Additional info:
You cannot have a multi-function device without function 0.
Please try to add both functions 0 and 1 or 0,1,2.
Please let me know if that works.
Thanks,
Marcel
Multi-function device works if multifunction is enabled on function 0.
However, what confused me is that no messages are prompted when I use multi-function device without enabling multifunction on function 0. Do you think qemu, maybe libvirt should check whether multifunction is enabled on function 0 and provide prompt messages to users
Thanks
Yang
(In reply to yangyang from comment #3)
> Multi-function device works if multifunction is enabled on function 0.
>
> However, what confused me is that no messages are prompted when I use
> multi-function device without enabling multifunction on function 0. Do you
> think qemu, maybe libvirt should check whether multifunction is enabled on
> function 0 and provide prompt messages to users
>
> Thanks
> Yang
Libvirt should definitely check function 0 is defined. For QEMU will not hurt either, but it is a minor bug. Please ensure Libvirt does it right and I'll keep this BZ as low priority.
Description of problem: If setting the function of a device's address to be !=0, the device cannot be detected in guest. The issue can be reproduced with virtio blk, virtio scsi controller, virtio serial controller, pci bridge and usb controller Version-Release number of selected component (if applicable): qemu-kvm-rhev-2.6.0-4.el7.x86_64 How reproducible: 100% Steps to Reproduce: 1. boot a guest. I have 2 virtio blk in guest, 1st is plugged into pci:0.0.0xf.0, 2nd is plugged into pci:0.0.0x10.0x2, and 2 virtio scsi controllers, 1st is plugged into pci:0.0.0x1f.01, 2nd is plugged into pci:0.0.1e.0, and 2 virtio-serial controllers, 1st is plugged into pci:0.0.05.0 2nd is plugged into pci:0.0.0x14.0x2, and 1 pci bridge, plugged into pci:0.0.0x6.0x2 /usr/libexec/qemu-kvm \ -drive file=/mnt/nfs2/RHEL-7.3-latest.qcow2,format=qcow2,if=none,id=drive-virtio-disk0 \ -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0xf,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ -drive file=/mnt/nfs2/virtio1.img,format=qcow2,if=none,id=drive-virtio-disk1 \ -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x10.0x2,drive=drive-virtio-disk1,id=virtio-disk1 \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \ -device piix3-usb-uhci,id=usb1,bus=pci.0,addr=0x13.0x2 \ -device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x1f.0x2 \ -device virtio-scsi-pci,id=scsi1,bus=pci.0,addr=0x1e \ -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 \ -device virtio-serial-pci,id=virtio-serial1,bus=pci.0,addr=0x14.0x2 \ -device pci-bridge,chassis_nr=1,id=pci.1,bus=pci.0,addr=0x6.0x2 \ -monitor stdio -spice port=5931,disable-ticketing -boot menu=on -m 2G -qmp tcp:0:6666,server,nowait 2.(qemu) info pci Bus 0, device 0, function 0: Host bridge: PCI device 8086:1237 id "" Bus 0, device 1, function 0: ISA bridge: PCI device 8086:7000 id "" Bus 0, device 1, function 1: IDE controller: PCI device 8086:7010 BAR4: I/O at 0xc100 [0xc10f]. id "" Bus 0, device 1, function 2: USB controller: PCI device 8086:7020 IRQ 11. BAR4: I/O at 0xc0c0 [0xc0df]. id "usb" Bus 0, device 1, function 3: Bridge: PCI device 8086:7113 IRQ 9. id "" Bus 0, device 2, function 0: VGA controller: PCI device 1234:1111 BAR0: 32 bit prefetchable memory at 0xfd000000 [0xfdffffff]. BAR2: 32 bit memory at 0xfebf0000 [0xfebf0fff]. BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe]. id "" Bus 0, device 3, function 0: Ethernet controller: PCI device 8086:100e IRQ 11. BAR0: 32 bit memory at 0xfebc0000 [0xfebdffff]. BAR1: I/O at 0xc000 [0xc03f]. BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe]. id "" Bus 0, device 5, function 0: Class 1920: PCI device 1af4:1003 IRQ 10. BAR0: I/O at 0xc0e0 [0xc0ff]. BAR1: 32 bit memory at 0xfebf1000 [0xfebf1fff]. id "virtio-serial0" Bus 0, device 6, function 2: PCI bridge: PCI device 1b36:0001 IRQ 0. BUS 0. secondary bus 0. subordinate bus 0. IO range [0x0000, 0x0fff] memory range [0x00000000, 0x000fffff] prefetchable memory range [0x00000000, 0x000fffff] BAR0: 64 bit memory at 0xffffffffffffffff [0x000000fe]. id "pci.1" Bus 0, device 15, function 0: SCSI controller: PCI device 1af4:1001 IRQ 11. BAR0: I/O at 0xc040 [0xc07f]. BAR1: 32 bit memory at 0xfebf2000 [0xfebf2fff]. id "virtio-disk0" Bus 0, device 16, function 2: SCSI controller: PCI device 1af4:1001 IRQ 0. BAR0: I/O at 0xffffffffffffffff [0x003e]. BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe]. id "virtio-disk1" Bus 0, device 19, function 2: USB controller: PCI device 8086:7020 IRQ 0. BAR4: I/O at 0xffffffffffffffff [0x001e]. id "usb1" Bus 0, device 20, function 2: Class 1920: PCI device 1af4:1003 IRQ 0. BAR0: I/O at 0xffffffffffffffff [0x001e]. BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe]. id "virtio-serial1" Bus 0, device 30, function 0: SCSI controller: PCI device 1af4:1004 IRQ 10. BAR0: I/O at 0xc080 [0xc0bf]. BAR1: 32 bit memory at 0xfebf3000 [0xfebf3fff]. id "scsi1" Bus 0, device 31, function 2: SCSI controller: PCI device 1af4:1004 IRQ 0. BAR0: I/O at 0xffffffffffffffff [0x003e]. BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe]. id "scsi0" (qemu) info block drive-virtio-disk0 (#block138): /mnt/nfs2/RHEL-7.3-latest.qcow2 (qcow2) Cache mode: writeback drive-virtio-disk1 (#block346): /mnt/nfs2/virtio1.img (qcow2) Cache mode: writeback ide1-cd0: [not inserted] Removable device: not locked, tray closed floppy0: [not inserted] Removable device: not locked, tray closed sd0: [not inserted] Removable device: not locked, tray closed 3. check in guest guest]# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (rev 20) 00:05.0 Communication controller: Red Hat, Inc Virtio console 00:0f.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:1e.0 SCSI storage controller: Red Hat, Inc Virtio SCSI guest]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 252:0 0 10G 0 disk ├─vda1 252:1 0 500M 0 part /boot └─vda2 252:2 0 9.5G 0 part ├─rhel-root 253:0 0 8.5G 0 lvm / └─rhel-swap 253:1 0 1G 0 lvm [SWAP] Actual results: pci bridge, 2nd virtio blk, 1st virtio scsi controller and 2nd virtio serial cannot be detected in guest. If the function of a device's address is set to be !=0, it cannot be detected in guest Expected results: If the function of a device's address can be set to be !=0, device should work If the function of a device's address can NOT be set to be !=0, provide proper error Additional info: