From patchwork Tue Nov 20 23:12:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Dan Williams X-Patchwork-Id: 10691419 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 A70A313AD for ; Tue, 20 Nov 2018 23:25:25 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 943B92AC4E for ; Tue, 20 Nov 2018 23:25:25 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 888402AC59; Tue, 20 Nov 2018 23:25:25 +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 209B52AC4E for ; Tue, 20 Nov 2018 23:25:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2E9A36B2288; Tue, 20 Nov 2018 18:25:24 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2985D6B228A; Tue, 20 Nov 2018 18:25:24 -0500 (EST) 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 188A66B228B; Tue, 20 Nov 2018 18:25:24 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by kanga.kvack.org (Postfix) with ESMTP id C35D66B2288 for ; Tue, 20 Nov 2018 18:25:23 -0500 (EST) Received: by mail-pl1-f199.google.com with SMTP id w19-v6so4271576plq.1 for ; Tue, 20 Nov 2018 15:25:23 -0800 (PST) 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:subject:from :to:cc:date:message-id:in-reply-to:references:user-agent :mime-version:content-transfer-encoding; bh=6XY87GS25BjorPYyiWdG92m1QskRUveSCPEiDigVeVQ=; b=J0EoBHcYlFjfdTrUytR7wmTnAYsk54m4FxrMpk/FqydHtax2fWbS9gh1ZBgZimxbz/ CnJKai7xW1r2C2gP1oPPNifs+jACVPPnMxnqQ6l8vLP0JOYQuJpSjavknf+2ZNdvm9ES lSZRkTXbWLl0PZlfVxiqx5HuzM8W7rY4M8LJTPXW8YDl6DBEvX47Oez7xkLhMkaUn7m6 7FiqA9qeWzuhmTAY/9P0CVSzjIZueS+umpLwfjW8wMymgwrx8pDt07rtHxhV1N5dCc1f 0QLaH+jh/5uzLp7YnWvilUEpv6pRdkf+tj5FjiKit99VmkjRPx7VjU5TA6YFFU1QeiTQ HepQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of dan.j.williams@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=dan.j.williams@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Gm-Message-State: AA+aEWYXs9fHqyq4AwpUaAwAl4xPZ61N3tMr3R5El+43k8sXfGn/ygOw KEki3G4mZ4MMuy+rfsb6plb6wOX44UiwLV4Dmj/XczFYDsNCpNXGi1uQ3EeWswKlzstu5qfOPk0 Z+K9RN/PllfsUA9mQr91nv/MCTPKnoSmJkL/AHOJbDoQg2R5f5cUdA8a6KyA3txdlmA== X-Received: by 2002:a63:314c:: with SMTP id x73mr3790650pgx.323.1542756323432; Tue, 20 Nov 2018 15:25:23 -0800 (PST) X-Google-Smtp-Source: AFSGD/WwFgmcE1R6Ufaz0fd78N2pcxXhJLkeMavzHhXHeuFYcukq1V3xlIwbW8vwJb6hGuOnURen X-Received: by 2002:a63:314c:: with SMTP id x73mr3790603pgx.323.1542756322506; Tue, 20 Nov 2018 15:25:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542756322; cv=none; d=google.com; s=arc-20160816; b=f2ewQH5VJPiqmjSBW9Hgi2ybB1nmJM98FVcU7ddLZ6ECAjsrs2D1fKRkM/CLdIkdAX +ErbVDa1sRw3vzXwLiq01JsMHRWaqgGOwg4mffpq3ND4PALI5PvM82CGcbJ7EYAxNmfV NLcmKVkFZzAyc948lilf+K60gdhsq3ISEa5RNysRmXHtc5Xr5tnbGJ5kRsJo5PwQWlt7 iJxXERb1k4e1X0iocEpq1nB/f4sraDaWyYj8jPa34B3Lhm78GJfyIcTYb1CuawaMAcZ3 kE9FFk1z0yFUXC4mfXW0bF64EDLg5xLYbj9roevJOAkzM2KgGBRFvfkbeCinn5D23u/b /LXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:user-agent:references :in-reply-to:message-id:date:cc:to:from:subject; bh=6XY87GS25BjorPYyiWdG92m1QskRUveSCPEiDigVeVQ=; b=PxFdyiNH3DGmWCm7yOTbwFHNDlxjHXpAxmz3PlQveTWtnxR7l0PEHX3lVPkJ2yVhhJ C3OtYoJ52F0F5kDY+kBn7YzovBkldIvZhSTEc0UwFBXHvg6HGdTcyq9dD0v2SX0+bpag 4cytumENZhO73qSCRiUERigsoFG/gPf5+Dd+v2uANtdSpAH0tgJPVnkW0VANqhRxiPjw D6Iu0HzBeWwxRPF4j1nN40h8lHPZlri0vZhGFwL0duxe1rGY6GCwOfmd0pmKvK7be+4I KnvZFz1rcWAx14OUmby1htBWETU2ZBPJOxA6cJ6//JN3iA20Iax1bVaPqjfttbI2TYJY 1l+Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dan.j.williams@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=dan.j.williams@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from mga14.intel.com (mga14.intel.com. [192.55.52.115]) by mx.google.com with ESMTPS id bi6si28276432plb.279.2018.11.20.15.25.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Nov 2018 15:25:22 -0800 (PST) Received-SPF: pass (google.com: domain of dan.j.williams@intel.com designates 192.55.52.115 as permitted sender) client-ip=192.55.52.115; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dan.j.williams@intel.com designates 192.55.52.115 as permitted sender) smtp.mailfrom=dan.j.williams@intel.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Nov 2018 15:25:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,258,1539673200"; d="scan'208";a="107958492" Received: from dwillia2-desk3.jf.intel.com (HELO dwillia2-desk3.amr.corp.intel.com) ([10.54.39.16]) by fmsmga004.fm.intel.com with ESMTP; 20 Nov 2018 15:25:21 -0800 Subject: [PATCH v8 1/7] mm, devm_memremap_pages: Mark devm_memremap_pages() EXPORT_SYMBOL_GPL From: Dan Williams To: akpm@linux-foundation.org Cc: Michal Hocko , =?utf-8?b?SsOpcsO0bWU=?= Glisse , Christoph Hellwig , torvalds@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Date: Tue, 20 Nov 2018 15:12:54 -0800 Message-ID: <154275557457.76910.16923571232582744134.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <154275556908.76910.8966087090637564219.stgit@dwillia2-desk3.amr.corp.intel.com> References: <154275556908.76910.8966087090637564219.stgit@dwillia2-desk3.amr.corp.intel.com> User-Agent: StGit/0.18-2-gc94f 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 devm_memremap_pages() is a facility that can create struct page entries for any arbitrary range and give drivers the ability to subvert core aspects of page management. Specifically the facility is tightly integrated with the kernel's memory hotplug functionality. It injects an altmap argument deep into the architecture specific vmemmap implementation to allow allocating from specific reserved pages, and it has Linux specific assumptions about page structure reference counting relative to get_user_pages() and get_user_pages_fast(). It was an oversight and a mistake that this was not marked EXPORT_SYMBOL_GPL from the outset. Again, devm_memremap_pagex() exposes and relies upon core kernel internal assumptions and will continue to evolve along with 'struct page', memory hotplug, and support for new memory types / topologies. Only an in-kernel GPL-only driver is expected to keep up with this ongoing evolution. This interface, and functionality derived from this interface, is not suitable for kernel-external drivers. Cc: Michal Hocko Cc: "Jérôme Glisse" Reviewed-by: Christoph Hellwig Signed-off-by: Dan Williams Acked-by: Michal Hocko --- kernel/memremap.c | 2 +- tools/testing/nvdimm/test/iomap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/memremap.c b/kernel/memremap.c index 9eced2cc9f94..61dbcaa95530 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -233,7 +233,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_array: return ERR_PTR(error); } -EXPORT_SYMBOL(devm_memremap_pages); +EXPORT_SYMBOL_GPL(devm_memremap_pages); unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) { diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index ff9d3a5825e1..ed18a0cbc0c8 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -113,7 +113,7 @@ void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) return nfit_res->buf + offset - nfit_res->res.start; return devm_memremap_pages(dev, pgmap); } -EXPORT_SYMBOL(__wrap_devm_memremap_pages); +EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages); pfn_t __wrap_phys_to_pfn_t(phys_addr_t addr, unsigned long flags) {