qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL 2/7] well-defined listing order for machine types


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PULL 2/7] well-defined listing order for machine types
Date: Wed, 22 Oct 2014 10:39:16 +0300

On Wed, 2014-10-22 at 10:26 +0300, Michael S. Tsirkin wrote:
> From: Laszlo Ersek <address@hidden>
> 
> Commit 261747f1 ("vl: Use MachineClass instead of global QEMUMachine
> list") broke the ordering of the machine types in the user-visible output
> of
> 
>   qemu-system-XXXX -M \?
> 
> This occurred because registration was rebased from a manually maintained
> linked list to GLib hash tables:
> 
>   qemu_register_machine()
>     type_register()
>       type_register_internal()
>         type_table_add()
>           g_hash_table_insert()
> 
> and because the listing was rebased accordingly, from the traversal of the
> list to the traversal of the hash table (rendered as an ad-hoc list):
> 
>   machine_parse()
>     object_class_get_list(TYPE_MACHINE)
>       object_class_foreach()
>         g_hash_table_foreach()
> 
> The current order is a "random" one, for practical purposes, which is
> annoying for users.
> 
> Introduce new members QEMUMachine.family and MachineClass.family, allowing
> machine types to be "clustered". Introduce a comparator function that
> establishes a total ordering between machine types, ordering machine types
> in the same family next to each other. In machine_parse(), list the
> supported machine types sorted with the comparator function.
> 
> The comparator function:
> - sorts whole families before standalone machine types,
> - sorts whole families between each other in alphabetically increasing
>   order,
> - sorts machine types inside the same family in alphabetically decreasing
>   order,
> - sorts standalone machine types between each other in alphabetically
>   increasing order.
> 
> After this patch, all machine types are considered standalone, and
> accordingly, the output is alphabetically ascending. This will be refined
> in the following patches.
> 
> Effects on the x86_64 output:
> 
> Before:
> 
> > Supported machines are:
> > pc-0.13              Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-2.0        Standard PC (i440FX + PIIX, 1996)
> > pc-1.0               Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-2.1        Standard PC (i440FX + PIIX, 1996)
> > pc-q35-1.7           Standard PC (Q35 + ICH9, 2009)
> > pc-1.1               Standard PC (i440FX + PIIX, 1996)
> > pc-0.14              Standard PC (i440FX + PIIX, 1996)
> > pc-q35-2.0           Standard PC (Q35 + ICH9, 2009)
> > pc-i440fx-1.4        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.5        Standard PC (i440FX + PIIX, 1996)
> > pc-0.15              Standard PC (i440FX + PIIX, 1996)
> > pc-q35-1.4           Standard PC (Q35 + ICH9, 2009)
> > isapc                ISA-only PC
> > pc                   Standard PC (i440FX + PIIX, 1996) (alias of 
> > pc-i440fx-2.2)
> > pc-i440fx-2.2        Standard PC (i440FX + PIIX, 1996) (default)
> > pc-1.2               Standard PC (i440FX + PIIX, 1996)
> > pc-0.10              Standard PC (i440FX + PIIX, 1996)
> > pc-0.11              Standard PC (i440FX + PIIX, 1996)
> > pc-q35-2.1           Standard PC (Q35 + ICH9, 2009)
> > q35                  Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-2.2)
> > pc-q35-2.2           Standard PC (Q35 + ICH9, 2009)
> > pc-i440fx-1.6        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.7        Standard PC (i440FX + PIIX, 1996)
> > none                 empty machine
> > pc-q35-1.5           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-1.6           Standard PC (Q35 + ICH9, 2009)
> > pc-0.12              Standard PC (i440FX + PIIX, 1996)
> > pc-1.3               Standard PC (i440FX + PIIX, 1996)
> 
> After:
> 
> > Supported machines are:
> > isapc                ISA-only PC
> > none                 empty machine
> > pc-0.10              Standard PC (i440FX + PIIX, 1996)
> > pc-0.11              Standard PC (i440FX + PIIX, 1996)
> > pc-0.12              Standard PC (i440FX + PIIX, 1996)
> > pc-0.13              Standard PC (i440FX + PIIX, 1996)
> > pc-0.14              Standard PC (i440FX + PIIX, 1996)
> > pc-0.15              Standard PC (i440FX + PIIX, 1996)
> > pc-1.0               Standard PC (i440FX + PIIX, 1996)
> > pc-1.1               Standard PC (i440FX + PIIX, 1996)
> > pc-1.2               Standard PC (i440FX + PIIX, 1996)
> > pc-1.3               Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.4        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.5        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.6        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-1.7        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-2.0        Standard PC (i440FX + PIIX, 1996)
> > pc-i440fx-2.1        Standard PC (i440FX + PIIX, 1996)
> > pc                   Standard PC (i440FX + PIIX, 1996) (alias of 
> > pc-i440fx-2.2)
> > pc-i440fx-2.2        Standard PC (i440FX + PIIX, 1996) (default)
> > pc-q35-1.4           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-1.5           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-1.6           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-1.7           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-2.0           Standard PC (Q35 + ICH9, 2009)
> > pc-q35-2.1           Standard PC (Q35 + ICH9, 2009)
> > q35                  Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-2.2)
> > pc-q35-2.2           Standard PC (Q35 + ICH9, 2009)
> 
> Effects on the aarch64 output:
> 
> Before:
> 
> > Supported machines are:
> > lm3s811evb           Stellaris LM3S811EVB
> > canon-a1100          Canon PowerShot A1100 IS
> > vexpress-a15         ARM Versatile Express for Cortex-A15
> > vexpress-a9          ARM Versatile Express for Cortex-A9
> > xilinx-zynq-a9       Xilinx Zynq Platform Baseboard for Cortex-A9
> > connex               Gumstix Connex (PXA255)
> > n800                 Nokia N800 tablet aka. RX-34 (OMAP2420)
> > lm3s6965evb          Stellaris LM3S6965EVB
> > versatileab          ARM Versatile/AB (ARM926EJ-S)
> > borzoi               Borzoi PDA (PXA270)
> > tosa                 Tosa PDA (PXA255)
> > cheetah              Palm Tungsten|E aka. Cheetah PDA (OMAP310)
> > midway               Calxeda Midway (ECX-2000)
> > mainstone            Mainstone II (PXA27x)
> > n810                 Nokia N810 tablet aka. RX-44 (OMAP2420)
> > terrier              Terrier PDA (PXA270)
> > highbank             Calxeda Highbank (ECX-1000)
> > cubieboard           cubietech cubieboard
> > sx1-v1               Siemens SX1 (OMAP310) V1
> > sx1                  Siemens SX1 (OMAP310) V2
> > realview-eb-mpcore   ARM RealView Emulation Baseboard (ARM11MPCore)
> > kzm                  ARM KZM Emulation Baseboard (ARM1136)
> > akita                Akita PDA (PXA270)
> > z2                   Zipit Z2 (PXA27x)
> > musicpal             Marvell 88w8618 / MusicPal (ARM926EJ-S)
> > realview-pb-a8       ARM RealView Platform Baseboard for Cortex-A8
> > versatilepb          ARM Versatile/PB (ARM926EJ-S)
> > realview-eb          ARM RealView Emulation Baseboard (ARM926EJ-S)
> > realview-pbx-a9      ARM RealView Platform Baseboard Explore for Cortex-A9
> > spitz                Spitz PDA (PXA270)
> > none                 empty machine
> > virt                 ARM Virtual Machine
> > collie               Collie PDA (SA-1110)
> > smdkc210             Samsung SMDKC210 board (Exynos4210)
> > verdex               Gumstix Verdex (PXA270)
> > nuri                 Samsung NURI board (Exynos4210)
> > integratorcp         ARM Integrator/CP (ARM926EJ-S)
> 
> After:
> 
> > Supported machines are:
> > akita                Akita PDA (PXA270)
> > borzoi               Borzoi PDA (PXA270)
> > canon-a1100          Canon PowerShot A1100 IS
> > cheetah              Palm Tungsten|E aka. Cheetah PDA (OMAP310)
> > collie               Collie PDA (SA-1110)
> > connex               Gumstix Connex (PXA255)
> > cubieboard           cubietech cubieboard
> > highbank             Calxeda Highbank (ECX-1000)
> > integratorcp         ARM Integrator/CP (ARM926EJ-S)
> > kzm                  ARM KZM Emulation Baseboard (ARM1136)
> > lm3s6965evb          Stellaris LM3S6965EVB
> > lm3s811evb           Stellaris LM3S811EVB
> > mainstone            Mainstone II (PXA27x)
> > midway               Calxeda Midway (ECX-2000)
> > musicpal             Marvell 88w8618 / MusicPal (ARM926EJ-S)
> > n800                 Nokia N800 tablet aka. RX-34 (OMAP2420)
> > n810                 Nokia N810 tablet aka. RX-44 (OMAP2420)
> > none                 empty machine
> > nuri                 Samsung NURI board (Exynos4210)
> > realview-eb          ARM RealView Emulation Baseboard (ARM926EJ-S)
> > realview-eb-mpcore   ARM RealView Emulation Baseboard (ARM11MPCore)
> > realview-pb-a8       ARM RealView Platform Baseboard for Cortex-A8
> > realview-pbx-a9      ARM RealView Platform Baseboard Explore for Cortex-A9
> > smdkc210             Samsung SMDKC210 board (Exynos4210)
> > spitz                Spitz PDA (PXA270)
> > sx1                  Siemens SX1 (OMAP310) V2
> > sx1-v1               Siemens SX1 (OMAP310) V1
> > terrier              Terrier PDA (PXA270)
> > tosa                 Tosa PDA (PXA255)
> > verdex               Gumstix Verdex (PXA270)
> > versatileab          ARM Versatile/AB (ARM926EJ-S)
> > versatilepb          ARM Versatile/PB (ARM926EJ-S)
> > vexpress-a15         ARM Versatile Express for Cortex-A15
> > vexpress-a9          ARM Versatile Express for Cortex-A9
> > virt                 ARM Virtual Machine
> > xilinx-zynq-a9       Xilinx Zynq Platform Baseboard for Cortex-A9
> > z2                   Zipit Z2 (PXA27x)
> 
> RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1145042
> Signed-off-by: Laszlo Ersek <address@hidden>
> Reviewed-by: Michael S. Tsirkin <address@hidden>
> Signed-off-by: Michael S. Tsirkin <address@hidden>


This misses my and Paolo's "Reviewed-by" tag :(

Thanks,
Marcel

[...]




reply via email to

[Prev in Thread] Current Thread [Next in Thread]