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 35/61] target/ppc: Remove pp_check() and reuse ppc_hash32_pp_prot()
Date: Fri, 17 May 2024 16:11:13 +1000	[thread overview]
Message-ID: <D1BP3JMB7X6H.6TYQ4FYWBZRH@gmail.com> (raw)
In-Reply-To: <ed76f84bb9b16f8ecffa6ed6154b97fc7a8acdc1.1715555763.git.balaton@eik.bme.hu>

On Mon May 13, 2024 at 9:28 AM AEST, BALATON Zoltan wrote:
> The ppc_hash32_pp_prot() function in mmu-hash32.c is the same as
> pp_check() in mmu_common.c, merge these to remove duplicated code.
> Define the common function as static lnline otherwise exporting the
> function from mmu-hash32.c would stop the compiler inlining it which
> results in slightly lower performance.
>

It's already hard to review patches that move code around, it's better
to keep the changes before/after the move unless really necessary.

For mmu_common.c hunks,

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

Thanks,
Nick

> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>  target/ppc/mmu-hash32.c | 45 -----------------------------------------
>  target/ppc/mmu-hash32.h | 36 +++++++++++++++++++++++++++++++++
>  target/ppc/mmu_common.c | 44 ++--------------------------------------
>  3 files changed, 38 insertions(+), 87 deletions(-)
>
> diff --git a/target/ppc/mmu-hash32.c b/target/ppc/mmu-hash32.c
> index 1e8f1df0f0..d5f2057eb1 100644
> --- a/target/ppc/mmu-hash32.c
> +++ b/target/ppc/mmu-hash32.c
> @@ -37,51 +37,6 @@
>  #  define LOG_BATS(...) do { } while (0)
>  #endif
>  
> -static int ppc_hash32_pp_prot(int key, int pp, int nx)
> -{
> -    int prot;
> -
> -    if (key == 0) {
> -        switch (pp) {
> -        case 0x0:
> -        case 0x1:
> -        case 0x2:
> -            prot = PAGE_READ | PAGE_WRITE;
> -            break;
> -
> -        case 0x3:
> -            prot = PAGE_READ;
> -            break;
> -
> -        default:
> -            abort();
> -        }
> -    } else {
> -        switch (pp) {
> -        case 0x0:
> -            prot = 0;
> -            break;
> -
> -        case 0x1:
> -        case 0x3:
> -            prot = PAGE_READ;
> -            break;
> -
> -        case 0x2:
> -            prot = PAGE_READ | PAGE_WRITE;
> -            break;
> -
> -        default:
> -            abort();
> -        }
> -    }
> -    if (nx == 0) {
> -        prot |= PAGE_EXEC;
> -    }
> -
> -    return prot;
> -}
> -
>  static int ppc_hash32_pte_prot(int mmu_idx,
>                                 target_ulong sr, ppc_hash_pte32_t pte)
>  {
> diff --git a/target/ppc/mmu-hash32.h b/target/ppc/mmu-hash32.h
> index 7119a63d97..bf99161858 100644
> --- a/target/ppc/mmu-hash32.h
> +++ b/target/ppc/mmu-hash32.h
> @@ -102,6 +102,42 @@ static inline void ppc_hash32_store_hpte1(PowerPCCPU *cpu,
>      stl_phys(CPU(cpu)->as, base + pte_offset + HASH_PTE_SIZE_32 / 2, pte1);
>  }
>  
> +static inline int ppc_hash32_pp_prot(bool key, int pp, bool nx)
> +{
> +    int prot;
> +
> +    if (key) {
> +        switch (pp) {
> +        case 0x0:
> +            prot = 0;
> +            break;
> +        case 0x1:
> +        case 0x3:
> +            prot = PAGE_READ;
> +            break;
> +        case 0x2:
> +            prot = PAGE_READ | PAGE_WRITE;
> +            break;
> +        default:
> +            g_assert_not_reached();
> +        }
> +    } else {
> +        switch (pp) {
> +        case 0x0:
> +        case 0x1:
> +        case 0x2:
> +            prot = PAGE_READ | PAGE_WRITE;
> +            break;
> +        case 0x3:
> +            prot = PAGE_READ;
> +            break;
> +        default:
> +            g_assert_not_reached();
> +        }
> +    }
> +    return nx ? prot : prot | PAGE_EXEC;
> +}
> +
>  typedef struct {
>      uint32_t pte0, pte1;
>  } ppc_hash_pte32_t;
> diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
> index e1462a25dd..9e0bfbda67 100644
> --- a/target/ppc/mmu_common.c
> +++ b/target/ppc/mmu_common.c
> @@ -77,44 +77,6 @@ void ppc_store_sdr1(CPUPPCState *env, target_ulong value)
>  /*****************************************************************************/
>  /* PowerPC MMU emulation */
>  
> -static int pp_check(int key, int pp, int nx)
> -{
> -    int access;
> -
> -    /* Compute access rights */
> -    access = 0;
> -    if (key == 0) {
> -        switch (pp) {
> -        case 0x0:
> -        case 0x1:
> -        case 0x2:
> -            access |= PAGE_WRITE;
> -            /* fall through */
> -        case 0x3:
> -            access |= PAGE_READ;
> -            break;
> -        }
> -    } else {
> -        switch (pp) {
> -        case 0x0:
> -            access = 0;
> -            break;
> -        case 0x1:
> -        case 0x3:
> -            access = PAGE_READ;
> -            break;
> -        case 0x2:
> -            access = PAGE_READ | PAGE_WRITE;
> -            break;
> -        }
> -    }
> -    if (nx == 0) {
> -        access |= PAGE_EXEC;
> -    }
> -
> -    return access;
> -}
> -
>  int ppc6xx_tlb_getnum(CPUPPCState *env, target_ulong eaddr,
>                                      int way, int is_code)
>  {
> @@ -137,7 +99,7 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
>                                  MMUAccessType access_type)
>  {
>      target_ulong ptem, mmask;
> -    int access, ret, pteh, ptev, pp;
> +    int ret, pteh, ptev, pp;
>  
>      ret = -1;
>      /* Check validity and table match */
> @@ -156,11 +118,9 @@ static int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
>                      return -3;
>                  }
>              }
> -            /* Compute access rights */
> -            access = pp_check(ctx->key, pp, ctx->nx);
>              /* Keep the matching PTE information */
>              ctx->raddr = pte1;
> -            ctx->prot = access;
> +            ctx->prot = ppc_hash32_pp_prot(ctx->key, pp, ctx->nx);
>              if (check_prot_access_type(ctx->prot, access_type)) {
>                  /* Access granted */
>                  qemu_log_mask(CPU_LOG_MMU, "PTE access granted !\n");



  reply	other threads:[~2024-05-17  6:12 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
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 [this message]
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=D1BP3JMB7X6H.6TYQ4FYWBZRH@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.