On Wed, Sep 07, 2016 at 10:39:28PM +0300, Marcel Apfelbaum wrote:
> On 09/07/2016 08:55 PM, Laine Stump wrote:
> > On 09/07/2016 04:06 AM, Marcel Apfelbaum wrote:
> > > Good point, maybe libvirt can avoid adding switches unless the user
> > > explicitly
> > > asked for them. I checked and it a actually works fine in QEMU.
> > 
> > I'm just now writing the code that auto-adds *-ports as they are needed, 
> > and doing it this way simplifies it *immensely*.
> > 
> > When I had to think about the possibility of needing upstream/downstream 
> > switches, as an endpoint device was added, I would need to check if a 
> > (root|downstream)-port was available and if not I might
> > be able to just add a root-port, or I might have to add a downstream-port; 
> > if the only option was a downstream port, then *that* might require adding 
> > a new *upstream* port.
> > 
> > If I can limit libvirt to only auto-adding root-ports (and if there is no 
> > downside to putting multiple root ports on a single root bus port), then I 
> > just need to find an empty function of an empty
> > slot on the root bus, add a root-port, and I'm done (and since 224 is *a 
> > lot*, I think at least for now it's okay to punt once they get past that 
> > point).
> > 
> > So, *is* there any downside to doing this?
> > 
> No downside I can think of.
> Just be sure to emphasize the auto-add mechanism stops at 'x' devices. If the 
> user needs more,
> he should manually add switches and manually assign the devices to the 
> Downstream Ports.

Just catching up on mail after vacation and read this thread. Thanks
Marcel for writing this document (I guess a v1 is coming soon). This
will be very useful for determining the best default configuration of
a virtio-pci mach-virt.

FWIW, here is the proposal that I started formulating when I experimented
with this several months ago;

 - PCIe-only (disable-modern=off, disable-legacy=on)
 - No legacy PCI support, i.e. no bridges (yup, I'm a PCIe purist,
   but don't have a leg to stand on if push came to shove)
 - use one or more ports for virtio-scsi controllers for disks, one is
   probably enough
 - use one or more ports with multifunction, allowing up to 8 functions,
   for virtio-net, one port is probably enough
 - Add N extra ports for hotplug, N defaulting to 2
   - hotplug devices to first N-1 ports, reserving last for a switch
   - if switch is needed, hotplug it with M downstream ports
     (M defaulting to 2*(N-1)+1)
 - Encourage somebody to develop generic versions of ports and switches,
   hi Marcel :-), and exclusively use those in the configuration


Reply via email to