All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roman Kagan <rvkagan@yandex-team.ru>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-devel@nongnu.org,
	"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>,
	"Thomas Huth" <thuth@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	yc-core@yandex-team.ru, "Paolo Bonzini" <pbonzini@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v3] hw/pci/pci_bridge: ensure PCIe slots have only one slot
Date: Thu, 21 Jul 2022 17:28:27 +0300	[thread overview]
Message-ID: <Ytlii7t0rERVJBXo@rvkaganb> (raw)
In-Reply-To: <5bc2fcee-2c5d-c400-5992-e2b4ce828477@ilande.co.uk>

On Wed, Jul 20, 2022 at 02:21:38PM +0100, Mark Cave-Ayland wrote:
> On 20/07/2022 12:00, Roman Kagan wrote:
> 
> > On Wed, Jul 20, 2022 at 11:44:26AM +0100, Daniel P. Berrangé wrote:
> > > On Wed, Jul 20, 2022 at 01:25:55PM +0300, Roman Kagan wrote:
> > > > It's possible to create non-working configurations by attaching a device
> > > > to a derivative of PCIe slot (pcie-root-port, ioh3420, etc) and
> > > > specifying a slot number other that zero, e.g.:
> > > > 
> > > >      -device pcie-root-port,id=s0,... \
> > > >      -device virtio-blk-pci,bus=s0,addr=4,...
> > > > 
> > > > Make QEMU reject such configurations and only allow addr=0 on the
> > > > secondary bus of a PCIe slot.
> > > 
> > > What do you mean by 'non-working' in this case.  The guest OS boots
> > > OK, but I indeed don't see the device in the guest, but IIUC it was
> > > said that was just because Linux doesn't scan for a non-zero slot.
> > 
> > Right.  I don't remember if it was Linux or firmware or both but indeed
> > at least Linux guests don't see devices if attached to a PCIe slot at
> > addr != 0.  (Which is kinda natural for a thing called "slot", isn't it?)
> > 
> > > That wouldn't be a broken config from QEMU's POV though, merely a
> > > guest OS limitation ?
> > 
> > Strictly speaking it wouldn't, indeed.  But we've had created such a
> > configuration (due to a bug in our management layer) and spent
> > non-negligible time trying to figure out why the attached device didn't
> > appear in the guest.  So I thought it made sense to reject a
> > configuration which is known to confuse guests.  Doesn't it?
> 
> This does seem a bit odd. What does the output of "info qtree" look like for
> your non-working configuration?

Sure:

command line:

# qemu-system-x86_64 \
    -name test,debug-threads=on \
    -msg timestamp=on \
    -machine q35,sata=false,usb=off \
    -accel kvm \
    -cpu Haswell-noTSX \
    -smp 4,sockets=1,cores=4,threads=1 \
    -vga std \
    -m 4096M \
    -object memory-backend-memfd,id=mem0,size=4096M,share=on \
    -numa node,memdev=mem0,cpus=0-3 \
    -nodefaults \
    -no-user-config \
    -chardev stdio,id=mon0 \
    -mon chardev=mon0,mode=readline \
    -boot strict=on \
    -device vmcoreinfo \
    -device pvpanic \
    -device qemu-xhci,id=usb0 \
    -device usb-tablet,bus=usb0.0 \
    -chardev socket,path=serial0.sock,logfile=serial0.log,id=charserial0,reconnect=1 \
    -device isa-serial,chardev=charserial0,id=serial0 \
    -chardev file,path=bios0.log,id=debugcon \
    -device isa-debugcon,iobase=0x402,chardev=debugcon \
    -device pcie-root-port,id=s0,slot=0,bus=pcie.0,addr=05.0,multifunction=on,io-reserve=0 \
    -device pcie-root-port,id=s1,slot=1,bus=pcie.0,addr=05.1,multifunction=on,io-reserve=0 \
    -device pcie-root-port,id=s2,slot=2,bus=pcie.0,addr=05.2,multifunction=on,io-reserve=0 \
    -device pcie-root-port,id=s3,slot=3,bus=pcie.0,addr=05.3,multifunction=on,io-reserve=0 \
    -drive format=qcow2,file=f34.qcow2,id=hdd0,if=none,aio=native,cache=directsync,discard=unmap \
    -netdev user,id=netdev0,hostfwd=tcp::0-:22 \
    -device virtio-net-pci,disable-legacy=off,netdev=netdev0,id=net0,bus=s1 \
    -object iothread,id=iot0 \
    -device virtio-blk-pci,disable-legacy=off,scsi=off,rerror=report,werror=report,id=vblk0,drive=hdd0,bus=s0,iothread=iot0,bootindex=1 \
    -object iothread,id=iot2 \
    -drive driver=null-co,size=64M,id=hdd2,if=none \
    -device virtio-blk-pci,disable-legacy=off,scsi=off,rerror=report,werror=report,id=vblk2,drive=hdd2,bus=s2,iothread=iot2,num-queues=4,addr=4 \
    -nographic


qemu HMP:

(qemu) info qtree
bus: main-system-bus
  type System
  dev: ps2-mouse, id ""
    gpio-out "" 1
  dev: ps2-kbd, id ""
    gpio-out "" 1
  dev: hpet, id ""
    gpio-in "" 2
    gpio-out "" 1
    gpio-out "sysbus-irq" 32
    timers = 3 (0x3)
    msi = false
    hpet-intcap = 16711940 (0xff0104)
    hpet-offset-saved = true
    mmio 00000000fed00000/0000000000000400
  dev: kvm-ioapic, id ""
    gpio-in "" 24
    gsi_base = 0 (0x0)
    mmio 00000000fec00000/0000000000001000
  dev: q35-pcihost, id ""
    MCFG = 2952790016 (0xb0000000)
    pci-hole64-size = 34359738368 (32 GiB)
    short_root_bus = 0 (0x0)
    below-4g-mem-size = 2147483648 (2 GiB)
    above-4g-mem-size = 2147483648 (2 GiB)
    x-pci-hole64-fix = true
    x-config-reg-migration-enabled = true
    bypass-iommu = false
    bus: pcie.0
      type PCIE
      dev: pcie-root-port, id "s3"
        x-migrate-msix = true
        bus-reserve = 4294967295 (0xffffffff)
        io-reserve = 0 (0 B)
        mem-reserve = 18446744073709551615 (16 EiB)
        pref32-reserve = 18446744073709551615 (16 EiB)
        pref64-reserve = 18446744073709551615 (16 EiB)
        x-speed = "16"
        x-width = "32"
        power_controller_present = true
        disable-acs = false
        chassis = 0 (0x0)
        slot = 3 (0x3)
        hotplug = true
        x-native-hotplug = true
        port = 0 (0x0)
        aer_log_max = 8 (0x8)
        addr = 05.3
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class PCI bridge, addr 00:05.3, pci id 1b36:000c (sub 0000:0000)
        bar 0: mem at 0xfea18000 [0xfea18fff]
        bus: s3
          type PCIE
      dev: pcie-root-port, id "s2"
        x-migrate-msix = true
        bus-reserve = 4294967295 (0xffffffff)
        io-reserve = 0 (0 B)
        mem-reserve = 18446744073709551615 (16 EiB)
        pref32-reserve = 18446744073709551615 (16 EiB)
        pref64-reserve = 18446744073709551615 (16 EiB)
        x-speed = "16"
        x-width = "32"
        power_controller_present = true
        disable-acs = false
        chassis = 0 (0x0)
        slot = 2 (0x2)
        hotplug = true
        x-native-hotplug = true
        port = 0 (0x0)
        aer_log_max = 8 (0x8)
        addr = 05.2
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class PCI bridge, addr 00:05.2, pci id 1b36:000c (sub 0000:0000)
        bar 0: mem at 0xfea17000 [0xfea17fff]
        bus: s2
          type PCIE
          dev: virtio-blk-pci, id "vblk2"
            disable-legacy = "off"
            disable-modern = false
            class = 0 (0x0)
            ioeventfd = true
            vectors = 5 (0x5)
            virtio-pci-bus-master-bug-migration = false
            migrate-extra = true
            modern-pio-notify = false
            x-disable-pcie = false
            page-per-vq = false
            x-ignore-backend-features = false
            ats = false
            x-ats-page-aligned = true
            x-pcie-deverr-init = true
            x-pcie-lnkctl-init = true
            x-pcie-pm-init = true
            x-pcie-flr-init = true
            aer = false
            addr = 04.0
            romfile = ""
            romsize = 4294967295 (0xffffffff)
            rombar = 1 (0x1)
            multifunction = false
            x-pcie-lnksta-dllla = true
            x-pcie-extcap-init = true
            failover_pair_id = ""
            acpi-index = 0 (0x0)
            class SCSI controller, addr 03:04.0, pci id 1af4:1001 (sub 1af4:0002)
            bar 0: i/o at 0xffffffffffffffff [0x7e]
            bar 1: mem at 0xffffffffffffffff [0xffe]
            bar 4: mem at 0xffffffffffffffff [0x3ffe]
            bus: virtio-bus
              type virtio-pci-bus
              dev: virtio-blk-device, id ""
                drive = "hdd2"
                backend_defaults = "auto"
                logical_block_size = 512 (512 B)
                physical_block_size = 512 (512 B)
                min_io_size = 0 (0 B)
                opt_io_size = 0 (0 B)
                discard_granularity = 4294967295 (4 GiB)
                write-cache = "auto"
                share-rw = false
                rerror = "report"
                werror = "report"
                cyls = 130 (0x82)
                heads = 16 (0x10)
                secs = 63 (0x3f)
                lcyls = 0 (0x0)
                lheads = 0 (0x0)
                lsecs = 0 (0x0)
                serial = ""
                config-wce = true
                scsi = false
                request-merging = true
                num-queues = 4 (0x4)
                queue-size = 256 (0x100)
                seg-max-adjust = true
                discard = true
                report-discard-granularity = true
                write-zeroes = true
                max-discard-sectors = 4194303 (0x3fffff)
                max-write-zeroes-sectors = 4194303 (0x3fffff)
                x-enable-wce-if-config-wce = true
                indirect_desc = true
                event_idx = true
                notify_on_empty = true
                any_layout = true
                iommu_platform = false
                packed = false
                use-started = true
                use-disabled-flag = true
                x-disable-legacy-check = false
      dev: pcie-root-port, id "s1"
        x-migrate-msix = true
        bus-reserve = 4294967295 (0xffffffff)
        io-reserve = 0 (0 B)
        mem-reserve = 18446744073709551615 (16 EiB)
        pref32-reserve = 18446744073709551615 (16 EiB)
        pref64-reserve = 18446744073709551615 (16 EiB)
        x-speed = "16"
        x-width = "32"
        power_controller_present = true
        disable-acs = false
        chassis = 0 (0x0)
        slot = 1 (0x1)
        hotplug = true
        x-native-hotplug = true
        port = 0 (0x0)
        aer_log_max = 8 (0x8)
        addr = 05.1
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class PCI bridge, addr 00:05.1, pci id 1b36:000c (sub 0000:0000)
        bar 0: mem at 0xfea16000 [0xfea16fff]
        bus: s1
          type PCIE
          dev: virtio-net-pci, id "net0"
            disable-legacy = "off"
            disable-modern = false
            ioeventfd = true
            vectors = 4 (0x4)
            virtio-pci-bus-master-bug-migration = false
            migrate-extra = true
            modern-pio-notify = false
            x-disable-pcie = false
            page-per-vq = false
            x-ignore-backend-features = false
            ats = false
            x-ats-page-aligned = true
            x-pcie-deverr-init = true
            x-pcie-lnkctl-init = true
            x-pcie-pm-init = true
            x-pcie-flr-init = true
            aer = false
            addr = 00.0
            romfile = "efi-virtio.rom"
            romsize = 262144 (0x40000)
            rombar = 1 (0x1)
            multifunction = false
            x-pcie-lnksta-dllla = true
            x-pcie-extcap-init = true
            failover_pair_id = ""
            acpi-index = 0 (0x0)
            class Ethernet controller, addr 02:00.0, pci id 1af4:1000 (sub 1af4:0001)
            bar 0: i/o at 0x2000 [0x201f]
            bar 1: mem at 0xfe640000 [0xfe640fff]
            bar 4: mem at 0xfd400000 [0xfd403fff]
            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
                rss = false
                hash = false
                guest_rsc_ext = false
                rsc_interval = 300000 (0x493e0)
                mac = "52:54:00:12:34:56"
                netdev = "netdev0"
                x-txtimer = 150000 (0x249f0)
                x-txburst = 256 (0x100)
                tx = ""
                rx_queue_size = 256 (0x100)
                tx_queue_size = 256 (0x100)
                host_mtu = 0 (0x0)
                x-mtu-bypass-backend = true
                speed = -1 (0xffffffffffffffff)
                duplex = ""
                failover = false
                indirect_desc = true
                event_idx = true
                notify_on_empty = true
                any_layout = true
                iommu_platform = false
                packed = false
                use-started = true
                use-disabled-flag = true
                x-disable-legacy-check = false
      dev: pcie-root-port, id "s0"
        x-migrate-msix = true
        bus-reserve = 4294967295 (0xffffffff)
        io-reserve = 0 (0 B)
        mem-reserve = 18446744073709551615 (16 EiB)
        pref32-reserve = 18446744073709551615 (16 EiB)
        pref64-reserve = 18446744073709551615 (16 EiB)
        x-speed = "16"
        x-width = "32"
        power_controller_present = true
        disable-acs = false
        chassis = 0 (0x0)
        slot = 0 (0x0)
        hotplug = true
        x-native-hotplug = true
        port = 0 (0x0)
        aer_log_max = 8 (0x8)
        addr = 05.0
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class PCI bridge, addr 00:05.0, pci id 1b36:000c (sub 0000:0000)
        bar 0: mem at 0xfea15000 [0xfea15fff]
        bus: s0
          type PCIE
          dev: virtio-blk-pci, id "vblk0"
            disable-legacy = "off"
            disable-modern = false
            class = 0 (0x0)
            ioeventfd = true
            vectors = 5 (0x5)
            virtio-pci-bus-master-bug-migration = false
            migrate-extra = true
            modern-pio-notify = false
            x-disable-pcie = false
            page-per-vq = false
            x-ignore-backend-features = false
            ats = false
            x-ats-page-aligned = true
            x-pcie-deverr-init = true
            x-pcie-lnkctl-init = true
            x-pcie-pm-init = true
            x-pcie-flr-init = true
            aer = false
            addr = 00.0
            romfile = ""
            romsize = 4294967295 (0xffffffff)
            rombar = 1 (0x1)
            multifunction = false
            x-pcie-lnksta-dllla = true
            x-pcie-extcap-init = true
            failover_pair_id = ""
            acpi-index = 0 (0x0)
            class SCSI controller, addr 01:00.0, pci id 1af4:1001 (sub 1af4:0002)
            bar 0: i/o at 0x1000 [0x107f]
            bar 1: mem at 0xfe800000 [0xfe800fff]
            bar 4: mem at 0xfd600000 [0xfd603fff]
            bus: virtio-bus
              type virtio-pci-bus
              dev: virtio-blk-device, id ""
                drive = "hdd0"
                backend_defaults = "auto"
                logical_block_size = 512 (512 B)
                physical_block_size = 512 (512 B)
                min_io_size = 0 (0 B)
                opt_io_size = 0 (0 B)
                discard_granularity = 4294967295 (4 GiB)
                write-cache = "auto"
                share-rw = false
                rerror = "report"
                werror = "report"
                cyls = 10402 (0x28a2)
                heads = 16 (0x10)
                secs = 63 (0x3f)
                lcyls = 0 (0x0)
                lheads = 0 (0x0)
                lsecs = 0 (0x0)
                serial = ""
                config-wce = true
                scsi = false
                request-merging = true
                num-queues = 4 (0x4)
                queue-size = 256 (0x100)
                seg-max-adjust = true
                discard = true
                report-discard-granularity = true
                write-zeroes = true
                max-discard-sectors = 4194303 (0x3fffff)
                max-write-zeroes-sectors = 4194303 (0x3fffff)
                x-enable-wce-if-config-wce = true
                indirect_desc = true
                event_idx = true
                notify_on_empty = true
                any_layout = true
                iommu_platform = false
                packed = false
                use-started = true
                use-disabled-flag = true
                x-disable-legacy-check = false
      dev: qemu-xhci, id "usb0"
        addr = 02.0
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = false
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class USB controller, addr 00:02.0, pci id 1b36:000d (sub 1af4:1100)
        bar 0: mem at 0xfea10000 [0xfea13fff]
        bus: usb0.0
          type usb-bus
          dev: usb-tablet, id ""
            usb_version = 2 (0x2)
            display = ""
            head = 0 (0x0)
            port = ""
            serial = ""
            msos-desc = true
            pcap = ""
            addr 0.1, port 1, speed 480, name QEMU USB Tablet, attached
      dev: VGA, id ""
        vgamem_mb = 16 (0x10)
        mmio = true
        qemu-extended-regs = true
        edid = true
        xres = 1280 (0x500)
        yres = 800 (0x320)
        xmax = 0 (0x0)
        ymax = 0 (0x0)
        refresh_rate = 0 (0x0)
        global-vmstate = false
        addr = 01.0
        romfile = "vgabios-stdvga.bin"
        romsize = 65536 (0x10000)
        rombar = 1 (0x1)
        multifunction = false
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class VGA controller, addr 00:01.0, pci id 1234:1111 (sub 1af4:1100)
        bar 0: mem at 0xfc000000 [0xfcffffff]
        bar 2: mem at 0xfea14000 [0xfea14fff]
        bar 6: mem at 0xffffffffffffffff [0xfffe]
      dev: ICH9-SMB, id ""
        addr = 1f.3
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class SMBus, addr 00:1f.3, pci id 8086:2930 (sub 1af4:1100)
        bar 4: i/o at 0x700 [0x73f]
        bus: i2c
          type i2c-bus
          dev: smbus-eeprom, id ""
            address = 87 (0x57)
          dev: smbus-eeprom, id ""
            address = 86 (0x56)
          dev: smbus-eeprom, id ""
            address = 85 (0x55)
          dev: smbus-eeprom, id ""
            address = 84 (0x54)
          dev: smbus-eeprom, id ""
            address = 83 (0x53)
          dev: smbus-eeprom, id ""
            address = 82 (0x52)
          dev: smbus-eeprom, id ""
            address = 81 (0x51)
          dev: smbus-eeprom, id ""
            address = 80 (0x50)
      dev: ICH9-LPC, id ""
        gpio-out "gsi" 24
        noreboot = true
        smm-compat = false
        x-smi-broadcast = true
        x-smi-cpu-hotplug = true
        x-smi-cpu-hotunplug = true
        addr = 1f.0
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = true
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class ISA bridge, addr 00:1f.0, pci id 8086:2918 (sub 1af4:1100)
        bus: isa.0
          type ISA
          dev: isa-debugcon, id ""
            iobase = 1026 (0x402)
            chardev = "debugcon"
            readback = 233 (0xe9)
          dev: isa-serial, id "serial0"
            index = 0 (0x0)
            iobase = 1016 (0x3f8)
            irq = 4 (0x4)
          dev: pvpanic, id ""
            ioport = 1285 (0x505)
            events = 3 (0x3)
          dev: port92, id ""
            gpio-out "a20" 1
          dev: vmmouse, id ""
          dev: vmport, id ""
            x-read-set-eax = true
            x-signal-unsupported-cmd = true
            x-report-vmx-type = true
            x-cmds-v2 = true
            vmware-vmx-version = 6 (0x6)
            vmware-vmx-type = 2 (0x2)
          dev: i8042, id ""
            gpio-in "ps2-mouse-input-irq" 1
            gpio-in "ps2-kbd-input-irq" 1
            gpio-out "" 2
            gpio-out "a20" 1
            extended-state = true
            kbd-throttle = false
            kbd-irq = 1 (0x1)
            mouse-irq = 12 (0xc)
          dev: i8257, id ""
            base = 192 (0xc0)
            page-base = 136 (0x88)
            pageh-base = -1 (0xffffffffffffffff)
            dshift = 1 (0x1)
          dev: i8257, id ""
            base = 0 (0x0)
            page-base = 128 (0x80)
            pageh-base = -1 (0xffffffffffffffff)
            dshift = 0 (0x0)
          dev: isa-pcspk, id ""
            audiodev = ""
            iobase = 97 (0x61)
            migrate = true
          dev: kvm-pit, id ""
            gpio-in "" 1
            iobase = 64 (0x40)
            lost_tick_policy = "delay"
          dev: mc146818rtc, id ""
            gpio-out "" 1
            base_year = 0 (0x0)
            iobase = 112 (0x70)
            irq = 8 (0x8)
            lost_tick_policy = "discard"
          dev: kvm-i8259, id ""
            iobase = 160 (0xa0)
            elcr_addr = 1233 (0x4d1)
            elcr_mask = 222 (0xde)
            master = false
          dev: kvm-i8259, id ""
            iobase = 32 (0x20)
            elcr_addr = 1232 (0x4d0)
            elcr_mask = 248 (0xf8)
            master = true
      dev: mch, id ""
        extended-tseg-mbytes = 16 (0x10)
        smbase-smram = true
        addr = 00.0
        romfile = ""
        romsize = 4294967295 (0xffffffff)
        rombar = 1 (0x1)
        multifunction = false
        x-pcie-lnksta-dllla = true
        x-pcie-extcap-init = true
        failover_pair_id = ""
        acpi-index = 0 (0x0)
        class Host bridge, addr 00:00.0, pci id 8086:29c0 (sub 1af4:1100)
  dev: fw_cfg_io, id ""
    dma_enabled = true
    x-file-slots = 32 (0x20)
    acpi-mr-restore = true
  dev: kvmclock, id ""
    x-mach-use-reliable-get-clock = true
  dev: kvmvapic, id ""

(qemu) info pci
  Bus  0, device   0, function 0:
    Host bridge: PCI device 8086:29c0
      PCI subsystem 1af4:1100
      id ""
  Bus  0, device   1, function 0:
    VGA controller: PCI device 1234:1111
      PCI subsystem 1af4:1100
      BAR0: 32 bit prefetchable memory at 0xfc000000 [0xfcffffff].
      BAR2: 32 bit memory at 0xfea14000 [0xfea14fff].
      BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
      id ""
  Bus  0, device   2, function 0:
    USB controller: PCI device 1b36:000d
      PCI subsystem 1af4:1100
      IRQ 11, pin A
      BAR0: 64 bit memory at 0xfea10000 [0xfea13fff].
      id "usb0"
  Bus  0, device   5, function 0:
    PCI bridge: PCI device 1b36:000c
      IRQ 10, pin A
      BUS 0.
      secondary bus 1.
      subordinate bus 1.
      IO range [0xf000, 0x0fff]
      memory range [0xfe800000, 0xfe9fffff]
      prefetchable memory range [0xfd600000, 0xfd7fffff]
      BAR0: 32 bit memory at 0xfea15000 [0xfea15fff].
      id "s0"
  Bus  1, device   0, function 0:
    SCSI controller: PCI device 1af4:1001
      PCI subsystem 1af4:0002
      IRQ 10, pin A
      BAR0: I/O at 0x1000 [0x107f].
      BAR1: 32 bit memory at 0xfe800000 [0xfe800fff].
      BAR4: 64 bit prefetchable memory at 0xfd600000 [0xfd603fff].
      id "vblk0"
  Bus  0, device   5, function 1:
    PCI bridge: PCI device 1b36:000c
      IRQ 10, pin A
      BUS 0.
      secondary bus 2.
      subordinate bus 2.
      IO range [0xf000, 0x0fff]
      memory range [0xfe600000, 0xfe7fffff]
      prefetchable memory range [0xfd400000, 0xfd5fffff]
      BAR0: 32 bit memory at 0xfea16000 [0xfea16fff].
      id "s1"
  Bus  2, device   0, function 0:
    Ethernet controller: PCI device 1af4:1000
      PCI subsystem 1af4:0001
      IRQ 10, pin A
      BAR0: I/O at 0x2000 [0x201f].
      BAR1: 32 bit memory at 0xfe640000 [0xfe640fff].
      BAR4: 64 bit prefetchable memory at 0xfd400000 [0xfd403fff].
      BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
      id "net0"
  Bus  0, device   5, function 2:
    PCI bridge: PCI device 1b36:000c
      IRQ 10, pin A
      BUS 0.
      secondary bus 3.
      subordinate bus 3.
      IO range [0xf000, 0x0fff]
      memory range [0xfe400000, 0xfe5fffff]
      prefetchable memory range [0xfd200000, 0xfd3fffff]
      BAR0: 32 bit memory at 0xfea17000 [0xfea17fff].
      id "s2"
  Bus  3, device   4, function 0:
    SCSI controller: PCI device 1af4:1001
      PCI subsystem 1af4:0002
      IRQ 0, pin A
      BAR0: I/O at 0xffffffffffffffff [0x007e].
      BAR1: 32 bit memory at 0xffffffffffffffff [0x00000ffe].
      BAR4: 64 bit prefetchable memory at 0xffffffffffffffff [0x00003ffe].
      id "vblk2"
  Bus  0, device   5, function 3:
    PCI bridge: PCI device 1b36:000c
      IRQ 10, pin A
      BUS 0.
      secondary bus 4.
      subordinate bus 4.
      IO range [0xf000, 0x0fff]
      memory range [0xfe200000, 0xfe3fffff]
      prefetchable memory range [0xfd000000, 0xfd1fffff]
      BAR0: 32 bit memory at 0xfea18000 [0xfea18fff].
      id "s3"
  Bus  0, device  31, function 0:
    ISA bridge: PCI device 8086:2918
      PCI subsystem 1af4:1100
      id ""
  Bus  0, device  31, function 3:
    SMBus: PCI device 8086:2930
      PCI subsystem 1af4:1100
      IRQ 10, pin A
      BAR4: I/O at 0x0700 [0x073f].
      id ""


In the guest (Fedora 34):

[root@test ~]# lspci -tv
-[0000:00]-+-00.0  Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
           +-01.0  Device 1234:1111
           +-02.0  Red Hat, Inc. QEMU XHCI Host Controller
           +-05.0-[01]----00.0  Red Hat, Inc. Virtio block device
           +-05.1-[02]----00.0  Red Hat, Inc. Virtio network device
           +-05.2-[03]--
           +-05.3-[04]--
           +-1f.0  Intel Corporation 82801IB (ICH9) LPC Interface Controller
           \-1f.3  Intel Corporation 82801I (ICH9 Family) SMBus Controller

Changing addr of the second disk from 4 to 0 makes it appear in the
guest.

What exactly do you find odd?

Thanks,
Roman.


  reply	other threads:[~2022-07-21 14:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 10:25 [PATCH v3] hw/pci/pci_bridge: ensure PCIe slots have only one slot Roman Kagan
2022-07-20 10:31 ` Thomas Huth
2022-07-20 10:44 ` Daniel P. Berrangé
2022-07-20 11:00   ` Roman Kagan
2022-07-20 11:04     ` Daniel P. Berrangé
2022-07-20 11:48       ` Roman Kagan
2022-07-25 13:59       ` Vladimir Sementsov-Ogievskiy
2022-07-27  8:26         ` Igor Mammedov
2022-07-20 13:21     ` Mark Cave-Ayland
2022-07-21 14:28       ` Roman Kagan [this message]
2022-07-21 15:51         ` Mark Cave-Ayland
2022-07-21 15:56           ` Daniel P. Berrangé
2022-07-21 16:05             ` Mark Cave-Ayland
2022-07-21 16:10               ` Roman Kagan
2022-07-21 16:12               ` Daniel P. Berrangé
2022-07-22  7:28               ` Thomas Huth
2022-07-22 16:36                 ` Mark Cave-Ayland

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ytlii7t0rERVJBXo@rvkaganb \
    --to=rvkagan@yandex-team.ru \
    --cc=berrange@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=vsementsov@yandex-team.ru \
    --cc=yc-core@yandex-team.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.