diff mbox

[v0] spapr: Restore support for older PowerPC CPU cores

Message ID 1467126302-15604-1-git-send-email-bharata@linux.vnet.ibm.com
State New
Headers show

Commit Message

Bharata B Rao June 28, 2016, 3:05 p.m. UTC
Introduction of core based CPU hotplug for PowerPC sPAPR didn't
add support for 970 and POWER5+ based core types. Add support for
the same.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
---
TODO:
- There are few other variants of 970, like 970fx etc for which I have not
  added core types since I am not sure if they fall under sPAPR category.
- Is it time to add core type for POWER8NVL yet ?

 hw/ppc/spapr_cpu_core.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

David Gibson June 29, 2016, 1:41 a.m. UTC | #1
On Tue, Jun 28, 2016 at 08:35:02PM +0530, Bharata B Rao wrote:
> Introduction of core based CPU hotplug for PowerPC sPAPR didn't
> add support for 970 and POWER5+ based core types. Add support for
> the same.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>

Applied to ppc-for-2.7

> ---
> TODO:
> - There are few other variants of 970, like 970fx etc for which I have not
>   added core types since I am not sure if they fall under sPAPR category.

Yeah, frankly I wouldn't really trust the spapr code with anything
except POWER7 or POWER8.

> - Is it time to add core type for POWER8NVL yet ?

Yes.

>  hw/ppc/spapr_cpu_core.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 8b802a6..cebeef5 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -325,7 +325,6 @@ static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
>  
>  /*
>   * instance_init routines from different flavours of sPAPR CPU cores.
> - * TODO: Add support for 'host' core type.
>   */
>  #define SPAPR_CPU_CORE_INITFN(_type, _fname) \
>  static void glue(glue(spapr_cpu_core_, _fname), _initfn(Object *obj)) \
> @@ -338,6 +337,8 @@ static void glue(glue(spapr_cpu_core_, _fname), _initfn(Object *obj)) \
>      core->cpu_class = oc; \
>  }
>  
> +SPAPR_CPU_CORE_INITFN(970_v2.2, 970);
> +SPAPR_CPU_CORE_INITFN(POWER5+_v2.1, POWER5plus);
>  SPAPR_CPU_CORE_INITFN(POWER7_v2.3, POWER7);
>  SPAPR_CPU_CORE_INITFN(POWER7+_v2.1, POWER7plus);
>  SPAPR_CPU_CORE_INITFN(POWER8_v2.0, POWER8);
> @@ -349,6 +350,12 @@ typedef struct SPAPRCoreInfo {
>  } SPAPRCoreInfo;
>  
>  static const SPAPRCoreInfo spapr_cores[] = {
> +    /* 970 */
> +    { .name = "970", .initfn = spapr_cpu_core_970_initfn },
> +
> +    /* POWER5 */
> +    { .name = "POWER5+", .initfn = spapr_cpu_core_POWER5plus_initfn },
> +
>      /* POWER7 and aliases */
>      { .name = "POWER7_v2.3", .initfn = spapr_cpu_core_POWER7_initfn },
>      { .name = "POWER7", .initfn = spapr_cpu_core_POWER7_initfn },
Thomas Huth June 29, 2016, 7:13 a.m. UTC | #2
On 28.06.2016 17:05, Bharata B Rao wrote:
> Introduction of core based CPU hotplug for PowerPC sPAPR didn't
> add support for 970 and POWER5+ based core types. Add support for
> the same.
> 
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> ---
> TODO:
> - There are few other variants of 970, like 970fx etc for which I have not
>   added core types since I am not sure if they fall under sPAPR category.

At least the 970MP was used in IBM's JS21 blade server which was also a
sPAPR based system, so you might at least want to add that CPU, too.

If I get https://en.wikipedia.org/wiki/PowerPC_970#PowerPC_970FX right,
the 970FX has only been used in Apple computers, so it's likely not
needed to add support for these FX CPUs.

 Thomas
diff mbox

Patch

diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index 8b802a6..cebeef5 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -325,7 +325,6 @@  static void spapr_cpu_core_class_init(ObjectClass *oc, void *data)
 
 /*
  * instance_init routines from different flavours of sPAPR CPU cores.
- * TODO: Add support for 'host' core type.
  */
 #define SPAPR_CPU_CORE_INITFN(_type, _fname) \
 static void glue(glue(spapr_cpu_core_, _fname), _initfn(Object *obj)) \
@@ -338,6 +337,8 @@  static void glue(glue(spapr_cpu_core_, _fname), _initfn(Object *obj)) \
     core->cpu_class = oc; \
 }
 
+SPAPR_CPU_CORE_INITFN(970_v2.2, 970);
+SPAPR_CPU_CORE_INITFN(POWER5+_v2.1, POWER5plus);
 SPAPR_CPU_CORE_INITFN(POWER7_v2.3, POWER7);
 SPAPR_CPU_CORE_INITFN(POWER7+_v2.1, POWER7plus);
 SPAPR_CPU_CORE_INITFN(POWER8_v2.0, POWER8);
@@ -349,6 +350,12 @@  typedef struct SPAPRCoreInfo {
 } SPAPRCoreInfo;
 
 static const SPAPRCoreInfo spapr_cores[] = {
+    /* 970 */
+    { .name = "970", .initfn = spapr_cpu_core_970_initfn },
+
+    /* POWER5 */
+    { .name = "POWER5+", .initfn = spapr_cpu_core_POWER5plus_initfn },
+
     /* POWER7 and aliases */
     { .name = "POWER7_v2.3", .initfn = spapr_cpu_core_POWER7_initfn },
     { .name = "POWER7", .initfn = spapr_cpu_core_POWER7_initfn },