<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="margin: 0;">Hi, Laine Stump and Oleg Vasilev:</div><div style="margin: 0;">1.  Laine, what is '<span style="font-family: arial; white-space: pre-wrap;">conventional PCI device</span>'? in my case they are all virtio device.</div><div style="margin: 0;">2. Followed your guide,succeed in hotplug.  but there are lots of problems after hotplug. I think problems are more related to qemu.</div><div style="margin: 0;">  2.1) disk devices(qcow2,virio) hotpluged onto pci-bridge can not alloc bar resource.</div><div style="margin: 0;">  2.2) disk devices(qcow2,virio) are staticly pluged to pci-bridge can not be found by guest os. </div><div style="margin: 0;">         those devices are on pci bus, but can not be recognized by guest os, no block device are probed.</div><div style="margin: 0;"><br></div><div style="margin: 0;">qemu qemu-6.2.0</div><div style="margin: 0;">-----hotplug error message--------</div><div style="margin: 0;"><div style="margin: 0;">[ 1067.577384] pci 0000:06:02.0: [1af4:1001] type 00 class 0x010000</div><div style="margin: 0;">[ 1067.578312] pci 0000:06:02.0: reg 0x10: [io 0x0000-0x007f]</div><div style="margin: 0;">[ 1067.578794] pci 0000:06:02.0: reg 0x14: [mem 0x00000000-0x00000fff]</div><div style="margin: 0;">[ 1067.579419] pci 0000:06:02.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit pref]</div><div style="margin: 0;">[ 1067.581592] pci 0000:06:02.0: BAR 4: no space for [mem size 0x00004000 64bit pref]</div><div style="margin: 0;">[ 1067.581942] pci 0000:06:02.0: BAR 4: failed to assign [mem size 0x00004000 64bit pref]</div><div style="margin: 0;">[ 1067.582264] pci 0000:06:02.0: BAR 1: no space for [mem size 0x00001000]</div><div style="margin: 0;">[ 1067.582625] pci 0000:06:02.0: BAR 1: failed to assign [mem size 0x00001000]</div><div style="margin: 0;">[ 1067.582942] pci 0000:06:02.0: BAR 0: no space for [io size 0x0080]</div><div style="margin: 0;">[ 1067.583253] pci 0000:06:02.0: BAR 0: failed to assign [io size 0x0080]</div><div style="margin: 0;">[ 1067.584019] PCI Interrupt Link [GSIE] enabled at IRQ 20</div><div style="margin: 0;">[ 1067.584749] virtio-pci 0000:06:02.0: virtio_pci: leaving for legacy driver</div><div style="margin: 0;">[ 1067.585296] virtio-pci: probe of 0000:06:02.0 failed with error -12</div><div style="margin: 0;"><br></div><div style="margin: 0;">-------staticly plug------------</div><div style="margin: 0;"><div style="margin: 0;">[ 0.680299] pci 0000:06:02.0: [1af4:1001] type 00 class 0x010000</div><div style="margin: 0;">[ 0.683035] pci 0000:06:02.0: reg 0x10: [io 0xc080-0xc0ff]</div><div style="margin: 0;">[ 0.688036] pci 0000:06:02.0: reg 0x14: [mem 0xfca01000-0xfca01fff]</div><div style="margin: 0;">[ 0.700040] pci 0000:06:02.0: reg 0x20: [mem 0xfb404000-0xfb407fff 64bit pref]</div><div style="margin: 0;"><br></div><div style="margin: 0;">--------------------------------------</div></div></div><div style="position:relative;zoom:1"></div><div id="divNeteaseMailCard"></div><p style="margin: 0;"><br></p><pre><br>At 2022-11-04 05:28:47, "Laine Stump" <laine@laine.org> wrote:
>On 11/3/22 6:35 AM, longguang.yue wrote:
>> Hi, all
>>    I have add two pcie-to-pci-bridge controllers, how hotplug devices 
>> onto this two controllers?  and libvirt knows to plug onto pci-bridge 
>> when there are no pcie-ports.
>> defaultly libvirt plugs devices onto pcie-port.
>
>Do you mean you want hotplugged devices to be placed on the 
>pcie-to-pci-bridge even though there are unused pci-root-ports?
>
>You can force a new device to be hotplugged to a particular slot of a 
>particular controller by including the <address> element in the XML of 
>the device you attach - whatever controller/slot/function you specify 
>there is what libvirt will use (practically speaking the function must 
>be 0).
>
>My recollection is that, *if the device is a conventional PCI device 
>(and not a PCIe device) then libvirt will anyway attempt to find a an 
>open conventional PCI slot, which would be found only on the 
>pcie-to-pci-bridge. However, very few devices are actually conventional 
>PCI, so this will very rarely happen automatically (I haven't looked at 
>that code in a long time, and retain no specific memory, but I think the 
>only emulated device that is conventional PCI is a watchdog device or 
>something)
>
>So, if libvirt is selecting a pcie-root-port to plug in a device, that's 
>because the device is a PCIe device. If you want to force it to do 
>otherwise, you'll need to manually specify the address (just set "bus" 
>of the address to the "index" of the controller, set "slot" to an 
>unoccupied slot (1-31), and set domain and function to 0).
</pre></div>