All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Musta <tommusta@gmail.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH v4 09/29] target-ppc: Introduce and reuse generalized init_proc_book3s_64()
Date: Tue, 03 Jun 2014 11:45:09 -0500	[thread overview]
Message-ID: <538DFB95.4080005@gmail.com> (raw)
In-Reply-To: <1401787684-31895-10-git-send-email-aik@ozlabs.ru>

On 6/3/2014 4:27 AM, Alexey Kardashevskiy wrote:
> At the moment every POWER CPU family has its own init_proc_POWERX function.
> E500 already has common init function so we try to do the same thing.
> 
> This introduces BOOK3S_CPU_TYPE enum with 2 values - 970 and POWER5+.
> 
> This introduces generalized init_proc_book3s_64() which accepts a CPU type
> as a parameter.
> 
> This uses new init function for 970 and POWER5+ CPU classes.
> 
> 970 and POWER5+ use the same CPU class initialization except 3 things:
> 1. logical partitioning is controlled by LPCR (POWER5+) and HID4 (970)
> SPRs;
> 2. 970 does not have EAR (External Access Register) SPR and PowerISA 2.03
> defines one so keep it only for POWER5+;
> 3. POWER5+ does not have ALTIVEC so insns_flags does not have PPC_ALTIVEC
> flag set and gen_spr_book3s_altivec() won't init ALTIVEC for POWER5+.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>  target-ppc/translate_init.c | 85 ++++++++++++++-------------------------------
>  1 file changed, 27 insertions(+), 58 deletions(-)
> 
> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> index de920a0..301f5ff 100644
> --- a/target-ppc/translate_init.c
> +++ b/target-ppc/translate_init.c
> @@ -7266,6 +7266,11 @@ POWERPC_FAMILY(e600)(ObjectClass *oc, void *data)
>  #define POWERPC970_HID5_INIT 0x00000000
>  #endif
>  
> +enum BOOK3S_CPU_TYPE {
> +    BOOK3S_CPU_970,
> +    BOOK3S_CPU_POWER5PLUS,
> +};
> +
>  static int check_pow_970 (CPUPPCState *env)
>  {
>      if (env->spr[SPR_HID0] & 0x01C00000) {
> @@ -7485,7 +7490,16 @@ static void gen_spr_power5p_ear(CPUPPCState *env)
>                   0x00000000);
>  }
>  
> -static void init_proc_970 (CPUPPCState *env)
> +static void gen_spr_power5p_lpar(CPUPPCState *env)
> +{
> +    /* Logical partitionning */
> +    spr_register_kvm(env, SPR_LPCR, "LPCR",
> +                     SPR_NOACCESS, SPR_NOACCESS,
> +                     &spr_read_generic, &spr_write_generic,
> +                     KVM_REG_PPC_LPCR, 0x00000000);
> +}
> +
> +static void init_proc_book3s_64(CPUPPCState *env, int version)
>  {
>      gen_spr_ne_601(env);
>      gen_tbl(env);
> @@ -7500,9 +7514,13 @@ static void init_proc_970 (CPUPPCState *env)
>      gen_spr_book3s_common(env);
>      gen_spr_970_pmu_hypv(env);
>      gen_spr_970_pmu_user(env);
> -    gen_spr_970_lpar(env);
>  
> -    gen_spr_power5p_ear(env);
> +    if (version >= BOOK3S_CPU_POWER5PLUS) {
> +        gen_spr_power5p_lpar(env);
> +        gen_spr_power5p_ear(env);
> +    } else {
> +        gen_spr_970_lpar(env);
> +    }
>  
>      gen_spr_970_dbg(env);
>  #if !defined(CONFIG_USER_ONLY)
> @@ -7515,6 +7533,11 @@ static void init_proc_970 (CPUPPCState *env)
>      ppc970_irq_init(env);
>  }
>  
> +static void init_proc_970(CPUPPCState *env)
> +{
> +    init_proc_book3s_64(env, BOOK3S_CPU_970);
> +}
> +
>  POWERPC_FAMILY(970)(ObjectClass *oc, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(oc);
> @@ -7571,61 +7594,7 @@ static int check_pow_970FX (CPUPPCState *env)
>  
>  static void init_proc_power5plus(CPUPPCState *env)
>  {
> -    gen_spr_ne_601(env);
> -    gen_spr_7xx(env);
> -    /* Time base */
> -    gen_tbl(env);
> -    /* Hardware implementation registers */
> -    /* XXX : not implemented */
> -    spr_register(env, SPR_HID0, "HID0",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_clear,
> -                 0x60000000);
> -    /* XXX : not implemented */
> -    spr_register(env, SPR_HID1, "HID1",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> -                 0x00000000);
> -    /* XXX : not implemented */
> -    spr_register(env, SPR_970_HID5, "HID5",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, &spr_write_generic,
> -                 POWERPC970_HID5_INIT);
> -    /* Memory management */
> -    /* XXX: not correct */
> -    gen_low_BATs(env);
> -    spr_register(env, SPR_HIOR, "SPR_HIOR",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_hior, &spr_write_hior,
> -                 0x00000000);
> -    spr_register(env, SPR_CTRL, "SPR_CTRL",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 SPR_NOACCESS, &spr_write_generic,
> -                 0x00000000);
> -    spr_register(env, SPR_UCTRL, "SPR_UCTRL",
> -                 SPR_NOACCESS, SPR_NOACCESS,
> -                 &spr_read_generic, SPR_NOACCESS,
> -                 0x00000000);
> -    spr_register(env, SPR_VRSAVE, "SPR_VRSAVE",
> -                 &spr_read_generic, &spr_write_generic,
> -                 &spr_read_generic, &spr_write_generic,
> -                 0x00000000);
> -    /* Logical partitionning */
> -    spr_register_kvm(env, SPR_LPCR, "LPCR",
> -                     SPR_NOACCESS, SPR_NOACCESS,
> -                     &spr_read_generic, &spr_write_generic,
> -                     KVM_REG_PPC_LPCR, 0x00000000);
> -#if !defined(CONFIG_USER_ONLY)
> -    env->slb_nr = 64;
> -#endif
> -    init_excp_970(env);
> -    env->dcache_line_size = 128;
> -    env->icache_line_size = 128;
> -    /* Allocate hardware IRQ controller */
> -    ppc970_irq_init(env);
> -    /* Can't find information on what this should be on reset.  This
> -     * value is the one used by 74xx processors. */
> -    vscr_init(env, 0x00010000);
> +    init_proc_book3s_64(env, BOOK3S_CPU_POWER5PLUS);
>  }
>  
>  POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data)
> 


