From patchwork Wed Sep 12 10:26:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 10597331 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B18F914DB for ; Wed, 12 Sep 2018 10:26:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9F28429A7C for ; Wed, 12 Sep 2018 10:26:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 91B0F29A94; Wed, 12 Sep 2018 10:26:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0538D29A7C for ; Wed, 12 Sep 2018 10:26:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 057468E0006; Wed, 12 Sep 2018 06:26:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id F38438E0009; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2C9B8E0006; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id 63DCE8E0007 for ; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Received: by mail-oi0-f70.google.com with SMTP id x145-v6so1769437oia.10 for ; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=9KAgIv8nfsqMOg72uzaVHfLrGe37Gw1OAqB4rZKj4mk=; b=gTrU0R7k7YrBVYJUyAHjkW9c7g/orEb7VzfvN6zSJ1d5F3hm7zvU83hx8TZ5f8gO0m qGopIdlmKJBFtKT81nN/1VH6njIVewj2ajEHYpu1CCu7mbGOhFVO2adZY710HuqJyNRD Vh5JGbtOb3HQlnBpBrPOMgzVSzsXx34qdhjLKArpS2vVkNKB7+YyCofcLJVY1z/WeA09 nYKYsxlI7wBhoylbOxipjQioRmAHw/Q6jXAaJpvyAml6uAqAGb820fYfLLNRjBVaEDLG Viib4V/kECaCPeZBxxse7v65MuuUkUUC4eSQrkUJBgx+tBUDE2KLeQkFWXnlpSwtdzDM kQFw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com X-Gm-Message-State: APzg51DsGrXNlfcpnnaNwHOOJWgEBvubsMNaBWUCLoVtk3WT4MBIvW00 ZhaNtWEfauMDGSyzFbMuPHFe27oPLd3BIfZA/DRa4I+b5tt3A9FsvQCHfixAWEcbdFZkaA2YD0d HJZFwju20BiUwjhLfTFklOwP52C9JNAXrZHTKRTu/F3apOY1/3H2ow7D+7y0X13NVgA== X-Received: by 2002:a54:4017:: with SMTP id x23-v6mr1169260oie.25.1536747964169; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaaM8synfrWwzwshR1Bv9PkHgdU/LJlUcx5LWLDGCpPtTxP95ENuCLLJV2jmdh93+DCowRG X-Received: by 2002:a54:4017:: with SMTP id x23-v6mr1169203oie.25.1536747963061; Wed, 12 Sep 2018 03:26:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536747963; cv=none; d=google.com; s=arc-20160816; b=oSC16YU1Q89gARmPuYpjkGXDY3mV2eg3G5EDaH8T4lSse1/0UxirmDkv4n+SUx2g/s TaM7CKfkvAfILNu9o5wR+bv9+OaH8taLHlTO95hDMq0/EOnW9QT3FFrJu5eZu7gTWnMH SEVadWX0UR6qPYA6I6fnisOfl81cHjEN9kvsL2o2keg44Es9uV3WA4U936WCEJNSX/eZ qTIVTK4NfCSc402XFb6pjh6tDMyNYvIKOxM9Nkn5mQ3MG4Vot2AIFQ1fk0szikYnZX6R y72tRU4NDNw1yncTxfTg2S9NI4CEdwYdvak9h9kHG0/B5l8eVhFPC0Rk8MH361ZukZ4y i4Ig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=9KAgIv8nfsqMOg72uzaVHfLrGe37Gw1OAqB4rZKj4mk=; b=klOneI7xXDwsSfgHCbKm0rrhyxYiEqREVKC/ZE2O5IUAoxYLPkKmB8OwYR5Sd/WVcR ObyQvM3dYYM8wNFgPyo26UU7RfrU1ZuBIBbHDablXFAyzNh3OrLesxjM/NmYDGyW0hMl bU8g4VQnEQmpB4Zlcf/MYh1vRBmxsP43iAObGHm6ynUQao0pmGTDIm5mR3GJYqp2LaqK 357ht6p1vOQosrVM8insESeoI+y9j7UKqGC2PIy2cC/HQ328qGNOW+/C9W1CXKA9zjoP Rm/1aJJXV5EYViiIw+YsBf+bqqW0jK+GdpVJvyaQyupoG8NC30GIzDzs76J/0IDSB7Gh Y2OQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id l67-v6si431082oif.392.2018.09.12.03.26.02 for ; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received-SPF: pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E54361596; Wed, 12 Sep 2018 03:26:01 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id B73E03F71F; Wed, 12 Sep 2018 03:26:01 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id 841A41AE3018; Wed, 12 Sep 2018 11:26:18 +0100 (BST) From: Will Deacon To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpandya@codeaurora.org, toshi.kani@hpe.com, tglx@linutronix.de, mhocko@suse.com, akpm@linux-foundation.org, Will Deacon Subject: [PATCH 1/5] ioremap: Rework pXd_free_pYd_page() API Date: Wed, 12 Sep 2018 11:26:10 +0100 Message-Id: <1536747974-25875-2-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1536747974-25875-1-git-send-email-will.deacon@arm.com> References: <1536747974-25875-1-git-send-email-will.deacon@arm.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The recently merged API for ensuring break-before-make on page-table entries when installing huge mappings in the vmalloc/ioremap region is fairly counter-intuitive, resulting in the arch freeing functions (e.g. pmd_free_pte_page()) being called even on entries that aren't present. This resulted in a minor bug in the arm64 implementation, giving rise to spurious VM_WARN messages. This patch moves the pXd_present() checks out into the core code, refactoring the callsites at the same time so that we avoid the complex conjunctions when determining whether or not we can put down a huge mapping. Cc: Chintan Pandya Cc: Toshi Kani Cc: Thomas Gleixner Cc: Michal Hocko Cc: Andrew Morton Suggested-by: Linus Torvalds Signed-off-by: Will Deacon Reviewed-by: Toshi Kani Reviewed-by: Toshi Kani --- lib/ioremap.c | 56 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/lib/ioremap.c b/lib/ioremap.c index 517f5853ffed..6c72764af19c 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -76,6 +76,25 @@ static int ioremap_pte_range(pmd_t *pmd, unsigned long addr, return 0; } +static int ioremap_try_huge_pmd(pmd_t *pmd, unsigned long addr, + unsigned long end, phys_addr_t phys_addr, + pgprot_t prot) +{ + if (!ioremap_pmd_enabled()) + return 0; + + if ((end - addr) != PMD_SIZE) + return 0; + + if (!IS_ALIGNED(phys_addr, PMD_SIZE)) + return 0; + + if (pmd_present(*pmd) && !pmd_free_pte_page(pmd, addr)) + return 0; + + return pmd_set_huge(pmd, phys_addr, prot); +} + static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot) { @@ -89,13 +108,8 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, do { next = pmd_addr_end(addr, end); - if (ioremap_pmd_enabled() && - ((next - addr) == PMD_SIZE) && - IS_ALIGNED(phys_addr + addr, PMD_SIZE) && - pmd_free_pte_page(pmd, addr)) { - if (pmd_set_huge(pmd, phys_addr + addr, prot)) - continue; - } + if (ioremap_try_huge_pmd(pmd, addr, next, phys_addr + addr, prot)) + continue; if (ioremap_pte_range(pmd, addr, next, phys_addr + addr, prot)) return -ENOMEM; @@ -103,6 +117,25 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, return 0; } +static int ioremap_try_huge_pud(pud_t *pud, unsigned long addr, + unsigned long end, phys_addr_t phys_addr, + pgprot_t prot) +{ + if (!ioremap_pud_enabled()) + return 0; + + if ((end - addr) != PUD_SIZE) + return 0; + + if (!IS_ALIGNED(phys_addr, PUD_SIZE)) + return 0; + + if (pud_present(*pud) && !pud_free_pmd_page(pud, addr)) + return 0; + + return pud_set_huge(pud, phys_addr, prot); +} + static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot) { @@ -116,13 +149,8 @@ static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr, do { next = pud_addr_end(addr, end); - if (ioremap_pud_enabled() && - ((next - addr) == PUD_SIZE) && - IS_ALIGNED(phys_addr + addr, PUD_SIZE) && - pud_free_pmd_page(pud, addr)) { - if (pud_set_huge(pud, phys_addr + addr, prot)) - continue; - } + if (ioremap_try_huge_pud(pud, addr, next, phys_addr + addr, prot)) + continue; if (ioremap_pmd_range(pud, addr, next, phys_addr + addr, prot)) return -ENOMEM; From patchwork Wed Sep 12 10:26:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 10597323 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 88E3D14DB for ; Wed, 12 Sep 2018 10:26:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 76AE829A7C for ; Wed, 12 Sep 2018 10:26:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6A0D529A8D; Wed, 12 Sep 2018 10:26:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5397629A7C for ; Wed, 12 Sep 2018 10:26:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5CBAB8E0005; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 570918E0001; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 472158E0005; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id 2051D8E0001 for ; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Received: by mail-oi0-f70.google.com with SMTP id w12-v6so1728467oie.12 for ; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=5Z6J2RQTqMWhpJ0pzFttI0SwIzpZ6lRPEY1BeHTRt8o=; b=DyvSTmI98Yl3v0Uo7JooRuC3Ktyc+2VCjwn7hNRYmgcP28sgc7VJq/hmf2uzxholWr WxT8036SsO+KavZkmQrnxfAgkUO49eXT23IFfJ8tXrQv5e7pF74vj/bi2Y6+xaiyQpR+ 6kPR3KbSqkTcCFgzctaPWr9LI2zAdpJdlsjV2CYIlF06d/6hyp16gECQUelFlqDrU0Sh rvXH0b9kp1QPuctxRv9Q240fIG4ORUNY57K91AuPBFaf11kp23+X+sv1adxjbNTRTB5L YwS7rSInhoNd1U9chVzKzPVDU362ECh0PzCyKpvbfeskMIGkUPK6T7Ag5VGany0wQ/Vm XJBw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com X-Gm-Message-State: APzg51Dpnc0SC4hSVZkRUfK0/2mVMOjwH6aal2Hm/bLKfc46P5TfOork w32EGo7NKMruyBh1eEowBBjB2ikKDHoARFauR5yvcYERZsY2pBcz4FC5k8psNqbDgWe01s0JNEk ec+G65druwuF6AQkoxPG6ememwBYFFifRJuwE+2RStrzUIzOUpcKIU7tpAoLtHzVIyA== X-Received: by 2002:aca:dbc2:: with SMTP id s185-v6mr1269706oig.251.1536747963919; Wed, 12 Sep 2018 03:26:03 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdbd5659cAON1DLYVe2svFW0ohXnkWkTSQUqVeXxO2mvNF4HBaVFz7AmPh1vK27kt6foEayh X-Received: by 2002:aca:dbc2:: with SMTP id s185-v6mr1269631oig.251.1536747962895; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536747962; cv=none; d=google.com; s=arc-20160816; b=ZYhZeIg08uc3rNjwbzaA9ngudui0CxyUsyVc9ep8TyhcSg1AbCOiDxzCRBZkpipPYD 3Ft+odPk85RrDPGHtWKfVQB14w6/3ROVecJcZXbrQL8mg2T8r7Ty4cXj9dzNck7QkkQ6 I+VoPvUMa9WLGRd/zveD1JjrL4BvE9JLdBy3DDcQ3s8UepEbMNQAPtN24953pG6Iv9fs C+eRL25GMAIYLsHCs1ycZCytbiZAiDddO2Bwgpnzb2wDu4Kjl9YHIGVXDfI4X3MUVPtB znphq8uapq1dmSkVmnWE47NvZCTnKnFrnXZocCO75LTcApH4g0rVs0SCsdi5mp1e8FI0 0yzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=5Z6J2RQTqMWhpJ0pzFttI0SwIzpZ6lRPEY1BeHTRt8o=; b=m+c37tb4wbQcs8R/P+r5nq2sHkv60YhtnvK1hT0ZngdGjfKWt4uMfkPW58yASdoGz4 HkruNnJMb6OLA4TXLrODFAUBRe/XcZk/Qb2CIkYiBwvUgYWfKQkf4Z2dFrEscqcsqaVJ 18RnXY+v5LbYkYHt9dnD85o6q5LY1f1H83avsgyfu389Te+WQyhRspovDshmHfpH4HjQ 98pWduDeHeXFwqrMXXhkvXFfRgBbGu28jDeTXepG4yn/F3X9qvAQ6XDuGxHqHLewTAzV oMBC2ZcSKqU91CUVcfd3WLVrMIowp583E1RqLx8lyk+kE/bNAD8WiBQRPQm1eEKAPUkK yjWg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id b135-v6si452780oii.71.2018.09.12.03.26.02 for ; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received-SPF: pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 01D3B15BF; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C76BD3F7DB; Wed, 12 Sep 2018 03:26:01 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id 939EC1AE3318; Wed, 12 Sep 2018 11:26:18 +0100 (BST) From: Will Deacon To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpandya@codeaurora.org, toshi.kani@hpe.com, tglx@linutronix.de, mhocko@suse.com, akpm@linux-foundation.org, Will Deacon Subject: [PATCH 2/5] arm64: mmu: Drop pXd_present() checks from pXd_free_pYd_table() Date: Wed, 12 Sep 2018 11:26:11 +0100 Message-Id: <1536747974-25875-3-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1536747974-25875-1-git-send-email-will.deacon@arm.com> References: <1536747974-25875-1-git-send-email-will.deacon@arm.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Now that the core code checks this for us, we don't need to do it in the backend. Cc: Chintan Pandya Cc: Toshi Kani Cc: Thomas Gleixner Cc: Michal Hocko Cc: Andrew Morton Signed-off-by: Will Deacon --- arch/arm64/mm/mmu.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 8080c9f489c3..0dcb3354d6dd 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -985,10 +985,8 @@ int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr) pmd = READ_ONCE(*pmdp); - if (!pmd_present(pmd)) - return 1; if (!pmd_table(pmd)) { - VM_WARN_ON(!pmd_table(pmd)); + VM_WARN_ON(1); return 1; } @@ -1008,10 +1006,8 @@ int pud_free_pmd_page(pud_t *pudp, unsigned long addr) pud = READ_ONCE(*pudp); - if (!pud_present(pud)) - return 1; if (!pud_table(pud)) { - VM_WARN_ON(!pud_table(pud)); + VM_WARN_ON(1); return 1; } From patchwork Wed Sep 12 10:26:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 10597325 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 21BAB14DB for ; Wed, 12 Sep 2018 10:26:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 105FC29A7C for ; Wed, 12 Sep 2018 10:26:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 04FA229A94; Wed, 12 Sep 2018 10:26:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9124C29A7C for ; Wed, 12 Sep 2018 10:26:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8F5BC8E0008; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 87D358E0001; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A7EF8E0008; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id 3F5AC8E0003 for ; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Received: by mail-oi0-f69.google.com with SMTP id b8-v6so1790235oib.4 for ; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=1JT3gBGB2fQ1eze1dftN8gxIxDA2nlm9MPmGKsks1qM=; b=GOWg9AuIPcZ4wY17s5EC6qb2MX3I0q5Omu80NzdPgD1ezpr7+QNMMlIdnIlCjoX/by /p76H7LYykG6Ozw4SgbhDzpkI1LonlsVs2A5eDaSu1RVsBzBA0pKW24LkbAZSgro5HAM KwVOPA4r19YQXKw32SMxfDIVv9JnaXFJs2b7/y53m/2unbzWSm61v884m6jBaOMqrCnG sVzX6aYgbDIgRsFii1ejl7FaCaojGdKlfzeRrdY3GYEjxGl6/aOrdD6o5oe9aQR5wJV7 yCKeINEW/cEfkFGerwCAGy4IIDH55KkAbh8W8LNBvqmmEmN+o4YNSfqFQOl4MdwLQkJ/ +gWQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com X-Gm-Message-State: APzg51BLHh9QL00M33jeLMoBc5voqKiyrJr1CHuR11dMWC+57T0YoI1Z EFxnhMcuf7fVRdGW4MwNx8SLGsAqRJUcvo+JBmL3y/o2Hn7qygdaC4YhOvKqCD21bddYvtLX5Nf 5CDNB0lr0FEUSvBFi05AwH4Od4U47DJZ+T5PqMA3+cdvrmYmDJTEfMwAmxMpLoNgBjw== X-Received: by 2002:aca:3606:: with SMTP id d6-v6mr1300553oia.327.1536747964015; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaTS1W/FBK58k/2Z2Kz8Hq2BQFAsdOe1GLn5LsNfFE8VCxgJ6yWGARnWQsD0eBdY24LMCdA X-Received: by 2002:aca:3606:: with SMTP id d6-v6mr1300467oia.327.1536747962894; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536747962; cv=none; d=google.com; s=arc-20160816; b=nEPFcd0YtsYusSf2MCZhLWaX8uqAfEn7pGF/+R2V47mX6mEG5lmlx1rgISikxXyeOE hFda2X+qCt00skz3gqu+AGFs936RdbO8l/BzKp0i8dSONQfW+fezB0zjfRWsb18SM2fg 7cj9gchckhb9QtAnvePSLHqw4uS0CRDt1LEgF6+nEMSxPZlTKt3djiG6j73AyMMRdtdx WA6bAIAR0nauCdWvHGRymeRkhWMrpxy6kiZYLRgGmpu+3X1pf2/pLA3Br6jiwA2rSOSQ kfL3J+PlUzyCfDpv9g7cByCItiCn2kdtwT1s9W37Nq8e7f4TATxuVRotzxcla9XEl6Ah b3sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=1JT3gBGB2fQ1eze1dftN8gxIxDA2nlm9MPmGKsks1qM=; b=JFRtVAeVGHiyadyy3AXve/5bXK/ZnyUP7v+1/Dlb5jVy+RY+vTgHYxr8AtmG7GV82B XrVIuzTmRmWn1Qw3vieWq5azbVMuv2SBP8aLzW6LMMBZKD1pMP7//u9YL5ZvhA8A6eWR shG2EMTxqaggC0yT2HUVFmnqtoKFOilpX0EHpm7XOgFay2SCFNoRQJZsfE3WpQGtk84i hqXNW+E7uutKN3JJjBhH7aNtMvRefCNyzWsaYd4x45WkiZAz5V0XC6bvFP6wVJfKhyB1 GmkjrFXgrYlbuFJ5WyNXFMbKrAY1OvAEbwMb2j+psWH/kduUIG72q9gcN/v/ONG2LNz3 1/Qw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id a200-v6si451339oib.18.2018.09.12.03.26.02 for ; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received-SPF: pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 111FC1682; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D766F3F907; Wed, 12 Sep 2018 03:26:01 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id A3E011AE33B8; Wed, 12 Sep 2018 11:26:18 +0100 (BST) From: Will Deacon To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpandya@codeaurora.org, toshi.kani@hpe.com, tglx@linutronix.de, mhocko@suse.com, akpm@linux-foundation.org, Will Deacon Subject: [PATCH 3/5] x86: pgtable: Drop pXd_none() checks from pXd_free_pYd_table() Date: Wed, 12 Sep 2018 11:26:12 +0100 Message-Id: <1536747974-25875-4-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1536747974-25875-1-git-send-email-will.deacon@arm.com> References: <1536747974-25875-1-git-send-email-will.deacon@arm.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Now that the core code checks this for us, we don't need to do it in the backend. Cc: Chintan Pandya Cc: Toshi Kani Cc: Thomas Gleixner Cc: Michal Hocko Cc: Andrew Morton Signed-off-by: Will Deacon Reviewed-by: Toshi Kani --- arch/x86/mm/pgtable.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index ae394552fb94..b4919c44a194 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -796,9 +796,6 @@ int pud_free_pmd_page(pud_t *pud, unsigned long addr) pte_t *pte; int i; - if (pud_none(*pud)) - return 1; - pmd = (pmd_t *)pud_page_vaddr(*pud); pmd_sv = (pmd_t *)__get_free_page(GFP_KERNEL); if (!pmd_sv) @@ -840,9 +837,6 @@ int pmd_free_pte_page(pmd_t *pmd, unsigned long addr) { pte_t *pte; - if (pmd_none(*pmd)) - return 1; - pte = (pte_t *)pmd_page_vaddr(*pmd); pmd_clear(pmd); From patchwork Wed Sep 12 10:26:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 10597329 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3AE166CB for ; Wed, 12 Sep 2018 10:26:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 29C8129A7C for ; Wed, 12 Sep 2018 10:26:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1E5E129A94; Wed, 12 Sep 2018 10:26:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8381E29A7C for ; Wed, 12 Sep 2018 10:26:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D38788E0004; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CC4A78E0007; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8F2798E0004; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id 5F6CB8E0006 for ; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Received: by mail-oi0-f70.google.com with SMTP id j17-v6so1744188oii.8 for ; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=mCQhMX470BDGByPnZUeAM4vjCfUfWAlr0VZ7SYs45do=; b=Ecni2UZuW7t4Abk0kAzlPamJd9Y2qR8Z+dJXoSLuOn7qgU+fkyDZ9bnMnT4vsePdlH WijQ5hVLzJyctVaULX3ndx3s09vMwd+soegSz2UIhVPNMvQcw14YjvmLFYIwMxvubmkG XdDnKfj0BZtTayKVCqiuF8JqAqZetCxQzrTlhkyj8mBzmlcldwooK/YUmJascP1k0ekF X/O4RkTUSFViRNXJDvOUNw6b3jM2ev6VI6Z5zo8vxx1Y0MfkwGT+szUmAjjCj+YOUGsT 73wqKrHpcIK7E/XojyMmFqSgW71xZH6/K/Z5jm/upNqLXBiThR4IUuKezGTeebqnd14h EPnw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com X-Gm-Message-State: APzg51A1CU60aJM6D+NEE0Vfp7qVHvN3sRYRnf3AVmaG12jUji48u0ic j40SNfn2U8wKilfh4qSuZcVDKnoTj072yOPvWJlGVL4CJL0XwW4YEQsDWOhqm6IiLPYLaOhXD+r iKXwp5YCv52FNAUmIqAI1O7eEol2QAn0G6YE50udnaudP9ayRnpmy+KA4mbWQ2Dnq0g== X-Received: by 2002:aca:56d1:: with SMTP id k200-v6mr1318718oib.319.1536747964101; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZCu765DKLE17kikQGZOvQeEFwdA58Olgc5bhFlYMmFE/HB8Kd0y6buwZNPMgY9bjKSVqW3 X-Received: by 2002:aca:56d1:: with SMTP id k200-v6mr1318650oib.319.1536747963059; Wed, 12 Sep 2018 03:26:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536747963; cv=none; d=google.com; s=arc-20160816; b=rnjUqLcqYMsk6ZfQ3ozBH4w+uAlcJQKazOI1GZNczzc2T8RPSdbQ96dUPO9Y0EEcTH dYIIBJ1h8F9w320qBMjbXwjGdhnuaTVGbiyFIr/8wfuZ0eatY3R0sp6B0Fg7av3YHEc2 B82GH1Xktg5ug/rApu5CN3j79lFTmYbf4mTZFItQWe+oPOyKmraJj2Ie6h9i5SuMy9KV dPmPuuNrrbXmke32bPEHltEBO0i//zeAmmXWz6nDmw8hi5nVXyAZ0AgPz5wl4e8YN4ne AMIuuwWQB78wRPdh2jZRRwpESEDoy31mdOfVrNx71CBN7pMD38o2zP0vI1k+ECbRYUwm C4gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=mCQhMX470BDGByPnZUeAM4vjCfUfWAlr0VZ7SYs45do=; b=yjykGZdYVq1m6QPudgxyxqK2kKc2/WLRs6PzWLX2htSO7zf683prHTBjVzh+1flGSd J5MrnM9QkuaDwYs2cdFwKDyMig8y1hFQxNQ3biunkF4pq5qtKupt/ArFtanh/uib5yiU Bxi990BxNLDSG/NEWRAoRD/Q0rdQUosDOtoVm6R6TJJo/n3PnETq6xA3WtpKheM71B5E g2jlIG2X+SmLERdmUI/T0ruLQbV0XAuodvAKAhusytqEp6VeZkW77ScoDpXCZQAc9DLM DcI9vPT4+5RGtvOmrKtCGfKQ7Khcen46FentmDJJ4SYSHfSxsSt2Rgcq6VXaWPSMkzLb PhFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id t145-v6si437785oih.243.2018.09.12.03.26.02 for ; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received-SPF: pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1F1481684; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id E55DB3F614; Wed, 12 Sep 2018 03:26:01 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id B42871AE3411; Wed, 12 Sep 2018 11:26:18 +0100 (BST) From: Will Deacon To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpandya@codeaurora.org, toshi.kani@hpe.com, tglx@linutronix.de, mhocko@suse.com, akpm@linux-foundation.org, Will Deacon Subject: [PATCH 4/5] lib/ioremap: Ensure phys_addr actually corresponds to a physical address Date: Wed, 12 Sep 2018 11:26:13 +0100 Message-Id: <1536747974-25875-5-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1536747974-25875-1-git-send-email-will.deacon@arm.com> References: <1536747974-25875-1-git-send-email-will.deacon@arm.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP The current ioremap() code uses a phys_addr variable at each level of page table, which is confusingly offset by subtracting the base virtual address being mapped so that adding the current virtual address back on when iterating through the page table entries gives back the corresponding physical address. This is fairly confusing and results in all users of phys_addr having to add the current virtual address back on. Instead, this patch just updates phys_addr when iterating over the page table entries, ensuring that it's always up-to-date and doesn't require explicit offsetting. Cc: Chintan Pandya Cc: Toshi Kani Cc: Thomas Gleixner Cc: Michal Hocko Cc: Andrew Morton Signed-off-by: Will Deacon --- lib/ioremap.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/lib/ioremap.c b/lib/ioremap.c index 6c72764af19c..fc834a59c90c 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -101,19 +101,18 @@ static inline int ioremap_pmd_range(pud_t *pud, unsigned long addr, pmd_t *pmd; unsigned long next; - phys_addr -= addr; pmd = pmd_alloc(&init_mm, pud, addr); if (!pmd) return -ENOMEM; do { next = pmd_addr_end(addr, end); - if (ioremap_try_huge_pmd(pmd, addr, next, phys_addr + addr, prot)) + if (ioremap_try_huge_pmd(pmd, addr, next, phys_addr, prot)) continue; - if (ioremap_pte_range(pmd, addr, next, phys_addr + addr, prot)) + if (ioremap_pte_range(pmd, addr, next, phys_addr, prot)) return -ENOMEM; - } while (pmd++, addr = next, addr != end); + } while (pmd++, addr = next, phys_addr += PMD_SIZE, addr != end); return 0; } @@ -142,19 +141,18 @@ static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr, pud_t *pud; unsigned long next; - phys_addr -= addr; pud = pud_alloc(&init_mm, p4d, addr); if (!pud) return -ENOMEM; do { next = pud_addr_end(addr, end); - if (ioremap_try_huge_pud(pud, addr, next, phys_addr + addr, prot)) + if (ioremap_try_huge_pud(pud, addr, next, phys_addr, prot)) continue; - if (ioremap_pmd_range(pud, addr, next, phys_addr + addr, prot)) + if (ioremap_pmd_range(pud, addr, next, phys_addr, prot)) return -ENOMEM; - } while (pud++, addr = next, addr != end); + } while (pud++, addr = next, phys_addr += PUD_SIZE, addr != end); return 0; } @@ -164,7 +162,6 @@ static inline int ioremap_p4d_range(pgd_t *pgd, unsigned long addr, p4d_t *p4d; unsigned long next; - phys_addr -= addr; p4d = p4d_alloc(&init_mm, pgd, addr); if (!p4d) return -ENOMEM; @@ -173,14 +170,14 @@ static inline int ioremap_p4d_range(pgd_t *pgd, unsigned long addr, if (ioremap_p4d_enabled() && ((next - addr) == P4D_SIZE) && - IS_ALIGNED(phys_addr + addr, P4D_SIZE)) { - if (p4d_set_huge(p4d, phys_addr + addr, prot)) + IS_ALIGNED(phys_addr, P4D_SIZE)) { + if (p4d_set_huge(p4d, phys_addr, prot)) continue; } - if (ioremap_pud_range(p4d, addr, next, phys_addr + addr, prot)) + if (ioremap_pud_range(p4d, addr, next, phys_addr, prot)) return -ENOMEM; - } while (p4d++, addr = next, addr != end); + } while (p4d++, addr = next, phys_addr += P4D_SIZE, addr != end); return 0; } @@ -196,14 +193,13 @@ int ioremap_page_range(unsigned long addr, BUG_ON(addr >= end); start = addr; - phys_addr -= addr; pgd = pgd_offset_k(addr); do { next = pgd_addr_end(addr, end); - err = ioremap_p4d_range(pgd, addr, next, phys_addr+addr, prot); + err = ioremap_p4d_range(pgd, addr, next, phys_addr, prot); if (err) break; - } while (pgd++, addr = next, addr != end); + } while (pgd++, addr = next, phys_addr += PGDIR_SIZE, addr != end); flush_cache_vmap(start, end); From patchwork Wed Sep 12 10:26:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 10597333 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9412A14DB for ; Wed, 12 Sep 2018 10:26:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 813CD29A7C for ; Wed, 12 Sep 2018 10:26:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7496629A94; Wed, 12 Sep 2018 10:26:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DA6A029A7C for ; Wed, 12 Sep 2018 10:26:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3A09F8E0007; Wed, 12 Sep 2018 06:26:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3034D8E0003; Wed, 12 Sep 2018 06:26:05 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E18A8E0007; Wed, 12 Sep 2018 06:26:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id C6AA88E0003 for ; Wed, 12 Sep 2018 06:26:04 -0400 (EDT) Received: by mail-oi0-f70.google.com with SMTP id v4-v6so1793359oix.2 for ; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=UQhbSo2CjhJBbAoBN3seYvduCvHh3YrpIQUGvyxA6kg=; b=HeZLmtsPfu+d+wmPbP2oJwynFJwrz9P9+yeNRDLkwepE11xo3yFzKF3+UZhMi2pt1x 8ItGpQ6tUpFqKGcoc6KQygXBsAFVfPRqAJcl6DcEjrHbXX+A+8SdxGxX0l5hUgtn9Wa1 56AndGwUkKnUGT9T2tC6Qa0ABa2fdiFjQbDg25evvdL3I0h2vvEdSc5jRUGZ1gKCjUsU 7FavemNsLcwECNdtNK0NKJ1emQ72D9udtJ+ccMxU7BFGz8830uAhzVbTYl5ggwm+x8mO 1g/ozmjJKLYuc56Bp4y4wW7ocKouiAHqEejXgySAl1kYLrB76hUTf+fSkXJ4VLEiYTi5 43CQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com X-Gm-Message-State: APzg51BJ1j449OoLrgzCyaMxivy/p9BupTihsd3Ysdu0IT0tvGtr0B8D kzkJku/m52mzhT1T/56kFaDZqoewIZxbfuknA61ZuYg/IGU17VrZiolshD0LIBU0hb6sE2qJg4Q 6oqKcXO8aTCazazvm/vWkLRNCxCOVAW1ovtFx64Jjm56iygVAfhl9iDsz0pELUiHRdw== X-Received: by 2002:aca:6b15:: with SMTP id g21-v6mr1271093oic.149.1536747964542; Wed, 12 Sep 2018 03:26:04 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbtlFP/iGMGs5OaqHjtjIM3k9Ye9VwE/s/lID9A33o2QEBP70fW8igTW9zrcEg3c5q2vUgD X-Received: by 2002:aca:6b15:: with SMTP id g21-v6mr1271021oic.149.1536747963565; Wed, 12 Sep 2018 03:26:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536747963; cv=none; d=google.com; s=arc-20160816; b=T2oiFy+k0j96ZuZOXWv920DNHSCHfBy2iKWsG8e9pfE0AmstVd+XGvnTb7YtgQp7lJ 8v8ezqyAHl6h+Zfw3YwDlBCvsP8/t/RjbzFNcLOpJASUgQ2I+GNOIDh6nJxf6/D26/ST eYU0D02cDbC6Q8khvCYJZgDXOkJuvhi6jbiiTKtW3RcEBTdRcRmOtARd5t5yXeZtgH2X as4vHsIzMiGw9DVxu1xRDr3ljTfrj0pvm4oA6WJNJ8mhfQeqiSLjiZ0KgK8/WLCV3eGF fCzmZf2YlNvbLdSVsae86bHQtT+GEUdrUKqTRmRoOpGQkEPPZWes7gX9EJ6CJ0PWgygb JuEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=UQhbSo2CjhJBbAoBN3seYvduCvHh3YrpIQUGvyxA6kg=; b=xCAHyhjOccouttIOJKqFCLW44MbwGslzf+rcPQDjnoAarMC9cJkG5qgKSnohaFzr4v zxqZYNU+NhIpbwB9iz6lxGWr40ca+V7B82myCX6Il/9UxFQccesiKMDgYHwkc8QsKQVF U1cTetNB/lVHZF+eHNXPFaiQCfKaXZhKxd91mev0kaXwdEYfByO76P7C7WWKM+P6nrwJ xsQFPG0IsgyC1sFjeD7TSDREhfW3/rC4sZ422JGdtvQHaLKAEhZchz91TQZXforIB2Nu wqWNzn3KbDosgQ2eO3uoVz8KUwBn2SwSlPNehEpsvBF3G9kespnPqheD4TipdluobTT4 gW/A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id u185-v6si421964oib.207.2018.09.12.03.26.03 for ; Wed, 12 Sep 2018 03:26:03 -0700 (PDT) Received-SPF: pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) client-ip=217.140.101.70; Authentication-Results: mx.google.com; spf=pass (google.com: domain of will.deacon@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=will.deacon@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C15401688; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received: from edgewater-inn.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 936BE3F614; Wed, 12 Sep 2018 03:26:02 -0700 (PDT) Received: by edgewater-inn.cambridge.arm.com (Postfix, from userid 1000) id C26BA1AE357F; Wed, 12 Sep 2018 11:26:18 +0100 (BST) From: Will Deacon To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: cpandya@codeaurora.org, toshi.kani@hpe.com, tglx@linutronix.de, mhocko@suse.com, akpm@linux-foundation.org, Will Deacon Subject: [PATCH 5/5] lib/ioremap: Ensure break-before-make is used for huge p4d mappings Date: Wed, 12 Sep 2018 11:26:14 +0100 Message-Id: <1536747974-25875-6-git-send-email-will.deacon@arm.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1536747974-25875-1-git-send-email-will.deacon@arm.com> References: <1536747974-25875-1-git-send-email-will.deacon@arm.com> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Whilst no architectures actually enable support for huge p4d mappings in the vmap area, the code that is implemented should be using break-before-make, as we do for pud and pmd huge entries. Cc: Chintan Pandya Cc: Toshi Kani Cc: Thomas Gleixner Cc: Michal Hocko Cc: Andrew Morton Signed-off-by: Will Deacon Reviewed-by: Toshi Kani --- arch/arm64/mm/mmu.c | 5 +++++ arch/x86/mm/pgtable.c | 8 ++++++++ include/asm-generic/pgtable.h | 5 +++++ lib/ioremap.c | 27 +++++++++++++++++++++------ 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index 0dcb3354d6dd..58776b90dd2a 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -1024,3 +1024,8 @@ int pud_free_pmd_page(pud_t *pudp, unsigned long addr) pmd_free(NULL, table); return 1; } + +int p4d_free_pud_page(p4d_t *p4d, unsigned long addr) +{ + return 0; /* Don't attempt a block mapping */ +} diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c index b4919c44a194..c6094997d060 100644 --- a/arch/x86/mm/pgtable.c +++ b/arch/x86/mm/pgtable.c @@ -779,6 +779,14 @@ int pmd_clear_huge(pmd_t *pmd) return 0; } +/* + * Until we support 512GB pages, skip them in the vmap area. + */ +int p4d_free_pud_page(p4d_t *p4d, unsigned long addr) +{ + return 0; +} + #ifdef CONFIG_X86_64 /** * pud_free_pmd_page - Clear pud entry and free pmd page. diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 88ebc6102c7c..4297a2519ebf 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h @@ -1019,6 +1019,7 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot); int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot); int pud_clear_huge(pud_t *pud); int pmd_clear_huge(pmd_t *pmd); +int p4d_free_pud_page(p4d_t *p4d, unsigned long addr); int pud_free_pmd_page(pud_t *pud, unsigned long addr); int pmd_free_pte_page(pmd_t *pmd, unsigned long addr); #else /* !CONFIG_HAVE_ARCH_HUGE_VMAP */ @@ -1046,6 +1047,10 @@ static inline int pmd_clear_huge(pmd_t *pmd) { return 0; } +static inline int p4d_free_pud_page(p4d_t *p4d, unsigned long addr) +{ + return 0; +} static inline int pud_free_pmd_page(pud_t *pud, unsigned long addr) { return 0; diff --git a/lib/ioremap.c b/lib/ioremap.c index fc834a59c90c..49d2e23dad2e 100644 --- a/lib/ioremap.c +++ b/lib/ioremap.c @@ -156,6 +156,25 @@ static inline int ioremap_pud_range(p4d_t *p4d, unsigned long addr, return 0; } +static int ioremap_try_huge_p4d(p4d_t *p4d, unsigned long addr, + unsigned long end, phys_addr_t phys_addr, + pgprot_t prot) +{ + if (!ioremap_p4d_enabled()) + return 0; + + if ((end - addr) != P4D_SIZE) + return 0; + + if (!IS_ALIGNED(phys_addr, P4D_SIZE)) + return 0; + + if (p4d_present(*p4d) && !p4d_free_pud_page(p4d, addr)) + return 0; + + return p4d_set_huge(p4d, phys_addr, prot); +} + static inline int ioremap_p4d_range(pgd_t *pgd, unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot) { @@ -168,12 +187,8 @@ static inline int ioremap_p4d_range(pgd_t *pgd, unsigned long addr, do { next = p4d_addr_end(addr, end); - if (ioremap_p4d_enabled() && - ((next - addr) == P4D_SIZE) && - IS_ALIGNED(phys_addr, P4D_SIZE)) { - if (p4d_set_huge(p4d, phys_addr, prot)) - continue; - } + if (ioremap_try_huge_p4d(p4d, addr, next, phys_addr, prot)) + continue; if (ioremap_pud_range(p4d, addr, next, phys_addr, prot)) return -ENOMEM;