[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH RFC 7/8] arm: virt: parse cpu_model only once
From: |
Igor Mammedov |
Subject: |
[Qemu-arm] [PATCH RFC 7/8] arm: virt: parse cpu_model only once |
Date: |
Wed, 1 Jun 2016 18:37:29 +0200 |
considering that features are converted to
global properties and global properties are
automatically applied to every new instance
of created CPU (at object_new() time), there
is no point in parsing cpu_model string every
time a CPU created.
So move parsing outside CPU creation loop and
do it only once.
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/arm/virt.c | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 473e439..0dbee47 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1112,6 +1112,10 @@ static void machvirt_init(MachineState *machine)
VirtGuestInfoState *guest_info_state = g_malloc0(sizeof *guest_info_state);
VirtGuestInfo *guest_info = &guest_info_state->info;
char **cpustr;
+ ObjectClass *oc;
+ const char *typename;
+ CPUClass *cc;
+ Error *err = NULL;
bool firmware_loaded = bios_name || drive_get(IF_PFLASH, 0, 0);
if (!cpu_model) {
@@ -1191,27 +1195,24 @@ static void machvirt_init(MachineState *machine)
create_fdt(vbi);
- for (n = 0; n < smp_cpus; n++) {
- ObjectClass *oc = cpu_class_by_name(TYPE_ARM_CPU, cpustr[0]);
- const char *typename = object_class_get_name(oc);
- CPUClass *cc = CPU_CLASS(oc);
- Object *cpuobj;
- Error *err = NULL;
- char *cpuopts = g_strdup(cpustr[1]);
-
- if (!oc) {
- error_report("Unable to find CPU definition");
- exit(1);
- }
- /* convert -smp CPU options specified by the user into global props */
- cc->parse_features(typename, cpuopts, &err);
- cpuobj = object_new(typename);
+ oc = cpu_class_by_name(TYPE_ARM_CPU, cpustr[0]);
+ if (!oc) {
+ error_report("Unable to find CPU definition");
+ exit(1);
+ }
+ typename = object_class_get_name(oc);
- g_free(cpuopts);
- if (err) {
- error_report_err(err);
- exit(1);
- }
+ /* convert -smp CPU options specified by the user into global props */
+ cc = CPU_CLASS(oc);
+ cc->parse_features(typename, cpustr[1], &err);
+ g_strfreev(cpustr);
+ if (err) {
+ error_report_err(err);
+ exit(1);
+ }
+
+ for (n = 0; n < smp_cpus; n++) {
+ Object *cpuobj = object_new(typename);
if (!vms->secure) {
object_property_set_bool(cpuobj, false, "has_el3", NULL);
@@ -1242,7 +1243,6 @@ static void machvirt_init(MachineState *machine)
object_property_set_bool(cpuobj, true, "realized", NULL);
}
- g_strfreev(cpustr);
fdt_add_timer_nodes(vbi, gic_version);
fdt_add_cpu_nodes(vbi);
fdt_add_psci_node(vbi);
--
1.8.3.1
- [Qemu-arm] [PATCH] target-i386: Remove xlevel & hv-spinlocks option fixups, (continued)
[Qemu-arm] [PATCH RFC 2/8] target-i386: cpu: move xcc->kvm_required check to reaize time, Igor Mammedov, 2016/06/01
[Qemu-arm] [PATCH RFC 5/8] target-sparc: cpu: use sparc_cpu_parse_features() directly, Igor Mammedov, 2016/06/01
[Qemu-arm] [PATCH RFC 6/8] cpu: use CPUClass->parse_features() as convertor to global properties, Igor Mammedov, 2016/06/01
[Qemu-arm] [PATCH RFC 7/8] arm: virt: parse cpu_model only once,
Igor Mammedov <=
[Qemu-arm] [PATCH RFC 8/8] pc: parse cpu features only once, Igor Mammedov, 2016/06/01
Re: [Qemu-arm] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, Peter Maydell, 2016/06/01
Re: [Qemu-arm] [Qemu-devel] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, David Hildenbrand, 2016/06/02
Message not available
Message not availableRe: [Qemu-arm] [Qemu-devel] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, Eduardo Habkost, 2016/06/03
Re: [Qemu-arm] [Qemu-devel] [PATCH RFC 0/8] cpus: make "-cpu cpux, features" global properties, David Hildenbrand, 2016/06/06