Alex Williamson <alex.williamson@xxxxxxxxxx> writes: > On Wed, 2013-02-27 at 13:20 -0500, Laine Stump wrote: >> On 02/06/2013 02:13 PM, Laine Stump wrote: >> > Now that qemu is getting the q35 machine type, libvirt needs to support it. >> >> In an attempt to make sure that libvirt actually does something useful >> with qemu's new machine type, I'm revisiting this topic and trying to >> get a more thorough understanding. >> >> I've developed my own list of what I *think* are the reasons for wanting >> a new machine type in qemu (and from that it should be more apparent >> what libvirt needs to do with it), and am wondering how far off the mark >> I am: >> > > Right, somehow libvirt needs to know or qemu needs to tell it something > about the devices it's plugging in. If you were to grab your trust > 10/100Mbps Legacy PCI ethernet card and try to plug it into a > motherboard you'd quickly notice that you can only plug it into certain > slots. This is the same problem. PCI device are attached to a legacy > PCI bus, which means it needs to be behind a PCIe-to-PCI bridge. Legacy > Endpoints and Endpoints are plugin PCIe cards, so they need to be > plugged in behind a PCIe switch or root port. Integrated Endpoints are > motherboard components, per the spec, they shouldn't even really be > hotplug-able. They attach directly to the root complex. We could do this with QOM. The chipset could have a set of link properties for the integrated devices. For instance: Q35Chipset Link<E1000> integrated_nic; Link<StdVGA> integrated_vga; ... We should prevent PCI bus plugging for slots "owned" by integrated devices. libvirt has a way to probe for links that it can add including what types are allowed for it. Regards, Anthony Liguori > >> * support some new emulated chipset devices? > > -M q35 + -device ioh3420 (root port) + -device i82801b11-bridge > (pcie-to-pci bridge) > >> * Anything else specific required to passthrough pcie devices? > > I just sent out an RFC asking about VGA routing, it's possible libvirt > will need to understand some concept of a primary VGA device and specify > it somehow to QEMU. > > It's also possible (probable) that we'll make assigned devices able to > mangle PCIe types to make it more flexible where they can be attached > (for instance you may not want to have your HD audio device exposed as a > root complex device if that disables hotplug, so we may mangle it to > look like a regular endpoint. Windows is picky about root complex > devices, so we may also mangle endpoint to integrated endpoint as well). > > Also need to be aware that all PCIe "buses" except the root complex are > actually point-to-point links, so a root port connects to one PCIe > device (which may be multifunction). PCIe switches are needed to get > fan out to connect multiple devices, one device per downstream port. It > would be interesting how much we can abuse the topology in a virtual > system, but it's probably best not to confuse guests. Thanks, > > Alex -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list