Hi Heyi, On 4/3/19 8:50 PM, Michael S. Tsirkin wrote: > On Wed, Apr 03, 2019 at 03:32:09PM +0800, Heyi Guo wrote: >> Hi folks, >> >> In physical world, a PCIe switch including one upstream port and several >> downstream ports is a single physical device, however we treat each port as >> a device in qemu world. In qemu docs/pcie.txt, we have below statements: >> >> Line 230: Be aware that PCI Express Downstream Ports can't be hot-plugged >> into >> Line 231: an existing PCI Express Upstream Port. >> >> To my understanding, it implies PCIe downstream ports *can* be hot-plugged >> into something which is not an existing upstream port. If it is true, how >> can we do that? AFAIK monitor command device_add can only add one device at >> a time. >> >> Please help to show the truth. >> >> Thanks, >> >> Heyi >> > > afaik they can only be plugged into upstearm ports with or without hotplug.
Hotplug on upstream port does not look supported, as mentionned in the doc: (QEMU) device_add driver=xio3130-downstream id=down0 bus=upstream_port1 {"error": {"class": "GenericError", "desc": "Bus 'upstream_port1' does not support hotplugging"}} Looks the std way to use the downstream port is the one documented in 2.2.3: 2.2.3 Plugging a PCI Express device into a Switch: -device ioh3420,id=root_port1,chassis=x,slot=y[,bus=pcie.0][,addr=z] -device x3130-upstream,id=upstream_port1,bus=root_port1[,addr=x] -device xio3130-downstream,id=downstream_port1,bus=upstream_port1,chassis=x1,slot=y1[,addr=z1]] -device <dev>,bus=downstream_port1 For my curiosity why do you want to hotplug a downstream port in another place than an upstream port? Thanks Eric >