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
- 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