From patchwork Fri Apr 12 18:56:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 10899035 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 8B78C139A for ; Fri, 12 Apr 2019 18:57:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 734AF28E8B for ; Fri, 12 Apr 2019 18:57:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6791F28ED0; Fri, 12 Apr 2019 18:57:28 +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 D4E3828E8B for ; Fri, 12 Apr 2019 18:57:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B13526B000D; Fri, 12 Apr 2019 14:57:26 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A77546B0010; Fri, 12 Apr 2019 14:57:26 -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 87B526B026A; Fri, 12 Apr 2019 14:57:26 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by kanga.kvack.org (Postfix) with ESMTP id 34EA26B000D for ; Fri, 12 Apr 2019 14:57:26 -0400 (EDT) Received: by mail-ed1-f70.google.com with SMTP id h26so5467523eds.6 for ; Fri, 12 Apr 2019 11:57:26 -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:mime-version :content-transfer-encoding; bh=W8RImTT5/NuqjLVEjUkkWwa/kQ7S5eOStSkQSRaZDsM=; b=SZj5LYWyVFKkTcDHh3LzJZJ5xkCySPjxdZupQ5l6l2svSrTEZlzZ93u97SToFDLteg C2mSidFh9qxjDnDl1Q9h4/hmMzd/nPmO5ptOgIiBww1BSUxXtz/iu5VKARVd2yU3+1UR WoO/rxrl8hQhX/fVbaviD78SpVPFMoSwdT/2TpD03tjSZ9HyRHkex9iw+MH5EGItcyS3 CnZID8Fuo1eCY2vhhP0crE3IJ5tWysITIiv7RcnN+6D8bPbhPs7IRmJbk0E/Kq8RVUq/ IXwkIr/EnrOP11D3FnuBHFCh+y+FG/VYGumyepmBxD/mm8oOsSsmVu4j++wHYOHpteEI cO2Q== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@arm.com X-Gm-Message-State: APjAAAU+Sq53L36PGeSl2pTywkXydP8d6teVEuWmUF9R1A6RQB8OcFDg jkOFqd4J4Ij17TCbMl3lzGoEcTYf1/UaQmEymt2dLSWuUJJKuFt4bscqSCwjGvUzquHg5lv1fuo +02g1hw0nFCfYjJZwEUZMN1DfoHZ80G8kBlJrPctQRFEDhUOo6wFiJ99IB7ARV+eX8w== X-Received: by 2002:a50:9a21:: with SMTP id o30mr14234753edb.253.1555095445716; Fri, 12 Apr 2019 11:57:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqx5SsgWSRYAZqLjouAXn5QEmGONPRMQasPJkBZu+xJGd9hhElbl8vhP1i+asYtrqLSR2Odx X-Received: by 2002:a50:9a21:: with SMTP id o30mr14234693edb.253.1555095444575; Fri, 12 Apr 2019 11:57:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555095444; cv=none; d=google.com; s=arc-20160816; b=m1BnL2pxyugNLCKIXmFkHLHBea1xp7Pene2RCkndeSQ27SZZ00uSd1WTS4cWKonYu9 JoKaNiQzwJD3M5DVVxYFcAO3HdUcaeqbiSeK//en7Cu3U7+s3wq0ce+vzCai8MzuMFIX r3Nif9M5k/S3SzQYqefc9/7eNhU+S8rJEfVCCAAS9pNPoFacdVUvPDT+05Y6kyuFL8zx pez8ueXRwtBABOWoKA90zMN6egBzNiNtetJjJYoMOD1SaDcO5f0ggEN5dTaR40AOWeUy +fX1jgcVeFfZfYasKnhQOnoxlU2268VHEEYIGC1BwZKo8FeGrjDERATlwzbezJL7Ksph PjxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=W8RImTT5/NuqjLVEjUkkWwa/kQ7S5eOStSkQSRaZDsM=; b=vz/dxqsdaQjm0bPQgJBYN//0AB22Us2UkWP7RHVHR3MYv0KRvzrT74IkjJk2e5LcMT PMP24718+MqhanIyDBtrlHWflrFwFZLDrth4Yoi2APysn5CZauSTPQsjVig1qFZWwCMF DnGpSeTOTAq/IadKeBo45vEW8UOf0PKrJMaFlM/C/k4A1cH4Cc5nIYTP4oPWoFPqcJaY AB8BJL/B82j9b5nc+Xu8qqxI0Fi1HK0pRYprmLLczLG0iFzmza4eGC7CBHjQYj9Uab7D ufjYKwUeh5jmb4JxxI0SVagjwKGRuX5hmVOsPMCktzQd+zJSu7w12hbOHb0ubJPpg9HP b2Ng== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@arm.com Received: from foss.arm.com (foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id a20si3489809edd.353.2019.04.12.11.57.23 for ; Fri, 12 Apr 2019 11:57:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of robin.murphy@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: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@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 2FC1F15BE; Fri, 12 Apr 2019 11:57:23 -0700 (PDT) Received: from e110467-lin.cambridge.arm.com (e110467-lin.cambridge.arm.com [10.1.196.75]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 872D63F718; Fri, 12 Apr 2019 11:57:21 -0700 (PDT) From: Robin Murphy To: linux-mm@kvack.org Cc: dan.j.williams@intel.com, ira.weiny@intel.com, jglisse@redhat.com, ohall@gmail.com, x86@kernel.org, linuxppc-dev@lists.ozlabs.org, anshuman.khandual@arm.com, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] mm/memremap: Rename and consolidate SECTION_SIZE Date: Fri, 12 Apr 2019 19:56:00 +0100 Message-Id: <029d4af64642019a6d73c804d362d840f4eb0941.1555093412.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.21.0.dirty In-Reply-To: References: MIME-Version: 1.0 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 Trying to activatee ZONE_DEVICE for arm64 reveals that memremap's internal helpers for sparsemem sections conflict with and arm64's definitions for hugepages, which inherit the name of "sections" from earlier versions of the ARM architecture. Disambiguate memremap (and now HMM too) by propagating sparsemem's PA_ prefix, to clarify that these values are in terms of addresses rather than PFNs (and because it's a heck of a lot easier than changing all the arch code). SECTION_MASK is unused, so it can just go. [anshuman: Consolidated mm/hmm.c instance and updated the commit message] Acked-by: Michal Hocko Reviewed-by: David Hildenbrand Signed-off-by: Robin Murphy Signed-off-by: Anshuman Khandual Acked-by: Dan Williams --- include/linux/mmzone.h | 1 + kernel/memremap.c | 10 ++++------ mm/hmm.c | 2 -- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index fba7741533be..ed7dd27ee94a 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -1081,6 +1081,7 @@ static inline unsigned long early_pfn_to_nid(unsigned long pfn) * PFN_SECTION_SHIFT pfn to/from section number */ #define PA_SECTION_SHIFT (SECTION_SIZE_BITS) +#define PA_SECTION_SIZE (1UL << PA_SECTION_SHIFT) #define PFN_SECTION_SHIFT (SECTION_SIZE_BITS - PAGE_SHIFT) #define NR_MEM_SECTIONS (1UL << SECTIONS_SHIFT) diff --git a/kernel/memremap.c b/kernel/memremap.c index a856cb5ff192..dda1367b385d 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -14,8 +14,6 @@ #include static DEFINE_XARRAY(pgmap_array); -#define SECTION_MASK ~((1UL << PA_SECTION_SHIFT) - 1) -#define SECTION_SIZE (1UL << PA_SECTION_SHIFT) #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, @@ -98,8 +96,8 @@ static void devm_memremap_pages_release(void *data) put_page(pfn_to_page(pfn)); /* pages are dead and unused, undo the arch mapping */ - align_start = res->start & ~(SECTION_SIZE - 1); - align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) + align_start = res->start & ~(PA_SECTION_SIZE - 1); + align_size = ALIGN(res->start + resource_size(res), PA_SECTION_SIZE) - align_start; nid = page_to_nid(pfn_to_page(align_start >> PAGE_SHIFT)); @@ -154,8 +152,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) if (!pgmap->ref || !pgmap->kill) return ERR_PTR(-EINVAL); - align_start = res->start & ~(SECTION_SIZE - 1); - align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) + align_start = res->start & ~(PA_SECTION_SIZE - 1); + align_size = ALIGN(res->start + resource_size(res), PA_SECTION_SIZE) - align_start; align_end = align_start + align_size - 1; diff --git a/mm/hmm.c b/mm/hmm.c index fe1cd87e49ac..ef9e4e6c9f92 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -33,8 +33,6 @@ #include #include -#define PA_SECTION_SIZE (1UL << PA_SECTION_SHIFT) - #if IS_ENABLED(CONFIG_HMM_MIRROR) static const struct mmu_notifier_ops hmm_mmu_notifier_ops; From patchwork Fri Apr 12 18:56:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 10899037 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 A7FAB1390 for ; Fri, 12 Apr 2019 18:57:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9145328E8B for ; Fri, 12 Apr 2019 18:57:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 85D0428ED0; Fri, 12 Apr 2019 18:57:30 +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 0CA9728E8B for ; Fri, 12 Apr 2019 18:57:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DF70E6B0010; Fri, 12 Apr 2019 14:57:27 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D85746B026A; Fri, 12 Apr 2019 14:57:27 -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 BD4996B026B; Fri, 12 Apr 2019 14:57:27 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by kanga.kvack.org (Postfix) with ESMTP id 6E07E6B0010 for ; Fri, 12 Apr 2019 14:57:27 -0400 (EDT) Received: by mail-ed1-f71.google.com with SMTP id f42so209285edd.0 for ; Fri, 12 Apr 2019 11:57:27 -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:mime-version :content-transfer-encoding; bh=70luTOh7EZPm2mdLSlvwP+/XxOOcCyBYqtiI7hN9cdY=; b=mJDuBRURschqrPP+0HtJ//VSu0PkuFU61zt0elVEJK2QjKL7C7TEsDQ3BQMJkO3nx3 cw5npHbi3lP2xeDz5G6Kmu66Vk/d5oYWyL8EL+KRcsVnICLhQQlBOGloRKOJWN8AyU5m aSrJtwS0QZvEIhlPbFjg5/uefFBAtC2hAtgkJ7bVukrrJCgX3E6ETPzJf8/3wgvpwPAn qgHNE+OGSVzSlMHRyScHbOLpnIMDLuEuq6hnlxuobwODaR3XpxcAeVT23oYLPJTHiq/V j0jzd1eNHXFTsTcgLG5RcXFM7Whejch5xjVLs3E920/Z9XRcZIC90Z8+6HVZa2ANYVTt 9y4Q== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@arm.com X-Gm-Message-State: APjAAAX8uJu6MdVe2ciLRwAe2+rjrBleX/nPlJ2ocoI2YMHqN7NQmcTB CZpUF9sosFY60Ma9Jq8mSmqaDnrbQmyJDEX5gW/CTLVSDTw/qOivfg3bXDH6+j4L64kC45tZDT4 pD9SF/wDoaeU/LQH0wrcYwEhh35JSssnra8kzwvGZwgC+qFs24PJHABOMg3UTfa6T7g== X-Received: by 2002:a17:906:bc2:: with SMTP id y2mr22575384ejg.98.1555095446935; Fri, 12 Apr 2019 11:57:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqyEx+RZXyFOyATyuq3xtBCXOC/AYr7+iLjx95FdT36XRa+2EmH7nzaiccV2zNOmlpiXh+il X-Received: by 2002:a17:906:bc2:: with SMTP id y2mr22575358ejg.98.1555095446037; Fri, 12 Apr 2019 11:57:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555095446; cv=none; d=google.com; s=arc-20160816; b=C5sVpksh60QNTrF98H194gRXZCauJH3dvlsLqZ9De5u98Nk9xUPtFQL8ZRspVN3V/t esDAwoA/8QfBPPwhRZPWL3+K+TK1ySjdmy08IHfrHuFmXTIZj5l2BZu9vBroaGX60vLL j2KcZvxWcLIEMttH33ppDR1G3/XIzfz7Mkqc8fXWp08cAcVyUv9LxrCoHLLh05D5B9gw 6+LwQUm5FGQswbpY4CbiKPfgESaaOVAEl1ne2tXMUhq8C8Um1PpMTB/cG2xZ/Zs3kCOl t66KkKLq7mANxU3eqg6/znj71jQ7rgaFuiVUcKeuFRo+wdLvc3tSIm72jNnv3Ly/11sJ h0Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=70luTOh7EZPm2mdLSlvwP+/XxOOcCyBYqtiI7hN9cdY=; b=hT31DFvJ6c0sazDzgO/oPuh3JWJv2fDnEsZtyuH1KBW0mdLf5XT2Lug6UUlSTdcZOL hrrVgLHC6AdL5M8+BPu0Y5TRtGo8PaeNBctxj2K9hMgnHkZbbGom2oiOoW9jopTLWxSw D5YJ5M+i8SMaaes+t3x9H0XybR+Of4B062v1n8ODCN4vt2IkB3s+1FbxzyL+okMYrtJ6 oflsV2TQhebNthQM2cLV2cePyhl47+TaDPSg7wdeDpVIAMd8eNzVCqtawYhErSb6VjTV fkTkpcC+tSvBri1/B875qZBfqKmuVa5LP6KV8LCB+wPUMGZbGCKnenh6aIq5tLrjWB8j VKJQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@arm.com Received: from foss.arm.com (foss.arm.com. [217.140.101.70]) by mx.google.com with ESMTP id f23si313817edf.211.2019.04.12.11.57.25 for ; Fri, 12 Apr 2019 11:57:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of robin.murphy@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: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@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 1658C1682; Fri, 12 Apr 2019 11:57:25 -0700 (PDT) Received: from e110467-lin.cambridge.arm.com (e110467-lin.cambridge.arm.com [10.1.196.75]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6D7253F718; Fri, 12 Apr 2019 11:57:23 -0700 (PDT) From: Robin Murphy To: linux-mm@kvack.org Cc: dan.j.williams@intel.com, ira.weiny@intel.com, jglisse@redhat.com, ohall@gmail.com, x86@kernel.org, linuxppc-dev@lists.ozlabs.org, anshuman.khandual@arm.com, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] mm: clean up is_device_*_page() definitions Date: Fri, 12 Apr 2019 19:56:01 +0100 Message-Id: <2adb3982a790078fe49fd454414a7b9c0fd60bcb.1555093412.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.21.0.dirty In-Reply-To: References: MIME-Version: 1.0 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 Refactor is_device_{public,private}_page() with is_pci_p2pdma_page() to make them all consistent in depending on their respective config options even when CONFIG_DEV_PAGEMAP_OPS is enabled for other reasons. This allows a little more compile-time optimisation as well as the conceptual and cosmetic cleanup. Suggested-by: Jerome Glisse Signed-off-by: Robin Murphy Reviewed-by: Anshuman Khandual --- include/linux/mm.h | 43 +++++++++++++------------------------------ 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index 76769749b5a5..d76dfb7ac617 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -910,32 +910,6 @@ static inline bool put_devmap_managed_page(struct page *page) } return false; } - -static inline bool is_device_private_page(const struct page *page) -{ - return is_zone_device_page(page) && - page->pgmap->type == MEMORY_DEVICE_PRIVATE; -} - -static inline bool is_device_public_page(const struct page *page) -{ - return is_zone_device_page(page) && - page->pgmap->type == MEMORY_DEVICE_PUBLIC; -} - -#ifdef CONFIG_PCI_P2PDMA -static inline bool is_pci_p2pdma_page(const struct page *page) -{ - return is_zone_device_page(page) && - page->pgmap->type == MEMORY_DEVICE_PCI_P2PDMA; -} -#else /* CONFIG_PCI_P2PDMA */ -static inline bool is_pci_p2pdma_page(const struct page *page) -{ - return false; -} -#endif /* CONFIG_PCI_P2PDMA */ - #else /* CONFIG_DEV_PAGEMAP_OPS */ static inline void dev_pagemap_get_ops(void) { @@ -949,22 +923,31 @@ static inline bool put_devmap_managed_page(struct page *page) { return false; } +#endif /* CONFIG_DEV_PAGEMAP_OPS */ static inline bool is_device_private_page(const struct page *page) { - return false; + return IS_ENABLED(CONFIG_DEV_PAGEMAP_OPS) && + IS_ENABLED(CONFIG_DEVICE_PRIVATE) && + is_zone_device_page(page) && + page->pgmap->type == MEMORY_DEVICE_PRIVATE; } static inline bool is_device_public_page(const struct page *page) { - return false; + return IS_ENABLED(CONFIG_DEV_PAGEMAP_OPS) && + IS_ENABLED(CONFIG_DEVICE_PUBLIC) && + is_zone_device_page(page) && + page->pgmap->type == MEMORY_DEVICE_PUBLIC; } static inline bool is_pci_p2pdma_page(const struct page *page) { - return false; + return IS_ENABLED(CONFIG_DEV_PAGEMAP_OPS) && + IS_ENABLED(CONFIG_PCI_P2PDMA) && + is_zone_device_page(page) && + page->pgmap->type == MEMORY_DEVICE_PCI_P2PDMA; } -#endif /* CONFIG_DEV_PAGEMAP_OPS */ static inline void get_page(struct page *page) { From patchwork Fri Apr 12 18:56:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Murphy X-Patchwork-Id: 10899039 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 60DED1390 for ; Fri, 12 Apr 2019 18:57:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4595B28EB7 for ; Fri, 12 Apr 2019 18:57:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 39E0D28ED1; Fri, 12 Apr 2019 18:57:33 +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 75ADC28EB7 for ; Fri, 12 Apr 2019 18:57:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2AD636B026A; Fri, 12 Apr 2019 14:57:30 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 238066B026B; Fri, 12 Apr 2019 14:57:30 -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 F2E8A6B026C; Fri, 12 Apr 2019 14:57:29 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by kanga.kvack.org (Postfix) with ESMTP id 9C9956B026A for ; Fri, 12 Apr 2019 14:57:29 -0400 (EDT) Received: by mail-ed1-f69.google.com with SMTP id p88so5390857edd.17 for ; Fri, 12 Apr 2019 11:57:29 -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:mime-version :content-transfer-encoding; bh=yK04FVX1whulPD3dOPVb+dud8g6cxPLNC9msUEHzG0g=; b=tO5fX/6oUgCqYjxxRfb/qF8rmHg9tuE6eGy7QgFcVgpZWwX04e4k/3K1cK5HOTtrVw CpldVC96GGJJZfAN8B8HgPjVCGF1XDwLfdTAmRaAj/3HO7M9tGcfYfQ9luAhcZWGzfpx eCuqaWnf5uYG6RDRsiS3iSxDG7e/+kcCm6cWy0mSXthKcvbBZs5j7oMKerEsI82Nhe71 U99K+yKIXCyRbRwuvS1phsBC7dp5CqXk7gI/yHsnk7L7Tb7VIOeXRlTZjjGVssdq2s4u U0BTUvtR8EZcGCotgZtCUcvuDL88hyX9IyJWiYOwHP6Vxsl09mrE4Phk/C+jOonPr43S c12g== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@arm.com X-Gm-Message-State: APjAAAUzWxofQm73P+LCxQRiJEotjvIn8w410Gf1W3D8uSS+W/SYsd3I iA0N8tU0Rz8PGONpkc7CUC8VCYxbminEfObTzemhYZ9K2Z/NPY/G0VpMpQ1NUWK2vmLyjNUS38A AryVNw5PlhcX3P9ShClzwR9grJ5dOxqHHzj6e5unxyhMgK3r5L2tDqhrYCBtPsY2jdw== X-Received: by 2002:aa7:c891:: with SMTP id p17mr36846798eds.183.1555095449085; Fri, 12 Apr 2019 11:57:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqxm8Zgh1W3HWRuaiQedy89Z4MmwrnOQb36ToptQOyRNiYPm+/cX/ZlepT0bH/phwiAAqW3o X-Received: by 2002:aa7:c891:: with SMTP id p17mr36846751eds.183.1555095448071; Fri, 12 Apr 2019 11:57:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555095448; cv=none; d=google.com; s=arc-20160816; b=sMBBsobCcn7TYdKnYMObVe6DDTEHjBZCQJrpvYFkGW4PUb6atDwsiguOoYalzVMTVv 4g14rCYyDjEiy6x6IQf2LkeHvbYyaGdfW0fzz47hgN3OGEuD33wqrniS/xD7W4gYvYXF zNA17ewNgpYfTcroC5l4md+ARV0Y0sk//F5zwdeMnIAmDtvYVtKAtY90WUJS6QVoC4Y/ qTuNuJOeJJQJb+MRSFHB4UkCOXCgDk9oEVzrT60vYCgYXlYifOsvRk74hNsg236giYDN FRpnDSPHqRtOf27SBw4kuq76kw/YTyNrz2w0p7QP4H3rAJcGVrNdrVprWqX5xsJA2Rgt a14w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=yK04FVX1whulPD3dOPVb+dud8g6cxPLNC9msUEHzG0g=; b=XC1MloN8ABp27zM1KthKdmUAI8yVD/TOOjo0aswmrCJ0Yzw4Nhnxo8i1xRjK6LNb4q VsmX2V4FV3ltur2rmnje36ZB7I525NSxe1d5ZNdrUM1M6w2UhruK866WJupgKCJs118f zL41KeEfWNXGkePZZFFTixL4+znVD+htN22ij+qbjj5sDvQ63LIrLOX8sZALQ7W4G3ro CnhHJFA1SYhxkcC4nlA1BKfZTlkTA37bWP87D9tUVpUNesLldqPvLsP7XabnatWSgz1G 8aoLbEhA53APSI3ptloZnwMTMnPK6r1dqZU2G8miq31pK+v61W1RuRssCN1mUlNphGEd d8Hw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@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 n20si2700730eje.368.2019.04.12.11.57.27 for ; Fri, 12 Apr 2019 11:57:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of robin.murphy@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: best guess record for domain of robin.murphy@arm.com designates 217.140.101.70 as permitted sender) smtp.mailfrom=robin.murphy@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 F0E52168F; Fri, 12 Apr 2019 11:57:26 -0700 (PDT) Received: from e110467-lin.cambridge.arm.com (e110467-lin.cambridge.arm.com [10.1.196.75]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 542353F718; Fri, 12 Apr 2019 11:57:25 -0700 (PDT) From: Robin Murphy To: linux-mm@kvack.org Cc: dan.j.williams@intel.com, ira.weiny@intel.com, jglisse@redhat.com, ohall@gmail.com, x86@kernel.org, linuxppc-dev@lists.ozlabs.org, anshuman.khandual@arm.com, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] mm: introduce ARCH_HAS_PTE_DEVMAP Date: Fri, 12 Apr 2019 19:56:02 +0100 Message-Id: <25525e4dab6ebc49e233f21f7c29821223431647.1555093412.git.robin.murphy@arm.com> X-Mailer: git-send-email 2.21.0.dirty In-Reply-To: References: MIME-Version: 1.0 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 ARCH_HAS_ZONE_DEVICE is somewhat meaningless in itself, and combined with the long-out-of-date comment can lead to the impression than an architecture may just enable it (since __add_pages() now "comprehends device memory" for itself) and expect things to work. In practice, however, ZONE_DEVICE users have little chance of functioning correctly without __HAVE_ARCH_PTE_DEVMAP, so let's clean that up the same way as ARCH_HAS_PTE_SPECIAL and make it the proper dependency so the real situation is clearer. Signed-off-by: Robin Murphy Acked-by: Dan Williams Reviewed-by: Ira Weiny Acked-by: Oliver O'Halloran Reviewed-by: Anshuman Khandual --- arch/powerpc/Kconfig | 2 +- arch/powerpc/include/asm/book3s/64/pgtable.h | 1 - arch/x86/Kconfig | 2 +- arch/x86/include/asm/pgtable.h | 4 ++-- arch/x86/include/asm/pgtable_types.h | 1 - include/linux/mm.h | 4 ++-- include/linux/pfn_t.h | 4 ++-- mm/Kconfig | 5 ++--- mm/gup.c | 2 +- 9 files changed, 11 insertions(+), 14 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 5e3d0853c31d..77e1993bba80 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -135,6 +135,7 @@ config PPC select ARCH_HAS_MMIOWB if PPC64 select ARCH_HAS_PHYS_TO_DMA select ARCH_HAS_PMEM_API if PPC64 + select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64 select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_MEMBARRIER_CALLBACKS select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE && PPC64 @@ -142,7 +143,6 @@ config PPC select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_HAS_UACCESS_FLUSHCACHE if PPC64 select ARCH_HAS_UBSAN_SANITIZE_ALL - select ARCH_HAS_ZONE_DEVICE if PPC_BOOK3S_64 select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 581f91be9dd4..02c22ac8f387 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -90,7 +90,6 @@ #define _PAGE_SOFT_DIRTY _RPAGE_SW3 /* software: software dirty tracking */ #define _PAGE_SPECIAL _RPAGE_SW2 /* software: special page */ #define _PAGE_DEVMAP _RPAGE_SW1 /* software: ZONE_DEVICE page */ -#define __HAVE_ARCH_PTE_DEVMAP /* * Drivers request for cache inhibited pte mapping using _PAGE_NO_CACHE diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 5ad92419be19..ffd50f27f395 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -60,6 +60,7 @@ config X86 select ARCH_HAS_KCOV if X86_64 select ARCH_HAS_MEMBARRIER_SYNC_CORE select ARCH_HAS_PMEM_API if X86_64 + select ARCH_HAS_PTE_DEVMAP if X86_64 select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_REFCOUNT select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64 @@ -69,7 +70,6 @@ config X86 select ARCH_HAS_STRICT_MODULE_RWX select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE select ARCH_HAS_UBSAN_SANITIZE_ALL - select ARCH_HAS_ZONE_DEVICE if X86_64 select ARCH_HAVE_NMI_SAFE_CMPXCHG select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI select ARCH_MIGHT_HAVE_PC_PARPORT diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h index 2779ace16d23..89a1f6fd48bf 100644 --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -254,7 +254,7 @@ static inline int has_transparent_hugepage(void) return boot_cpu_has(X86_FEATURE_PSE); } -#ifdef __HAVE_ARCH_PTE_DEVMAP +#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP static inline int pmd_devmap(pmd_t pmd) { return !!(pmd_val(pmd) & _PAGE_DEVMAP); @@ -715,7 +715,7 @@ static inline int pte_present(pte_t a) return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE); } -#ifdef __HAVE_ARCH_PTE_DEVMAP +#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP static inline int pte_devmap(pte_t a) { return (pte_flags(a) & _PAGE_DEVMAP) == _PAGE_DEVMAP; diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index d6ff0bbdb394..b5e49e6bac63 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h @@ -103,7 +103,6 @@ #if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) #define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX) #define _PAGE_DEVMAP (_AT(u64, 1) << _PAGE_BIT_DEVMAP) -#define __HAVE_ARCH_PTE_DEVMAP #else #define _PAGE_NX (_AT(pteval_t, 0)) #define _PAGE_DEVMAP (_AT(pteval_t, 0)) diff --git a/include/linux/mm.h b/include/linux/mm.h index d76dfb7ac617..fe05c94f23e9 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -504,7 +504,7 @@ struct inode; #define page_private(page) ((page)->private) #define set_page_private(page, v) ((page)->private = (v)) -#if !defined(__HAVE_ARCH_PTE_DEVMAP) || !defined(CONFIG_TRANSPARENT_HUGEPAGE) +#if !defined(CONFIG_ARCH_HAS_PTE_DEVMAP) || !defined(CONFIG_TRANSPARENT_HUGEPAGE) static inline int pmd_devmap(pmd_t pmd) { return 0; @@ -1698,7 +1698,7 @@ static inline void sync_mm_rss(struct mm_struct *mm) } #endif -#ifndef __HAVE_ARCH_PTE_DEVMAP +#ifndef CONFIG_ARCH_HAS_PTE_DEVMAP static inline int pte_devmap(pte_t pte) { return 0; diff --git a/include/linux/pfn_t.h b/include/linux/pfn_t.h index 7bb77850c65a..de8bc66b10a4 100644 --- a/include/linux/pfn_t.h +++ b/include/linux/pfn_t.h @@ -104,7 +104,7 @@ static inline pud_t pfn_t_pud(pfn_t pfn, pgprot_t pgprot) #endif #endif -#ifdef __HAVE_ARCH_PTE_DEVMAP +#ifdef CONFIG_ARCH_HAS_PTE_DEVMAP static inline bool pfn_t_devmap(pfn_t pfn) { const u64 flags = PFN_DEV|PFN_MAP; @@ -122,7 +122,7 @@ pmd_t pmd_mkdevmap(pmd_t pmd); defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD) pud_t pud_mkdevmap(pud_t pud); #endif -#endif /* __HAVE_ARCH_PTE_DEVMAP */ +#endif /* CONFIG_ARCH_HAS_PTE_DEVMAP */ #ifdef CONFIG_ARCH_HAS_PTE_SPECIAL static inline bool pfn_t_special(pfn_t pfn) diff --git a/mm/Kconfig b/mm/Kconfig index 25c71eb8a7db..fcb7ab08e294 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -655,8 +655,7 @@ config IDLE_PAGE_TRACKING See Documentation/admin-guide/mm/idle_page_tracking.rst for more details. -# arch_add_memory() comprehends device memory -config ARCH_HAS_ZONE_DEVICE +config ARCH_HAS_PTE_DEVMAP bool config ZONE_DEVICE @@ -664,7 +663,7 @@ config ZONE_DEVICE depends on MEMORY_HOTPLUG depends on MEMORY_HOTREMOVE depends on SPARSEMEM_VMEMMAP - depends on ARCH_HAS_ZONE_DEVICE + depends on ARCH_HAS_PTE_DEVMAP select XARRAY_MULTI help diff --git a/mm/gup.c b/mm/gup.c index f84e22685aaa..72a5c7d1e1a7 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1623,7 +1623,7 @@ static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end, } #endif /* CONFIG_ARCH_HAS_PTE_SPECIAL */ -#if defined(__HAVE_ARCH_PTE_DEVMAP) && defined(CONFIG_TRANSPARENT_HUGEPAGE) +#if defined(CONFIG_ARCH_HAS_PTE_DEVMAP) && defined(CONFIG_TRANSPARENT_HUGEPAGE) static int __gup_device_huge(unsigned long pfn, unsigned long addr, unsigned long end, struct page **pages, int *nr) {