Patchwork initialize CPU model list after handling -readconfig options

login
register
mail settings
Submitter Eduardo Habkost
Date March 9, 2012, 7:19 p.m.
Message ID <1331320747-2209-1-git-send-email-ehabkost@redhat.com>
Download mbox | patch
Permalink /patch/145752/
State New
Headers show

Comments

Eduardo Habkost - March 9, 2012, 7:19 p.m.
To properly load cpudefs using -readconfig, we have to call
cpudef_init() after finishing the command-line option handling.

Consequently, the handling of "-cpu ?" has to be done after the
command-line option handling loop, too.

Without this patch, "-readconfig configfile -cpu ?" fails to list the
CPU definitions read from 'configfile'.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 vl.c |   20 +++++++++++++-------
 1 files changed, 13 insertions(+), 7 deletions(-)
Anthony Liguori - March 13, 2012, 2:01 a.m.
On 03/09/2012 01:19 PM, Eduardo Habkost wrote:
> To properly load cpudefs using -readconfig, we have to call
> cpudef_init() after finishing the command-line option handling.
>
> Consequently, the handling of "-cpu ?" has to be done after the
> command-line option handling loop, too.
>
> Without this patch, "-readconfig configfile -cpu ?" fails to list the
> CPU definitions read from 'configfile'.
>
> Signed-off-by: Eduardo Habkost<ehabkost@redhat.com>

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>   vl.c |   20 +++++++++++++-------
>   1 files changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index 97ab2b9..65f11f2 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2359,7 +2359,6 @@ int main(int argc, char **argv, char **envp)
>               exit(1);
>           }
>       }
> -    cpudef_init();
>
>       /* second pass of option parsing */
>       optind = 1;
> @@ -2382,12 +2381,7 @@ int main(int argc, char **argv, char **envp)
>                   break;
>               case QEMU_OPTION_cpu:
>                   /* hw initialization will check this */
> -                if (*optarg == '?') {
> -                    list_cpus(stdout,&fprintf, optarg);
> -                    exit(0);
> -                } else {
> -                    cpu_model = optarg;
> -                }
> +                cpu_model = optarg;
>                   break;
>               case QEMU_OPTION_hda:
>                   {
> @@ -3191,6 +3185,18 @@ int main(int argc, char **argv, char **envp)
>       }
>       loc_set_none();
>
> +    /* Init CPU def lists, based on config
> +     * - Must be called after all the qemu_read_config_file() calls
> +     * - Must be called before list_cpus()
> +     * - Must be called before machine->init()
> +     */
> +    cpudef_init();
> +
> +    if (cpu_model&&  *cpu_model == '?') {
> +        list_cpus(stdout,&fprintf, optarg);
> +        exit(0);
> +    }
> +
>       /* Open the logfile at this point, if necessary. We can't open the logfile
>        * when encountering either of the logging options (-d or -D) because the
>        * other one may be encountered later on the command line, changing the

Patch

diff --git a/vl.c b/vl.c
index 97ab2b9..65f11f2 100644
--- a/vl.c
+++ b/vl.c
@@ -2359,7 +2359,6 @@  int main(int argc, char **argv, char **envp)
             exit(1);
         }
     }
-    cpudef_init();
 
     /* second pass of option parsing */
     optind = 1;
@@ -2382,12 +2381,7 @@  int main(int argc, char **argv, char **envp)
                 break;
             case QEMU_OPTION_cpu:
                 /* hw initialization will check this */
-                if (*optarg == '?') {
-                    list_cpus(stdout, &fprintf, optarg);
-                    exit(0);
-                } else {
-                    cpu_model = optarg;
-                }
+                cpu_model = optarg;
                 break;
             case QEMU_OPTION_hda:
                 {
@@ -3191,6 +3185,18 @@  int main(int argc, char **argv, char **envp)
     }
     loc_set_none();
 
+    /* Init CPU def lists, based on config
+     * - Must be called after all the qemu_read_config_file() calls
+     * - Must be called before list_cpus()
+     * - Must be called before machine->init()
+     */
+    cpudef_init();
+
+    if (cpu_model && *cpu_model == '?') {
+        list_cpus(stdout, &fprintf, optarg);
+        exit(0);
+    }
+
     /* Open the logfile at this point, if necessary. We can't open the logfile
      * when encountering either of the logging options (-d or -D) because the
      * other one may be encountered later on the command line, changing the