All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nicholas Piggin" <npiggin@gmail.com>
To: "BALATON Zoltan" <balaton@eik.bme.hu>, <qemu-devel@nongnu.org>,
	<qemu-ppc@nongnu.org>
Cc: "Daniel Henrique Barboza" <danielhb413@gmail.com>
Subject: Re: [PATCH v7 24/61] target/ppc/mmu_common.c: Split off real mode handling from get_physical_address_wtlb()
Date: Fri, 17 May 2024 15:26:52 +1000	[thread overview]
Message-ID: <D1BO5L8SIA2J.231225LUX9VFN@gmail.com> (raw)
In-Reply-To: <8b83d8228a471d9be431114aa0bc449b20c7c351.1715555763.git.balaton@eik.bme.hu>

On Mon May 13, 2024 at 9:27 AM AEST, BALATON Zoltan wrote:
> Add ppc_real_mode_xlate() to handle real mode translation and allow
> removing this case from ppc_jumbo_xlate().
>

Reviewed-by: Nicholas Piggin <npiggin@gmail.com>

> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>  target/ppc/mmu_common.c | 46 ++++++++++++++++++++++++-----------------
>  1 file changed, 27 insertions(+), 19 deletions(-)
>
> diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
> index 8599106f75..ab912da821 100644
> --- a/target/ppc/mmu_common.c
> +++ b/target/ppc/mmu_common.c
> @@ -1117,23 +1117,12 @@ int get_physical_address_wtlb(CPUPPCState *env, mmu_ctx_t *ctx,
>                                       MMUAccessType access_type, int type,
>                                       int mmu_idx)
>  {
> -    bool real_mode = (type == ACCESS_CODE) ? !FIELD_EX64(env->msr, MSR, IR)
> -                                           : !FIELD_EX64(env->msr, MSR, DR);
> -    if (real_mode) {
> -        ctx->raddr = eaddr;
> -        ctx->prot = PAGE_RWX;
> -        return 0;
> -    }
> -
>      switch (env->mmu_model) {
>      case POWERPC_MMU_SOFT_6xx:
>          return mmu6xx_get_physical_address(env, ctx, eaddr, access_type, type);
>      case POWERPC_MMU_SOFT_4xx:
>          return mmu40x_get_physical_address(env, &ctx->raddr, &ctx->prot, eaddr,
>                                             access_type);
> -    case POWERPC_MMU_REAL:
> -        cpu_abort(env_cpu(env),
> -                  "PowerPC in real mode do not do any translation\n");
>      default:
>          cpu_abort(env_cpu(env), "Unknown or invalid MMU model\n");
>      }
> @@ -1251,6 +1240,24 @@ static bool ppc_booke_xlate(PowerPCCPU *cpu, vaddr eaddr,
>      return false;
>  }
>  
> +static bool ppc_real_mode_xlate(PowerPCCPU *cpu, vaddr eaddr,
> +                                MMUAccessType access_type,
> +                                hwaddr *raddrp, int *psizep, int *protp)
> +{
> +    CPUPPCState *env = &cpu->env;
> +
> +    if (access_type == MMU_INST_FETCH ? !FIELD_EX64(env->msr, MSR, IR)
> +                                      : !FIELD_EX64(env->msr, MSR, DR)) {
> +        *raddrp = eaddr;
> +        *protp = PAGE_RWX;
> +        *psizep = TARGET_PAGE_BITS;
> +        return true;
> +    } else if (env->mmu_model == POWERPC_MMU_REAL) {
> +        cpu_abort(CPU(cpu), "PowerPC in real mode shold not do translation\n");
> +    }
> +    return false;
> +}
> +
>  /* Perform address translation */
>  /* TODO: Split this by mmu_model. */
>  static bool ppc_jumbo_xlate(PowerPCCPU *cpu, vaddr eaddr,
> @@ -1264,6 +1271,10 @@ static bool ppc_jumbo_xlate(PowerPCCPU *cpu, vaddr eaddr,
>      int type;
>      int ret;
>  
> +    if (ppc_real_mode_xlate(cpu, eaddr, access_type, raddrp, psizep, protp)) {
> +        return true;
> +    }
> +
>      if (access_type == MMU_INST_FETCH) {
>          /* code access */
>          type = ACCESS_CODE;
> @@ -1303,11 +1314,8 @@ static bool ppc_jumbo_xlate(PowerPCCPU *cpu, vaddr eaddr,
>                  env->spr[SPR_40x_DEAR] = eaddr;
>                  env->spr[SPR_40x_ESR] = 0x00000000;
>                  break;
> -            case POWERPC_MMU_REAL:
> -                cpu_abort(cs, "PowerPC in real mode should never raise "
> -                              "any MMU exceptions\n");
>              default:
> -                cpu_abort(cs, "Unknown or invalid MMU model\n");
> +                g_assert_not_reached();
>              }
>              break;
>          case -2:
> @@ -1359,11 +1367,8 @@ static bool ppc_jumbo_xlate(PowerPCCPU *cpu, vaddr eaddr,
>                      env->spr[SPR_40x_ESR] = 0x00000000;
>                  }
>                  break;
> -            case POWERPC_MMU_REAL:
> -                cpu_abort(cs, "PowerPC in real mode should never raise "
> -                              "any MMU exceptions\n");
>              default:
> -                cpu_abort(cs, "Unknown or invalid MMU model\n");
> +                g_assert_not_reached();
>              }
>              break;
>          case -2:
> @@ -1457,6 +1462,9 @@ bool ppc_xlate(PowerPCCPU *cpu, vaddr eaddr, MMUAccessType access_type,
>      case POWERPC_MMU_BOOKE206:
>          return ppc_booke_xlate(cpu, eaddr, access_type, raddrp,
>                                 psizep, protp, mmu_idx, guest_visible);
> +    case POWERPC_MMU_REAL:
> +        return ppc_real_mode_xlate(cpu, eaddr, access_type, raddrp, psizep,
> +                                   protp);
>      case POWERPC_MMU_MPC8xx:
>          cpu_abort(env_cpu(&cpu->env), "MPC8xx MMU model is not implemented\n");
>      default:



  reply	other threads:[~2024-05-17  5:28 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-12 23:27 [PATCH v7 00/61] Misc PPC exception and BookE MMU clean ups BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 01/61] target/ppc: Remove unused struct 'mmu_ctx_hash32' BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 02/61] target/ppc: Remove unused helper BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 03/61] target/ppc/mmu_common.c: Move calculation of a value closer to its usage BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 04/61] target/ppc/mmu_common.c: Remove unneeded local variable BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 05/61] target/ppc/mmu_common.c: Simplify checking for real mode BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 06/61] target/ppc/mmu_common.c: Drop cases for unimplemented MPC8xx MMU BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 07/61] target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 08/61] target/ppc/mmu_common.c: Move else branch to avoid large if block BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 09/61] target/ppc/mmu_common.c: Move some debug logging BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 10/61] target/ppc/mmu_common.c: Eliminate ret from mmu6xx_get_physical_address() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 11/61] target/ppc/mmu_common.c: Split out BookE cases before checking real mode BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 12/61] target/ppc/mmu_common.c: Split off real mode cases in get_physical_address_wtlb() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 13/61] target/ppc/mmu_common.c: Inline and remove check_physical() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 14/61] target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 15/61] target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 16/61] target/ppc/mmu_common.c: Replace hard coded constants in ppc_jumbo_xlate() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 17/61] target/ppc/mmu_common.c: Don't use mmu_ctx_t for mmu40x_get_physical_address() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 18/61] target/ppc/mmu_common.c: Don't use mmu_ctx_t in mmubooke_get_physical_address() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 19/61] target/ppc/mmu_common.c: Don't use mmu_ctx_t in mmubooke206_get_physical_address() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 20/61] target/ppc/mmu_common.c: Remove BookE from direct store handling BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 21/61] target/ppc/mmu_common.c: Split off BookE handling from ppc_jumbo_xlate() BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 22/61] target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 1 BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 23/61] target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 2 BALATON Zoltan
