diff mbox

[RFC,v3,10/24] ppc: Update cpu_model in MachineState

Message ID 1429858066-12088-11-git-send-email-bharata@linux.vnet.ibm.com
State New
Headers show

Commit Message

Bharata B Rao April 24, 2015, 6:47 a.m. UTC
Keep cpu_model field in MachineState uptodate so that it can be used
from the CPU hotplug path.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/mac_newworld.c  | 10 +++++-----
 hw/ppc/mac_oldworld.c  |  7 +++----
 hw/ppc/ppc440_bamboo.c |  7 +++----
 hw/ppc/prep.c          |  7 +++----
 hw/ppc/spapr.c         |  7 +++----
 hw/ppc/virtex_ml507.c  |  7 +++----
 6 files changed, 20 insertions(+), 25 deletions(-)

Comments

David Gibson May 5, 2015, 6:49 a.m. UTC | #1
On Fri, Apr 24, 2015 at 12:17:32PM +0530, Bharata B Rao wrote:
> Keep cpu_model field in MachineState uptodate so that it can be used
> from the CPU hotplug path.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

As before, this looks fine to me, but I'm not sure which tree it
should go through.

Alex, do you want to take it directly, or send an Acked-by and I'll
take it through spapr-next?

> ---
>  hw/ppc/mac_newworld.c  | 10 +++++-----
>  hw/ppc/mac_oldworld.c  |  7 +++----
>  hw/ppc/ppc440_bamboo.c |  7 +++----
>  hw/ppc/prep.c          |  7 +++----
>  hw/ppc/spapr.c         |  7 +++----
>  hw/ppc/virtex_ml507.c  |  7 +++----
>  6 files changed, 20 insertions(+), 25 deletions(-)
> 
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 624b4ab..fe18bce 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -145,7 +145,6 @@ static void ppc_core99_reset(void *opaque)
>  static void ppc_core99_init(MachineState *machine)
>  {
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      const char *initrd_filename = machine->initrd_filename;
> @@ -182,14 +181,15 @@ static void ppc_core99_init(MachineState *machine)
>      linux_boot = (kernel_filename != NULL);
>  
>      /* init CPUs */
> -    if (cpu_model == NULL)
> +    if (machine->cpu_model == NULL) {
>  #ifdef TARGET_PPC64
> -        cpu_model = "970fx";
> +        machine->cpu_model = "970fx";
>  #else
> -        cpu_model = "G4";
> +        machine->cpu_model = "G4";
>  #endif
> +    }
>      for (i = 0; i < smp_cpus; i++) {
> -        cpu = cpu_ppc_init(cpu_model);
> +        cpu = cpu_ppc_init(machine->cpu_model);
>          if (cpu == NULL) {
>              fprintf(stderr, "Unable to find PowerPC CPU definition\n");
>              exit(1);
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index 3079510..2732319 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -75,7 +75,6 @@ static void ppc_heathrow_reset(void *opaque)
>  static void ppc_heathrow_init(MachineState *machine)
>  {
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      const char *initrd_filename = machine->initrd_filename;
> @@ -107,10 +106,10 @@ static void ppc_heathrow_init(MachineState *machine)
>      linux_boot = (kernel_filename != NULL);
>  
>      /* init CPUs */
> -    if (cpu_model == NULL)
> -        cpu_model = "G3";
> +    if (machine->cpu_model == NULL)
> +        machine->cpu_model = "G3";
>      for (i = 0; i < smp_cpus; i++) {
> -        cpu = cpu_ppc_init(cpu_model);
> +        cpu = cpu_ppc_init(machine->cpu_model);
>          if (cpu == NULL) {
>              fprintf(stderr, "Unable to find PowerPC CPU definition\n");
>              exit(1);
> diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
> index 778970a..032fa80 100644
> --- a/hw/ppc/ppc440_bamboo.c
> +++ b/hw/ppc/ppc440_bamboo.c
> @@ -159,7 +159,6 @@ static void main_cpu_reset(void *opaque)
>  static void bamboo_init(MachineState *machine)
>  {
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      const char *initrd_filename = machine->initrd_filename;
> @@ -184,10 +183,10 @@ static void bamboo_init(MachineState *machine)
>      int i;
>  
>      /* Setup CPU. */
> -    if (cpu_model == NULL) {
> -        cpu_model = "440EP";
> +    if (machine->cpu_model == NULL) {
> +        machine->cpu_model = "440EP";
>      }
> -    cpu = cpu_ppc_init(cpu_model);
> +    cpu = cpu_ppc_init(machine->cpu_model);
>      if (cpu == NULL) {
>          fprintf(stderr, "Unable to initialize CPU!\n");
>          exit(1);
> diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> index 15df7f3..55e9643 100644
> --- a/hw/ppc/prep.c
> +++ b/hw/ppc/prep.c
> @@ -364,7 +364,6 @@ static PortioList prep_port_list;
>  static void ppc_prep_init(MachineState *machine)
>  {
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      const char *initrd_filename = machine->initrd_filename;
> @@ -396,10 +395,10 @@ static void ppc_prep_init(MachineState *machine)
>      linux_boot = (kernel_filename != NULL);
>  
>      /* init CPUs */
> -    if (cpu_model == NULL)
> -        cpu_model = "602";
> +    if (machine->cpu_model == NULL)
> +        machine->cpu_model = "602";
>      for (i = 0; i < smp_cpus; i++) {
> -        cpu = cpu_ppc_init(cpu_model);
> +        cpu = cpu_ppc_init(machine->cpu_model);
>          if (cpu == NULL) {
>              fprintf(stderr, "Unable to find PowerPC CPU definition\n");
>              exit(1);
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index f2c4fbd..8cc55fe 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1473,7 +1473,6 @@ static void ppc_spapr_init(MachineState *machine)
>  {
>      sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      const char *initrd_filename = machine->initrd_filename;
> @@ -1567,11 +1566,11 @@ static void ppc_spapr_init(MachineState *machine)
>      }
>  
>      /* init CPUs */
> -    if (cpu_model == NULL) {
> -        cpu_model = kvm_enabled() ? "host" : "POWER7";
> +    if (machine->cpu_model == NULL) {
> +        machine->cpu_model = kvm_enabled() ? "host" : "POWER7";
>      }
>      for (i = 0; i < smp_cpus; i++) {
> -        cpu = cpu_ppc_init(cpu_model);
> +        cpu = cpu_ppc_init(machine->cpu_model);
>          if (cpu == NULL) {
>              fprintf(stderr, "Unable to find PowerPC CPU definition\n");
>              exit(1);
> diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
> index 6ebd5be..f33d398 100644
> --- a/hw/ppc/virtex_ml507.c
> +++ b/hw/ppc/virtex_ml507.c
> @@ -197,7 +197,6 @@ static int xilinx_load_device_tree(hwaddr addr,
>  static void virtex_init(MachineState *machine)
>  {
>      ram_addr_t ram_size = machine->ram_size;
> -    const char *cpu_model = machine->cpu_model;
>      const char *kernel_filename = machine->kernel_filename;
>      const char *kernel_cmdline = machine->kernel_cmdline;
>      hwaddr initrd_base = 0;
> @@ -214,11 +213,11 @@ static void virtex_init(MachineState *machine)
>      int i;
>  
>      /* init CPUs */
> -    if (cpu_model == NULL) {
> -        cpu_model = "440-Xilinx";
> +    if (machine->cpu_model == NULL) {
> +        machine->cpu_model = "440-Xilinx";
>      }
>  
> -    cpu = ppc440_init_xilinx(&ram_size, 1, cpu_model, 400000000);
> +    cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000);
>      env = &cpu->env;
>      qemu_register_reset(main_cpu_reset, cpu);
>
Bharata B Rao May 6, 2015, 4:49 a.m. UTC | #2
On Tue, May 05, 2015 at 04:49:08PM +1000, David Gibson wrote:
> On Fri, Apr 24, 2015 at 12:17:32PM +0530, Bharata B Rao wrote:
> > Keep cpu_model field in MachineState uptodate so that it can be used
> > from the CPU hotplug path.
> > 
> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> 
> As before, this looks fine to me, but I'm not sure which tree it
> should go through.
> 
> Alex, do you want to take it directly, or send an Acked-by and I'll
> take it through spapr-next?

In addition to this patch, there are a few other patches that are required
by hotplug but can go in independently.

03/24 - spapr: Consider max_cpus during xics initialization
04/24 - spapr: Support ibm,lrdr-capacity device tree property
05/24 - spapr: Reorganize CPU dt generation code (Maybe?)
06/24 - spapr: Consolidate cpu init code into a routine
18/24 - xics_kvm: Don't enable KVM_CAP_IRQ_XICS if already enabled
19/24 - xics_kvm: Add cpu_destroy method to XICS

Should I post these as a separate set (pre-requisites for sPAPR CPU hotplug)
so that they can be pushed independently of the core hotplug patchset ?

Regards,
Bharata.
diff mbox

Patch

diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 624b4ab..fe18bce 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -145,7 +145,6 @@  static void ppc_core99_reset(void *opaque)
 static void ppc_core99_init(MachineState *machine)
 {
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     const char *initrd_filename = machine->initrd_filename;
@@ -182,14 +181,15 @@  static void ppc_core99_init(MachineState *machine)
     linux_boot = (kernel_filename != NULL);
 
     /* init CPUs */
-    if (cpu_model == NULL)
+    if (machine->cpu_model == NULL) {
 #ifdef TARGET_PPC64
-        cpu_model = "970fx";
+        machine->cpu_model = "970fx";
 #else
-        cpu_model = "G4";
+        machine->cpu_model = "G4";
 #endif
+    }
     for (i = 0; i < smp_cpus; i++) {
-        cpu = cpu_ppc_init(cpu_model);
+        cpu = cpu_ppc_init(machine->cpu_model);
         if (cpu == NULL) {
             fprintf(stderr, "Unable to find PowerPC CPU definition\n");
             exit(1);
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 3079510..2732319 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -75,7 +75,6 @@  static void ppc_heathrow_reset(void *opaque)
 static void ppc_heathrow_init(MachineState *machine)
 {
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     const char *initrd_filename = machine->initrd_filename;
@@ -107,10 +106,10 @@  static void ppc_heathrow_init(MachineState *machine)
     linux_boot = (kernel_filename != NULL);
 
     /* init CPUs */
-    if (cpu_model == NULL)
-        cpu_model = "G3";
+    if (machine->cpu_model == NULL)
+        machine->cpu_model = "G3";
     for (i = 0; i < smp_cpus; i++) {
-        cpu = cpu_ppc_init(cpu_model);
+        cpu = cpu_ppc_init(machine->cpu_model);
         if (cpu == NULL) {
             fprintf(stderr, "Unable to find PowerPC CPU definition\n");
             exit(1);
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index 778970a..032fa80 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -159,7 +159,6 @@  static void main_cpu_reset(void *opaque)
 static void bamboo_init(MachineState *machine)
 {
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     const char *initrd_filename = machine->initrd_filename;
@@ -184,10 +183,10 @@  static void bamboo_init(MachineState *machine)
     int i;
 
     /* Setup CPU. */
-    if (cpu_model == NULL) {
-        cpu_model = "440EP";
+    if (machine->cpu_model == NULL) {
+        machine->cpu_model = "440EP";
     }
-    cpu = cpu_ppc_init(cpu_model);
+    cpu = cpu_ppc_init(machine->cpu_model);
     if (cpu == NULL) {
         fprintf(stderr, "Unable to initialize CPU!\n");
         exit(1);
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 15df7f3..55e9643 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -364,7 +364,6 @@  static PortioList prep_port_list;
 static void ppc_prep_init(MachineState *machine)
 {
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     const char *initrd_filename = machine->initrd_filename;
@@ -396,10 +395,10 @@  static void ppc_prep_init(MachineState *machine)
     linux_boot = (kernel_filename != NULL);
 
     /* init CPUs */
-    if (cpu_model == NULL)
-        cpu_model = "602";
+    if (machine->cpu_model == NULL)
+        machine->cpu_model = "602";
     for (i = 0; i < smp_cpus; i++) {
-        cpu = cpu_ppc_init(cpu_model);
+        cpu = cpu_ppc_init(machine->cpu_model);
         if (cpu == NULL) {
             fprintf(stderr, "Unable to find PowerPC CPU definition\n");
             exit(1);
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f2c4fbd..8cc55fe 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1473,7 +1473,6 @@  static void ppc_spapr_init(MachineState *machine)
 {
     sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     const char *initrd_filename = machine->initrd_filename;
@@ -1567,11 +1566,11 @@  static void ppc_spapr_init(MachineState *machine)
     }
 
     /* init CPUs */
-    if (cpu_model == NULL) {
-        cpu_model = kvm_enabled() ? "host" : "POWER7";
+    if (machine->cpu_model == NULL) {
+        machine->cpu_model = kvm_enabled() ? "host" : "POWER7";
     }
     for (i = 0; i < smp_cpus; i++) {
-        cpu = cpu_ppc_init(cpu_model);
+        cpu = cpu_ppc_init(machine->cpu_model);
         if (cpu == NULL) {
             fprintf(stderr, "Unable to find PowerPC CPU definition\n");
             exit(1);
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index 6ebd5be..f33d398 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -197,7 +197,6 @@  static int xilinx_load_device_tree(hwaddr addr,
 static void virtex_init(MachineState *machine)
 {
     ram_addr_t ram_size = machine->ram_size;
-    const char *cpu_model = machine->cpu_model;
     const char *kernel_filename = machine->kernel_filename;
     const char *kernel_cmdline = machine->kernel_cmdline;
     hwaddr initrd_base = 0;
@@ -214,11 +213,11 @@  static void virtex_init(MachineState *machine)
     int i;
 
     /* init CPUs */
-    if (cpu_model == NULL) {
-        cpu_model = "440-Xilinx";
+    if (machine->cpu_model == NULL) {
+        machine->cpu_model = "440-Xilinx";
     }
 
-    cpu = ppc440_init_xilinx(&ram_size, 1, cpu_model, 400000000);
+    cpu = ppc440_init_xilinx(&ram_size, 1, machine->cpu_model, 400000000);
     env = &cpu->env;
     qemu_register_reset(main_cpu_reset, cpu);