QEMU-Devel Archive mirror
 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 v3 10/33] target/ppc/mmu_common.c: Move else branch to avoid large if block
Date: Wed, 08 May 2024 22:43:31 +1000	[thread overview]
Message-ID: <D149T0JQP30B.19VOKY5L4ZMSV@gmail.com> (raw)
In-Reply-To: <ee43b245720833981a9c8152920fde31713f78e4.1715125376.git.balaton@eik.bme.hu>

On Wed May 8, 2024 at 10:15 AM AEST, BALATON Zoltan wrote:
> In mmu6xx_get_physical_address() we have a large if block with a two
> line else branch that effectively returns. Invert the condition and
> move the else there to allow deindenting the large if block to make
> the flow easier to follow.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>  target/ppc/mmu_common.c | 71 ++++++++++++++++++++---------------------
>  1 file changed, 34 insertions(+), 37 deletions(-)
>
> diff --git a/target/ppc/mmu_common.c b/target/ppc/mmu_common.c
> index 181273579b..9d337a73ba 100644
> --- a/target/ppc/mmu_common.c
> +++ b/target/ppc/mmu_common.c
> @@ -405,47 +405,44 @@ static int mmu6xx_get_physical_address(CPUPPCState *env, mmu_ctx_t *ctx,
>      ret = -1;
>      if (!ds) {
>          /* Check if instruction fetch is allowed, if needed */
> -        if (type != ACCESS_CODE || ctx->nx == 0) {
> -            /* Page address translation */
> -            qemu_log_mask(CPU_LOG_MMU, "htab_base " HWADDR_FMT_plx
> -                    " htab_mask " HWADDR_FMT_plx
> -                    " hash " HWADDR_FMT_plx "\n",
> -                    ppc_hash32_hpt_base(cpu), ppc_hash32_hpt_mask(cpu), hash);
> -            ctx->hash[0] = hash;
> -            ctx->hash[1] = ~hash;
> -
> -            /* Initialize real address with an invalid value */
> -            ctx->raddr = (hwaddr)-1ULL;
> -            /* Software TLB search */
> -            ret = ppc6xx_tlb_check(env, ctx, eaddr, access_type);
> +        if (type == ACCESS_CODE && ctx->nx) {
> +            qemu_log_mask(CPU_LOG_MMU, "No access allowed\n");
> +            return -3;
> +        }

Function is already inconsistent with assigning ret and falling
through to the return ret at the end vs returning immediately, so
okay since you're tidying it up.

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

> +        /* Page address translation */
> +        qemu_log_mask(CPU_LOG_MMU, "htab_base " HWADDR_FMT_plx " htab_mask "
> +                      HWADDR_FMT_plx " hash " HWADDR_FMT_plx "\n",
> +                      ppc_hash32_hpt_base(cpu), ppc_hash32_hpt_mask(cpu), hash);
> +        ctx->hash[0] = hash;
> +        ctx->hash[1] = ~hash;
> +
> +        /* Initialize real address with an invalid value */
> +        ctx->raddr = (hwaddr)-1ULL;
> +        /* Software TLB search */
> +        ret = ppc6xx_tlb_check(env, ctx, eaddr, access_type);
>  #if defined(DUMP_PAGE_TABLES)
> -            if (qemu_loglevel_mask(CPU_LOG_MMU)) {
> -                CPUState *cs = env_cpu(env);
> -                hwaddr curaddr;
> -                uint32_t a0, a1, a2, a3;
> -
> -                qemu_log("Page table: " HWADDR_FMT_plx " len " HWADDR_FMT_plx
> -                         "\n", ppc_hash32_hpt_base(cpu),
> -                         ppc_hash32_hpt_mask(cpu) + 0x80);
> -                for (curaddr = ppc_hash32_hpt_base(cpu);
> -                     curaddr < (ppc_hash32_hpt_base(cpu)
> -                                + ppc_hash32_hpt_mask(cpu) + 0x80);
> -                     curaddr += 16) {
> -                    a0 = ldl_phys(cs->as, curaddr);
> -                    a1 = ldl_phys(cs->as, curaddr + 4);
> -                    a2 = ldl_phys(cs->as, curaddr + 8);
> -                    a3 = ldl_phys(cs->as, curaddr + 12);
> -                    if (a0 != 0 || a1 != 0 || a2 != 0 || a3 != 0) {
> -                        qemu_log(HWADDR_FMT_plx ": %08x %08x %08x %08x\n",
> -                                 curaddr, a0, a1, a2, a3);
> -                    }
> +        if (qemu_loglevel_mask(CPU_LOG_MMU)) {
> +            CPUState *cs = env_cpu(env);
> +            hwaddr curaddr;
> +            uint32_t a0, a1, a2, a3;
> +
> +            qemu_log("Page table: " HWADDR_FMT_plx " len " HWADDR_FMT_plx "\n",
> +                     ppc_hash32_hpt_base(cpu), ppc_hash32_hpt_mask(cpu) + 0x80);
> +            for (curaddr = ppc_hash32_hpt_base(cpu);
> +                 curaddr < (ppc_hash32_hpt_base(cpu)
> +                            + ppc_hash32_hpt_mask(cpu) + 0x80);
> +                 curaddr += 16) {
> +                a0 = ldl_phys(cs->as, curaddr);
> +                a1 = ldl_phys(cs->as, curaddr + 4);
> +                a2 = ldl_phys(cs->as, curaddr + 8);
> +                a3 = ldl_phys(cs->as, curaddr + 12);
> +                if (a0 != 0 || a1 != 0 || a2 != 0 || a3 != 0) {
> +                    qemu_log(HWADDR_FMT_plx ": %08x %08x %08x %08x\n",
> +                             curaddr, a0, a1, a2, a3);
>                  }
>              }
> -#endif
> -        } else {
> -            qemu_log_mask(CPU_LOG_MMU, "No access allowed\n");
> -            ret = -3;
>          }
> +#endif
>      } else {
>          qemu_log_mask(CPU_LOG_MMU, "direct store...\n");
>          /* Direct-store segment : absolutely *BUGGY* for now */



  reply	other threads:[~2024-05-08 12:44 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-08  0:14 [PATCH v3 00/33] Misc PPC exception and BookE MMU clean ups BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 01/33] target/ppc: Fix gen_sc to use correct nip BALATON Zoltan
2024-05-08 13:36   ` Nicholas Piggin
2024-05-08 15:17     ` BALATON Zoltan
2024-05-09  5:48       ` Nicholas Piggin
2024-05-08  0:14 ` [PATCH v3 02/33] target/ppc: Move patching nip from exception handler to helper_scv BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 03/33] target/ppc: Simplify syscall exception handlers BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 04/33] target/ppc: Remove unused helper BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 05/33] target/ppc/mmu_common.c: Move calculation of a value closer to its usage BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 06/33] target/ppc/mmu_common.c: Remove unneeded local variable BALATON Zoltan
2024-05-08  0:14 ` [PATCH v3 07/33] target/ppc/mmu_common.c: Simplify checking for real mode BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 08/33] target/ppc/mmu_common.c: Drop cases for unimplemented MPC8xx MMU BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 09/33] target/ppc/mmu_common.c: Introduce mmu6xx_get_physical_address() BALATON Zoltan
2024-05-08 12:40   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 10/33] target/ppc/mmu_common.c: Move else branch to avoid large if block BALATON Zoltan
2024-05-08 12:43   ` Nicholas Piggin [this message]
2024-05-08  0:15 ` [PATCH v3 11/33] target/ppc/mmu_common.c: Move some debug logging BALATON Zoltan
2024-05-08 12:47   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 12/33] target/ppc/mmu_common.c: Eliminate ret from mmu6xx_get_physical_address() BALATON Zoltan
2024-05-08 12:48   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 13/33] target/ppc/mmu_common.c: Split out BookE cases before checking real mode BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 14/33] target/ppc/mmu_common.c: Split off real mode cases in get_physical_address_wtlb() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 15/33] target/ppc/mmu_common.c: Inline and remove check_physical() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 16/33] target/ppc/mmu_common.c: Simplify mmubooke_get_physical_address() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 17/33] target/ppc/mmu_common.c: Simplify mmubooke206_get_physical_address() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 18/33] target/ppc/mmu_common.c: Fix misindented qemu_log_mask() calls BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 19/33] target/ppc/mmu_common.c: Deindent ppc_jumbo_xlate() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 20/33] target/ppc/mmu_common.c: Replace hard coded constants in ppc_jumbo_xlate() BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 21/33] target/ppc/mmu_common.c: Make get_physical_address_wtlb() static BALATON Zoltan
2024-05-08 12:58   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 22/33] target/ppc: Remove pp_check() and reuse ppc_hash32_pp_prot() BALATON Zoltan
2024-05-08 12:59   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 23/33] target/ppc/mmu_common.c: Remove BookE from direct store handling BALATON Zoltan
2024-05-08 12:59   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 24/33] target/ppc/mmu_common.c: Split off BookE handling from ppc_jumbo_xlate() BALATON Zoltan
2024-05-08 13:01   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 25/33] target/ppc/mmu_common.c: Remove BookE handling from get_physical_address_wtlb() BALATON Zoltan
2024-05-08 13:12   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 26/33] target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 1 BALATON Zoltan
2024-05-08 13:17   ` Nicholas Piggin
2024-05-08 15:25     ` BALATON Zoltan
2024-05-09  5:53       ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 27/33] target/ppc/mmu_common.c: Simplify ppc_booke_xlate() part 2 BALATON Zoltan
2024-05-08 13:21   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 28/33] target/ppc/mmu_common.c: Move BookE MMU functions together BALATON Zoltan
2024-05-08 13:21   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 29/33] target/ppc: Remove id_tlbs flag from CPU env BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 30/33] target/ppc: Split off common embedded TLB init BALATON Zoltan
2024-05-08  0:15 ` [PATCH v3 31/33] target/ppc/mmu-hash32.c: Drop a local variable BALATON Zoltan
2024-05-08 13:22   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 32/33] target/ppc/mmu-radix64.c: " BALATON Zoltan
2024-05-08 13:22   ` Nicholas Piggin
2024-05-08  0:15 ` [PATCH v3 33/33] target/ppc: Add a macro to check for page protection bit BALATON Zoltan
2024-05-08 13:29   ` Nicholas Piggin
2024-05-08 15:23     ` BALATON Zoltan
2024-05-09  5:52       ` Nicholas Piggin
2024-05-08 23:35     ` BALATON Zoltan
2024-05-09  5:58       ` Nicholas Piggin

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=D149T0JQP30B.19VOKY5L4ZMSV@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).