[virt-tools-list] [virt-manager PATCH] support creation of x86_64 domains with alternate machine types (e.g. q35)

Cole Robinson crobinso at redhat.com
Sat May 3 17:40:26 UTC 2014


On 05/02/2014 10:16 AM, Laine Stump wrote:
> In an apparent attempt to simplify creation of x86_64 domains,
> create.py has always cleared out the list of possible machine types,
> thus forcing all new domains to use the default machine type "pc". Now
> that the much more modern machinetypes based on the Intel Q35 chipset
> are available in qemu, it is more important to allow the user to
> select the machine type when creating a machine.
> 
> This patch makes the default machine type "pc", but adds "q35" as a
> secondary "priority" selection (meaning that it will be placed at the
> top of the list). I also noticed that all the more specific
> machinetypes supported by qemu were duplicated (possibly due to
> combining the list for x86_64 and i686?), so I made a modification to
> remove duplicates in the list.
> 
> Since virt-manager now defaults to adding USB 2.0 controllers to new
> machines, this small change allows virt-manager to create fully
> functioning Q35 machines.

Thanks for the patch. However the UI isn't acceptable as-is IMO.

The reason we hide the machine types is because they are plain confusing:
pc-1.3, pc-1.4, or even worse rhel-6.3, rhel-6.4, etc. 99% of users won't know
what any of the options mean.

So IMO the way to expose q35 is with a checkbox like 'Use Q35 chipset'.

But is q35 even 'ready' yet? Does it still block migration? Is there any
roadmap to make it the default?

Even if it is in good shape these days, I'd rather hide this option on the VM
details window, so knowledgable users have to go find it behind 'customize
before install'.

Thanks,
Cole

> ---
>  virtManager/create.py | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/virtManager/create.py b/virtManager/create.py
> index c2e0ee7..4fd8a8a 100644
> --- a/virtManager/create.py
> +++ b/virtManager/create.py
> @@ -710,19 +710,21 @@ class vmmCreate(vmmGObjectUI):
>          model.clear()
>  
>          machines = self.capsdomain.machines[:]
> -        if self.capsguest.arch in ["i686", "x86_64"]:
> -            machines = []
> -        machines.sort()
> -
> -        defmachine = None
>          prios = []
> -        if self.capsguest.arch == "armv7l":
> +        defmachine = None
> +
> +        if self.capsguest.arch in ["i686", "x86_64"]:
> +            defmachine = "pc"
> +            prios = [ "pc", "q35" ]
> +        elif self.capsguest.arch == "armv7l":
>              defmachine = "vexpress-a9"
>              prios = ["vexpress-a9", "vexpress-a15", "highbank", "midway"]
>          elif self.capsguest.arch == "ppc64":
>              defmachine = "pseries"
>              prios = ["pseries"]
>  
> +        machines = sorted(set(machines))
> +
>          for p in prios[:]:
>              if p not in machines:
>                  prios.remove(p)
> 




More information about the virt-tools-list mailing list