Reviewed-by: Tom Musta <tommusta@gmail.com>

  reply	other threads:[~2014-06-03 16:45 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-03  9:27 [Qemu-devel] [PATCH v4 00/29] book3s powerpc classes (970, power5, power7, power8) rework Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 01/29] target-ppc: Rename 7XX/60x/74XX/e600 PMU SPRs Alexey Kardashevskiy
2014-06-03 16:32   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 02/29] target-ppc: Merge 970FX and 970MP into a single 970 class Alexey Kardashevskiy
2014-06-03 15:40   ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2014-06-03 16:11     ` Alexander Graf
2014-06-03 16:25   ` [Qemu-devel] " Tom Musta
2014-06-04  4:48     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 03/29] target-ppc: Refactor PPC970 Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 04/29] target-ppc: Copy and split gen_spr_7xx() for 970 Alexey Kardashevskiy
2014-06-03 16:32   ` Tom Musta
2014-06-04  5:09     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 05/29] target-ppc: Add "POWER" prefix to MMCRA PMU registers Alexey Kardashevskiy
2014-06-03 16:35   ` Tom Musta
2014-06-04  1:36     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 06/29] target-ppc: Add PMC5/6, SDAR and MMCRA to 970 family Alexey Kardashevskiy
2014-06-03 16:36   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 07/29] target-ppc: Add PMC7/8 to 970 class Alexey Kardashevskiy
2014-06-03 16:37   ` Tom Musta
2014-06-03 16:42   ` Tom Musta
2014-06-04  5:25     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 08/29] target-ppc: Add HID4 SPR for PPC970 Alexey Kardashevskiy
2014-06-03 16:43   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 09/29] target-ppc: Introduce and reuse generalized init_proc_book3s_64() Alexey Kardashevskiy
2014-06-03 16:45   ` Tom Musta [this message]
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 10/29] target-ppc: Remove check_pow_970FX Alexey Kardashevskiy
2014-06-03 16:45   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 11/29] target-ppc: Enable PMU SPRs migration Alexey Kardashevskiy
2014-06-03 16:47   ` Tom Musta
2014-06-04  1:46     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 12/29] target-ppc: Move POWER7/8 PIR/PURR/SPURR SPR registration to helpers Alexey Kardashevskiy
2014-06-03 16:48   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 13/29] target-ppc: Move POWER8 TCE Address control (TAR) to a helper Alexey Kardashevskiy
2014-06-03 16:48   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 14/29] target-ppc: Move POWER7/8 CFAR/DSCR/CTRL/PPR/PCR SPR registration to helpers Alexey Kardashevskiy
2014-06-03 16:54   ` Tom Musta
2014-06-04  2:02     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 15/29] target-ppc: Make use of gen_spr_book3s_altivec() for POWER7/8 Alexey Kardashevskiy
2014-06-03 16:54   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 16/29] target-ppc: Make use of gen_spr_book3s_lpar() " Alexey Kardashevskiy
2014-06-03 16:54   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 17/29] target-ppc: Switch POWER7/8 classes to use correct PMU SPRs Alexey Kardashevskiy
2014-06-03 16:55   ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 18/29] target-ppc: Refactor class init for POWER7/8 Alexey Kardashevskiy
2014-06-03 16:57   ` Tom Musta
2014-06-04  2:09     ` Alexey Kardashevskiy
2014-06-04 12:24       ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 19/29] target-ppc: Add POWER7's TIR SPR Alexey Kardashevskiy
2014-06-03 16:59   ` Tom Musta
2014-06-04  2:14     ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 20/29] target-ppc: Add POWER8's FSCR SPR Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 21/29] target-ppc: Enable FSCR facility check for TAR Alexey Kardashevskiy
2014-06-03 17:08   ` Tom Musta
2014-06-04  2:37     ` Alexey Kardashevskiy
2014-06-04 12:25       ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 22/29] target-ppc: Add POWER8's MMCR2/MMCRS SPRs Alexey Kardashevskiy
2014-06-03 17:10   ` Tom Musta
2014-06-03 23:42     ` Alexey Kardashevskiy
2014-06-04  5:26       ` Alexey Kardashevskiy
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 23/29] target-ppc: Add POWER8's TM SPRs Alexey Kardashevskiy
2014-06-03 17:58   ` Tom Musta
2014-06-04  2:54     ` Alexey Kardashevskiy
2014-06-04 12:30       ` Tom Musta
2014-06-03  9:27 ` [Qemu-devel] [PATCH v4 24/29] KVM: target-ppc: Enable TM state migration Alexey Kardashevskiy
2014-06-03  9:28 ` [Qemu-devel] [PATCH v4 25/29] target-ppc: Add POWER8's Event Based Branch (EBB) control SPRs Alexey Kardashevskiy
2014-06-03 18:01   ` Tom Musta
2014-06-03  9:28 ` [Qemu-devel] [PATCH v4 26/29] target-ppc: Enable PPR and VRSAVE SPRs migration Alexey Kardashevskiy
2014-06-03  9:28 ` [Qemu-devel] [PATCH v4 27/29] target-ppc: Enable DABRX SPR and limit it to <=POWER7 Alexey Kardashevskiy
2014-06-03 18:05   ` Tom Musta
2014-06-04  3:12     ` Alexey Kardashevskiy
2014-06-03  9:28 ` [Qemu-devel] [PATCH v4 28/29] spapr_hcall: Split h_set_mode() Alexey Kardashevskiy
2014-06-03  9:28 ` [Qemu-devel] [PATCH v4 29/29] spapr_hcall: Add address-translation-mode-on-interrupt resource in H_SET_MODE Alexey Kardashevskiy
2014-06-03 16:51   ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2014-06-03 23:44     ` Alexey Kardashevskiy

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=538DFB95.4080005@gmail.com \
    --to=tommusta@gmail.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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.