2024-05-12 23:27 ` [PATCH v7 24/61] target/ppc/mmu_common.c: Split off real mode handling from get_physical_address_wtlb() BALATON Zoltan
2024-05-17  5:26   ` Nicholas Piggin [this message]
2024-05-12 23:27 ` [PATCH v7 25/61] target/ppc/mmu_common.c: Split off 40x cases from ppc_jumbo_xlate() BALATON Zoltan
2024-05-17  5:49   ` Nicholas Piggin
2024-05-12 23:27 ` [PATCH v7 26/61] target/ppc/mmu_common.c: Transform ppc_jumbo_xlate() into ppc_6xx_xlate() BALATON Zoltan
2024-05-17  5:49   ` Nicholas Piggin
2024-05-12 23:28 ` [PATCH v7 27/61] target/ppc/mmu_common.c: Move mmu_ctx_t type to mmu_common.c BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 28/61] target/ppc/mmu_common.c: Remove pte_update_flags() BALATON Zoltan
2024-05-17  5:48   ` Nicholas Piggin
2024-05-12 23:28 ` [PATCH v7 29/61] target/ppc: Remove id_tlbs flag from CPU env BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 30/61] target/ppc: Split off common embedded TLB init BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 31/61] target/ppc/mmu-hash32.c: Drop a local variable BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 32/61] target/ppc/mmu-radix64.c: " BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 33/61] target/ppc: Add a function to check for page protection bit BALATON Zoltan
2024-05-17  5:59   ` Nicholas Piggin
2024-05-12 23:28 ` [PATCH v7 34/61] target/ppc: Move out BookE and related MMU functions from mmu_common.c BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 35/61] target/ppc: Remove pp_check() and reuse ppc_hash32_pp_prot() BALATON Zoltan
2024-05-17  6:11   ` Nicholas Piggin
2024-05-17  9:01     ` BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 36/61] target/ppc/mmu_common.c: Remove local name for a constant BALATON Zoltan
2024-05-17  6:21   ` Nicholas Piggin
2024-05-17  9:04     ` BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 37/61] target/ppc/mmu_common.c: Remove single use local variable BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 38/61] " BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 39/61] target/ppc/mmu_common.c: Remove another single use local BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 40/61] target/ppc/mmu_common.c: Remove yet " BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 41/61] target/ppc/mmu_common.c: Return directly in ppc6xx_tlb_pte_check() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 42/61] target/ppc/mmu_common.c: Simplify ppc6xx_tlb_pte_check() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 43/61] target/ppc/mmu_common.c: Remove unused field from mmu_ctx_t BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 44/61] target/ppc/mmu_common.c: Remove hash " BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 45/61] target/ppc/mmu_common.c: Remove nx " BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 46/61] target/ppc/mmu_common.c: Convert local variable to bool BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 47/61] target/ppc/mmu_common.c: Remove single use local variable BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 48/61] target/ppc/mmu_common.c: Simplify a switch statement BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 49/61] target/ppc/mmu_common.c: Inline and remove ppc6xx_tlb_pte_check() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 50/61] target/ppc/mmu_common.c: Remove ptem field from mmu_ctx_t BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 51/61] target/ppc: Add function to get protection key for hash32 MMU BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 52/61] target/ppc/mmu-hash32.c: Inline and remove ppc_hash32_pte_prot() BALATON Zoltan
2024-05-17  6:24   ` Nicholas Piggin
2024-05-18 19:50     ` BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 53/61] target/ppc/mmu_common.c: Init variable in function that relies on it BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 54/61] target/ppc/mmu_common.c: Remove key field from mmu_ctx_t BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 55/61] target/ppc/mmu_common.c: Stop using ctx in ppc6xx_tlb_check() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 56/61] target/ppc/mmu_common.c: Rename function parameter BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 57/61] targe/ppc/mmu_common.c: Use defines instead of numeric constants BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 58/61] target/ppc: Remove bat_size_prot() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 59/61] target/ppc/mmu_common.c: Stop using ctx in get_bat_6xx_tlb() BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 60/61] target/ppc/mmu_common.c: Remove mmu_ctx_t BALATON Zoltan
2024-05-12 23:28 ` [PATCH v7 61/61] target/ppc/mmu_common.c: Remove a local variable BALATON Zoltan
2024-05-18  9:14 ` [PATCH v7 00/61] Misc PPC exception and BookE MMU clean ups Nicholas Piggin
2024-05-18  9:40   ` BALATON Zoltan

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=D1BO5L8SIA2J.231225LUX9VFN@gmail.com \
    --to=npiggin@gmail.com \
    --cc=balaton@eik.bme.hu \
    --cc=danielhb413@gmail.com \
    --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.