Use the new cpu_address_space_init function to set the total number of
ASes in a CPU instead of directly setting it via cpu->num_ases.

Signed-off-by: Gustavo Romero <[email protected]>
---
 system/cpus.c                    |  4 ++--
 target/arm/cpu.c                 | 10 +---------
 target/i386/kvm/kvm-cpu.c        |  3 ++-
 target/i386/tcg/system/tcg-cpu.c |  2 +-
 4 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/system/cpus.c b/system/cpus.c
index fa9deafa29..54be6a3faf 100644
--- a/system/cpus.c
+++ b/system/cpus.c
@@ -718,8 +718,8 @@ void qemu_init_vcpu(CPUState *cpu)
         /* If the target cpu hasn't set up any address spaces itself,
          * give it the default one.
          */
-        cpu->num_ases = 1;
-        cpu_address_space_add(cpu, 0, "cpu-memory", cpu->memory);
+        cpu_address_space_init(cpu, 1 /* Number of ASes */);
+        cpu_address_space_add(cpu, 0 /* AS index */, "cpu-memory", 
cpu->memory);
     }
 
     /* accelerators all implement the AccelOpsClass */
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 1902c510f9..67ad6f0a6e 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2148,15 +2148,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error 
**errp)
     unsigned int smp_cpus = ms->smp.cpus;
     bool has_secure = cpu->has_el3 || arm_feature(env, ARM_FEATURE_M_SECURITY);
 
-    /*
-     * We must set cs->num_ases to the final value before
-     * the first call to cpu_address_space_init.
-     */
-    if (cpu->tag_memory != NULL) {
-        cs->num_ases = 3 + has_secure;
-    } else {
-        cs->num_ases = 1 + has_secure;
-    }
+    cpu_address_space_init(cs, ARMASIdx_MAX);
 
     cpu_address_space_add(cs, ARMASIdx_NS, "cpu-memory", cs->memory);
 
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
index a6d94d0620..dbb04ef051 100644
--- a/target/i386/kvm/kvm-cpu.c
+++ b/target/i386/kvm/kvm-cpu.c
@@ -92,13 +92,14 @@ static bool kvm_cpu_realizefn(CPUState *cs, Error **errp)
         kvm_set_guest_phys_bits(cs);
     }
 
+    cpu_address_space_init(cs, X86ASIdx_MAX);
+
     /*
      * When SMM is enabled, there is 2 address spaces. Otherwise only 1.
      *
      * Only initialize address space 0 here, the second one for SMM is
      * initialized at register_smram_listener() after machine init done.
      */
-    cs->num_ases = x86_machine_is_smm_enabled(X86_MACHINE(current_machine)) ? 
2 : 1;
     cpu_address_space_add(cs, X86ASIdx_MEM, "cpu-memory", cs->memory);
 
     return true;
diff --git a/target/i386/tcg/system/tcg-cpu.c b/target/i386/tcg/system/tcg-cpu.c
index 231a4bdf55..ab72c5ff7b 100644
--- a/target/i386/tcg/system/tcg-cpu.c
+++ b/target/i386/tcg/system/tcg-cpu.c
@@ -73,7 +73,7 @@ bool tcg_cpu_realizefn(CPUState *cs, Error **errp)
     memory_region_add_subregion_overlap(cpu->cpu_as_root, 0, cpu->cpu_as_mem, 
0);
     memory_region_set_enabled(cpu->cpu_as_mem, true);
 
-    cs->num_ases = 2;
+    cpu_address_space_init(cs, X86ASIdx_MAX);
     cpu_address_space_add(cs, X86ASIdx_MEM, "cpu-memory", cs->memory);
     cpu_address_space_add(cs, X86ASIdx_SMM, "cpu-smm", cpu->cpu_as_root);
 
-- 
2.34.1


Reply via email to