Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp3242470ybk; Mon, 18 May 2020 22:54:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6oRVEgPOCkkMqlGvlT3VnKxdcdAUnK5wSCLVUqMTNNnrrx8Fsi5BGMW6lw4UQMphc4N6o X-Received: by 2002:a17:907:9492:: with SMTP id dm18mr8476049ejc.328.1589867669077; Mon, 18 May 2020 22:54:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589867669; cv=none; d=google.com; s=arc-20160816; b=BkrVBW/B2YZkcy6W1/KbVT++eO47zwd/is2X2Af0sNzAl7u6n9KyNqGZCNVAggypCa 0Gb9vdXrlofkX7D9UHfmpRK51lCP9hsVRDLvgS0kiTb81cJ453NNtE43ywnrbjuKiw7h vQM5x42Pm8Koa+ygfR4KaUe8eWalYyqaY844IHxPBiXza6UZwm4onP5rYX+s4BS0GkXc a5B/OrfyzTZIxcE4CRIDaVj7e9exU1aC7byGRnhul4V2YBt9fXG84//XV5Mgm7ytYuIx CpAGsQ+T8ONTFTZmZmYKkbJmqFDYQ8wKYp3lbql0HSC9Kaxtc41uqMJSGNO5NDJzv/SX 2P9g== 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; bh=GE0rRmQNYTEh8nIt6dkxsEEdqVatXPodDz2QMstNfXc=; b=L+vpbWWCR0ikHnqDoRvQxT9ErW1z3jvcHIGWkuXiPR0t9eFnTQ01giUHMBeh4QFagI 18RlXhQIE8uMoaQe7JHE4F6FATtiZi4OVX5VMM3F9xPgNAZxYpz6cIbUfGkMGlp8YzED apXKxa3UzW0IzOQfqxV6DnJEeQiSx6mSjN39a0AC2jK12CQOrGpiDpwgFltViATJmpBm Ist+ksYrg3J5rTgQVYK3AxJmc93yzN4kzNmcgEylU8QJVRQKlO79t70NKxxGfh8FMiHt YLknS0x/AViQYRMmbYu0YGvnV0GPHHXCGhjs5GfNf3R7bNKUfPHjllXkD+kRHNjSUyn5 y6hg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ha26si7686059ejb.32.2020.05.18.22.54.06; Mon, 18 May 2020 22:54:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728669AbgESFtW (ORCPT + 99 others); Tue, 19 May 2020 01:49:22 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:24581 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728591AbgESFtM (ORCPT ); Tue, 19 May 2020 01:49:12 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 49R4h56rFNz9txm1; Tue, 19 May 2020 07:49:09 +0200 (CEST) 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 5OffE8Fu2zAV; Tue, 19 May 2020 07:49:09 +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 49R4h564xjz9txlx; Tue, 19 May 2020 07:49:09 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id EB60C8B7A7; Tue, 19 May 2020 07:49:10 +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 Iojc-ZrXVi0o; Tue, 19 May 2020 07:49:10 +0200 (CEST) Received: from pc16570vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id A9DEC8B767; Tue, 19 May 2020 07:49:10 +0200 (CEST) Received: by pc16570vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 86CDC65A4A; Tue, 19 May 2020 05:49:10 +0000 (UTC) Message-Id: <2c6135d57fb76eebf70673fbac3dc9e740767879.1589866984.git.christophe.leroy@csgroup.eu> In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v4 27/45] powerpc/8xx: Only 8M pages are hugepte pages now To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 19 May 2020 05:49:10 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 512k pages are now standard pages, so only 8M pages are hugepte. No more handling of normal page tables through hugepd allocation and freeing, and hugepte helpers can also be simplified. Signed-off-by: Christophe Leroy --- arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h | 7 +++---- arch/powerpc/mm/hugetlbpage.c | 16 +++------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h index 785437323576..1c7d4693a78e 100644 --- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h +++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h @@ -13,13 +13,13 @@ static inline pte_t *hugepd_page(hugepd_t hpd) static inline unsigned int hugepd_shift(hugepd_t hpd) { - return ((hpd_val(hpd) & _PMD_PAGE_MASK) >> 1) + 17; + return PAGE_SHIFT_8M; } static inline pte_t *hugepte_offset(hugepd_t hpd, unsigned long addr, unsigned int pdshift) { - unsigned long idx = (addr & ((1UL << pdshift) - 1)) >> PAGE_SHIFT; + unsigned long idx = (addr & (SZ_4M - 1)) >> PAGE_SHIFT; return hugepd_page(hpd) + idx; } @@ -32,8 +32,7 @@ static inline void flush_hugetlb_page(struct vm_area_struct *vma, static inline void hugepd_populate(hugepd_t *hpdp, pte_t *new, unsigned int pshift) { - *hpdp = __hugepd(__pa(new) | _PMD_USER | _PMD_PRESENT | - (pshift == PAGE_SHIFT_8M ? _PMD_PAGE_8M : _PMD_PAGE_512K)); + *hpdp = __hugepd(__pa(new) | _PMD_USER | _PMD_PRESENT | _PMD_PAGE_8M); } static inline int check_and_get_huge_psize(int shift) diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c index 38bad839e608..cfacd364c7aa 100644 --- a/arch/powerpc/mm/hugetlbpage.c +++ b/arch/powerpc/mm/hugetlbpage.c @@ -54,24 +54,17 @@ static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp, if (pshift >= pdshift) { cachep = PGT_CACHE(PTE_T_ORDER); num_hugepd = 1 << (pshift - pdshift); - new = NULL; - } else if (IS_ENABLED(CONFIG_PPC_8xx)) { - cachep = NULL; - num_hugepd = 1; - new = pte_alloc_one(mm); } else { cachep = PGT_CACHE(pdshift - pshift); num_hugepd = 1; - new = NULL; } - if (!cachep && !new) { + if (!cachep) { WARN_ONCE(1, "No page table cache created for hugetlb tables"); return -ENOMEM; } - if (cachep) - new = kmem_cache_alloc(cachep, pgtable_gfp_flags(mm, GFP_KERNEL)); + new = kmem_cache_alloc(cachep, pgtable_gfp_flags(mm, GFP_KERNEL)); BUG_ON(pshift > HUGEPD_SHIFT_MASK); BUG_ON((unsigned long)new & HUGEPD_SHIFT_MASK); @@ -102,10 +95,7 @@ static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp, if (i < num_hugepd) { for (i = i - 1 ; i >= 0; i--, hpdp--) *hpdp = __hugepd(0); - if (cachep) - kmem_cache_free(cachep, new); - else - pte_free(mm, new); + kmem_cache_free(cachep, new); } else { kmemleak_ignore(new); } -- 2.25.0