[Libosinfo] [PATCH osinfo-db 5/9] device: Add chipset q35

Daniel P. Berrangé berrange at redhat.com
Thu Aug 30 15:04:27 UTC 2018


On Wed, Aug 29, 2018 at 05:54:43PM -0400, Cole Robinson wrote:
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
> Is class 'chipset' fine for q35? The actual PCI ID is for
>     ' 82G33/G31/P35/P31 Express DRAM Controller'

I've been looking into this more and am increasingly convinced we should not
be keying off the host-bridge PCI ID at all.

For a start a machine type is actually multiple devices, of which host-bridge
is just one small part. So we already have multiple PCI IDs for a single
machine type.

Then on aarch64 and risv the PCI root is just a generic QEMU invented chipset.

Meanwhile PPC64 is even more insane as it has no PCI host-bridge AFAICT.
The pseries machine type just has a VGA controller immediately as device 0

Then there's all the machines which don't have PCI at all. eg most arm7
machines, where it would be desirable to indicate wihch are supported
by Fedora.

If we look at VMWare they emulate an i440bx chipset, but it is not like
any realworld i440bx chipset because it supports PCI Express, whose
invention post-dates the invention of i440bx by 6 years. So it is really
a custom vmware chipset at this point.


Thus, my gut feeling is that we need to express the chipset / machine
type in some more generic manner.

We could invent a custom URI format for the machine types
eg

    qemu.org/chipset/i686-i440x
    qemu.org/chipset/i686-q35
    qemu.org/chipset/x86_64-i440fx
    qemu.org/chipset/x86_64-q35
    qemu.org/chipset/aarch64/virt
    qemu.org/chipset/riscv/virt
    vmware.com/chipset/version12
    vmware.com/chipset/version13
    vmware.com/chipset/version14
    microsoft.com/chipset/gen1
    microsoft.com/chipset/gen2

I'm also wondering if we should not use the <device> models at all,
and instead invent a new XML element

   <chipset id="qemu.org/chipset/i686-i440x">
      <vendor>qemu</vendor>
      <arch>i686</arch>
      <name>i440fx</name>
   </chipset>
   <chipset id="qemu.org/chipset/x86_64-i440x">
      <vendor>qemu</vendor>
      <arch>x86_64</arch>
      <name>i440fx</name>
   </chipset>
   <chipset id="qemu.org/chipset/aarch64/virt">
      <vendor>qemu</vendor>
      <arch>i686</arch>
      <arch>x86_64</arch>
      <name>i440fx</name>
   </chipset>
   ...etc...

And reference those chipset definitions in guest OS:

  <chipset id="qemu.org/chipset/aarch64/virt"/>

> diff --git a/data/device/pcisig.com/pci-8086-29c0.d/class.xml.in b/data/device/pcisig.com/pci-8086-29c0.d/class.xml.in
> new file mode 100644
> index 0000000..2ac4515
> --- /dev/null
> +++ b/data/device/pcisig.com/pci-8086-29c0.d/class.xml.in
> @@ -0,0 +1,8 @@
> +<libosinfo version="0.0.1">
> +<!-- Licensed under the GNU General Public License version 2 or later.
> +     See http://www.gnu.org/licenses/ for a copy of the license text -->
> +  <device id="http://pcisig.com/pci/8086/29c0">
> +    <name>q35</name>
> +    <class>chipset</class>
> +  </device>
> +</libosinfo>

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the Libosinfo mailing list