Bug 1272759
Summary: | [PCIe] Make virtio devices pci-express on Q35 machines | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Marcel Apfelbaum <marcel> |
Component: | qemu-kvm-rhev | Assignee: | Marcel Apfelbaum <marcel> |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | 7.3 | CC: | ailan, chayang, huding, jinzhao, juzhang, marcel, michen, mst, qzhang, virt-maint, xfu |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | qemu-kvm-rhev-2.5.0-1.el7 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2016-11-07 20:45:50 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: | 1227278, 1305606, 1313485 |
Description
Marcel Apfelbaum
2015-10-18 14:23:28 UTC
Breaking it down to tasks: - Add PCIe capability and the minimum required caps as required by PCIe spec. - Virtio PCIe devices should have no bars in io address space The solution is part of QEMU 2.5, once we rebase it can be passed to QE. Hi Marcel How about the test scenario for the feature? Following is the steps which I tested with the latest build, any idea for this feature. kernel-3.10.0-402.el7.x86_64 qemu-kvm-rhev-2.6.0-1.el7.x86_64 seabios-1.9.1-4.el7.x86_64 Test steps: 1.Boot vm with following command: (add the "disable-modern=off" in the command) /usr/libexec/qemu-kvm \ -M q35 \ -cpu SandyBridge \ -nodefaults -rtc base=utc \ -m 4G \ -smp 2,sockets=2,cores=1,threads=1 \ -enable-kvm \ -name rhel7 \ -uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \ -smbios type=1,manufacturer='Red Hat',product='RHEV Hypervisor',version=el6,serial=koTUXQrb,uuid=feebc8fd-f8b0-4e75-abc3-e63fcdb67170 \ -k en-us \ -serial unix:/tmp/serial0,server,nowait \ -boot menu=on \ -bios /usr/share/seabios/bios.bin \ -vga std \ -vnc :1 \ -qmp tcp:0:6666,server,nowait \ -chardev file,path=/home/bug/seabios.log,id=seabios \ -device isa-debugcon,chardev=seabios,iobase=0x402 \ -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 \ -drive file=/home/bug/1272939/pxb.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,cache=none,werror=stop,rerror=stop,aio=threads \ -device virtio-blk-pci,bus=downstream1,drive=drive-virtio-disk0,id=virtio-disk0,disable-modern=off,bootindex=0 \ -device xio3130-downstream,bus=upstream1,id=downstream2,chassis=2 \ -device virtio-scsi-pci,bus=downstream2,id=scsi_pci_bus0,disable-modern=off \ -drive file=/home/bug/1272759/test.qcow2,if=none,id=virtio-scsi,format=qcow2,cache=none,werror=stop,rerror=stop,aio=threads \ -device scsi-hd,bus=scsi_pci_bus0.0,drive=virtio-scsi,id=virtio-disk1 \ -device xio3130-downstream,bus=upstream1,id=downstream3,chassis=3 \ -device virtio-net-pci,bus=downstream3,netdev=tap10,mac=9a:6a:6b:6c:6d:6e,disable-modern=off \ -netdev tap,id=tap10 \ -monitor stdio \ 2.Check the info in hmp (qemu) info qtree bus: main-system-bus type System dev: kvm-ioapic, id "" gpio-in "" 24 gsi_base = 0 (0x0) mmio 00000000fec00000/0000000000001000 dev: q35-pcihost, id "" MCFG = 2952790016 (0xb0000000) pci-hole64-size = 0 (0 B) short_root_bus = 0 (0x0) bus: pcie.0 type PCIE dev: ioh3420, id "root.0" power_controller_present = true chassis = 0 (0x0) slot = 1 (0x1) port = 0 (0x0) aer_log_max = 8 (0x8) addr = 02.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class PCI bridge, addr 00:02.0, pci id 8086:3420 (sub 0000:0000) bus: root.0 type PCIE dev: x3130-upstream, id "upstream1" port = 0 (0x0) aer_log_max = 8 (0x8) addr = 00.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class PCI bridge, addr 01:00.0, pci id 104c:8232 (sub 0000:0000) bus: upstream1 type PCIE dev: xio3130-downstream, id "downstream3" power_controller_present = true chassis = 3 (0x3) slot = 0 (0x0) port = 0 (0x0) aer_log_max = 8 (0x8) addr = 02.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class PCI bridge, addr 02:02.0, pci id 104c:8233 (sub 0000:0000) bus: downstream3 type PCIE dev: virtio-net-pci, id "" ioeventfd = false vectors = 3 (0x3) virtio-pci-bus-master-bug-migration = true disable-legacy = false disable-modern = false migrate-extra = true modern-pio-notify = false x-disable-pcie = false addr = 00.0 romfile = "pxe-virtio.rom" rombar = 1 (0x1) multifunction = false command_serr_enable = true class Ethernet controller, addr 05:00.0, pci id 1af4:1000 (sub 1af4:0001) bar 0: i/o at 0xc000 [0xc01f] bar 1: mem at 0xfe440000 [0xfe440fff] bar 4: mem at 0xfc000000 [0xfc7fffff] bar 6: mem at 0xffffffffffffffff [0x3fffe] bus: virtio-bus type virtio-pci-bus dev: virtio-net-device, id "" csum = true guest_csum = true gso = true guest_tso4 = true guest_tso6 = true guest_ecn = true guest_ufo = true guest_announce = true host_tso4 = true host_tso6 = true host_ecn = true host_ufo = true mrg_rxbuf = true status = true ctrl_vq = true ctrl_rx = true ctrl_vlan = true ctrl_rx_extra = true ctrl_mac_addr = true ctrl_guest_offloads = true mq = false mac = "9a:6a:6b:6c:6d:6e" vlan = <null> netdev = "tap10" x-txtimer = 150000 (0x249f0) x-txburst = 256 (0x100) tx = "" indirect_desc = true event_idx = true notify_on_empty = true any_layout = true dev: xio3130-downstream, id "downstream2" power_controller_present = true chassis = 2 (0x2) slot = 0 (0x0) port = 0 (0x0) aer_log_max = 8 (0x8) addr = 01.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class PCI bridge, addr 02:01.0, pci id 104c:8233 (sub 0000:0000) bus: downstream2 type PCIE dev: virtio-scsi-pci, id "scsi_pci_bus0" ioeventfd = true vectors = 4 (0x4) virtio-pci-bus-master-bug-migration = true disable-legacy = false disable-modern = false migrate-extra = true modern-pio-notify = false x-disable-pcie = false addr = 00.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class SCSI controller, addr 04:00.0, pci id 1af4:1004 (sub 1af4:0008) bar 0: i/o at 0xd000 [0xd03f] bar 1: mem at 0xfe600000 [0xfe600fff] bar 4: mem at 0xfc800000 [0xfcffffff] bus: virtio-bus type virtio-pci-bus dev: virtio-scsi-device, id "" num_queues = 1 (0x1) max_sectors = 65535 (0xffff) cmd_per_lun = 128 (0x80) hotplug = true param_change = true indirect_desc = true event_idx = true notify_on_empty = true any_layout = true bus: scsi_pci_bus0.0 type SCSI dev: scsi-hd, id "virtio-disk1" drive = "virtio-scsi" logical_block_size = 512 (0x200) physical_block_size = 512 (0x200) min_io_size = 0 (0x0) opt_io_size = 0 (0x0) discard_granularity = 4096 (0x1000) ver = "2.5+" serial = "" vendor = "QEMU" product = "QEMU HARDDISK" removable = false dpofua = false wwn = 0 (0x0) port_wwn = 0 (0x0) port_index = 0 (0x0) max_unmap_size = 1073741824 (0x40000000) max_io_size = 2147483647 (0x7fffffff) cyls = 2080 (0x820) heads = 16 (0x10) secs = 63 (0x3f) channel = 0 (0x0) scsi-id = 0 (0x0) lun = 0 (0x0) dev: xio3130-downstream, id "downstream1" power_controller_present = true chassis = 1 (0x1) slot = 0 (0x0) port = 0 (0x0) aer_log_max = 8 (0x8) addr = 00.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class PCI bridge, addr 02:00.0, pci id 104c:8233 (sub 0000:0000) bus: downstream1 type PCIE dev: virtio-blk-pci, id "virtio-disk0" class = 0 (0x0) ioeventfd = true vectors = 2 (0x2) virtio-pci-bus-master-bug-migration = true disable-legacy = false disable-modern = false migrate-extra = true modern-pio-notify = false x-disable-pcie = false addr = 00.0 romfile = "" rombar = 1 (0x1) multifunction = false command_serr_enable = true class SCSI controller, addr 03:00.0, pci id 1af4:1001 (sub 1af4:0002) bar 0: i/o at 0xe000 [0xe03f] bar 1: mem at 0xfe800000 [0xfe800fff] bar 4: mem at 0xfd000000 [0xfd7fffff] bus: virtio-bus type virtio-pci-bus dev: virtio-blk-device, id "" drive = "drive-virtio-disk0" logical_block_size = 512 (0x200) physical_block_size = 512 (0x200) min_io_size = 0 (0x0) opt_io_size = 0 (0x0) discard_granularity = 4294967295 (0xffffffff) cyls = 16383 (0x3fff) heads = 16 (0x10) secs = 63 (0x3f) serial = "" config-wce = true scsi = false request-merging = true indirect_desc = true event_idx = true notify_on_empty = true any_layout = true dev: VGA, id "" vgamem_mb = 16 (0x10) mmio = true qemu-extended-regs = false addr = 01.0 romfile = "vgabios-stdvga.bin" rombar = 1 (0x1) multifunction = false command_serr_enable = true class VGA controller, addr 00:01.0, pci id 1234:1111 (sub 1af4:1100) bar 0: mem at 0xfb000000 [0xfbffffff] bar 2: mem at 0xfea10000 [0xfea10fff] bar 6: mem at 0xffffffffffffffff [0xfffe] 3. Check the capability in the guest through "lspci -vnn" and we can got the info like "Capabilities: [40] Express Endpoint, MSI 00" 03:00.0 SCSI storage controller [0100]: Red Hat, Inc Virtio block device [1af4:1001] Subsystem: Red Hat, Inc Device [1af4:0002] Physical Slot: 0 Flags: bus master, fast devsel, latency 0, IRQ 22 I/O ports at e000 [size=64] Memory at fe800000 (32-bit, non-prefetchable) [size=4K] Memory at fd000000 (64-bit, prefetchable) [size=8M] Capabilities: [dc] MSI-X: Enable+ Count=2 Masked- Capabilities: [c8] Vendor Specific Information: Len=14 <?> Capabilities: [b4] Vendor Specific Information: Len=14 <?> Capabilities: [a4] Vendor Specific Information: Len=10 <?> Capabilities: [94] Vendor Specific Information: Len=10 <?> Capabilities: [84] Vendor Specific Information: Len=10 <?> Capabilities: [7c] Power Management version 3 Capabilities: [40] Express Endpoint, MSI 00 Kernel driver in use: virtio-pci 04:00.0 SCSI storage controller [0100]: Red Hat, Inc Virtio SCSI [1af4:1004] Subsystem: Red Hat, Inc Device [1af4:0008] Physical Slot: 0-1 Flags: bus master, fast devsel, latency 0, IRQ 23 I/O ports at d000 [size=64] Memory at fe600000 (32-bit, non-prefetchable) [size=4K] Memory at fc800000 (64-bit, prefetchable) [size=8M] Capabilities: [dc] MSI-X: Enable+ Count=4 Masked- Capabilities: [c8] Vendor Specific Information: Len=14 <?> Capabilities: [b4] Vendor Specific Information: Len=14 <?> Capabilities: [a4] Vendor Specific Information: Len=10 <?> Capabilities: [94] Vendor Specific Information: Len=10 <?> Capabilities: [84] Vendor Specific Information: Len=10 <?> Capabilities: [7c] Power Management version 3 Capabilities: [40] Express Endpoint, MSI 00 Kernel driver in use: virtio-pci 05:00.0 Ethernet controller [0200]: Red Hat, Inc Virtio network device [1af4:1000] Subsystem: Red Hat, Inc Device [1af4:0001] Physical Slot: 0-2 Flags: bus master, fast devsel, latency 0, IRQ 20 I/O ports at c000 [size=32] Memory at fe440000 (32-bit, non-prefetchable) [size=4K] Memory at fc000000 (64-bit, prefetchable) [size=8M] Expansion ROM at fe400000 [disabled] [size=256K] Capabilities: [dc] MSI-X: Enable+ Count=3 Masked- Capabilities: [c8] Vendor Specific Information: Len=14 <?> Capabilities: [b4] Vendor Specific Information: Len=14 <?> Capabilities: [a4] Vendor Specific Information: Len=10 <?> Capabilities: [94] Vendor Specific Information: Len=10 <?> Capabilities: [84] Vendor Specific Information: Len=10 <?> Capabilities: [7c] Power Management version 3 Capabilities: [40] Express Endpoint, MSI 00 Kernel driver in use: virtio-pci 4. In guest, make sure the virtio disk can work correctly (In reply to jingzhao from comment #5) > Hi Marcel > > How about the test scenario for the feature? Following is the steps which > I tested with the latest build, any idea for this feature. > > kernel-3.10.0-402.el7.x86_64 > qemu-kvm-rhev-2.6.0-1.el7.x86_64 > seabios-1.9.1-4.el7.x86_64 > > Test steps: > 1.Boot vm with following command: > > (add the "disable-modern=off" in the command) > > /usr/libexec/qemu-kvm \ > -M q35 \ > -cpu SandyBridge \ > -nodefaults -rtc base=utc \ > -m 4G \ > -smp 2,sockets=2,cores=1,threads=1 \ > -enable-kvm \ > -name rhel7 \ > -uuid 990ea161-6b67-47b2-b803-19fb01d30d12 \ > -smbios type=1,manufacturer='Red Hat',product='RHEV > Hypervisor',version=el6,serial=koTUXQrb,uuid=feebc8fd-f8b0-4e75-abc3- > e63fcdb67170 \ > -k en-us \ > -serial unix:/tmp/serial0,server,nowait \ > -boot menu=on \ > -bios /usr/share/seabios/bios.bin \ > -vga std \ > -vnc :1 \ > -qmp tcp:0:6666,server,nowait \ > -chardev file,path=/home/bug/seabios.log,id=seabios \ > -device isa-debugcon,chardev=seabios,iobase=0x402 \ > -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 \ > -drive > file=/home/bug/1272939/pxb.qcow2,if=none,id=drive-virtio-disk0,format=qcow2, > cache=none,werror=stop,rerror=stop,aio=threads \ > -device > virtio-blk-pci,bus=downstream1,drive=drive-virtio-disk0,id=virtio-disk0, > disable-modern=off,bootindex=0 \ > -device xio3130-downstream,bus=upstream1,id=downstream2,chassis=2 \ > -device virtio-scsi-pci,bus=downstream2,id=scsi_pci_bus0,disable-modern=off \ > -drive > file=/home/bug/1272759/test.qcow2,if=none,id=virtio-scsi,format=qcow2, > cache=none,werror=stop,rerror=stop,aio=threads \ > -device scsi-hd,bus=scsi_pci_bus0.0,drive=virtio-scsi,id=virtio-disk1 \ > -device xio3130-downstream,bus=upstream1,id=downstream3,chassis=3 \ > -device > virtio-net-pci,bus=downstream3,netdev=tap10,mac=9a:6a:6b:6c:6d:6e,disable- > modern=off \ > -netdev tap,id=tap10 \ > -monitor stdio \ > > 2.Check the info in hmp > > (qemu) info qtree > bus: main-system-bus > type System > dev: kvm-ioapic, id "" > gpio-in "" 24 > gsi_base = 0 (0x0) > mmio 00000000fec00000/0000000000001000 > dev: q35-pcihost, id "" > MCFG = 2952790016 (0xb0000000) > pci-hole64-size = 0 (0 B) > short_root_bus = 0 (0x0) > bus: pcie.0 > type PCIE > dev: ioh3420, id "root.0" > power_controller_present = true > chassis = 0 (0x0) > slot = 1 (0x1) > port = 0 (0x0) > aer_log_max = 8 (0x8) > addr = 02.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class PCI bridge, addr 00:02.0, pci id 8086:3420 (sub 0000:0000) > bus: root.0 > type PCIE > dev: x3130-upstream, id "upstream1" > port = 0 (0x0) > aer_log_max = 8 (0x8) > addr = 00.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class PCI bridge, addr 01:00.0, pci id 104c:8232 (sub 0000:0000) > bus: upstream1 > type PCIE > dev: xio3130-downstream, id "downstream3" > power_controller_present = true > chassis = 3 (0x3) > slot = 0 (0x0) > port = 0 (0x0) > aer_log_max = 8 (0x8) > addr = 02.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class PCI bridge, addr 02:02.0, pci id 104c:8233 (sub > 0000:0000) > bus: downstream3 > type PCIE > dev: virtio-net-pci, id "" > ioeventfd = false > vectors = 3 (0x3) > virtio-pci-bus-master-bug-migration = true > disable-legacy = false > disable-modern = false > migrate-extra = true > modern-pio-notify = false > x-disable-pcie = false > addr = 00.0 > romfile = "pxe-virtio.rom" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class Ethernet controller, addr 05:00.0, pci id > 1af4:1000 (sub 1af4:0001) > bar 0: i/o at 0xc000 [0xc01f] > bar 1: mem at 0xfe440000 [0xfe440fff] > bar 4: mem at 0xfc000000 [0xfc7fffff] > bar 6: mem at 0xffffffffffffffff [0x3fffe] > bus: virtio-bus > type virtio-pci-bus > dev: virtio-net-device, id "" > csum = true > guest_csum = true > gso = true > guest_tso4 = true > guest_tso6 = true > guest_ecn = true > guest_ufo = true > guest_announce = true > host_tso4 = true > host_tso6 = true > host_ecn = true > host_ufo = true > mrg_rxbuf = true > status = true > ctrl_vq = true > ctrl_rx = true > ctrl_vlan = true > ctrl_rx_extra = true > ctrl_mac_addr = true > ctrl_guest_offloads = true > mq = false > mac = "9a:6a:6b:6c:6d:6e" > vlan = <null> > netdev = "tap10" > x-txtimer = 150000 (0x249f0) > x-txburst = 256 (0x100) > tx = "" > indirect_desc = true > event_idx = true > notify_on_empty = true > any_layout = true > dev: xio3130-downstream, id "downstream2" > power_controller_present = true > chassis = 2 (0x2) > slot = 0 (0x0) > port = 0 (0x0) > aer_log_max = 8 (0x8) > addr = 01.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class PCI bridge, addr 02:01.0, pci id 104c:8233 (sub > 0000:0000) > bus: downstream2 > type PCIE > dev: virtio-scsi-pci, id "scsi_pci_bus0" > ioeventfd = true > vectors = 4 (0x4) > virtio-pci-bus-master-bug-migration = true > disable-legacy = false > disable-modern = false > migrate-extra = true > modern-pio-notify = false > x-disable-pcie = false > addr = 00.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class SCSI controller, addr 04:00.0, pci id 1af4:1004 > (sub 1af4:0008) > bar 0: i/o at 0xd000 [0xd03f] > bar 1: mem at 0xfe600000 [0xfe600fff] > bar 4: mem at 0xfc800000 [0xfcffffff] > bus: virtio-bus > type virtio-pci-bus > dev: virtio-scsi-device, id "" > num_queues = 1 (0x1) > max_sectors = 65535 (0xffff) > cmd_per_lun = 128 (0x80) > hotplug = true > param_change = true > indirect_desc = true > event_idx = true > notify_on_empty = true > any_layout = true > bus: scsi_pci_bus0.0 > type SCSI > dev: scsi-hd, id "virtio-disk1" > drive = "virtio-scsi" > logical_block_size = 512 (0x200) > physical_block_size = 512 (0x200) > min_io_size = 0 (0x0) > opt_io_size = 0 (0x0) > discard_granularity = 4096 (0x1000) > ver = "2.5+" > serial = "" > vendor = "QEMU" > product = "QEMU HARDDISK" > removable = false > dpofua = false > wwn = 0 (0x0) > port_wwn = 0 (0x0) > port_index = 0 (0x0) > max_unmap_size = 1073741824 (0x40000000) > max_io_size = 2147483647 (0x7fffffff) > cyls = 2080 (0x820) > heads = 16 (0x10) > secs = 63 (0x3f) > channel = 0 (0x0) > scsi-id = 0 (0x0) > lun = 0 (0x0) > dev: xio3130-downstream, id "downstream1" > power_controller_present = true > chassis = 1 (0x1) > slot = 0 (0x0) > port = 0 (0x0) > aer_log_max = 8 (0x8) > addr = 00.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class PCI bridge, addr 02:00.0, pci id 104c:8233 (sub > 0000:0000) > bus: downstream1 > type PCIE > dev: virtio-blk-pci, id "virtio-disk0" > class = 0 (0x0) > ioeventfd = true > vectors = 2 (0x2) > virtio-pci-bus-master-bug-migration = true > disable-legacy = false > disable-modern = false > migrate-extra = true > modern-pio-notify = false > x-disable-pcie = false > addr = 00.0 > romfile = "" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class SCSI controller, addr 03:00.0, pci id 1af4:1001 > (sub 1af4:0002) > bar 0: i/o at 0xe000 [0xe03f] > bar 1: mem at 0xfe800000 [0xfe800fff] > bar 4: mem at 0xfd000000 [0xfd7fffff] > bus: virtio-bus > type virtio-pci-bus > dev: virtio-blk-device, id "" > drive = "drive-virtio-disk0" > logical_block_size = 512 (0x200) > physical_block_size = 512 (0x200) > min_io_size = 0 (0x0) > opt_io_size = 0 (0x0) > discard_granularity = 4294967295 (0xffffffff) > cyls = 16383 (0x3fff) > heads = 16 (0x10) > secs = 63 (0x3f) > serial = "" > config-wce = true > scsi = false > request-merging = true > indirect_desc = true > event_idx = true > notify_on_empty = true > any_layout = true > dev: VGA, id "" > vgamem_mb = 16 (0x10) > mmio = true > qemu-extended-regs = false > addr = 01.0 > romfile = "vgabios-stdvga.bin" > rombar = 1 (0x1) > multifunction = false > command_serr_enable = true > class VGA controller, addr 00:01.0, pci id 1234:1111 (sub 1af4:1100) > bar 0: mem at 0xfb000000 [0xfbffffff] > bar 2: mem at 0xfea10000 [0xfea10fff] > bar 6: mem at 0xffffffffffffffff [0xfffe] > > > > 3. Check the capability in the guest through "lspci -vnn" and we can got the > info like "Capabilities: [40] Express Endpoint, MSI 00" > > 03:00.0 SCSI storage controller [0100]: Red Hat, Inc Virtio block device > [1af4:1001] > Subsystem: Red Hat, Inc Device [1af4:0002] > Physical Slot: 0 > Flags: bus master, fast devsel, latency 0, IRQ 22 > I/O ports at e000 [size=64] > Memory at fe800000 (32-bit, non-prefetchable) [size=4K] > Memory at fd000000 (64-bit, prefetchable) [size=8M] > Capabilities: [dc] MSI-X: Enable+ Count=2 Masked- > Capabilities: [c8] Vendor Specific Information: Len=14 <?> > Capabilities: [b4] Vendor Specific Information: Len=14 <?> > Capabilities: [a4] Vendor Specific Information: Len=10 <?> > Capabilities: [94] Vendor Specific Information: Len=10 <?> > Capabilities: [84] Vendor Specific Information: Len=10 <?> > Capabilities: [7c] Power Management version 3 > Capabilities: [40] Express Endpoint, MSI 00 > Kernel driver in use: virtio-pci > > 04:00.0 SCSI storage controller [0100]: Red Hat, Inc Virtio SCSI [1af4:1004] > Subsystem: Red Hat, Inc Device [1af4:0008] > Physical Slot: 0-1 > Flags: bus master, fast devsel, latency 0, IRQ 23 > I/O ports at d000 [size=64] > Memory at fe600000 (32-bit, non-prefetchable) [size=4K] > Memory at fc800000 (64-bit, prefetchable) [size=8M] > Capabilities: [dc] MSI-X: Enable+ Count=4 Masked- > Capabilities: [c8] Vendor Specific Information: Len=14 <?> > Capabilities: [b4] Vendor Specific Information: Len=14 <?> > Capabilities: [a4] Vendor Specific Information: Len=10 <?> > Capabilities: [94] Vendor Specific Information: Len=10 <?> > Capabilities: [84] Vendor Specific Information: Len=10 <?> > Capabilities: [7c] Power Management version 3 > Capabilities: [40] Express Endpoint, MSI 00 > Kernel driver in use: virtio-pci > > 05:00.0 Ethernet controller [0200]: Red Hat, Inc Virtio network device > [1af4:1000] > Subsystem: Red Hat, Inc Device [1af4:0001] > Physical Slot: 0-2 > Flags: bus master, fast devsel, latency 0, IRQ 20 > I/O ports at c000 [size=32] > Memory at fe440000 (32-bit, non-prefetchable) [size=4K] > Memory at fc000000 (64-bit, prefetchable) [size=8M] > Expansion ROM at fe400000 [disabled] [size=256K] > Capabilities: [dc] MSI-X: Enable+ Count=3 Masked- > Capabilities: [c8] Vendor Specific Information: Len=14 <?> > Capabilities: [b4] Vendor Specific Information: Len=14 <?> > Capabilities: [a4] Vendor Specific Information: Len=10 <?> > Capabilities: [94] Vendor Specific Information: Len=10 <?> > Capabilities: [84] Vendor Specific Information: Len=10 <?> > Capabilities: [7c] Power Management version 3 > Capabilities: [40] Express Endpoint, MSI 00 > Kernel driver in use: virtio-pci > > 4. In guest, make sure the virtio disk can work correctly Looks good! As we can see, virtio devices have the PCIe capability if connected to switch downstream ports. You should also check the devices connected directly to a root port. Thanks, Marcel As comment 5, why we need to check the devices connected to a root port directly with "disable-modern=off"? I remember enable the PCIe capability when connected to switch downstream ports with "disable-modern=off". Also, I check the devices connected to a root port with "disable-modern=off" and there are no difference with connect to switch downstream. It's right? Thanks Jing (In reply to jingzhao from comment #7) > As comment 5, why we need to check the devices connected to a root port > directly with "disable-modern=off"? I remember enable the PCIe capability > when connected to switch downstream ports with "disable-modern=off". Also, I > check the devices connected to a root port with "disable-modern=off" and > there are no difference with connect to switch downstream. It's right? > Indeed there is no difference between connecting a device to a downstream port or a root port. So we should check and if there is a difference we should file a BZ. > Thanks > Jing (In reply to Marcel Apfelbaum from comment #8) > (In reply to jingzhao from comment #7) > > As comment 5, why we need to check the devices connected to a root port > > directly with "disable-modern=off"? I remember enable the PCIe capability > > when connected to switch downstream ports with "disable-modern=off". Also, I > > check the devices connected to a root port with "disable-modern=off" and > > there are no difference with connect to switch downstream. It's right? > > > > Indeed there is no difference between connecting a device to a downstream > port > or a root port. So we should check and if there is a difference we should > file a BZ. > As I understanding, we can connect to switch downstream or root port with "disable-modern=off" when we enable the PCI-e capability, and it's the better choice when connect to switch downstream with "disable-modern=off". it's right? > > Thanks > > Jing (In reply to jingzhao from comment #9) > (In reply to Marcel Apfelbaum from comment #8) > > (In reply to jingzhao from comment #7) > > > As comment 5, why we need to check the devices connected to a root port > > > directly with "disable-modern=off"? I remember enable the PCIe capability > > > when connected to switch downstream ports with "disable-modern=off". Also, I > > > check the devices connected to a root port with "disable-modern=off" and > > > there are no difference with connect to switch downstream. It's right? > > > > > > > Indeed there is no difference between connecting a device to a downstream > > port > > or a root port. So we should check and if there is a difference we should > > file a BZ. > > > As I understanding, we can connect to switch downstream or root port with > "disable-modern=off" when we enable the PCI-e capability, and it's the > better choice when connect to switch downstream with "disable-modern=off". > it's right? > Correct. You enable virtio 1.0 that way. Thanks, Marcel > > > > Thanks > > > Jing Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2673.html |