Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp270310yba; Thu, 25 Apr 2019 23:02:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqzrPS7IcaPPdURBzbsdE4MOdGKGlEjGxwUjSubHBHQlNWX+Yxr44TSdnaapL63cr/t6cz27 X-Received: by 2002:aa7:8392:: with SMTP id u18mr46202918pfm.217.1556258522767; Thu, 25 Apr 2019 23:02:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556258522; cv=none; d=google.com; s=arc-20160816; b=FlEmkGmx+nWU8+gJe7D+XilQC58YCF5Wpdn5gPU0w1496XwaQjfHxs0Rhd7lz06Aru jBU2Kp7GOolwwcOux97115ejmW26gifKjcbxf4pn3/uvRl0i6on+MucLwLAipB+Bpw91 dVqKoT8b/l87i2yWGdyY99bzLKU+UZGzMnBg8fuUjEceJMaZaobM9nq9GVgvi/6re4sW SQR1wklScKpz0637gVdDWnxjdoqPyCr+dyT9ckljQpFB1AS1QZMwUJOmkFD8LODKjVnO wwMG1ZNeVYO4u4QWAZunbqlFi7q1JYwkvm0yJgg4pkOzVgGC3hvK7huKDnNR5+5Xvc2L F9DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:references :in-reply-to:message-id:dkim-signature; bh=hkKf0wBxvIMESVSvQcDbyP9IPoH43gOEwHTqHrftO+4=; b=FE+WPSYF+VfKpzmzccIsRB77OfyeyV9wHkh9LgpdWASCXE7QjicTznKtJTg1I4+F3M LGipA9xCWrKNZOlXv178qbCBZ5nnMbBKJWJe6Omv8XaEVt4BnuLp2VtfMs2jJ/sytRqJ 2KOcU5kTpA6qYIJTq6IxVHgUziGPZ5XP0H9eUs2Y44kJD/rAzwwgNQ2B+S3PFSLwquBm 5UpSk3tsklmrbq17j75H2uNcp5wjoQZH1SqCuu+MJzvJHBMxCd5gdFWj2vKZ9esjPeHX LD37m0SBvN91wbI9vzC/bt6k4YN7BKOTPIZmJb9gZ7QJjVpfeIHXt10oiXN79OmoPxJk 79iQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=tYutZf+1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q12si23941713pgh.594.2019.04.25.23.01.46; Thu, 25 Apr 2019 23:02:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=tYutZf+1; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727254AbfDZGAI (ORCPT + 99 others); Fri, 26 Apr 2019 02:00:08 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:7443 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726419AbfDZF7w (ORCPT ); Fri, 26 Apr 2019 01:59:52 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 44r3Ky3dDGz9v1vS; Fri, 26 Apr 2019 07:59:50 +0200 (CEST) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=tYutZf+1; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id vGwLeoic744i; Fri, 26 Apr 2019 07:59:50 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 44r3Ky2Nb2z9v1tj; Fri, 26 Apr 2019 07:59:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1556258390; bh=hkKf0wBxvIMESVSvQcDbyP9IPoH43gOEwHTqHrftO+4=; h=In-Reply-To:References:From:Subject:To:Cc:Date:From; b=tYutZf+1VwvdJKT5aA3908YNuRB1DA1iVmE1+EIuWbWMlIYC90QULWeoUDLawErDt 8Nk3ebVeQ+acSXP36Jeg7wC/JSckRN2mn4OKu96CSAKEtU1HuBYRCZ5+qUenCXbHEZ CGqo2WK40/kO6Oyy/ZH92m0hG9tyefHo5XXdJxI8= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 39D418B807; Fri, 26 Apr 2019 07:59:51 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id FLsIOzfxJR-U; Fri, 26 Apr 2019 07:59:51 +0200 (CEST) Received: from po16846vm.idsi0.si.c-s.fr (po15451.idsi0.si.c-s.fr [172.25.231.6]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 23A608B74C; Fri, 26 Apr 2019 07:59:51 +0200 (CEST) Received: by po16846vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 0363766276; Fri, 26 Apr 2019 05:59:51 +0000 (UTC) Message-Id: In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v2 15/17] powerpc/mm: flatten function __find_linux_pte() step 1 To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , aneesh.kumar@linux.ibm.com Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Fri, 26 Apr 2019 05:59:51 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org __find_linux_pte() is full of if/else which is hard to follow allthough the handling is pretty simple. This patch flattens the function by getting rid of as much if/else as possible. In order to ease the review, this is done in three steps. Signed-off-by: Christophe Leroy --- arch/powerpc/mm/pgtable.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c index 9f4ccd15849f..d332abeedf0a 100644 --- a/arch/powerpc/mm/pgtable.c +++ b/arch/powerpc/mm/pgtable.c @@ -339,12 +339,16 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, */ if (pgd_none(pgd)) return NULL; - else if (pgd_huge(pgd)) { - ret_pte = (pte_t *) pgdp; + + if (pgd_huge(pgd)) { + ret_pte = (pte_t *)pgdp; goto out; - } else if (is_hugepd(__hugepd(pgd_val(pgd)))) + } + if (is_hugepd(__hugepd(pgd_val(pgd)))) { hpdp = (hugepd_t *)&pgd; - else { + goto out_huge; + } + { /* * Even if we end up with an unmap, the pgtable will not * be freed, because we do an rcu free and here we are @@ -356,12 +360,16 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, if (pud_none(pud)) return NULL; - else if (pud_huge(pud)) { + + if (pud_huge(pud)) { ret_pte = (pte_t *) pudp; goto out; - } else if (is_hugepd(__hugepd(pud_val(pud)))) + } + if (is_hugepd(__hugepd(pud_val(pud)))) { hpdp = (hugepd_t *)&pud; - else { + goto out_huge; + } + { pdshift = PMD_SHIFT; pmdp = pmd_offset(&pud, ea); pmd = READ_ONCE(*pmdp); @@ -386,12 +394,16 @@ pte_t *__find_linux_pte(pgd_t *pgdir, unsigned long ea, if (pmd_huge(pmd) || pmd_large(pmd)) { ret_pte = (pte_t *) pmdp; goto out; - } else if (is_hugepd(__hugepd(pmd_val(pmd)))) + } + if (is_hugepd(__hugepd(pmd_val(pmd)))) { hpdp = (hugepd_t *)&pmd; - else - return pte_offset_kernel(&pmd, ea); + goto out_huge; + } + + return pte_offset_kernel(&pmd, ea); } } +out_huge: if (!hpdp) return NULL; -- 2.13.3