initialize CPU model list after handling -readconfig options

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>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Eduardo Habkost 2012-03-09 16:19:07 -03:00 committed by Anthony Liguori
parent 885bb0369a
commit ecf40beae7
1 changed files with 13 additions and 7 deletions

20
vl.c
View File

@ -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