All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Michael Mueller <mimu@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Gleb Natapov <gleb@kernel.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Andreas Faerber <afaerber@suse.de>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [RFC PATCH v2 04/15] cpu-model/s390: Introduce S390 CPU models
Date: Fri, 20 Feb 2015 14:54:23 +0100	[thread overview]
Message-ID: <54E73C8F.7000202@suse.de> (raw)
In-Reply-To: <1424183053-4310-5-git-send-email-mimu@linux.vnet.ibm.com>



On 17.02.15 15:24, Michael Mueller wrote:
> This patch implements the static part of the s390 cpu class definitions.
> It defines s390 cpu models by means of virtual cpu ids (enum) which contain
> information on the cpu generation, the machine class, the GA number and
> the machine type. The cpu id is used to instantiate a cpu class per cpu
> model.
> 
> In addition the patch introduces the QMP enumeration AccelId. It is used
> to index certain cpu model poperties per accelerator.
> 
> Furthermore it extends the existing S390CPUClass by model related properties.
> 
> Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
> Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
> ---
>  qapi-schema.json           | 11 +++++++
>  target-s390x/Makefile.objs |  1 +
>  target-s390x/cpu-models.c  | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  target-s390x/cpu-models.h  | 71 +++++++++++++++++++++++++++++++++++++++++
>  target-s390x/cpu-qom.h     | 22 +++++++++++++
>  target-s390x/cpu.c         |  2 ++
>  6 files changed, 186 insertions(+)
>  create mode 100644 target-s390x/cpu-models.c
>  create mode 100644 target-s390x/cpu-models.h
> 
> diff --git a/qapi-schema.json b/qapi-schema.json
> index e16f8eb..4d237c8 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -2473,6 +2473,17 @@
>  ##
>  { 'command': 'query-machines', 'returns': ['MachineInfo'] }
>  
> +
> +##
> +# @AccelId
> +#
> +# Defines accelerator ids
> +#
> +# Since: 2.3.0
> +##
> +{ 'enum': 'AccelId',
> +  'data': ['qtest', 'tcg', 'kvm', 'xen'  ] }
> +
>  ##
>  # @CpuDefinitionInfo:
>  #
> diff --git a/target-s390x/Makefile.objs b/target-s390x/Makefile.objs
> index 2c57494..9f55140 100644
> --- a/target-s390x/Makefile.objs
> +++ b/target-s390x/Makefile.objs
> @@ -1,5 +1,6 @@
>  obj-y += translate.o helper.o cpu.o interrupt.o
>  obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o
>  obj-y += gdbstub.o
> +obj-y += cpu-models.o
>  obj-$(CONFIG_SOFTMMU) += machine.o ioinst.o arch_dump.o
>  obj-$(CONFIG_KVM) += kvm.o
> diff --git a/target-s390x/cpu-models.c b/target-s390x/cpu-models.c
> new file mode 100644
> index 0000000..4841553
> --- /dev/null
> +++ b/target-s390x/cpu-models.c
> @@ -0,0 +1,79 @@
> +/*
> + * CPU models for s390
> + *
> + * Copyright 2014,2015 IBM Corp.
> + *
> + * Author(s): Michael Mueller <mimu@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or (at
> + * your option) any later version. See the COPYING file in the top-level
> + * directory.
> + */
> +
> +#include "qemu-common.h"
> +#include "cpu-models.h"
> +
> +#define S390_PROC_DEF(_name, _cpu_id, _desc)                            \
> +    static void                                                         \
> +    glue(_cpu_id, _cpu_class_init)                                      \
> +    (ObjectClass *oc, void *data)                                       \
> +    {                                                                   \
> +        DeviceClass *dc = DEVICE_CLASS(oc);                             \
> +        S390CPUClass *cc = S390_CPU_CLASS(oc);                          \
> +                                                                        \
> +        cc->is_active[ACCEL_ID_KVM] = true;                             \
> +        cc->mach        = g_malloc0(sizeof(S390CPUMachineProps));       \
> +        cc->mach->ga    = cpu_ga(_cpu_id);                              \
> +        cc->mach->class = cpu_class(_cpu_id);                           \
> +        cc->mach->order = cpu_order(_cpu_id);                           \
> +        cc->proc        = g_malloc0(sizeof(S390CPUProcessorProps));     \
> +        cc->proc->gen   = cpu_generation(_cpu_id);                      \
> +        cc->proc->ver   = S390_DEF_VERSION;                             \
> +        cc->proc->id    = S390_DEF_ID;                                  \
> +        cc->proc->type  = cpu_type(_cpu_id);                            \
> +        cc->proc->ibc   = S390_DEF_IBC;                                 \
> +        dc->desc        = _desc;                                        \
> +    }                                                                   \
> +    static const TypeInfo                                               \
> +    glue(_cpu_id, _cpu_type_info) = {                                   \
> +        .name       = _name "-" TYPE_S390_CPU,                          \
> +        .parent     = TYPE_S390_CPU,                                    \
> +        .class_init = glue(_cpu_id, _cpu_class_init),                   \
> +    };                                                                  \
> +    static void                                                         \
> +    glue(_cpu_id, _cpu_register_types)(void)                            \
> +    {                                                                   \
> +        type_register_static(                                           \
> +            &glue(_cpu_id, _cpu_type_info));                            \
> +    }                                                                   \
> +    type_init(glue(_cpu_id, _cpu_register_types))
> +
> +/* define S390 CPU model classes */
> +S390_PROC_DEF("2064-ga1", CPU_S390_2064_GA1, "IBM zSeries 900 GA1")
> +S390_PROC_DEF("2064-ga2", CPU_S390_2064_GA2, "IBM zSeries 900 GA2")
> +S390_PROC_DEF("2064-ga3", CPU_S390_2064_GA3, "IBM zSeries 900 GA3")
> +S390_PROC_DEF("2066-ga1", CPU_S390_2066_GA1, "IBM zSeries 800 GA1")
> +S390_PROC_DEF("2084-ga1", CPU_S390_2084_GA1, "IBM zSeries 990 GA1")
> +S390_PROC_DEF("2084-ga2", CPU_S390_2084_GA2, "IBM zSeries 990 GA2")
> +S390_PROC_DEF("2084-ga3", CPU_S390_2084_GA3, "IBM zSeries 990 GA3")
> +S390_PROC_DEF("2084-ga4", CPU_S390_2084_GA4, "IBM zSeries 990 GA4")
> +S390_PROC_DEF("2084-ga5", CPU_S390_2084_GA5, "IBM zSeries 990 GA5")
> +S390_PROC_DEF("2086-ga1", CPU_S390_2086_GA1, "IBM zSeries 890 GA1")
> +S390_PROC_DEF("2086-ga2", CPU_S390_2086_GA2, "IBM zSeries 890 GA2")
> +S390_PROC_DEF("2086-ga3", CPU_S390_2086_GA3, "IBM zSeries 890 GA3")
> +S390_PROC_DEF("2094-ga1", CPU_S390_2094_GA1, "IBM System z9 EC GA1")
> +S390_PROC_DEF("2094-ga2", CPU_S390_2094_GA2, "IBM System z9 EC GA2")
> +S390_PROC_DEF("2094-ga3", CPU_S390_2094_GA3, "IBM System z9 EC GA3")
> +S390_PROC_DEF("2096-ga1", CPU_S390_2096_GA1, "IBM System z9 BC GA1")
> +S390_PROC_DEF("2096-ga2", CPU_S390_2096_GA2, "IBM System z9 BC GA2")
> +S390_PROC_DEF("2097-ga1", CPU_S390_2097_GA1, "IBM System z10 EC GA1")
> +S390_PROC_DEF("2097-ga2", CPU_S390_2097_GA2, "IBM System z10 EC GA2")
> +S390_PROC_DEF("2097-ga3", CPU_S390_2097_GA3, "IBM System z10 EC GA3")
> +S390_PROC_DEF("2098-ga1", CPU_S390_2098_GA1, "IBM System z10 BC GA1")
> +S390_PROC_DEF("2098-ga2", CPU_S390_2098_GA2, "IBM System z10 BC GA2")
> +S390_PROC_DEF("2817-ga1", CPU_S390_2817_GA1, "IBM zEnterprise 196 GA1")
> +S390_PROC_DEF("2817-ga2", CPU_S390_2817_GA2, "IBM zEnterprise 196 GA2")
> +S390_PROC_DEF("2818-ga1", CPU_S390_2818_GA1, "IBM zEnterprise 114 GA1")
> +S390_PROC_DEF("2827-ga1", CPU_S390_2827_GA1, "IBM zEnterprise EC12 GA1")
> +S390_PROC_DEF("2827-ga2", CPU_S390_2827_GA2, "IBM zEnterprise EC12 GA2")
> +S390_PROC_DEF("2828-ga1", CPU_S390_2828_GA1, "IBM zEnterprise BC12 GA1")
> diff --git a/target-s390x/cpu-models.h b/target-s390x/cpu-models.h
> new file mode 100644
> index 0000000..db681bf
> --- /dev/null
> +++ b/target-s390x/cpu-models.h
> @@ -0,0 +1,71 @@
> +/*
> + * CPU models for s390
> + *
> + * Copyright 2014,2015 IBM Corp.
> + *
> + * Author(s): Michael Mueller <mimu@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or (at
> + * your option) any later version. See the COPYING file in the top-level
> + * directory.
> + */
> +
> +#ifndef TARGET_S390X_CPU_MODELS_H
> +#define TARGET_S390X_CPU_MODELS_H
> +
> +#define S390_EC 0x1
> +#define S390_BC 0x2
> +
> +#define S390_DEF_VERSION 0xff
> +#define S390_DEF_IBC     0x0
> +#define S390_DEF_ID      0xdecade
> +#define S390_DEF_TYPE    0x2064
> +
> +#define cpu_type(x)       (((x) >>  0) & 0xffff)
> +#define cpu_order(x)      (((x) >> 16) & 0xffff)
> +#define cpu_ga(x)         (((x) >> 16) & 0xf)
> +#define cpu_class(x)      (((x) >> 20) & 0x3)
> +#define cpu_generation(x) (((x) >> 24) & 0xff)
> +
> +/*
> + * bits 0-7   : CMOS generation
> + * bits 8-9   : reserved
> + * bits 10-11 : machine class 0=unknown 1=EC 2=BC
> + * bits 12-15 : GA
> + * bits 16-31 : machine type
> + *
> + * note: bits are named according to s390
> + *       architecture specific endienness
> + */
> +enum {
> +    CPU_S390_2064_GA1 = 0x07112064,
> +    CPU_S390_2064_GA2 = 0x07122064,
> +    CPU_S390_2064_GA3 = 0x07132064,
> +    CPU_S390_2066_GA1 = 0x07212066,
> +    CPU_S390_2084_GA1 = 0x08112084,
> +    CPU_S390_2084_GA2 = 0x08122084,
> +    CPU_S390_2084_GA3 = 0x08132084,
> +    CPU_S390_2084_GA4 = 0x08142084,
> +    CPU_S390_2084_GA5 = 0x08152084,
> +    CPU_S390_2086_GA1 = 0x08212086,
> +    CPU_S390_2086_GA2 = 0x08222086,
> +    CPU_S390_2086_GA3 = 0x08232086,
> +    CPU_S390_2094_GA1 = 0x09112094,
> +    CPU_S390_2094_GA2 = 0x09122094,
> +    CPU_S390_2094_GA3 = 0x09132094,
> +    CPU_S390_2096_GA1 = 0x09212096,
> +    CPU_S390_2096_GA2 = 0x09222096,
> +    CPU_S390_2097_GA1 = 0x0a112097,
> +    CPU_S390_2097_GA2 = 0x0a122097,
> +    CPU_S390_2097_GA3 = 0x0a132097,
> +    CPU_S390_2098_GA1 = 0x0a212098,
> +    CPU_S390_2098_GA2 = 0x0a222098,
> +    CPU_S390_2817_GA1 = 0x0b112817,
> +    CPU_S390_2817_GA2 = 0x0b122817,
> +    CPU_S390_2818_GA1 = 0x0b212818,
> +    CPU_S390_2827_GA1 = 0x0c112827,
> +    CPU_S390_2827_GA2 = 0x0c122827,
> +    CPU_S390_2828_GA1 = 0x0c212828,
> +};
> +
> +#endif
> diff --git a/target-s390x/cpu-qom.h b/target-s390x/cpu-qom.h
> index 8b376df..1332147 100644
> --- a/target-s390x/cpu-qom.h
> +++ b/target-s390x/cpu-qom.h
> @@ -32,6 +32,23 @@
>  #define S390_CPU_GET_CLASS(obj) \
>      OBJECT_GET_CLASS(S390CPUClass, (obj), TYPE_S390_CPU)
>  
> +/* machine related properties */
> +typedef struct S390CPUMachineProps {
> +    uint16_t class;      /* machine class */
> +    uint16_t ga;         /* availability number of machine */
> +    uint16_t order;      /* order of availability */
> +} S390CPUMachineProps;
> +
> +/* processor related properties */
> +typedef struct S390CPUProcessorProps {
> +    uint16_t gen;        /* S390 CMOS generation */
> +    uint16_t ver;        /* version of processor */
> +    uint32_t id;         /* processor identification*/
> +    uint16_t type;       /* machine type */
> +    uint16_t ibc;        /* IBC value */
> +    uint64_t *fac_list;  /* list of facilities */

Just make this uint64_t fac_list[2]. That way we don't have to track any
messy allocations.


Alex

WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Michael Mueller <mimu@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Gleb Natapov <gleb@kernel.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Andreas Faerber <afaerber@suse.de>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [RFC PATCH v2 04/15] cpu-model/s390: Introduce S390 CPU models
Date: Fri, 20 Feb 2015 14:54:23 +0100	[thread overview]
Message-ID: <54E73C8F.7000202@suse.de> (raw)
In-Reply-To: <1424183053-4310-5-git-send-email-mimu@linux.vnet.ibm.com>



On 17.02.15 15:24, Michael Mueller wrote:
> This patch implements the static part of the s390 cpu class definitions.
> It defines s390 cpu models by means of virtual cpu ids (enum) which contain
> information on the cpu generation, the machine class, the GA number and
> the machine type. The cpu id is used to instantiate a cpu class per cpu
> model.
> 
> In addition the patch introduces the QMP enumeration AccelId. It is used
> to index certain cpu model poperties per accelerator.
> 
> Furthermore it extends the existing S390CPUClass by model related properties.
> 
> Signed-off-by: Michael Mueller <mimu@linux.vnet.ibm.com>
> Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com>
> ---
>  qapi-schema.json           | 11 +++++++
>  target-s390x/Makefile.objs |  1 +
>  target-s390x/cpu-models.c  | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  target-s390x/cpu-models.h  | 71 +++++++++++++++++++++++++++++++++++++++++
>  target-s390x/cpu-qom.h     | 22 +++++++++++++
>  target-s390x/cpu.c         |  2 ++
>  6 files changed, 186 insertions(+)
>  create mode 100644 target-s390x/cpu-models.c
>  create mode 100644 target-s390x/cpu-models.h
> 
> diff --git a/qapi-schema.json b/qapi-schema.json
> index e16f8eb..4d237c8 100644
> --- a/qapi-schema.json
> +++ b/qapi-schema.json
> @@ -2473,6 +2473,17 @@
>  ##
>  { 'command': 'query-machines', 'returns': ['MachineInfo'] }
>  
> +
> +##
> +# @AccelId
> +#
> +# Defines accelerator ids
> +#
> +# Since: 2.3.0
> +##
> +{ 'enum': 'AccelId',
> +  'data': ['qtest', 'tcg', 'kvm', 'xen'  ] }
> +
>  ##
>  # @CpuDefinitionInfo:
>  #
> diff --git a/target-s390x/Makefile.objs b/target-s390x/Makefile.objs
> index 2c57494..9f55140 100644
> --- a/target-s390x/Makefile.objs
> +++ b/target-s390x/Makefile.objs
> @@ -1,5 +1,6 @@
>  obj-y += translate.o helper.o cpu.o interrupt.o
>  obj-y += int_helper.o fpu_helper.o cc_helper.o mem_helper.o misc_helper.o
>  obj-y += gdbstub.o
> +obj-y += cpu-models.o
>  obj-$(CONFIG_SOFTMMU) += machine.o ioinst.o arch_dump.o
>  obj-$(CONFIG_KVM) += kvm.o
> diff --git a/target-s390x/cpu-models.c b/target-s390x/cpu-models.c
> new file mode 100644
> index 0000000..4841553
> --- /dev/null
> +++ b/target-s390x/cpu-models.c
> @@ -0,0 +1,79 @@
> +/*
> + * CPU models for s390
> + *
> + * Copyright 2014,2015 IBM Corp.
> + *
> + * Author(s): Michael Mueller <mimu@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or (at
> + * your option) any later version. See the COPYING file in the top-level
> + * directory.
> + */
> +
> +#include "qemu-common.h"
> +#include "cpu-models.h"
> +
> +#define S390_PROC_DEF(_name, _cpu_id, _desc)                            \
> +    static void                                                         \
> +    glue(_cpu_id, _cpu_class_init)                                      \
> +    (ObjectClass *oc, void *data)                                       \
> +    {                                                                   \
> +        DeviceClass *dc = DEVICE_CLASS(oc);                             \
> +        S390CPUClass *cc = S390_CPU_CLASS(oc);                          \
> +                                                                        \
> +        cc->is_active[ACCEL_ID_KVM] = true;                             \
> +        cc->mach        = g_malloc0(sizeof(S390CPUMachineProps));       \
> +        cc->mach->ga    = cpu_ga(_cpu_id);                              \
> +        cc->mach->class = cpu_class(_cpu_id);                           \
> +        cc->mach->order = cpu_order(_cpu_id);                           \
> +        cc->proc        = g_malloc0(sizeof(S390CPUProcessorProps));     \
> +        cc->proc->gen   = cpu_generation(_cpu_id);                      \
> +        cc->proc->ver   = S390_DEF_VERSION;                             \
> +        cc->proc->id    = S390_DEF_ID;                                  \
> +        cc->proc->type  = cpu_type(_cpu_id);                            \
> +        cc->proc->ibc   = S390_DEF_IBC;                                 \
> +        dc->desc        = _desc;                                        \
> +    }                                                                   \
> +    static const TypeInfo                                               \
> +    glue(_cpu_id, _cpu_type_info) = {                                   \
> +        .name       = _name "-" TYPE_S390_CPU,                          \
> +        .parent     = TYPE_S390_CPU,                                    \
> +        .class_init = glue(_cpu_id, _cpu_class_init),                   \
> +    };                                                                  \
> +    static void                                                         \
> +    glue(_cpu_id, _cpu_register_types)(void)                            \
> +    {                                                                   \
> +        type_register_static(                                           \
> +            &glue(_cpu_id, _cpu_type_info));                            \
> +    }                                                                   \
> +    type_init(glue(_cpu_id, _cpu_register_types))
> +
> +/* define S390 CPU model classes */
> +S390_PROC_DEF("2064-ga1", CPU_S390_2064_GA1, "IBM zSeries 900 GA1")
> +S390_PROC_DEF("2064-ga2", CPU_S390_2064_GA2, "IBM zSeries 900 GA2")
> +S390_PROC_DEF("2064-ga3", CPU_S390_2064_GA3, "IBM zSeries 900 GA3")
> +S390_PROC_DEF("2066-ga1", CPU_S390_2066_GA1, "IBM zSeries 800 GA1")
> +S390_PROC_DEF("2084-ga1", CPU_S390_2084_GA1, "IBM zSeries 990 GA1")
> +S390_PROC_DEF("2084-ga2", CPU_S390_2084_GA2, "IBM zSeries 990 GA2")
> +S390_PROC_DEF("2084-ga3", CPU_S390_2084_GA3, "IBM zSeries 990 GA3")
> +S390_PROC_DEF("2084-ga4", CPU_S390_2084_GA4, "IBM zSeries 990 GA4")
> +S390_PROC_DEF("2084-ga5", CPU_S390_2084_GA5, "IBM zSeries 990 GA5")
> +S390_PROC_DEF("2086-ga1", CPU_S390_2086_GA1, "IBM zSeries 890 GA1")
> +S390_PROC_DEF("2086-ga2", CPU_S390_2086_GA2, "IBM zSeries 890 GA2")
> +S390_PROC_DEF("2086-ga3", CPU_S390_2086_GA3, "IBM zSeries 890 GA3")
> +S390_PROC_DEF("2094-ga1", CPU_S390_2094_GA1, "IBM System z9 EC GA1")
> +S390_PROC_DEF("2094-ga2", CPU_S390_2094_GA2, "IBM System z9 EC GA2")
> +S390_PROC_DEF("2094-ga3", CPU_S390_2094_GA3, "IBM System z9 EC GA3")
> +S390_PROC_DEF("2096-ga1", CPU_S390_2096_GA1, "IBM System z9 BC GA1")
> +S390_PROC_DEF("2096-ga2", CPU_S390_2096_GA2, "IBM System z9 BC GA2")
> +S390_PROC_DEF("2097-ga1", CPU_S390_2097_GA1, "IBM System z10 EC GA1")
> +S390_PROC_DEF("2097-ga2", CPU_S390_2097_GA2, "IBM System z10 EC GA2")
> +S390_PROC_DEF("2097-ga3", CPU_S390_2097_GA3, "IBM System z10 EC GA3")
> +S390_PROC_DEF("2098-ga1", CPU_S390_2098_GA1, "IBM System z10 BC GA1")
> +S390_PROC_DEF("2098-ga2", CPU_S390_2098_GA2, "IBM System z10 BC GA2")
> +S390_PROC_DEF("2817-ga1", CPU_S390_2817_GA1, "IBM zEnterprise 196 GA1")
> +S390_PROC_DEF("2817-ga2", CPU_S390_2817_GA2, "IBM zEnterprise 196 GA2")
> +S390_PROC_DEF("2818-ga1", CPU_S390_2818_GA1, "IBM zEnterprise 114 GA1")
> +S390_PROC_DEF("2827-ga1", CPU_S390_2827_GA1, "IBM zEnterprise EC12 GA1")
> +S390_PROC_DEF("2827-ga2", CPU_S390_2827_GA2, "IBM zEnterprise EC12 GA2")
> +S390_PROC_DEF("2828-ga1", CPU_S390_2828_GA1, "IBM zEnterprise BC12 GA1")
> diff --git a/target-s390x/cpu-models.h b/target-s390x/cpu-models.h
> new file mode 100644
> index 0000000..db681bf
> --- /dev/null
> +++ b/target-s390x/cpu-models.h
> @@ -0,0 +1,71 @@
> +/*
> + * CPU models for s390
> + *
> + * Copyright 2014,2015 IBM Corp.
> + *
> + * Author(s): Michael Mueller <mimu@linux.vnet.ibm.com>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or (at
> + * your option) any later version. See the COPYING file in the top-level
> + * directory.
> + */
> +
> +#ifndef TARGET_S390X_CPU_MODELS_H
> +#define TARGET_S390X_CPU_MODELS_H
> +
> +#define S390_EC 0x1
> +#define S390_BC 0x2
> +
> +#define S390_DEF_VERSION 0xff
> +#define S390_DEF_IBC     0x0
> +#define S390_DEF_ID      0xdecade
> +#define S390_DEF_TYPE    0x2064
> +
> +#define cpu_type(x)       (((x) >>  0) & 0xffff)
> +#define cpu_order(x)      (((x) >> 16) & 0xffff)
> +#define cpu_ga(x)         (((x) >> 16) & 0xf)
> +#define cpu_class(x)      (((x) >> 20) & 0x3)
> +#define cpu_generation(x) (((x) >> 24) & 0xff)
> +
> +/*
> + * bits 0-7   : CMOS generation
> + * bits 8-9   : reserved
> + * bits 10-11 : machine class 0=unknown 1=EC 2=BC
> + * bits 12-15 : GA
> + * bits 16-31 : machine type
> + *
> + * note: bits are named according to s390
> + *       architecture specific endienness
> + */
> +enum {
> +    CPU_S390_2064_GA1 = 0x07112064,
> +    CPU_S390_2064_GA2 = 0x07122064,
> +    CPU_S390_2064_GA3 = 0x07132064,
> +    CPU_S390_2066_GA1 = 0x07212066,
> +    CPU_S390_2084_GA1 = 0x08112084,
> +    CPU_S390_2084_GA2 = 0x08122084,
> +    CPU_S390_2084_GA3 = 0x08132084,
> +    CPU_S390_2084_GA4 = 0x08142084,
> +    CPU_S390_2084_GA5 = 0x08152084,
> +    CPU_S390_2086_GA1 = 0x08212086,
> +    CPU_S390_2086_GA2 = 0x08222086,
> +    CPU_S390_2086_GA3 = 0x08232086,
> +    CPU_S390_2094_GA1 = 0x09112094,
> +    CPU_S390_2094_GA2 = 0x09122094,
> +    CPU_S390_2094_GA3 = 0x09132094,
> +    CPU_S390_2096_GA1 = 0x09212096,
> +    CPU_S390_2096_GA2 = 0x09222096,
> +    CPU_S390_2097_GA1 = 0x0a112097,
> +    CPU_S390_2097_GA2 = 0x0a122097,
> +    CPU_S390_2097_GA3 = 0x0a132097,
> +    CPU_S390_2098_GA1 = 0x0a212098,
> +    CPU_S390_2098_GA2 = 0x0a222098,
> +    CPU_S390_2817_GA1 = 0x0b112817,
> +    CPU_S390_2817_GA2 = 0x0b122817,
> +    CPU_S390_2818_GA1 = 0x0b212818,
> +    CPU_S390_2827_GA1 = 0x0c112827,
> +    CPU_S390_2827_GA2 = 0x0c122827,
> +    CPU_S390_2828_GA1 = 0x0c212828,
> +};
> +
> +#endif
> diff --git a/target-s390x/cpu-qom.h b/target-s390x/cpu-qom.h
> index 8b376df..1332147 100644
> --- a/target-s390x/cpu-qom.h
> +++ b/target-s390x/cpu-qom.h
> @@ -32,6 +32,23 @@
>  #define S390_CPU_GET_CLASS(obj) \
>      OBJECT_GET_CLASS(S390CPUClass, (obj), TYPE_S390_CPU)
>  
> +/* machine related properties */
> +typedef struct S390CPUMachineProps {
> +    uint16_t class;      /* machine class */
> +    uint16_t ga;         /* availability number of machine */
> +    uint16_t order;      /* order of availability */
> +} S390CPUMachineProps;
> +
> +/* processor related properties */
> +typedef struct S390CPUProcessorProps {
> +    uint16_t gen;        /* S390 CMOS generation */
> +    uint16_t ver;        /* version of processor */
> +    uint32_t id;         /* processor identification*/
> +    uint16_t type;       /* machine type */
> +    uint16_t ibc;        /* IBC value */
> +    uint64_t *fac_list;  /* list of facilities */

Just make this uint64_t fac_list[2]. That way we don't have to track any
messy allocations.


Alex

  reply	other threads:[~2015-02-20 13:54 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-17 14:23 [RFC PATCH v2 00/15] QEMU: s390: cpu model implementation Michael Mueller
2015-02-17 14:23 ` [Qemu-devel] " Michael Mueller
2015-02-17 14:23 ` [RFC PATCH v2 01/15] cpu-model: Introduce probe mode for machine none Michael Mueller
2015-02-17 14:23   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 02/15] cpu-model: Introduce option --probe to switch into probe mode Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24   ` Michael Mueller
2015-02-17 19:16   ` [Qemu-devel] " Eric Blake
2015-02-17 19:16     ` Eric Blake
2015-02-18  9:08     ` [Qemu-devel] " Michael Mueller
2015-02-18  9:08       ` Michael Mueller
2015-02-18  9:08       ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 03/15] cpu-model: Introduce stub routine cpu_desc_avail Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24   ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 04/15] cpu-model/s390: Introduce S390 CPU models Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24   ` Michael Mueller
2015-02-20 13:54   ` Alexander Graf [this message]
2015-02-20 13:54     ` [Qemu-devel] " Alexander Graf
2015-02-20 15:00     ` Michael Mueller
2015-02-20 15:00       ` Michael Mueller
2015-02-20 15:22       ` Alexander Graf
2015-02-20 15:22         ` Alexander Graf
2015-02-20 15:49         ` Michael Mueller
2015-02-20 15:49           ` Michael Mueller
2015-02-20 16:57           ` Alexander Graf
2015-02-20 16:57             ` Alexander Graf
2015-02-20 17:37             ` Michael Mueller
2015-02-20 17:37               ` Michael Mueller
2015-02-20 17:50               ` Alexander Graf
2015-02-20 17:50                 ` Alexander Graf
2015-02-20 19:43                 ` Michael Mueller
2015-02-20 19:43                   ` Michael Mueller
2015-02-20 19:55                   ` Alexander Graf
2015-02-20 19:55                     ` Alexander Graf
2015-02-23 12:56         ` Christian Borntraeger
2015-02-23 12:56           ` Christian Borntraeger
2015-02-23 13:27           ` Christian Borntraeger
2015-02-23 13:27             ` Christian Borntraeger
2015-02-20 13:55   ` Alexander Graf
2015-02-20 13:55     ` [Qemu-devel] " Alexander Graf
2015-02-20 15:02     ` Michael Mueller
2015-02-20 15:02       ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 05/15] cpu-model/s390: Introduce S390 CPU facilities Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 06/15] cpu-model/s390: Define cpu model specific facility lists Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 07/15] cpu-model/s390: Add cpu model alias definition routines Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 08/15] cpu-model/s390: Update linux-headers/asm-s390/kvm.h Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 09/15] cpu-model/s390: Add KVM VM attribute interface routines Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-20 13:59   ` Alexander Graf
2015-02-20 13:59     ` [Qemu-devel] " Alexander Graf
2015-02-20 15:18     ` Michael Mueller
2015-02-20 15:18       ` Michael Mueller
2015-02-20 16:59       ` Alexander Graf
2015-02-20 16:59         ` Alexander Graf
2015-02-20 18:42         ` Michael Mueller
2015-02-20 18:42           ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 10/15] cpu-model/s390: Add cpu class initialization routines Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24   ` Michael Mueller
2015-02-20 16:02   ` Richard Henderson
2015-02-20 16:02     ` [Qemu-devel] " Richard Henderson
2015-02-20 16:12     ` Michael Mueller
2015-02-20 16:12       ` Michael Mueller
2015-02-20 16:12       ` Michael Mueller
2015-02-20 16:27       ` [Qemu-devel] " Michael Mueller
2015-02-20 16:27         ` Michael Mueller
2015-02-20 16:34       ` Andreas Färber
2015-02-20 16:34         ` Andreas Färber
2015-02-20 16:55         ` Michael Mueller
2015-02-20 18:11   ` Richard Henderson
2015-02-20 18:11     ` [Qemu-devel] " Richard Henderson
2015-02-20 18:59     ` Michael Mueller
2015-02-20 18:59       ` Michael Mueller
2015-02-20 19:21       ` Alexander Graf
2015-02-20 19:21         ` Alexander Graf
2015-02-20 19:35         ` Michael Mueller
2015-02-20 19:35           ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 11/15] cpu-model/s390: Add QMP command query-cpu-model Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24   ` Michael Mueller
2015-02-17 18:03   ` [Qemu-devel] " Eric Blake
2015-02-18  8:39     ` Michael Mueller
2015-02-18  8:39       ` Michael Mueller
2015-02-18  8:39       ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 12/15] cpu-model/s390: Extend QMP command query-cpu-definitions Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 18:09   ` Eric Blake
2015-02-18  9:29     ` Michael Mueller
2015-02-18  9:29       ` Michael Mueller
2015-02-18  9:29       ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 13/15] cpu-model/s390: Add processor property routines Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-20 14:03   ` Alexander Graf
2015-02-20 14:03     ` [Qemu-devel] " Alexander Graf
2015-02-20 15:32     ` Michael Mueller
2015-02-20 15:32       ` Michael Mueller
2015-02-20 15:41       ` Andreas Färber
2015-02-20 15:41         ` Andreas Färber
2015-02-20 16:04         ` Michael Mueller
2015-02-20 16:04           ` Michael Mueller
2015-02-20 16:28           ` Andreas Färber
2015-02-20 16:28             ` Andreas Färber
2015-02-20 16:53             ` Michael Mueller
2015-02-20 16:53               ` Michael Mueller
2015-02-20 16:05         ` Michael Mueller
2015-02-20 16:05           ` Michael Mueller
2015-02-20 17:00       ` Alexander Graf
2015-02-20 17:00         ` Alexander Graf
2015-02-20 19:29         ` Michael Mueller
2015-02-20 19:29           ` Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 14/15] cpu-model/s390: Add cpu model selection routine Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller
2015-02-17 14:24 ` [RFC PATCH v2 15/15] cpu-model/s390: Enable S390 cpu model Michael Mueller
2015-02-17 14:24   ` [Qemu-devel] " Michael Mueller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54E73C8F.7000202@suse.de \
    --to=agraf@suse.de \
    --cc=afaerber@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=gleb@kernel.org \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mimu@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.