[libvirt] [RFC PATCH] support multifunction PCI device

Daniel P. Berrange berrange at redhat.com
Tue May 10 10:00:22 UTC 2011


On Tue, May 10, 2011 at 02:00:17PM +0800, Wen Congyang wrote:
> We want to use more than 200+ device. Libvirt does not use multi
> function PCI device and PCI-to-PCI bridge. So we can not use more
> than 200+ device if it's a PCI device or it's controller is a PCI
> device.

IMHO using multi function support is a dead end, because it
makes hotplug completely unusable and is not even possible
for most PCI devices. The way we want to raise the device
limit is

  a. Supporting multiple PCI domains (multiple PCI root complexes)
  b. Adding PCI bridges
  c. A virtio-scsi controller to allow > 1 virtio disk per PCI device

any of those will dramatically increase the number of devices
we can use without the horrible hotplug problems that multifunction
introduces.

> This patch adds the support of multi function PCI device. It
> does not support to hot plug/unplug multi function PCI device.
> 
> TODO:
> 1. support to hot plug multi function PCI device
>    We only can hot plug one device at one time. I think we should
>    introduce another command 'virsh attach-devices XXX' to support
>    hot plug more than one device at one time?

Since you can't do practical hotplug of multifunction devices at the
QEMU layer at all, there's nothing useful we can do at libvirt either.

> 
> 2. support to hot unplug multi function PCI device
>    hot unpluging multi function PCI device meas that all the other
>    devices on the same slot will be hot unpluged. So we should do
>    some cleanup and remove the other devices too. If the other
>    device on the same slot does not support hot unpluged, or it is a
>    a controller and some other devices still use this controller,
>    I think we should refuse to hot unplug this mutlti function PCI
>    device.

IMHO these kind of restrictions will make life really unpleasant
for applications and are a reason we should *not* support the
multifunction code. Instead we should focus on one of the other
3 options I mention above.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list