[libvirt] [Qemu-devel] q35 machine type and libvirt.

Anthony Liguori anthony at codemonkey.ws
Thu Feb 28 00:46:08 UTC 2013


Alex Williamson <alex.williamson at redhat.com> 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




More information about the libvir-list mailing list