From patchwork Wed Jun 26 12:27:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017621 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 A58551398 for ; Wed, 26 Jun 2019 12:27:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 941C12811E for ; Wed, 26 Jun 2019 12:27:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 889A0287AA; Wed, 26 Jun 2019 12:27:43 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 214DE287A8 for ; Wed, 26 Jun 2019 12:27:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2A6D28E000B; Wed, 26 Jun 2019 08:27:40 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 22F3F8E0009; Wed, 26 Jun 2019 08:27:40 -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 0A8EB8E000B; Wed, 26 Jun 2019 08:27:40 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id C0E2D8E0009 for ; Wed, 26 Jun 2019 08:27:39 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id x9so1657095pfm.16 for ; Wed, 26 Jun 2019 05:27:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=bmHabRRv4dQuatEihOaA1mJQzYkvtpuHUoAbH/h7QaUuzkmgm4o3sf6SIkQI8n3XAR NEO0RDqd9AjSs0BZqz08KfIxqwmA8zLnGbWCjNhJ3+57nLPATUaqicos71gMLHhUdchM E6a3D1Muc2cDH0zPNFY3IWDLNrzBvQbNXw04OhS/VBhtZVgJtWOKqG0/1JNPaG35Pjtn wu2/+E9GXzIfumvi6fHy3kOVlzGynXEtxKlIXaVruHqHAl+UG62U+nBqDD+Kap0N/fS8 ODc4wyYphRgb0YcPEmIBMMv+WAdPj4nelerPAbC3zvrdRcnTmGATl13kYYH/yUr4Zctn bxqg== X-Gm-Message-State: APjAAAUxboW3HOleRbm6p15CnrbGTQu4y6ByIbGP+2jLGsi2fNmM48EL BUgS8V7IWQz22Ta2LftgLYgfbsFedjRJ6yisIef8/SkTTD52DYv1M9cdxzBFFzLNtbSEc/hptiL M+vrB3hvRhZeOIhDoXgAyD/2p0jl34ZvxHDaQ5mBbytcibYfO2DX8oVv+/RtXjDs= X-Received: by 2002:a17:90a:36a9:: with SMTP id t38mr4487300pjb.19.1561552059399; Wed, 26 Jun 2019 05:27:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqwFgFa0uVjGwni38CKV3K/hPICdDkU6etNqpoU/EmAl7pVwJr7WapSd7lzDCHv4cLfH8oLa X-Received: by 2002:a17:90a:36a9:: with SMTP id t38mr4487254pjb.19.1561552058715; Wed, 26 Jun 2019 05:27:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552058; cv=none; d=google.com; s=arc-20160816; b=ULc9S/KHmTNxEJNo8nvZdXYrifsgGio5boQOL4Ur/a8iKyDGG5newQshrDgdl7O9En ydh3a85nyqzi57wkuo7JnvG1xmolpGErhY6h+tF3OjOgapoCK3tvDaatUOs5aLWWJ5yL eJCrx1tx88kbl8aWh6oJ/vJ3u00fNcoRFsBAfm56m1Nzhzaf7zKpbnVNlaGx4qp50fYw MYxqkkpl9RPHYqIftTl4GK8SQ/WqMGo44XwMxHeN/1hD1ubd4ODEu1WfTMNU5RZaaGV1 lyCzyEbKUouy57jr9pBkyzHlqw4U9Sch9BtEc3siXYtjPsNBDCI2sbW3LK4VOTyE6PvZ WRjw== 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:dkim-signature; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=yoeeoq801IfW0bM2YV/6psDpZXXgWV1V6YBYBKHoPNA6QVU5xap/Vh6Lcx2tr47o+g QcrrbfEgSHAKBjDx6WAVEGGXhM4nZQHv3Qg/Q/JjkVafagv07y/KftTe5IgK8T4YL6sL +Ieddd/B9xTX4pQalsR4Sr649m06r99KAf0B28RCBwm4Oyn+7RzowsDjzhcA1EOTXY2F a3lBAjsEbgFXF1AbQReEv3jRQfDXsNoyrji1fFRUI9PjQEJiKiHoSTXddW67ARatpng+ 9b5pa2y2KVgNOwvtM1GVLjBsAMuwdZMJ0LFy3HALP/1DGz1L3AA3u4hamnR+S6S0UO6/ tK7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=E0DF6Ggy; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id a12si16447187pgq.208.2019.06.26.05.27.37 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=E0DF6Ggy; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=PvDb2Ox1k4dZazYGdHDZANbuB1HI2/N93WOg6eXhjAQ=; b=E0DF6Ggytv3Gi+tFrPw6dw4aqu +rHPjpovju8YpMPWpK5hdOjnPjIlRW48unTSpelufSzvKLWSUt/e34ssiioe1/5ZxXrtVnFEEqsDN MtZ05kIuc//K5X5/7YpQRRVj1Oo+GhI7xi0UNf4PVchnRbBhm0nr+E9y6T3ABZpYjZyWuLI1/1cKh UGePfkrWV5swka70VMAVR29do3YDNhIBRV8ceMW8c7eylWdxCeNEBOaIJPfNB1dCtfb6fGcett8tv KDQgObu/s9B8jBGA2uPUlv/nWmYitPoXpSy3/pbWVkhz+4PSZAUYIe+3z7PsMxjYj75CGTH5ctbb9 dc3QNZbg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71O-0001Kx-7F; Wed, 26 Jun 2019 12:27:30 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 01/25] mm: remove the unused ARCH_HAS_HMM_DEVICE Kconfig option Date: Wed, 26 Jun 2019 14:27:00 +0200 Message-Id: <20190626122724.13313-2-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- mm/Kconfig | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/mm/Kconfig b/mm/Kconfig index f0c76ba47695..0d2ba7e1f43e 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -675,16 +675,6 @@ config ARCH_HAS_HMM_MIRROR depends on (X86_64 || PPC64) depends on MMU && 64BIT -config ARCH_HAS_HMM_DEVICE - bool - default y - depends on (X86_64 || PPC64) - depends on MEMORY_HOTPLUG - depends on MEMORY_HOTREMOVE - depends on SPARSEMEM_VMEMMAP - depends on ARCH_HAS_ZONE_DEVICE - select XARRAY_MULTI - config ARCH_HAS_HMM bool default y From patchwork Wed Jun 26 12:27:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017629 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 2B2271398 for ; Wed, 26 Jun 2019 12:27:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1AC9028673 for ; Wed, 26 Jun 2019 12:27:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0EC19287A8; Wed, 26 Jun 2019 12:27:46 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 81B1B28673 for ; Wed, 26 Jun 2019 12:27:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B4E28E0009; Wed, 26 Jun 2019 08:27:40 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 53D3A8E0002; Wed, 26 Jun 2019 08:27:40 -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 408CC8E000C; Wed, 26 Jun 2019 08:27:40 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id E15A18E0002 for ; Wed, 26 Jun 2019 08:27:39 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id y5so1652875pfb.20 for ; Wed, 26 Jun 2019 05:27:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=rGvR8Y3VXb8jN+vdsmRnpGP1SMJpLPi/itvVIHyAWXU=; b=KRPp+B0UMxRw/U7+swTQEeSqRNwZ2MBTIo3tYNDpmMK4Uxs2TmbOOjOU8pxXWNtlqZ L0UKc1nmej28TG6SYzDDGKtDGOG16YfYblTIvYEyTPX9KFtsZ4T3jQ26Eyr99XZCieYD buy0JmFD0Y5SulQhjjT7LBOb7PG0cXZIrgm//uOtkgRQDTxaEWSGiBRHgzGyPPUXfnOo Ziag92Ix573fY+R6+9lLphsl5Fr3GsC60dEDADQYskOxn0p//y1JkZlMK4thDL+aJZFj A7jSB1i6gG7NScSE7rM6KyHJTQawI/YQUk80LL/TihLDIxoL2GWtX57cAKpBFqL5R6WB tFbA== X-Gm-Message-State: APjAAAXLRFbagMsEvA/idA8/yP4I1rnL9aZ3WWqD5kN9MEwHM0acfS6M b/Al4ZELCZba3TDJeousJQfLL+kq6jmzYg83+bDkK+/018yYCmETIVJC7SroH3asWHxxcC5VF9E HhLf3PG1lWjIeMfjJZqnMotDyOEEgwdskDmUw0Tsgbj49KZd4luIotmZeEme88Ws= X-Received: by 2002:a17:90a:3270:: with SMTP id k103mr4331355pjb.54.1561552059576; Wed, 26 Jun 2019 05:27:39 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVKRJDE2NkbkZcF73H8+l+D/O2tFIoYknMZ76wChJEwNPwc7Cbjv9PM3LHh6Io3cW23ap+ X-Received: by 2002:a17:90a:3270:: with SMTP id k103mr4331299pjb.54.1561552058716; Wed, 26 Jun 2019 05:27:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552058; cv=none; d=google.com; s=arc-20160816; b=yYKA/4GWE+FYFijbI7NJW0+POLz7frGRMpoomllXu05w/3UIiTnP7RShEPWa4sxgZa +7MfRLWET2Bu63QlMecdm4TKZzrcfcYwetVk2MOo0olr4FEb0erqQpVE9se0gKtN/Ufq hufyeQC0DOV5L0hRHBn1yDQYNYRJvfz26N0rDJyVLOy0M1Hho9nyc6e+2vIqopgaLPat BMucVnzNjrfgI3vhe8KyLvHE83C0Hi1/ICw1QNduS5Reihr3VNAWEMfHQBpno9x1rrcF js04kzCdA8LaZj4XVnnQEJuRgnNVkIB2yTS1S18vLRJINcSo0v2GeKnMzxRzvsUqjUUp IZDQ== 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:dkim-signature; bh=rGvR8Y3VXb8jN+vdsmRnpGP1SMJpLPi/itvVIHyAWXU=; b=cDsLRmjFZWRD2YrFY9cSNIbbC8WeWnyECqvF7UZm/J5e4UsJfO7JFoGcmil1zdsWQe a3k5njL02t8j1VOuk9fpdRxTW2om1LNAtHViYwrW2CSgNYWMAbhBAZZ+n7oZxjRHiwC2 31hyODcrTufit/76UngQ3EoJiZLTiQ0gPy75M9kizTjqyS9tKS6NI1xeChKjnZ5cYSn4 uRL+GQQfPtSTm9k+kt1Wnabye91r1fk3+zwJ966FY/c2dFy+jgYAP+PEP3cBb8WHKajN kTkFSRLR1L5oyz9YMpeKYZZQXwV1+XKOgLYw+41xldWwU4lNQidOm01Thjl8sv2M31K9 dvLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=TYyr8+iI; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id l1si16163461pgi.278.2019.06.26.05.27.38 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=TYyr8+iI; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=rGvR8Y3VXb8jN+vdsmRnpGP1SMJpLPi/itvVIHyAWXU=; b=TYyr8+iIscH+GbFojbkVfsiLy/ 6V8UUXvizUy8y3RPIBP8D9fnAAWP1Qp3sQ0sR+7bkQT1JQTmAlVGgzV+v5fI+1/jsOTIaD9g9Nlt5 eCg4w7LDJEp3UasjTwmhklZTb1RKuStpx3O6WBj284yuzSZ465ORbD41rf5TlpnjWseyj/9ZGWUX0 jqEcyt7u3QkIFSnlYttTQKFW4z74J/M3DrSAahyhlWyJz59xYJo/uIeeQJH4OkHQ1zhCjJF4xHu8+ OrPQl82tMjsj6r5fhLBWxDUhgn578TysCuob8uYDDrRMv8kZyxSJieY3eDm5K6J4NdLz48vrSb/oq +rsECRcw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71Q-0001L5-OE; Wed, 26 Jun 2019 12:27:33 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 02/25] mm: remove the struct hmm_device infrastructure Date: Wed, 26 Jun 2019 14:27:01 +0200 Message-Id: <20190626122724.13313-3-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 This code is a trivial wrapper around device model helpers, which should have been integrated into the driver device model usage from the start. Assuming it actually had users, which it never had since the code was added more than 1 1/2 years ago. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- include/linux/hmm.h | 20 ------------ mm/hmm.c | 80 --------------------------------------------- 2 files changed, 100 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 044a36d7c3f8..99765be3284d 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -751,26 +751,6 @@ static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page) { return page->hmm_data; } - - -/* - * struct hmm_device - fake device to hang device memory onto - * - * @device: device struct - * @minor: device minor number - */ -struct hmm_device { - struct device device; - unsigned int minor; -}; - -/* - * A device driver that wants to handle multiple devices memory through a - * single fake device can use hmm_device to do so. This is purely a helper and - * it is not strictly needed, in order to make use of any HMM functionality. - */ -struct hmm_device *hmm_device_new(void *drvdata); -void hmm_device_put(struct hmm_device *hmm_device); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ #else /* IS_ENABLED(CONFIG_HMM) */ static inline void hmm_mm_destroy(struct mm_struct *mm) {} diff --git a/mm/hmm.c b/mm/hmm.c index f702a3895d05..00cc642b3d7e 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1528,84 +1528,4 @@ struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, return devmem; } EXPORT_SYMBOL_GPL(hmm_devmem_add_resource); - -/* - * A device driver that wants to handle multiple devices memory through a - * single fake device can use hmm_device to do so. This is purely a helper - * and it is not needed to make use of any HMM functionality. - */ -#define HMM_DEVICE_MAX 256 - -static DECLARE_BITMAP(hmm_device_mask, HMM_DEVICE_MAX); -static DEFINE_SPINLOCK(hmm_device_lock); -static struct class *hmm_device_class; -static dev_t hmm_device_devt; - -static void hmm_device_release(struct device *device) -{ - struct hmm_device *hmm_device; - - hmm_device = container_of(device, struct hmm_device, device); - spin_lock(&hmm_device_lock); - clear_bit(hmm_device->minor, hmm_device_mask); - spin_unlock(&hmm_device_lock); - - kfree(hmm_device); -} - -struct hmm_device *hmm_device_new(void *drvdata) -{ - struct hmm_device *hmm_device; - - hmm_device = kzalloc(sizeof(*hmm_device), GFP_KERNEL); - if (!hmm_device) - return ERR_PTR(-ENOMEM); - - spin_lock(&hmm_device_lock); - hmm_device->minor = find_first_zero_bit(hmm_device_mask, HMM_DEVICE_MAX); - if (hmm_device->minor >= HMM_DEVICE_MAX) { - spin_unlock(&hmm_device_lock); - kfree(hmm_device); - return ERR_PTR(-EBUSY); - } - set_bit(hmm_device->minor, hmm_device_mask); - spin_unlock(&hmm_device_lock); - - dev_set_name(&hmm_device->device, "hmm_device%d", hmm_device->minor); - hmm_device->device.devt = MKDEV(MAJOR(hmm_device_devt), - hmm_device->minor); - hmm_device->device.release = hmm_device_release; - dev_set_drvdata(&hmm_device->device, drvdata); - hmm_device->device.class = hmm_device_class; - device_initialize(&hmm_device->device); - - return hmm_device; -} -EXPORT_SYMBOL(hmm_device_new); - -void hmm_device_put(struct hmm_device *hmm_device) -{ - put_device(&hmm_device->device); -} -EXPORT_SYMBOL(hmm_device_put); - -static int __init hmm_init(void) -{ - int ret; - - ret = alloc_chrdev_region(&hmm_device_devt, 0, - HMM_DEVICE_MAX, - "hmm_device"); - if (ret) - return ret; - - hmm_device_class = class_create(THIS_MODULE, "hmm_device"); - if (IS_ERR(hmm_device_class)) { - unregister_chrdev_region(hmm_device_devt, HMM_DEVICE_MAX); - return PTR_ERR(hmm_device_class); - } - return 0; -} - -device_initcall(hmm_init); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ From patchwork Wed Jun 26 12:27:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017631 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 59E2414C0 for ; Wed, 26 Jun 2019 12:27:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 46736281D2 for ; Wed, 26 Jun 2019 12:27:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3A41F287B1; Wed, 26 Jun 2019 12:27:50 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 A02E9281D2 for ; Wed, 26 Jun 2019 12:27:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 404D98E000C; Wed, 26 Jun 2019 08:27:48 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 38E848E0002; Wed, 26 Jun 2019 08:27:48 -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 230458E000C; Wed, 26 Jun 2019 08:27:48 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by kanga.kvack.org (Postfix) with ESMTP id DA1808E0002 for ; Wed, 26 Jun 2019 08:27:47 -0400 (EDT) Received: by mail-pf1-f200.google.com with SMTP id i26so1646810pfo.22 for ; Wed, 26 Jun 2019 05:27:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=tNgbIaFusBSvgAH0tfiGZyikD01HyoX3FofXPz2PChg=; b=AgLNfXLf7Y35/sZuM43DUXEe42RAuc09FHT8IYSB0dNF/T5ygzidlV3OXsPD5h5kjI +n5tCquUanBq4jXTO0CkDhX7tqt2NnOlC+BQf5yyI1ffTt0D9pKB6Hg/X6eJQ1YiDYPf Ak805aMD6HOohEiBGSTqiSPaQrDQ0msSLx9EIJkY/xs8AkkvtyCrg422KEnIsqmk5qPn v8Jq/PVco58ZXgAN55Q42oUr7bmNQDQCVnfpjeXR1ODMb6rRZFRIxae9NQV1WbEJW+zy 9qIFpBEtGhY5oaGYcixQXiWO46hFjV1qvyxV5aImYrea3B4ZXG8bIaaxslcUX9Tfq1ym i/BA== X-Gm-Message-State: APjAAAVAkKkxuu0zlt32T4e0HHxr+owdFhfovBAA+ICOWrUjn7NfybBn XJGUckkMxX3V2WaPyF2hiCVTCG5xP2mXs972x5Ly6tKWqEyGvOWb5N+vzb3ZNJdRY7H8pnsidKg x3sR2rY3xmId72yQWwsJiHlgi1nbfCwjc683lpISDZjMdHlapp+IEVhj0T0/aAdA= X-Received: by 2002:a17:90b:d8f:: with SMTP id bg15mr4474915pjb.65.1561552067531; Wed, 26 Jun 2019 05:27:47 -0700 (PDT) X-Google-Smtp-Source: APXvYqwLouxRZ7cTX1z5xuKoi3zZ08bQgJzPrce75tCSE9Sx4YcoCCGBEemOayjwUMe48dFtM2Sh X-Received: by 2002:a17:90b:d8f:: with SMTP id bg15mr4474853pjb.65.1561552066756; Wed, 26 Jun 2019 05:27:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552066; cv=none; d=google.com; s=arc-20160816; b=zcsP0lzKpA7Y6C3B9srptiK1pV7r00yguzRY6LDvxY0FC1Fj6R6IsS1TPVwhQogz7o sArTVmv0m2N5zXcZljNfZbySgJsvkDjx4wkKCj0/CIc/LqqlXy2MUQ936hkLbNPkcUWK g3EsBm8Y1n/izUOebsv+MkrEC9x1TngyFFXFtE5SePSVkzmkACnpoUblzeDoefqmohqz HpBdZ9cwIBv98OL3P5oSFX9rp4PRbKVOBqXbKZ/wds+7vHospzhMyIJOk6IZIFdxB/8U iJvbEAxkCcxNZ5nIz3EvpSHnB7la+zBZQriGwbOttKHGt8gNsqudgC/NcQbqFqkOGnl0 9wlg== 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:dkim-signature; bh=tNgbIaFusBSvgAH0tfiGZyikD01HyoX3FofXPz2PChg=; b=lArN1CSxEOvOmIfbUb3rKMRbGOxjvxL4IiCTeFnkAoAX6lXXJ2OP32aqAXZ1icQh4x V1uwmUhv0c7VcQSDv7o1MEqEHgC6n5752kouxPn0fFxOYRzNcaB2Dr1QNErxquRMiFl6 VzdJ5TmzpRXzRszj8zWVkLThKbaHhWnnaoJiBmh9/kEB7Aqdh5xDiCOgkNddelvkHBBC 79DRE4/f52SreKlQgaiGLirCFpS5T2gfHDGaiUV9DkEt5HLPxvu9+SBaM5oYcbLcbqrG u5489cFE4T8wqArTmrIyc39LO1C6duUPZQQKEA0q2MYbOWwHB69dCUS269DUC49UOpxS fvGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=M5RvEFLk; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id e1si18037428pfl.121.2019.06.26.05.27.46 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:46 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=M5RvEFLk; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=tNgbIaFusBSvgAH0tfiGZyikD01HyoX3FofXPz2PChg=; b=M5RvEFLk+xIi2sTIO00V1tX6nN Gas2OAPsm1RlVSmT8mEzUg67uQy5Ztrh4Dy2+VDFaybxSBu9cD+Zubb2kEKq3ZgXa2N3+M+MjK4RS /lvmIiR4bg6GCmFpkNQJEblVadLbxP29esClvEVUoJpempikVE3+jPaymXArWMF5wu1d+pU/lenHS O832RJqlERaIYCMWPFXMC2DpvqxzI2jLAIukePF57ECvYnIUGaEn08FT4Md+/es9ooWC8+J73/u2t wKW9puCoUaWunC/FTlqtJUVADewWKckr6vI895VX3CSClMhkQHH6I2GbIPFNNNGq5kmrXIBkvg173 XtY/cvdg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71T-0001LI-FP; Wed, 26 Jun 2019 12:27:36 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard , Michal Hocko Subject: [PATCH 03/25] mm: remove hmm_devmem_add_resource Date: Wed, 26 Jun 2019 14:27:02 +0200 Message-Id: <20190626122724.13313-4-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 This function has never been used since it was first added to the kernel more than a year and a half ago, and if we ever grow a consumer of the MEMORY_DEVICE_PUBLIC infrastructure it can easily use devm_memremap_pages directly. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard Acked-by: Michal Hocko --- include/linux/hmm.h | 3 --- mm/hmm.c | 50 --------------------------------------------- 2 files changed, 53 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 99765be3284d..5c46b0f603fd 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -722,9 +722,6 @@ struct hmm_devmem { struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, struct device *device, unsigned long size); -struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, - struct device *device, - struct resource *res); /* * hmm_devmem_page_set_drvdata - set per-page driver data field diff --git a/mm/hmm.c b/mm/hmm.c index 00cc642b3d7e..bd260a3b6b09 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1478,54 +1478,4 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, return devmem; } EXPORT_SYMBOL_GPL(hmm_devmem_add); - -struct hmm_devmem *hmm_devmem_add_resource(const struct hmm_devmem_ops *ops, - struct device *device, - struct resource *res) -{ - struct hmm_devmem *devmem; - void *result; - int ret; - - if (res->desc != IORES_DESC_DEVICE_PUBLIC_MEMORY) - return ERR_PTR(-EINVAL); - - dev_pagemap_get_ops(); - - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); - if (!devmem) - return ERR_PTR(-ENOMEM); - - init_completion(&devmem->completion); - devmem->pfn_first = -1UL; - devmem->pfn_last = -1UL; - devmem->resource = res; - devmem->device = device; - devmem->ops = ops; - - ret = percpu_ref_init(&devmem->ref, &hmm_devmem_ref_release, - 0, GFP_KERNEL); - if (ret) - return ERR_PTR(ret); - - devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; - devmem->pfn_last = devmem->pfn_first + - (resource_size(devmem->resource) >> PAGE_SHIFT); - devmem->page_fault = hmm_devmem_fault; - - devmem->pagemap.type = MEMORY_DEVICE_PUBLIC; - devmem->pagemap.res = *devmem->resource; - devmem->pagemap.page_free = hmm_devmem_free; - devmem->pagemap.altmap_valid = false; - devmem->pagemap.ref = &devmem->ref; - devmem->pagemap.data = devmem; - devmem->pagemap.kill = hmm_devmem_ref_kill; - devmem->pagemap.cleanup = hmm_devmem_ref_exit; - - result = devm_memremap_pages(devmem->device, &devmem->pagemap); - if (IS_ERR(result)) - return result; - return devmem; -} -EXPORT_SYMBOL_GPL(hmm_devmem_add_resource); #endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ From patchwork Wed Jun 26 12:27:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017655 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 77C861398 for ; Wed, 26 Jun 2019 12:28:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6786C28399 for ; Wed, 26 Jun 2019 12:28:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5BCB328723; Wed, 26 Jun 2019 12:28:01 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 DF5542865F for ; Wed, 26 Jun 2019 12:27:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F2A888E000F; Wed, 26 Jun 2019 08:27:50 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id EB6DF8E000E; Wed, 26 Jun 2019 08:27:50 -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 D06548E000F; Wed, 26 Jun 2019 08:27:50 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id 915C38E000E for ; Wed, 26 Jun 2019 08:27:50 -0400 (EDT) Received: by mail-pf1-f197.google.com with SMTP id h15so1692224pfn.3 for ; Wed, 26 Jun 2019 05:27:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=IuSVDPBHudchWUkWljO4sDvSgYSGPjFvkYKeyIq9LMc=; b=jOX0RrX0boc73KziVO9G1dFFC16nldW5CfdOo3K1FOWpXMtRM2WJgHf9cD2AKrvYJy adTduGLE0J9epW2HhP0k07qFsSb2x014w+3QrHbRcbeEU0Ac2/7BngNvhAJf2TXelHYv byPS1n6RIoikfcgt93W2PzKabxxWZrEpFBo6SUskh6R9sw7fqy+Czn41/P/Tx39am3+L 6rszmHLsPYnMUVVMw5VbO5mXZ6zF3oFoPIgg/CULst5qH/iR5stRO50eFykS6pX7llqw NS3+jxNOXpZkLuCELJiHNxRl/MZcoCPlhlDWnj/gnZm8STdKrKVFoWexTcY1BFibz/4Y Tr5A== X-Gm-Message-State: APjAAAU2Re/BBwPjHH6wkxNayfxQ+l+4jsm4UdCK6mQeLBbTdBKX/uUu SZL0hPbEBjVNBh2RggBET0c8EAVFeuqJ0nbN+wX4LBCQlj/8jjsIvok6uUFw/sLr5l+uWZ5pFyG Okb2shgl0OmPraTa8ufHfuxvNUOORXGGoNzxA/O67rg6r+A/HZVqhrc6zOK6IwKY= X-Received: by 2002:a17:90a:270f:: with SMTP id o15mr4474727pje.56.1561552070196; Wed, 26 Jun 2019 05:27:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqxdDozrV8y2BRkh5dVAcnzBUPAHwULQgbPef+jabQb+/qenJ4KQVzxMAmtwKvg90hYuKjij X-Received: by 2002:a17:90a:270f:: with SMTP id o15mr4474611pje.56.1561552068779; Wed, 26 Jun 2019 05:27:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552068; cv=none; d=google.com; s=arc-20160816; b=H4ih9RHpdjgC3XNBl2azIPlpOfRvhhWuPMUiHOXACa/Bd8CmVHg4SOMy5j4rWxHWaj rLoSs9+KeYten8YQzcc3blEhzFuSgNcSGuLi1GlXCZRjmQBC/Xfj1d/AARzE5MBAIEfz OxhqIG2YLn9G8qFoy3C7ADoT7eIYTyjwnF7jDeoACH6KYhGqF2eFCClh+x1CN65FgpD3 e+ZHSEsB6NfGTaD44xT8h7nO1bXDW+ElIZ4+w9krXfcrYlO3JNWhdz16pPNRuFqWzEsE 0dFQ0GCqr39iPUR0S30Uad9rrG5WD5J4ZxgFn5thuNiK72Yu2NcoqvVmN3HTcMbRkYVc VT6w== 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:dkim-signature; bh=IuSVDPBHudchWUkWljO4sDvSgYSGPjFvkYKeyIq9LMc=; b=vpkoduC+MDrruxXulsaULHiA5MgJme5vM2IvJglaZXhK/kQVxEYQfBJyxaJcNYN9fU K2PNM4uu0XRz2q2CcQ/98fE2XHD+Fr9hud0j3qoqT4HhGNJ+K/gtKhdKK+OAE9gkpaqE mIQxEe9a997dC98IiQ9TkjdAhGJ+3WtcbKojBifkC4sxHSHZnUKRIWZv547gwHKiYZZo LhhOqtJIfxU+9YjAZpH9VaIc2UN43LHCyHCdkEd3T3obUn1f+Ztm1bsHL8vObDCfB7pl T2X7CKg1smh10eCzoYdNeK5Py3EhNu6DmYNDi9Y/mM1DIcgdPwk7oIt+C/WYRNB34T/m LYtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JI26dnXH; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id w17si18470506pfj.69.2019.06.26.05.27.48 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JI26dnXH; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=IuSVDPBHudchWUkWljO4sDvSgYSGPjFvkYKeyIq9LMc=; b=JI26dnXHpGPmFcF+rpii1hZv3Z Ek0KGlwl/lxGCVUxUSyC/eHM6sl/iVonfU7vti0UMb7JDmvwQIuAiVVyFOYeGUfHdgjpEdqF3+iCL a7xG6ajTzxtHTForLNaEe2xJqgLzs1sCEkGqnGaePrdZeWzJajntlWjBj+/M9uyhkP/BE+InVWKq2 toX0aqRMU8tm+bgQa95bY3Y/xe2T0NBo1ymo91HHPou8tgm1RJMR+UIvcd3lYAoQIc0lSkjVNouQH JY+rBvuJYFPW8pUQdujdNPD9ZJap5kl7UgTHeJ0UMv690BqCG2MqrZ1mm6X5XDqeyZtJzLhMcUJEI KueE+atQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71W-0001LR-EH; Wed, 26 Jun 2019 12:27:38 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Michal Hocko Subject: [PATCH 04/25] mm: remove MEMORY_DEVICE_PUBLIC support Date: Wed, 26 Jun 2019 14:27:03 +0200 Message-Id: <20190626122724.13313-5-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 code hasn't been used since it was added to the tree, and doesn't appear to actually be usable. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Acked-by: Michal Hocko --- include/linux/hmm.h | 4 ++-- include/linux/ioport.h | 1 - include/linux/memremap.h | 8 -------- include/linux/mm.h | 12 ------------ mm/Kconfig | 11 ----------- mm/gup.c | 7 ------- mm/hmm.c | 4 ++-- mm/memcontrol.c | 11 +++++------ mm/memory-failure.c | 6 +----- mm/memory.c | 34 ---------------------------------- mm/migrate.c | 26 +++----------------------- mm/swap.c | 11 ----------- 12 files changed, 13 insertions(+), 122 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 5c46b0f603fd..44a5ac738bb5 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -584,7 +584,7 @@ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) +#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) struct hmm_devmem; struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, @@ -748,7 +748,7 @@ static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page) { return page->hmm_data; } -#endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ +#endif /* CONFIG_DEVICE_PRIVATE */ #else /* IS_ENABLED(CONFIG_HMM) */ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} diff --git a/include/linux/ioport.h b/include/linux/ioport.h index da0ebaec25f0..dd961882bc74 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -132,7 +132,6 @@ enum { IORES_DESC_PERSISTENT_MEMORY = 4, IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5, IORES_DESC_DEVICE_PRIVATE_MEMORY = 6, - IORES_DESC_DEVICE_PUBLIC_MEMORY = 7, }; /* helpers to define resources */ diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 1732dea030b2..995c62c5a48b 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -37,13 +37,6 @@ struct vmem_altmap { * A more complete discussion of unaddressable memory may be found in * include/linux/hmm.h and Documentation/vm/hmm.rst. * - * MEMORY_DEVICE_PUBLIC: - * Device memory that is cache coherent from device and CPU point of view. This - * is use on platform that have an advance system bus (like CAPI or CCIX). A - * driver can hotplug the device memory using ZONE_DEVICE and with that memory - * type. Any page of a process can be migrated to such memory. However no one - * should be allow to pin such memory so that it can always be evicted. - * * MEMORY_DEVICE_FS_DAX: * Host memory that has similar access semantics as System RAM i.e. DMA * coherent and supports page pinning. In support of coordinating page @@ -58,7 +51,6 @@ struct vmem_altmap { */ enum memory_type { MEMORY_DEVICE_PRIVATE = 1, - MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, MEMORY_DEVICE_PCI_P2PDMA, }; diff --git a/include/linux/mm.h b/include/linux/mm.h index dd0b5f4e1e45..6e4b9be08b13 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -944,7 +944,6 @@ static inline bool put_devmap_managed_page(struct page *page) return false; switch (page->pgmap->type) { case MEMORY_DEVICE_PRIVATE: - case MEMORY_DEVICE_PUBLIC: case MEMORY_DEVICE_FS_DAX: __put_devmap_managed_page(page); return true; @@ -960,12 +959,6 @@ static inline bool is_device_private_page(const struct 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) { @@ -998,11 +991,6 @@ static inline bool is_device_private_page(const struct page *page) return false; } -static inline bool is_device_public_page(const struct page *page) -{ - return false; -} - static inline bool is_pci_p2pdma_page(const struct page *page) { return false; diff --git a/mm/Kconfig b/mm/Kconfig index 0d2ba7e1f43e..6f35b85b3052 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -718,17 +718,6 @@ config DEVICE_PRIVATE memory; i.e., memory that is only accessible from the device (or group of devices). You likely also want to select HMM_MIRROR. -config DEVICE_PUBLIC - bool "Addressable device memory (like GPU memory)" - depends on ARCH_HAS_HMM - select HMM - select DEV_PAGEMAP_OPS - - help - Allows creation of struct pages to represent addressable device - memory; i.e., memory that is accessible from both the device and - the CPU - config FRAME_VECTOR bool diff --git a/mm/gup.c b/mm/gup.c index ddde097cf9e4..fe131d879c70 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -605,13 +605,6 @@ static int get_gate_page(struct mm_struct *mm, unsigned long address, if ((gup_flags & FOLL_DUMP) || !is_zero_pfn(pte_pfn(*pte))) goto unmap; *page = pte_page(*pte); - - /* - * This should never happen (a device public page in the gate - * area). - */ - if (is_device_public_page(*page)) - goto unmap; } if (unlikely(!try_get_page(*page))) { ret = -ENOMEM; diff --git a/mm/hmm.c b/mm/hmm.c index bd260a3b6b09..376159a769fb 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1331,7 +1331,7 @@ EXPORT_SYMBOL(hmm_range_dma_unmap); #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) || IS_ENABLED(CONFIG_DEVICE_PUBLIC) +#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, unsigned long addr) { @@ -1478,4 +1478,4 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, return devmem; } EXPORT_SYMBOL_GPL(hmm_devmem_add); -#endif /* CONFIG_DEVICE_PRIVATE || CONFIG_DEVICE_PUBLIC */ +#endif /* CONFIG_DEVICE_PRIVATE */ diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ba9138a4a1de..fa844ae85bce 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -4994,8 +4994,8 @@ static int mem_cgroup_move_account(struct page *page, * 2(MC_TARGET_SWAP): if the swap entry corresponding to this pte is a * target for charge migration. if @target is not NULL, the entry is stored * in target->ent. - * 3(MC_TARGET_DEVICE): like MC_TARGET_PAGE but page is MEMORY_DEVICE_PUBLIC - * or MEMORY_DEVICE_PRIVATE (so ZONE_DEVICE page and thus not on the lru). + * 3(MC_TARGET_DEVICE): like MC_TARGET_PAGE but page is MEMORY_DEVICE_PRIVATE + * (so ZONE_DEVICE page and thus not on the lru). * For now we such page is charge like a regular page would be as for all * intent and purposes it is just special memory taking the place of a * regular page. @@ -5029,8 +5029,7 @@ static enum mc_target_type get_mctgt_type(struct vm_area_struct *vma, */ if (page->mem_cgroup == mc.from) { ret = MC_TARGET_PAGE; - if (is_device_private_page(page) || - is_device_public_page(page)) + if (is_device_private_page(page)) ret = MC_TARGET_DEVICE; if (target) target->page = page; @@ -5101,8 +5100,8 @@ static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd, if (ptl) { /* * Note their can not be MC_TARGET_DEVICE for now as we do not - * support transparent huge page with MEMORY_DEVICE_PUBLIC or - * MEMORY_DEVICE_PRIVATE but this might change. + * support transparent huge page with MEMORY_DEVICE_PRIVATE but + * this might change. */ if (get_mctgt_type_thp(vma, addr, *pmd, NULL) == MC_TARGET_PAGE) mc.precharge += HPAGE_PMD_NR; diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 8da0334b9ca0..d9fc1a8bdf6a 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1177,16 +1177,12 @@ static int memory_failure_dev_pagemap(unsigned long pfn, int flags, goto unlock; } - switch (pgmap->type) { - case MEMORY_DEVICE_PRIVATE: - case MEMORY_DEVICE_PUBLIC: + if (pgmap->type == MEMORY_DEVICE_PRIVATE) { /* * TODO: Handle HMM pages which may need coordination * with device-side memory. */ goto unlock; - default: - break; } /* diff --git a/mm/memory.c b/mm/memory.c index ddf20bd0c317..bd21e7063bf0 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -585,29 +585,6 @@ struct page *_vm_normal_page(struct vm_area_struct *vma, unsigned long addr, return NULL; if (is_zero_pfn(pfn)) return NULL; - - /* - * Device public pages are special pages (they are ZONE_DEVICE - * pages but different from persistent memory). They behave - * allmost like normal pages. The difference is that they are - * not on the lru and thus should never be involve with any- - * thing that involve lru manipulation (mlock, numa balancing, - * ...). - * - * This is why we still want to return NULL for such page from - * vm_normal_page() so that we do not have to special case all - * call site of vm_normal_page(). - */ - if (likely(pfn <= highest_memmap_pfn)) { - struct page *page = pfn_to_page(pfn); - - if (is_device_public_page(page)) { - if (with_public_device) - return page; - return NULL; - } - } - if (pte_devmap(pte)) return NULL; @@ -797,17 +774,6 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, rss[mm_counter(page)]++; } else if (pte_devmap(pte)) { page = pte_page(pte); - - /* - * Cache coherent device memory behave like regular page and - * not like persistent memory page. For more informations see - * MEMORY_DEVICE_CACHE_COHERENT in memory_hotplug.h - */ - if (is_device_public_page(page)) { - get_page(page); - page_dup_rmap(page, false); - rss[mm_counter(page)]++; - } } out_set_pte: diff --git a/mm/migrate.c b/mm/migrate.c index f2ecc2855a12..149c692d5f9b 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -246,8 +246,6 @@ static bool remove_migration_pte(struct page *page, struct vm_area_struct *vma, if (is_device_private_page(new)) { entry = make_device_private_entry(new, pte_write(pte)); pte = swp_entry_to_pte(entry); - } else if (is_device_public_page(new)) { - pte = pte_mkdevmap(pte); } } @@ -381,7 +379,6 @@ static int expected_page_refs(struct address_space *mapping, struct page *page) * ZONE_DEVICE pages. */ expected_count += is_device_private_page(page); - expected_count += is_device_public_page(page); if (mapping) expected_count += hpage_nr_pages(page) + page_has_private(page); @@ -994,10 +991,7 @@ static int move_to_new_page(struct page *newpage, struct page *page, if (!PageMappingFlags(page)) page->mapping = NULL; - if (unlikely(is_zone_device_page(newpage))) { - if (is_device_public_page(newpage)) - flush_dcache_page(newpage); - } else + if (likely(!is_zone_device_page(newpage))) flush_dcache_page(newpage); } @@ -2406,16 +2400,7 @@ static bool migrate_vma_check_page(struct page *page) * FIXME proper solution is to rework migration_entry_wait() so * it does not need to take a reference on page. */ - if (is_device_private_page(page)) - return true; - - /* - * Only allow device public page to be migrated and account for - * the extra reference count imply by ZONE_DEVICE pages. - */ - if (!is_device_public_page(page)) - return false; - extra++; + return is_device_private_page(page); } /* For file back page */ @@ -2665,11 +2650,6 @@ static void migrate_vma_insert_page(struct migrate_vma *migrate, swp_entry = make_device_private_entry(page, vma->vm_flags & VM_WRITE); entry = swp_entry_to_pte(swp_entry); - } else if (is_device_public_page(page)) { - entry = pte_mkold(mk_pte(page, READ_ONCE(vma->vm_page_prot))); - if (vma->vm_flags & VM_WRITE) - entry = pte_mkwrite(pte_mkdirty(entry)); - entry = pte_mkdevmap(entry); } } else { entry = mk_pte(page, vma->vm_page_prot); @@ -2789,7 +2769,7 @@ static void migrate_vma_pages(struct migrate_vma *migrate) migrate->src[i] &= ~MIGRATE_PFN_MIGRATE; continue; } - } else if (!is_device_public_page(newpage)) { + } else { /* * Other types of ZONE_DEVICE page are not * supported. diff --git a/mm/swap.c b/mm/swap.c index 7ede3eddc12a..83107410d29f 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -740,17 +740,6 @@ void release_pages(struct page **pages, int nr) if (is_huge_zero_page(page)) continue; - /* Device public page can not be huge page */ - if (is_device_public_page(page)) { - if (locked_pgdat) { - spin_unlock_irqrestore(&locked_pgdat->lru_lock, - flags); - locked_pgdat = NULL; - } - put_devmap_managed_page(page); - continue; - } - page = compound_head(page); if (!put_page_testzero(page)) continue; From patchwork Wed Jun 26 12:27:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017647 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 C65A91398 for ; Wed, 26 Jun 2019 12:27:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B28C72811E for ; Wed, 26 Jun 2019 12:27:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B091C287BA; Wed, 26 Jun 2019 12:27:56 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 53DCA287AB for ; Wed, 26 Jun 2019 12:27:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E3ED48E0002; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DCAC38E000E; Wed, 26 Jun 2019 08:27:49 -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 C1A1D8E0002; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by kanga.kvack.org (Postfix) with ESMTP id 7EB218E000E for ; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) Received: by mail-pl1-f200.google.com with SMTP id s22so1369740plp.5 for ; Wed, 26 Jun 2019 05:27:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0wBvIBHex+/cCiI1pboKPdW0nxKbhC7t4v1/DWHTWzI=; b=fASdm0kyePj1rBWkOsZSkTw1qCTzpwg7Pa6Lju6uiHQvCFDAEqvyth3DxvW6MhE69y /tQFu3ye8J/BpMw+Eaylh6QUK2IXrw6cFQeUXARx8MX0JdG21DLEevQmwJDi4jyDTW9N fRHC3QE869HFi5pZHjT7PQQigLOnMjXmk3TmMho9qtwRYufFK3LGfiE7ocJEIW6nRJjQ 8Bzxwyt1SKkjgYL6kedpv5NqybTX8uoTY8U+91sJ56TenhcIrC9g7Ka4L68ZDIHedQV6 +AIyRAfDLI5g6ioDwN33+ZiVw2FZ1Rgupnzxg+K4ZO8dxi5RUtAAjCCIxLnddwVy2utu UBWg== X-Gm-Message-State: APjAAAV5Fh8/d79OcFhSbJk5vXpVzgubRRA5vCwfMqh0iqn4JlppRl2J jdV17W/z8AQPJE+9rq9hafyJnXsKq1KyONtVaxLDxvoVeQoKuFa7NB9srnv8Jx+8l9xm1BAglZE tTZYfPhTD6e9HKan12Nw7F1xz5jQ1TDfH8ySpjycCnxj23POK26LcfX8zZY1fKSY= X-Received: by 2002:a17:902:148:: with SMTP id 66mr4887873plb.143.1561552069137; Wed, 26 Jun 2019 05:27:49 -0700 (PDT) X-Google-Smtp-Source: APXvYqw5CvElvTnZO4eZDbsOfTyv+Duvr3Mcruyoh84hVkZ6EU1S1Oi7zO6KeZ9FQL1CsV6zOytn X-Received: by 2002:a17:902:148:: with SMTP id 66mr4887823plb.143.1561552068488; Wed, 26 Jun 2019 05:27:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552068; cv=none; d=google.com; s=arc-20160816; b=VJE8HIh3rtwkydcU//ntEUwOslHnNpG42sAZjHxCIR4o/FrPaZTrv/S+ad7FdFony+ LUqlfL1HQ0DHU/BJigMQGZ01wlj6TbADXc6r6PaIiyVbgZvSRTaXXCW8wQhRHyyAS90J Z3cIoCL6JRgzQ/aQJ8UVsECPxRalaXhOZx8BGm/U8kXYfc0231yjA4WDklVptg3lTg9q W3wX5k6Z+HTyrwzCKMRGAqsMIpRewyVl7SiqaNF/3xHRi/SHWxEtMaNFb6WFdsN/oRcU G8ySOKbNHN3qMQ5fi9UUtZ9F+s7XaDcJuO0SWpKk7/g2X5VunVktqUjI0sjT44fi/TMp mPxQ== 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:dkim-signature; bh=0wBvIBHex+/cCiI1pboKPdW0nxKbhC7t4v1/DWHTWzI=; b=x00TftyMCayLHObcSIFngYX3H2cOCRQM9RPVUnmwPxSQ2lHc68E/z9//bhu3zxc47h sIo7GNwvg2Ls0obxAyCjTvSAJAgdyxnxi/e2f2NqX+PVUSPOFYLlhLuUjWAc7hrHK3G/ q0l2RDaXjKZUAu7zcAVFfpRdNhVIZQfRwrt2+F5RnVwB6yBvORJubkkPKAv/W0zHUVzk 4Xx1aM2q5I57vZJFm4m1nT3D0MsHfp1oqoZ2IZB4L7Zlf2GjheXBqT8bv4iSC56MQfX1 u0eC309BASwMROxkNh0HjL0lhjy6TowVcoZ/qkdy3VNK6UvG/2Njbg/G/MTX4OCy+tMj R9GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=c6rggi27; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id v16si17728768pfe.39.2019.06.26.05.27.48 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=c6rggi27; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=0wBvIBHex+/cCiI1pboKPdW0nxKbhC7t4v1/DWHTWzI=; b=c6rggi27+6bcNfZZv1zIRlyPCG dTeW2W12t37x3woY9zWdBtIsP4n1E9dw47beifpdnx/fz2SnFKoQs6M0ObFbnzav7MGUD/YXjCZ/Y /nrVNGsZF9j5DfrhyO6TTdGG/hzYaJp6AQ98WUFsFTaB6Ol4fyNoNVg8mhvpvqgaxZEjbFL/UASiZ /3sLgB2UV5SSt6KHctKLOsDSch/tnc7UKteZTeFrWqxh0JqkYe6iQjKxxaOZL1CYQ9QXxFMmVhNNO 27wXVoCLF43f+0c2qpIsvN2eFaGW98w89wJCDa2RWtuWV5oIL49PGwubBepu8AuvptmiewrxjXd5v 6kqTr2hA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71Z-0001Lv-4k; Wed, 26 Jun 2019 12:27:41 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 05/25] mm: don't clear ->mapping in hmm_devmem_free Date: Wed, 26 Jun 2019 14:27:04 +0200 Message-Id: <20190626122724.13313-6-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 ->mapping isn't even used by HMM users, and the field at the same offset in the zone_device part of the union is declared as pad. (Which btw is rather confusing, as DAX uses ->pgmap and ->mapping from two different sides of the union, but DAX doesn't use hmm_devmem_free). Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- mm/hmm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/mm/hmm.c b/mm/hmm.c index 376159a769fb..e7dd2ab8f9ab 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1383,8 +1383,6 @@ static void hmm_devmem_free(struct page *page, void *data) { struct hmm_devmem *devmem = data; - page->mapping = NULL; - devmem->ops->free(devmem, page); } From patchwork Wed Jun 26 12:27:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017639 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 4AC9D1398 for ; Wed, 26 Jun 2019 12:27:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 398B8287B4 for ; Wed, 26 Jun 2019 12:27:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2E20828723; Wed, 26 Jun 2019 12:27:54 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 F1FCE287A8 for ; Wed, 26 Jun 2019 12:27:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 73A718E000D; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 6752C8E0002; Wed, 26 Jun 2019 08:27:49 -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 4CAC88E000D; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 046E38E0002 for ; Wed, 26 Jun 2019 08:27:49 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id x3so1531915pgp.8 for ; Wed, 26 Jun 2019 05:27:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=BPkZHHIHMHfLZtQnho6ADB3HOg0fG+ODbmu+2ZG5xyw=; b=Ahhg8m0kApok6BZ68ZTuy201l5wM+fQSmQ0kE0CCnvU9sTbWkmqiVLZQORRVFqHxGi JtUAhxCNWACr4JI4tWusveOIvCfkGKiSiJAskA6yf1v2IOjPxKNujKN0FoXzXNvsROd/ qEV077gFGnvwHEdQrc3S8H/b1qjqF13O2lZrr8nMOgNISLhoE55qXrNRkfciHRLCrs7v pXRFy/47p/5WjaLa7DMkHY5P43XPAwGBhDtDRiEfsbKjIZVsD77w9CrVCFDT0Sq74sMg io5KXuYKQJcrlQx4rqJA0mktHMAAVG+2djG0FlX4rTJ5P2nabnb7yahL5t7+M2OZwBhe MkVA== X-Gm-Message-State: APjAAAWvbGKTuG9SKDYbL9SoBtSJqOaH0hZEOEC3DoU+ZyqT797ii22l 9qEqUKzJDFZbfcxdZ2hzu9qULWWTxbWzSkGMDa5A38/ZrKEuoy3NxUe9QHRQvBtGZm7pClL+BMQ pcBSpo58aQ8W3205MqoWyAJkOboPFENsPeLgeM1YlLQWWr4+UtuYWIm2AaMPkJDE= X-Received: by 2002:a63:2985:: with SMTP id p127mr2576625pgp.400.1561552068438; Wed, 26 Jun 2019 05:27:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqw4BSPCH/hi/FHhS9eckS1c81f1aaMsOXnlOCtFEKBZsvrRgzTeN+qt0j907lxSuAKYAGac X-Received: by 2002:a63:2985:: with SMTP id p127mr2576581pgp.400.1561552067712; Wed, 26 Jun 2019 05:27:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552067; cv=none; d=google.com; s=arc-20160816; b=TNGc5JtfbgN0vj1Jgx0FvQDQ+DcuFl/shBIAl6sWCTlX5B62dDiUd359inWJ6kxYru 2NMvqXgiPiAnHyKPWOoEwJybBDivB8CiVpVNGle6NhWsDMpHPJpvcKZW7H8eX4na5Hq3 TpxES6Z4/9G9Chmxaqj3Xs86WVe2zrmtftF+/qhWCFYFSsfOj2+6IqmJgMABWQD/dUZ2 xRITEZX3HRjRtN/W5VdNJeLeyxkHzDqIiUph7Bgp3QbodJgoDpOPjy7HQ+eFs8u6JfNA twfsr56/Zxvr7iM0Yr6gqQNOw3NRgY1qCmw4Wtu8bkKlA5QJDiolGIvKBz0qL7s5a43F 5c8A== 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:dkim-signature; bh=BPkZHHIHMHfLZtQnho6ADB3HOg0fG+ODbmu+2ZG5xyw=; b=u/8HmlaUAY5zzyPBECO5m9YRqbImZCtRZ7FrR2xgUxGqTyznL+4lIHQ6oqM2YmqOXL jEY6IHObY9BvXf6C++f5rbOvJ7XvumV3cpqLy5Oye6iNZ3blBH8qW/JHGwTqecMyNGSv D1JhK/pBsZoZ0BP62awCucF30WBe3shZnMWHEflpD2OduIRtMb9hMH1n5Ufzp5h2v4rT C7hKzuGk7Lu27R864pAWtWa50JC2ipHJflEQ15bm++J7N3eWYq7JBnPjucG1mBcjVzDc W/duaW1y+oUHY6Oqkjx1XuA5/GgAIKeH9bz3fYLoeLWlFmmQgSPKsgKlvUt3YW5iIpQn gLJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jk74jAEb; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id s24si12006684pfh.227.2019.06.26.05.27.47 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:47 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jk74jAEb; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=BPkZHHIHMHfLZtQnho6ADB3HOg0fG+ODbmu+2ZG5xyw=; b=jk74jAEbOrotcGBG5yTuu12mN9 C7kyksJxP1KCYqUPKHazaYWg5kM7S7/Y93S1Dfun5FvBnkOn75aymSxIlC+REhc60+4tcuXRgTbBS H5faXnHQq7hSL832z10DovznO408+wuzv7SZabppvcvXXiPJG5+EAKioh0Sqov/x3VderuyLZ/f3J vJBmHaWcyJS9+qeWoVMZdkaOKi1XqR2KxkM7w9FwTgKp7Pu5xlHdH30hk8T+St23PY28xR1/Pkz4r au6n9mzTWdfrklWEZECBO0+bqRU2RIMg379zl8o++5ajUzWzEVtuOnrvMCrwHG3Us4QU4vqDgbMkG UbjgkTBg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71b-0001M0-MI; Wed, 26 Jun 2019 12:27:44 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 06/25] mm: export alloc_pages_vma Date: Wed, 26 Jun 2019 14:27:05 +0200 Message-Id: <20190626122724.13313-7-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 nouveau is currently using this through an odd hmm wrapper, and I plan to switch it to the real thing later in this series. Signed-off-by: Christoph Hellwig Reviewed-by: John Hubbard Acked-by: Michal Hocko --- mm/mempolicy.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 01600d80ae01..f48569aa1863 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -2098,6 +2098,7 @@ alloc_pages_vma(gfp_t gfp, int order, struct vm_area_struct *vma, out: return page; } +EXPORT_SYMBOL(alloc_pages_vma); /** * alloc_pages_current - Allocate pages. From patchwork Wed Jun 26 12:27:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017663 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 14CE51398 for ; Wed, 26 Jun 2019 12:28:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 03EA8287BA for ; Wed, 26 Jun 2019 12:28:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EB925287B8; Wed, 26 Jun 2019 12:28:07 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 6983D284B5 for ; Wed, 26 Jun 2019 12:28:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5DC418E0011; Wed, 26 Jun 2019 08:27:56 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 516818E000E; Wed, 26 Jun 2019 08:27:56 -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 3DF348E0011; Wed, 26 Jun 2019 08:27:56 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id EE3448E000E for ; Wed, 26 Jun 2019 08:27:55 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id a20so1656960pfn.19 for ; Wed, 26 Jun 2019 05:27:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=mt4+zc9IpSRPEzC4cMWHk/yq2yqrTYKLdoT+AMW6Qz8=; b=MbJmMk00PYpPgp48Fc5BnOaL20WshYdFl5NiX0dMYT8eeiQS5DYAYc7Vp0Xv8vcIXg ySh9lFAuHhuvt9/wY+RJ3p3ddu5HQkpq7zWBLCdHQCQSdOafjaaN+p8Bp8YF1CmlYRop FW9L0RTwvxRqU3oKMMOASNC901bLPpIpGre49t3g1IL/tAl0xjYr5CSD5bXzAyPqd5Om ZshWF60IzWXOiFtF7vwWWClA3SG93CBi7QXEDBDInnwvw9uFO1bTgR3UWp2pfZz7H3tb tWebQ9dLCnqnM1ysnT4uq/r3GGEIZ5+2vNes8ddZ0nL47QUdHQYvJuq+is3HmAa8zplM HwvA== X-Gm-Message-State: APjAAAU7mn6/lZxy7/Tqw43bVXtCrzreh9My/3gNAr1hdQCukOcPrOdp q2DHIJkmIJzfPNPNR4VGknvk3cfYRxqgDrSTeqR8k7UHtIhL2vE+Vcm7mbb4NaGfc37RnfRCn5u gJ6mzIwEV0UILdIUumtpaRqVm0h3B6aj+oc6G/+Qu/GafimsVR3KoY2kZu55fAiE= X-Received: by 2002:a65:64d5:: with SMTP id t21mr2800065pgv.310.1561552075522; Wed, 26 Jun 2019 05:27:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqyipwSjSJEB4iMLRVxjBSB0iJmdwrf1FF8FL6TsQWNvhY3lbjzXzgucKzjg9msj12dRR/sS X-Received: by 2002:a65:64d5:: with SMTP id t21mr2799987pgv.310.1561552074489; Wed, 26 Jun 2019 05:27:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552074; cv=none; d=google.com; s=arc-20160816; b=udnfcbSLFc50lis/yjJv4A1TYl+CdXJ7ecTFHuE6KTcoOKkut5exdcySzJmFAha3SO HnIi52+WTMzzelgfoMGFmnaSRJOJfBs5172Tmb4rl3ZjTKVfmLPvTLtlzH89u1rD/QDk aRreELfbx1L4OJwSRxrA1cHOfbDJGY/H/wCDe8CX4d9QUEnZ/9qOdJ9+uQWGNFLHy5qd 5B0D3qfKnFRErUk1AMq0fSxqQe8xPzwPrgqSn/5+uuhJc80l6+yjUyxFIzOL5dOAo5BG MD3XSVDUCxpcQrmZZuy2/BFOKfvPDwVAdbKTSIHSwXq35CU75wV1dZp1GlqeK+YEtiXh vdOw== 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:dkim-signature; bh=mt4+zc9IpSRPEzC4cMWHk/yq2yqrTYKLdoT+AMW6Qz8=; b=sEc+l7miZKlXGpHCYbCFhCgWKUJ+RaCfPqEJW9MNYAPptwz7F/+Pqaz/Ua/Ic/MYKK AmaIbX14uksCeq56j31zXhbOfItwisnx25iTpybSQvJv8b04AprTlITZiYUycGEwC4iZ fwI/OQW7jbSZaB3R437jMKCJuMvtjOkpnz7lDr+8yJSLkj5C/LjMqSTrEKicxzbsUt8w 4/wBcedTPMGWtrx6nsgFqPdYe9jb8vUQk/3w+pacm6OslZMUAr2pMNyJ5q5jlfJaTprj pv2Vh9VCD2MB1aF98M3RZNnEHQLbnogoDZIrxKp1hLfjgFnJ/cmjCbLRNjVuiB1F7UPe ZE2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nIyI1gI2; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id l70si1895402pje.68.2019.06.26.05.27.54 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nIyI1gI2; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=mt4+zc9IpSRPEzC4cMWHk/yq2yqrTYKLdoT+AMW6Qz8=; b=nIyI1gI2JcHVUXx+jXX71rKB3G /XpA3ZY5LzkiUTJN1oA3IOdt45tcLua2Uy9FyFVXuJC0c5X8BBMzJA41qG8Y99gIfd1C7GCe5DJJd Eh4lgGJ1X6o41RIhoOM0BBJxaETP/8Mj5RBgQ4DP+G9fpKqnG1rQdi0mwUTQbrIxb0bsPbFo13NwX 3xAPRn8oGEMHUyvDW6xdgV80ocjOn88UacI1mjEwcsiAmQWvtKLIFqBidgTpW2fUibEQblL5U/xpS usb6ODdl6HifjRKkjVSSirZqtJMju39OzLvmokEvgVxm3ops4idZHit93FdxRmcFIOpreUIAMWn0V 9GJBgs0A==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71e-0001MX-8g; Wed, 26 Jun 2019 12:27:46 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, John Hubbard Subject: [PATCH 07/25] mm: factor out a devm_request_free_mem_region helper Date: Wed, 26 Jun 2019 14:27:06 +0200 Message-Id: <20190626122724.13313-8-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Keep the physical address allocation that hmm_add_device does with the rest of the resource code, and allow future reuse of it without the hmm wrapper. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe Reviewed-by: John Hubbard --- include/linux/ioport.h | 2 ++ kernel/resource.c | 39 +++++++++++++++++++++++++++++++++++++++ mm/hmm.c | 33 ++++----------------------------- 3 files changed, 45 insertions(+), 29 deletions(-) diff --git a/include/linux/ioport.h b/include/linux/ioport.h index dd961882bc74..a02b290ca08a 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -285,6 +285,8 @@ static inline bool resource_overlaps(struct resource *r1, struct resource *r2) return (r1->start <= r2->end && r1->end >= r2->start); } +struct resource *devm_request_free_mem_region(struct device *dev, + struct resource *base, unsigned long size); #endif /* __ASSEMBLY__ */ #endif /* _LINUX_IOPORT_H */ diff --git a/kernel/resource.c b/kernel/resource.c index 158f04ec1d4f..d22423e85cf8 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -1628,6 +1628,45 @@ void resource_list_free(struct list_head *head) } EXPORT_SYMBOL(resource_list_free); +#ifdef CONFIG_DEVICE_PRIVATE +/** + * devm_request_free_mem_region - find free region for device private memory + * + * @dev: device struct to bind the resource to + * @size: size in bytes of the device memory to add + * @base: resource tree to look in + * + * This function tries to find an empty range of physical address big enough to + * contain the new resource, so that it can later be hotplugged as ZONE_DEVICE + * memory, which in turn allocates struct pages. + */ +struct resource *devm_request_free_mem_region(struct device *dev, + struct resource *base, unsigned long size) +{ + resource_size_t end, addr; + struct resource *res; + + size = ALIGN(size, 1UL << PA_SECTION_SHIFT); + end = min_t(unsigned long, base->end, (1UL << MAX_PHYSMEM_BITS) - 1); + addr = end - size + 1UL; + + for (; addr > size && addr >= base->start; addr -= size) { + if (region_intersects(addr, size, 0, IORES_DESC_NONE) != + REGION_DISJOINT) + continue; + + res = devm_request_mem_region(dev, addr, size, dev_name(dev)); + if (!res) + return ERR_PTR(-ENOMEM); + res->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; + return res; + } + + return ERR_PTR(-ERANGE); +} +EXPORT_SYMBOL_GPL(devm_request_free_mem_region); +#endif /* CONFIG_DEVICE_PRIVATE */ + static int __init strict_iomem(char *str) { if (strstr(str, "relaxed")) diff --git a/mm/hmm.c b/mm/hmm.c index e7dd2ab8f9ab..48574f8485bb 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -25,8 +25,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; @@ -1408,7 +1406,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, unsigned long size) { struct hmm_devmem *devmem; - resource_size_t addr; void *result; int ret; @@ -1430,32 +1427,10 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, if (ret) return ERR_PTR(ret); - size = ALIGN(size, PA_SECTION_SIZE); - addr = min((unsigned long)iomem_resource.end, - (1UL << MAX_PHYSMEM_BITS) - 1); - addr = addr - size + 1UL; - - /* - * FIXME add a new helper to quickly walk resource tree and find free - * range - * - * FIXME what about ioport_resource resource ? - */ - for (; addr > size && addr >= iomem_resource.start; addr -= size) { - ret = region_intersects(addr, size, 0, IORES_DESC_NONE); - if (ret != REGION_DISJOINT) - continue; - - devmem->resource = devm_request_mem_region(device, addr, size, - dev_name(device)); - if (!devmem->resource) - return ERR_PTR(-ENOMEM); - break; - } - if (!devmem->resource) - return ERR_PTR(-ERANGE); - - devmem->resource->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; + devmem->resource = devm_request_free_mem_region(device, &iomem_resource, + size); + if (IS_ERR(devmem->resource)) + return ERR_CAST(devmem->resource); devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; devmem->pfn_last = devmem->pfn_first + (resource_size(devmem->resource) >> PAGE_SHIFT); From patchwork Wed Jun 26 12:27:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017659 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 A34DE14C0 for ; Wed, 26 Jun 2019 12:28:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9269D284B5 for ; Wed, 26 Jun 2019 12:28:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 90C4928673; Wed, 26 Jun 2019 12:28:04 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 1736F2865F for ; Wed, 26 Jun 2019 12:28:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 983288E0010; Wed, 26 Jun 2019 08:27:53 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 90E9D8E000E; Wed, 26 Jun 2019 08:27:53 -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 7D6E08E0010; Wed, 26 Jun 2019 08:27:53 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by kanga.kvack.org (Postfix) with ESMTP id 3A1978E000E for ; Wed, 26 Jun 2019 08:27:53 -0400 (EDT) Received: by mail-pf1-f200.google.com with SMTP id a20so1656913pfn.19 for ; Wed, 26 Jun 2019 05:27:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=jJLN4PQyh+NiJMk0GjPmnktfOIwnazdB1WyLd+EwQBI=; b=cHRsNTG95wuUbFTesJeRIsbztTLVdL9Zo2p0fkyuDZ7XTWTxggROiigTRo1XE0Ogdq 4TglNGoRhMSxzgMYN+3jdTOOA8qShsmbarIBBfNvOWgA3b8xxMuK2Td6hq+PTgEib9W9 HbOVVzMyemwDEbOg0WcJIF9M1+/VnZE7oTYSFBmnyZ44b30UJAm++Po3UwO9zyYnr34n fxLUwUFIg10fMO9VvjHrZ8gruwXXOeydUxuuA6C3KmR9fAO8xNyZAKWC69C/i1yQd8Jf 3tk+E472/Mjdd/6KErZvo9aqSNUdubGc5om+3pVBLxrJb2xF2TyDrBkKzMACoIXMUk31 DT8A== X-Gm-Message-State: APjAAAVREEtDKYjo+ncy6hkF7c+sQglrZFto5GiUgCV532pXDXTQpohd ++J+yXPJ9eeo2iOit+41Xsp+jUEpg7EFC3KOpEZ6xq8E3e3ihLU2ZqEvJ51Dv7WoqPdgXdDCYr9 40rgWz84NO279YaxZSc/3E3yjfyVHHLqqkzsaVqZocfz9o7KTKbm+X3nW6AfVV9o= X-Received: by 2002:a17:902:704a:: with SMTP id h10mr5047083plt.337.1561552072883; Wed, 26 Jun 2019 05:27:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqy9cK5hq9DKp512ZBJ7IQqo5aRu4j+vvgLzVOWNmNow9t969gdD1ieXW0dWj6kob0xZvc9v X-Received: by 2002:a17:902:704a:: with SMTP id h10mr5047029plt.337.1561552072037; Wed, 26 Jun 2019 05:27:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552072; cv=none; d=google.com; s=arc-20160816; b=lQfE/fkVT/Q1WMyX6yrujrwbZWC6ctB3T7E9zGbBlozeN5SXuGL1Bo3JqwpLTmJ+6P tRUn8hzGxNXjeVVVWRcXQuzevNT7pgSI+5hV0aLT2K1x1vPsfwnd2C6AQ8tRXnz5esrc KqOyLY3Lizywa5U/GxbRNAWLnNMFSY3D3bGmocbKGW/aB70sTylIdKisE6CkcouXaQkT vrP3E3JhqRi0+bxfRwhNQxu3mj31nbez+aaDVFpDO8j9uyA8lH5Yd578/Rqps1pZdvn8 Egi7HXxBLp0sHkBE7jtVTT8j26hIZjuHsvt0iZCx6vMET/4XwDDjdMMJDeiz+j/2NSt6 bKJA== 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:dkim-signature; bh=jJLN4PQyh+NiJMk0GjPmnktfOIwnazdB1WyLd+EwQBI=; b=UMP/jdAV2TV1kdHYXKenMMLJB6LzvxMWVgvf5zOXXE63bCO80AU9kZ3VOkWWZWKJB+ 7whIx+I/sKzy9i8O1qZRh4b8FlQTILWbKuo4ElBP4OLU9uNwFaWdgKMuy05nFtlYgz4a mErN2hkdg7k4ZKgg1BJ6MkRWHB3Hx+Glt5gTN040AvPzl01fQCFE7E5wB64uj9lGgTsO R/JK/QBtLB3XZkpaQCzrl00BsOVmgyg/3texmY3B1dCPh1Sa6+O25EUkeTw7tkDemzXb 9OzEm0MyI7eZ6EbgoEot1qlMHWe2J6UqgdphPkqisCqP837dTMIMrk0s2X4xWWnGjBUJ 1R3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=AoPkQ1Ya; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id r204si9720826pgr.243.2019.06.26.05.27.51 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=AoPkQ1Ya; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=jJLN4PQyh+NiJMk0GjPmnktfOIwnazdB1WyLd+EwQBI=; b=AoPkQ1Ya+GVeIiAkwNrcOY3WXy sAhllTHY9EgHAAks54i/wuled6yq4/SYKn1NbwYo04wuJLkW52WmxaNmHyzJwOIaCd1GOvXiEtOFh ThHQsj3EyWPwSyeHernbRDYWFXPuc50UnHzB/Ux1T9z32tWTuakN3Zxrkm+83YlNJ6VlyDhXoVpV0 swGfUgPd+voS9n+3QCOoIUtQgxulHB6VDtuaVG04iQieR5ANlKAx/Sb/w9GgYjty+E8OOcprpShvj UdtX/dRdsOG235kDLoTkXHXo33rFg+7/1zOnF3ap3zxhTo4sRT+LAOqrSL+ve8dTmWYfKoZdPNkJ2 oG9lwaoA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71g-0001O4-Pe; Wed, 26 Jun 2019 12:27:49 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 08/25] memremap: validate the pagemap type passed to devm_memremap_pages Date: Wed, 26 Jun 2019 14:27:07 +0200 Message-Id: <20190626122724.13313-9-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Most pgmap types are only supported when certain config options are enabled. Check for a type that is valid for the current configuration before setting up the pagemap. For this the usage of the 0 type for device dax gets replaced with an explicit MEMORY_DEVICE_DEVDAX type. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- drivers/dax/device.c | 1 + include/linux/memremap.h | 8 ++++++++ kernel/memremap.c | 22 ++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 8465d12fecba..79014baa782d 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -468,6 +468,7 @@ int dev_dax_probe(struct device *dev) dev_dax->pgmap.ref = &dev_dax->ref; dev_dax->pgmap.kill = dev_dax_percpu_kill; dev_dax->pgmap.cleanup = dev_dax_percpu_exit; + dev_dax->pgmap.type = MEMORY_DEVICE_DEVDAX; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 995c62c5a48b..0c86f2c5ac9c 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -45,13 +45,21 @@ struct vmem_altmap { * wakeup is used to coordinate physical address space management (ex: * fs truncate/hole punch) vs pinned pages (ex: device dma). * + * MEMORY_DEVICE_DEVDAX: + * Host memory that has similar access semantics as System RAM i.e. DMA + * coherent and supports page pinning. In contrast to + * MEMORY_DEVICE_FS_DAX, this memory is access via a device-dax + * character device. + * * MEMORY_DEVICE_PCI_P2PDMA: * Device memory residing in a PCI BAR intended for use with Peer-to-Peer * transactions. */ enum memory_type { + /* 0 is reserved to catch uninitialized type fields */ MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_FS_DAX, + MEMORY_DEVICE_DEVDAX, MEMORY_DEVICE_PCI_P2PDMA, }; diff --git a/kernel/memremap.c b/kernel/memremap.c index 6e1970719dc2..abda62d1e5a3 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -157,6 +157,28 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; + switch (pgmap->type) { + case MEMORY_DEVICE_PRIVATE: + if (!IS_ENABLED(CONFIG_DEVICE_PRIVATE)) { + WARN(1, "Device private memory not supported\n"); + return ERR_PTR(-EINVAL); + } + break; + case MEMORY_DEVICE_FS_DAX: + if (!IS_ENABLED(CONFIG_ZONE_DEVICE) || + IS_ENABLED(CONFIG_FS_DAX_LIMITED)) { + WARN(1, "File system DAX not supported\n"); + return ERR_PTR(-EINVAL); + } + break; + case MEMORY_DEVICE_DEVDAX: + case MEMORY_DEVICE_PCI_P2PDMA: + break; + default: + WARN(1, "Invalid pgmap type %d\n", pgmap->type); + break; + } + if (!pgmap->ref || !pgmap->kill || !pgmap->cleanup) { WARN(1, "Missing reference count teardown definition\n"); return ERR_PTR(-EINVAL); From patchwork Wed Jun 26 12:27:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017671 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 44EC21398 for ; Wed, 26 Jun 2019 12:28:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 337E426222 for ; Wed, 26 Jun 2019 12:28:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2772C28399; Wed, 26 Jun 2019 12:28:12 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 310352864B for ; Wed, 26 Jun 2019 12:28:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4F48D8E0012; Wed, 26 Jun 2019 08:27:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 454A58E000E; Wed, 26 Jun 2019 08:27:57 -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 2A7B58E0012; Wed, 26 Jun 2019 08:27:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id DD1378E000E for ; Wed, 26 Jun 2019 08:27:56 -0400 (EDT) Received: by mail-pf1-f197.google.com with SMTP id y7so1681151pfy.9 for ; Wed, 26 Jun 2019 05:27:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=O7gxV+NMGR5OMAJyXLh5ldD7ILUOCB34MSOaQp729Ms=; b=tqETbhS3H4dSQu0vaotZXT0UcS8OvSxtX2hXV02cndyFTfCCJR7VNZS9HfYlFh4cxO O/RsyG3sw70q8x/FKw5zhCc9fRM+VGvk0Q2GV96kg27X7MZiG6VCVzAPpy5rDJDAGXbD A7nB2T1NcDWHxVS0T4JwEi7SECwX7sqr3UnKioaWplT+vuMdGKAFa5XS7MbNRFmMhZ1y c08Kaz8IaCN7f43fCEE4jp8APgYxfF4BLxaJ4C42K7O3Y+u6CHg0hiG3uQ1YpYLts7IB LbZLPpYCouWPoPE+uiyXDv7qd4oWAJ4ATqDXW1q+aOzBocShVc6qKb1J4U0WQnyp58wF mSng== X-Gm-Message-State: APjAAAXUnMGxU6M8whujNnr1lhtXSl/MPRnZZ1ycHjpB1Ct10+iWm0F+ hm59T/qIFS+QYYImI0AvZy7bMMZtmu5exlTiifyKL0IVRoANErmv7RmoCKOhm23WSuq9XvvIPQR UA6UTHXihoKH/17+M8zQDjym7fmyP49XKp3/yBj1NX452l529Him/RU/rb3PtBp8= X-Received: by 2002:a17:902:a60d:: with SMTP id u13mr5284156plq.144.1561552076541; Wed, 26 Jun 2019 05:27:56 -0700 (PDT) X-Google-Smtp-Source: APXvYqx2ORsluZjYXJEzviowles2tlgMwx0w5Phke5JMoe0iDAfs9bIl7BmEGQo83sFtoSPpOHNX X-Received: by 2002:a17:902:a60d:: with SMTP id u13mr5283996plq.144.1561552074583; Wed, 26 Jun 2019 05:27:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552074; cv=none; d=google.com; s=arc-20160816; b=xw29p4Lk5yPWKxhyjMqhsc6fRSDEabOgEAwdq1L4oH5V+sdXS7pse63MmpdtxxwBix twvqJkCf2qtecZqBiUfGjAbyI+XsqdkbrF8fBeDoOxJiHy8WZQ2liTk4f67H4IPE5nx8 RlSZjuAVbhIcKBsXX0JJm27Cmz5vMN7mxdg40CTVCXRViiW4LjNB06rl79u1xrSshoQn SAns7Ncn/3FPFuydKJDeS2JvPNypTUUnP9AKVp9pxgwlTMOCbbYIJsLIaXA/zY5Izj50 FB4WivXoTlrMWfq7TiuDM7sshqZi12lMxicgSAeOtpMJuuRjVRtkBFaovi+yzb1ZQa93 eLrQ== 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:dkim-signature; bh=O7gxV+NMGR5OMAJyXLh5ldD7ILUOCB34MSOaQp729Ms=; b=tnOp7HTx5u5eE6i7+SD/PJCahCJX6llBGq5pSssWIQzPTew5WyLaLvWv7QOEdzSBcQ D92OXF5ZDu0FEz0yW+qJCQ0a2FabKtcRQgAg1ipVhcdER2FXDrml4rmwphcVcdiLV42W BdGQ1yppg8tE+XFj1R4WT0G59M2N4nC6ZOH8IBQPt4oJj+heQgttT58acSpj8U+KHblM BY+NYRIgkyiDzUmhIivH1w87ID9nR1K329nBu9RSTqJXs90zga01kC/ewKhgNMetdpp/ 4jjlT6xP85nEh+Y6UORguF6p01D6ehaDlCxnfe+41NZCBUTFthA3d9JwLBvDGQhWk8eK o39w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="N9Fj6S/h"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id 33si3256592pli.144.2019.06.26.05.27.54 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="N9Fj6S/h"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=O7gxV+NMGR5OMAJyXLh5ldD7ILUOCB34MSOaQp729Ms=; b=N9Fj6S/hfmh+xqoXQ2sKM4yEgo KQKDPRUD2DMRRWWh3kRReAFyWfPFSSCJD6pLgCupss5O0nGrMxNWM3kzDH1P+hOfn+gAZX7J6UK+c 6WwwHY7valGqsYL6wEmFG+GsB569g46DYmfmqUDJPq0gQm9wOy2VnCdKDq1ubjf4XkvAokS27pEbF GsZTXPff7fToySN3h4SyuiHyicp700RDTVheBiSVxnp37LoY25H+f8KJI46YJFPS8ih6ENjtR63k+ 7OM4tWWuWvow4DYqQHA5GNzwoGcukTKJlGK0Amn0AyBR8XC85TKtuK7IqUACVduy5OTBwcvyC38Y7 p+sG9z4g==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71j-0001Os-5v; Wed, 26 Jun 2019 12:27:51 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Logan Gunthorpe Subject: [PATCH 09/25] memremap: move dev_pagemap callbacks into a separate structure Date: Wed, 26 Jun 2019 14:27:08 +0200 Message-Id: <20190626122724.13313-10-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 dev_pagemap is a growing too many callbacks. Move them into a separate ops structure so that they are not duplicated for multiple instances, and an attacker can't easily overwrite them. Signed-off-by: Christoph Hellwig Reviewed-by: Logan Gunthorpe Reviewed-by: Jason Gunthorpe --- drivers/dax/device.c | 11 ++++++---- drivers/dax/pmem/core.c | 2 +- drivers/nvdimm/pmem.c | 19 +++++++++------- drivers/pci/p2pdma.c | 8 +++++-- include/linux/memremap.h | 36 +++++++++++++++++-------------- kernel/memremap.c | 18 ++++++++-------- mm/hmm.c | 10 ++++++--- tools/testing/nvdimm/test/iomap.c | 7 +++--- 8 files changed, 65 insertions(+), 46 deletions(-) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 79014baa782d..f390083a64d7 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -36,9 +36,8 @@ static void dev_dax_percpu_exit(struct percpu_ref *ref) percpu_ref_exit(ref); } -static void dev_dax_percpu_kill(struct percpu_ref *data) +static void dev_dax_percpu_kill(struct percpu_ref *ref) { - struct percpu_ref *ref = data; struct dev_dax *dev_dax = ref_to_dev_dax(ref); dev_dbg(&dev_dax->dev, "%s\n", __func__); @@ -442,6 +441,11 @@ static void dev_dax_kill(void *dev_dax) kill_dev_dax(dev_dax); } +static const struct dev_pagemap_ops dev_dax_pagemap_ops = { + .kill = dev_dax_percpu_kill, + .cleanup = dev_dax_percpu_exit, +}; + int dev_dax_probe(struct device *dev) { struct dev_dax *dev_dax = to_dev_dax(dev); @@ -466,9 +470,8 @@ int dev_dax_probe(struct device *dev) return rc; dev_dax->pgmap.ref = &dev_dax->ref; - dev_dax->pgmap.kill = dev_dax_percpu_kill; - dev_dax->pgmap.cleanup = dev_dax_percpu_exit; dev_dax->pgmap.type = MEMORY_DEVICE_DEVDAX; + dev_dax->pgmap.ops = &dev_dax_pagemap_ops; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); diff --git a/drivers/dax/pmem/core.c b/drivers/dax/pmem/core.c index f9f51786d556..6eb6dfdf19bf 100644 --- a/drivers/dax/pmem/core.c +++ b/drivers/dax/pmem/core.c @@ -16,7 +16,7 @@ struct dev_dax *__dax_pmem_probe(struct device *dev, enum dev_dax_subsys subsys) struct dev_dax *dev_dax; struct nd_namespace_io *nsio; struct dax_region *dax_region; - struct dev_pagemap pgmap = { 0 }; + struct dev_pagemap pgmap = { }; struct nd_namespace_common *ndns; struct nd_dax *nd_dax = to_nd_dax(dev); struct nd_pfn *nd_pfn = &nd_dax->nd_pfn; diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 24d7fe7c74ed..c2449af2b388 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -303,7 +303,7 @@ static const struct attribute_group *pmem_attribute_groups[] = { NULL, }; -static void __pmem_release_queue(struct percpu_ref *ref) +static void pmem_pagemap_cleanup(struct percpu_ref *ref) { struct request_queue *q; @@ -313,10 +313,10 @@ static void __pmem_release_queue(struct percpu_ref *ref) static void pmem_release_queue(void *ref) { - __pmem_release_queue(ref); + pmem_pagemap_cleanup(ref); } -static void pmem_freeze_queue(struct percpu_ref *ref) +static void pmem_pagemap_kill(struct percpu_ref *ref) { struct request_queue *q; @@ -339,19 +339,24 @@ static void pmem_release_pgmap_ops(void *__pgmap) dev_pagemap_put_ops(); } -static void fsdax_pagefree(struct page *page, void *data) +static void pmem_pagemap_page_free(struct page *page, void *data) { wake_up_var(&page->_refcount); } +static const struct dev_pagemap_ops fsdax_pagemap_ops = { + .page_free = pmem_pagemap_page_free, + .kill = pmem_pagemap_kill, + .cleanup = pmem_pagemap_cleanup, +}; + static int setup_pagemap_fsdax(struct device *dev, struct dev_pagemap *pgmap) { dev_pagemap_get_ops(); if (devm_add_action_or_reset(dev, pmem_release_pgmap_ops, pgmap)) return -ENOMEM; pgmap->type = MEMORY_DEVICE_FS_DAX; - pgmap->page_free = fsdax_pagefree; - + pgmap->ops = &fsdax_pagemap_ops; return 0; } @@ -409,8 +414,6 @@ static int pmem_attach_disk(struct device *dev, pmem->pfn_flags = PFN_DEV; pmem->pgmap.ref = &q->q_usage_counter; - pmem->pgmap.kill = pmem_freeze_queue; - pmem->pgmap.cleanup = __pmem_release_queue; if (is_nd_pfn(dev)) { if (setup_pagemap_fsdax(dev, &pmem->pgmap)) return -ENOMEM; diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index a98126ad9c3a..13f0380a8c7f 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -152,6 +152,11 @@ static int pci_p2pdma_setup(struct pci_dev *pdev) return error; } +static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { + .kill = pci_p2pdma_percpu_kill, + .cleanup = pci_p2pdma_percpu_cleanup, +}; + /** * pci_p2pdma_add_resource - add memory for use as p2p memory * @pdev: the device to add the memory to @@ -207,8 +212,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, pgmap->type = MEMORY_DEVICE_PCI_P2PDMA; pgmap->pci_p2pdma_bus_offset = pci_bus_address(pdev, bar) - pci_resource_start(pdev, bar); - pgmap->kill = pci_p2pdma_percpu_kill; - pgmap->cleanup = pci_p2pdma_percpu_cleanup; + pgmap->ops = &pci_p2pdma_pagemap_ops; addr = devm_memremap_pages(&pdev->dev, pgmap); if (IS_ERR(addr)) { diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 0c86f2c5ac9c..919755f48c7e 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -63,41 +63,45 @@ enum memory_type { MEMORY_DEVICE_PCI_P2PDMA, }; -/* - * Additional notes about MEMORY_DEVICE_PRIVATE may be found in - * include/linux/hmm.h and Documentation/vm/hmm.rst. There is also a brief - * explanation in include/linux/memory_hotplug.h. - * - * The page_free() callback is called once the page refcount reaches 1 - * (ZONE_DEVICE pages never reach 0 refcount unless there is a refcount bug. - * This allows the device driver to implement its own memory management.) - */ -typedef void (*dev_page_free_t)(struct page *page, void *data); +struct dev_pagemap_ops { + /* + * Called once the page refcount reaches 1. (ZONE_DEVICE pages never + * reach 0 refcount unless there is a refcount bug. This allows the + * device driver to implement its own memory management.) + */ + void (*page_free)(struct page *page, void *data); + + /* + * Transition the refcount in struct dev_pagemap to the dead state. + */ + void (*kill)(struct percpu_ref *ref); + + /* + * Wait for refcount in struct dev_pagemap to be idle and reap it. + */ + void (*cleanup)(struct percpu_ref *ref); +}; /** * struct dev_pagemap - metadata for ZONE_DEVICE mappings - * @page_free: free page callback when page refcount reaches 1 * @altmap: pre-allocated/reserved memory for vmemmap allocations * @res: physical address range covered by @ref * @ref: reference count that pins the devm_memremap_pages() mapping - * @kill: callback to transition @ref to the dead state - * @cleanup: callback to wait for @ref to be idle and reap it * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h + * @ops: method table */ struct dev_pagemap { - dev_page_free_t page_free; struct vmem_altmap altmap; bool altmap_valid; struct resource res; struct percpu_ref *ref; - void (*kill)(struct percpu_ref *ref); - void (*cleanup)(struct percpu_ref *ref); struct device *dev; void *data; enum memory_type type; u64 pci_p2pdma_bus_offset; + const struct dev_pagemap_ops *ops; }; #ifdef CONFIG_ZONE_DEVICE diff --git a/kernel/memremap.c b/kernel/memremap.c index abda62d1e5a3..0824237ef979 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -92,10 +92,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->kill(pgmap->ref); + pgmap->ops->kill(pgmap->ref); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->cleanup(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -128,8 +128,8 @@ static void devm_memremap_pages_release(void *data) * @pgmap: pointer to a struct dev_pagemap * * Notes: - * 1/ At a minimum the res, ref and type members of @pgmap must be initialized - * by the caller before passing it to this function + * 1/ At a minimum the res, ref and type and ops members of @pgmap must be + * initialized by the caller before passing it to this function * * 2/ The altmap field may optionally be initialized, in which case altmap_valid * must be set to true @@ -179,7 +179,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) break; } - if (!pgmap->ref || !pgmap->kill || !pgmap->cleanup) { + if (!pgmap->ref || !pgmap->ops || !pgmap->ops->kill || + !pgmap->ops->cleanup) { WARN(1, "Missing reference count teardown definition\n"); return ERR_PTR(-EINVAL); } @@ -293,9 +294,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->kill(pgmap->ref); - pgmap->cleanup(pgmap->ref); - + pgmap->ops->kill(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); @@ -388,7 +388,7 @@ void __put_devmap_managed_page(struct page *page) mem_cgroup_uncharge(page); - page->pgmap->page_free(page, page->pgmap->data); + page->pgmap->ops->page_free(page, page->pgmap->data); } else if (!count) __put_page(page); } diff --git a/mm/hmm.c b/mm/hmm.c index 48574f8485bb..583a02a16872 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1384,6 +1384,12 @@ static void hmm_devmem_free(struct page *page, void *data) devmem->ops->free(devmem, page); } +static const struct dev_pagemap_ops hmm_pagemap_ops = { + .page_free = hmm_devmem_free, + .kill = hmm_devmem_ref_kill, + .cleanup = hmm_devmem_ref_exit, +}; + /* * hmm_devmem_add() - hotplug ZONE_DEVICE memory for device memory * @@ -1438,12 +1444,10 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; - devmem->pagemap.page_free = hmm_devmem_free; + devmem->pagemap.ops = &hmm_pagemap_ops; devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; devmem->pagemap.data = devmem; - devmem->pagemap.kill = hmm_devmem_ref_kill; - devmem->pagemap.cleanup = hmm_devmem_ref_exit; result = devm_memremap_pages(devmem->device, &devmem->pagemap); if (IS_ERR(result)) diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 076df22e4bda..cf3f064a697d 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -100,9 +100,10 @@ static void nfit_test_kill(void *_pgmap) { struct dev_pagemap *pgmap = _pgmap; - WARN_ON(!pgmap || !pgmap->ref || !pgmap->kill || !pgmap->cleanup); - pgmap->kill(pgmap->ref); - pgmap->cleanup(pgmap->ref); + WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops || !pgmap->ops->kill || + !pgmap->ops->cleanup); + pgmap->ops->kill(pgmap->ref); + pgmap->ops->cleanup(pgmap->ref); } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) From patchwork Wed Jun 26 12:27:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017679 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 09ED31580 for ; Wed, 26 Jun 2019 12:28:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EBC0C287AA for ; Wed, 26 Jun 2019 12:28:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E05F428606; Wed, 26 Jun 2019 12:28: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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 31195286AD for ; Wed, 26 Jun 2019 12:28:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 650308E0013; Wed, 26 Jun 2019 08:27:59 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5D8878E000E; Wed, 26 Jun 2019 08:27:59 -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 479438E0013; Wed, 26 Jun 2019 08:27:59 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by kanga.kvack.org (Postfix) with ESMTP id 06B458E000E for ; Wed, 26 Jun 2019 08:27:59 -0400 (EDT) Received: by mail-pl1-f197.google.com with SMTP id 91so1361798pla.7 for ; Wed, 26 Jun 2019 05:27:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=rtJGcfjUDQlFpvWbHrrX6xK7ULlnRWoqdWy/YtJ84s0=; b=f8R2IhTFLMdk8RTqTJVd0NTDxzuorWuBLY5RO+7soA7xg+uTFDxmPh1cKLM1QRorcC 50AVQ8rD5xjIY+xT8ioY3IOCNTWEAQtZT0nDRIQjLRd4HNrhdqfGp8+7x6FNYk0d1udN QiKFwi+i3PGz8TD+4vuReQ34bmTwZvz3w9Szzo9umxUDxBIgCM3MlRZUAWwNH0ttaYCS Ezd3CECQbKrQT18hANiKFa+LIQLdFb+K2nwzdpyZmvJ/u/uDl8NVuLVPuX0aZ/9Ie1I3 CvusVucwV634GjLykJJedG1mDXRqTS2rQZfyG/BGpvoC++eFjtuyAQoHRkt2EZ1AhsYG UaZQ== X-Gm-Message-State: APjAAAVwjaIwmgCXwITTjBGpSYRjv5waXEAvGhqmMENCCLRNkwnYJfAm Kn44iPAlL9iqFwIYz0FYo6sESbSA6ZHnxM0sRgxPxrFpF8RJ31OU61p1bnjSohASMOCXVNJaPn0 lWfFJlDdpcgBXme0HQXZzYPWGJWOaM5SntKezPuuaFfPHE/csuzYd66vGe/bVE3I= X-Received: by 2002:a63:f959:: with SMTP id q25mr2713819pgk.357.1561552078561; Wed, 26 Jun 2019 05:27:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqzmCZ/l5zE0i3okNmCloSjh2okVvCGBtz12XlLcAXStA94i2N11+Z2AMd83LJFLBuwYtpNt X-Received: by 2002:a63:f959:: with SMTP id q25mr2713720pgk.357.1561552077113; Wed, 26 Jun 2019 05:27:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552077; cv=none; d=google.com; s=arc-20160816; b=pgCdWJ8TfosDxs8sdYmOicq7tCubleOpRSWBFJHkEYyHlIhSC9qyL/YCHW5hFaYr55 ZkDCI7zAcGCXMN6SSkE1lKdGThOyO3pwuGyjuq04hXf3A/7PVREtRLO1TT9Udt1LUTq6 ilGvb9X6K1aqcUOwVjd19/7bx40MCaiCC3yj/0myExA7vgw5dAtMy9wq8KtH8uHjFo1/ Jb7/Wv5lpriSiqenDV8T4NsxAo/nq6F1DBt3VvC61YeZmMXhnknmqigFARYRNbdDLwa8 7WH2hK4mFUfeJLqnXk6pSsO/6FGEiL+lMwRtw58A4R3j3tgE3d4LIYsP3/wdL69ZBqvU 6vbg== 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:dkim-signature; bh=rtJGcfjUDQlFpvWbHrrX6xK7ULlnRWoqdWy/YtJ84s0=; b=0hG5luUV+RPBNkYeiCmeY87+BIYAN9EpDkISNzsAqkNNNmtOe87/jwOktYUU99Sroq f+d9/olYPHJTuSrqTytq3zzFx0eqoQpJNQxsjkM+5XhjJ/nT2R6DwbxjV6kjYnNARP9C QaaMkzIggtqHJiO8ZqtRJCfo5OMLbgsKZ5JPACgsg3tJXvP/6YvuveGvdh8Us778r8R+ UGzWFnYWXvndGFNaWfXy3fyQyCDTxxi01cRojjWSbV8udYUyvizaJGGmYuQGPT3ytGA/ w18MN9FhmAzHGNFF1QUMt4QVGXrxUKZJWNHqkn3XaKIcjTfppVboWKYV+0l9GQcTxUYq BRZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JsU0PRWo; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id 73si15858917pga.407.2019.06.26.05.27.56 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=JsU0PRWo; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=rtJGcfjUDQlFpvWbHrrX6xK7ULlnRWoqdWy/YtJ84s0=; b=JsU0PRWoaqGs3UQyylIEwmDtdn 2TemCnUZ66h0rFK9ZysafSXF03WYA9z/emHgo8b6CyUuAvtIgGodgEUSFXvd9srXK0N3Gyr7ROlBx bErGCjaOj4Iaq3X2zUgHeTzRcB4pyhFpXsGnR2bEuY/hlS7Wf4MBYVmBc4Zm4/buBbNnp2KSY3tHn 3VJC6WmHgvAfVbIM5g4LXxoS7dlACia8ntMhn1fWpXgN9XRCge7/U4JYyrVm7KLDaOOMXHhxOOD57 d1Js7Bb4F9uAiJydcnGC/XehZS0getHOL7CQApbXDT6rGYa2aa7wN10/VDWJV4wj7dts0e6GmZF1k RBfdcEFw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71l-0001QQ-QT; Wed, 26 Jun 2019 12:27:54 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Logan Gunthorpe Subject: [PATCH 10/25] memremap: pass a struct dev_pagemap to ->kill and ->cleanup Date: Wed, 26 Jun 2019 14:27:09 +0200 Message-Id: <20190626122724.13313-11-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Passing the actual typed structure leads to more understandable code vs just passing the ref member. Reported-by: Logan Gunthorpe Signed-off-by: Christoph Hellwig Reviewed-by: Logan Gunthorpe Reviewed-by: Jason Gunthorpe Reviewed-by: Dan Williams --- drivers/dax/device.c | 12 ++++++------ drivers/nvdimm/pmem.c | 18 +++++++++--------- drivers/pci/p2pdma.c | 9 +++++---- include/linux/memremap.h | 4 ++-- kernel/memremap.c | 8 ++++---- mm/hmm.c | 10 +++++----- tools/testing/nvdimm/test/iomap.c | 4 ++-- 7 files changed, 33 insertions(+), 32 deletions(-) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index f390083a64d7..b5257038c188 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -27,21 +27,21 @@ static void dev_dax_percpu_release(struct percpu_ref *ref) complete(&dev_dax->cmp); } -static void dev_dax_percpu_exit(struct percpu_ref *ref) +static void dev_dax_percpu_exit(struct dev_pagemap *pgmap) { - struct dev_dax *dev_dax = ref_to_dev_dax(ref); + struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); dev_dbg(&dev_dax->dev, "%s\n", __func__); wait_for_completion(&dev_dax->cmp); - percpu_ref_exit(ref); + percpu_ref_exit(pgmap->ref); } -static void dev_dax_percpu_kill(struct percpu_ref *ref) +static void dev_dax_percpu_kill(struct dev_pagemap *pgmap) { - struct dev_dax *dev_dax = ref_to_dev_dax(ref); + struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); dev_dbg(&dev_dax->dev, "%s\n", __func__); - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index c2449af2b388..9dac48359353 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -303,24 +303,24 @@ static const struct attribute_group *pmem_attribute_groups[] = { NULL, }; -static void pmem_pagemap_cleanup(struct percpu_ref *ref) +static void pmem_pagemap_cleanup(struct dev_pagemap *pgmap) { - struct request_queue *q; + struct request_queue *q = + container_of(pgmap->ref, struct request_queue, q_usage_counter); - q = container_of(ref, typeof(*q), q_usage_counter); blk_cleanup_queue(q); } -static void pmem_release_queue(void *ref) +static void pmem_release_queue(void *pgmap) { - pmem_pagemap_cleanup(ref); + pmem_pagemap_cleanup(pgmap); } -static void pmem_pagemap_kill(struct percpu_ref *ref) +static void pmem_pagemap_kill(struct dev_pagemap *pgmap) { - struct request_queue *q; + struct request_queue *q = + container_of(pgmap->ref, struct request_queue, q_usage_counter); - q = container_of(ref, typeof(*q), q_usage_counter); blk_freeze_queue_start(q); } @@ -435,7 +435,7 @@ static int pmem_attach_disk(struct device *dev, memcpy(&bb_res, &pmem->pgmap.res, sizeof(bb_res)); } else { if (devm_add_action_or_reset(dev, pmem_release_queue, - &q->q_usage_counter)) + &pmem->pgmap)) return -ENOMEM; addr = devm_memremap(dev, pmem->phys_addr, pmem->size, ARCH_MEMREMAP_PMEM); diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index 13f0380a8c7f..ebd8ce3bba2e 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -90,14 +90,15 @@ static void pci_p2pdma_percpu_release(struct percpu_ref *ref) complete(&p2p_pgmap->ref_done); } -static void pci_p2pdma_percpu_kill(struct percpu_ref *ref) +static void pci_p2pdma_percpu_kill(struct dev_pagemap *pgmap) { - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } -static void pci_p2pdma_percpu_cleanup(struct percpu_ref *ref) +static void pci_p2pdma_percpu_cleanup(struct dev_pagemap *pgmap) { - struct p2pdma_pagemap *p2p_pgmap = to_p2p_pgmap(ref); + struct p2pdma_pagemap *p2p_pgmap = + container_of(pgmap, struct p2pdma_pagemap, pgmap); wait_for_completion(&p2p_pgmap->ref_done); percpu_ref_exit(&p2p_pgmap->ref); diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 919755f48c7e..b8666a0d8665 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -74,12 +74,12 @@ struct dev_pagemap_ops { /* * Transition the refcount in struct dev_pagemap to the dead state. */ - void (*kill)(struct percpu_ref *ref); + void (*kill)(struct dev_pagemap *pgmap); /* * Wait for refcount in struct dev_pagemap to be idle and reap it. */ - void (*cleanup)(struct percpu_ref *ref); + void (*cleanup)(struct dev_pagemap *pgmap); }; /** diff --git a/kernel/memremap.c b/kernel/memremap.c index 0824237ef979..00c1ceb60c19 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -92,10 +92,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->ops->kill(pgmap->ref); + pgmap->ops->kill(pgmap); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->cleanup(pgmap); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -294,8 +294,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->ops->kill(pgmap->ref); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->kill(pgmap); + pgmap->ops->cleanup(pgmap); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); diff --git a/mm/hmm.c b/mm/hmm.c index 583a02a16872..987793fba923 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1352,18 +1352,18 @@ static void hmm_devmem_ref_release(struct percpu_ref *ref) complete(&devmem->completion); } -static void hmm_devmem_ref_exit(struct percpu_ref *ref) +static void hmm_devmem_ref_exit(struct dev_pagemap *pgmap) { struct hmm_devmem *devmem; - devmem = container_of(ref, struct hmm_devmem, ref); + devmem = container_of(pgmap, struct hmm_devmem, pagemap); wait_for_completion(&devmem->completion); - percpu_ref_exit(ref); + percpu_ref_exit(pgmap->ref); } -static void hmm_devmem_ref_kill(struct percpu_ref *ref) +static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) { - percpu_ref_kill(ref); + percpu_ref_kill(pgmap->ref); } static vm_fault_t hmm_devmem_fault(struct vm_area_struct *vma, diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index cf3f064a697d..82f901569e06 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -102,8 +102,8 @@ static void nfit_test_kill(void *_pgmap) WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup); - pgmap->ops->kill(pgmap->ref); - pgmap->ops->cleanup(pgmap->ref); + pgmap->ops->kill(pgmap); + pgmap->ops->cleanup(pgmap); } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) From patchwork Wed Jun 26 12:27:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017687 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 9DB331580 for ; Wed, 26 Jun 2019 12:28:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C836281D2 for ; Wed, 26 Jun 2019 12:28:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 81051287B7; Wed, 26 Jun 2019 12:28:19 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 D1AEB281D2 for ; Wed, 26 Jun 2019 12:28:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9362D8E0014; Wed, 26 Jun 2019 08:28:02 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 897788E000E; Wed, 26 Jun 2019 08:28:02 -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 6C83E8E0014; Wed, 26 Jun 2019 08:28:02 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id C62BC8E000E for ; Wed, 26 Jun 2019 08:28:01 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id z10so1521779pgf.15 for ; Wed, 26 Jun 2019 05:28:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=9nJ/dQhFjQO4BwxUpP2mzPbE9YtD10wJjf4r3VQFN1A=; b=Wvj1Ytunxccu995y1AIZH/PMQ2BkkrdwYllkqfq7fKVzeuBZHdFtM1Y08VIZxZqy13 VkUSouM5/0etb+rRARYiHt0vZ7qYC41rj2HT2+CYEOdYXE7pgSVStVbFIAudXrzspjq5 pKrteESq74LN6JIWvm8rxQq4BhtEy5iz+hfnF5rfczJmOdWo5Tbsyv/ys0lP0lPPh1q/ TqO+K4cID13JbZBVa5qkXT4WCaJo5GH3SZaqAxQo66niPDMWRT3PtZOfa32xf+FSeU58 4zHGlQCoR2WiH/9y2EK9tZqMKwErXdLnaxDOEqkrqlHkWi0vHjYJNex/ETA7CW5VYVu4 giPA== X-Gm-Message-State: APjAAAW1K1KsNVpVur9Kb+QQPhYs5b6h3lhtRNfrlp3ps9MQjSyWBcJx 6MnI0ZVUxEpe++hHlHTw7VtS4BRdjSPWS+ZtsNBsgTuEg8yFc87jrR+K4hB1ypnFkROnzi3AGNM 6PL8w+KcrCX075lxmP2qc2Ix0Fd7Yby5xhOuctWJL/mSZMwcwDnH61RNvR1u8Q6k= X-Received: by 2002:a65:4009:: with SMTP id f9mr2758750pgp.110.1561552081201; Wed, 26 Jun 2019 05:28:01 -0700 (PDT) X-Google-Smtp-Source: APXvYqxhZZ7qtfZIU9rmfj61ciecnYefYX+HGD6DgGVGXwCo6n7Swxut2f0BXdP1iBMRXFMH6Paj X-Received: by 2002:a65:4009:: with SMTP id f9mr2758652pgp.110.1561552079723; Wed, 26 Jun 2019 05:27:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552079; cv=none; d=google.com; s=arc-20160816; b=dq2pnBtatNuv320GETDMF7WTOjBxIvBpjBXX5MHWc6euxPFx2zhVEsw0GGsX7c0an3 JjhNOw1JQoqu4scvsiYp0IN1IQXzuglgp0EF888OInAXyV+rhKn0wWZ3hzTaXvjOEQSK OEU0NNWYDbmC9eHOGDZh+20d709YyUnTwgl1VxF7eTd7aFY17kAe5Appg2ccMz89u2vk G4cxfXh9zNiQT+i9cR43juAapyHYqNpPLFfbPuGNEw5Uv6Ij6VGXBW3qtd864Y98Pazu NPUyDyk5u+E/NAgsJLeywDkONilqPQOLKG3ak15SJft23I12DqmLGsiPNtL3LHBzrknG puEA== 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:dkim-signature; bh=9nJ/dQhFjQO4BwxUpP2mzPbE9YtD10wJjf4r3VQFN1A=; b=tgBO/SvuIfmh2WvkbaUief6Y7Duw7oM1sM5OddRw9qMKmO4jhblUxzjZ3ZRZGripIw hRLgQxkg40Nnf3Z0M2Lo2OeOIV3XOQ/Jt+JbDoHic7j2aEis8BOv38PozzTGPWiqSy+e Mt9eAQP2gj/qguTETF2IzgSAth3IvtMaMTD+KSsrb5qZwRNExUUdACT5BKPeKGECcyzN th9xH8SUHgbj+0icgshQuKv0L/7n0tR3m53IVXyuy9kb+nZMD3/ordQhNYGK9rnTa97Z d0AAWXEGb76cqd/WIqgnorolwqWVek06fSdN1Bqm35J4ZUElb5ly+W1xxXqsMcWqHZp+ bWXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nXboAeYl; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id g32si2007853pje.38.2019.06.26.05.27.59 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:27:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=nXboAeYl; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=9nJ/dQhFjQO4BwxUpP2mzPbE9YtD10wJjf4r3VQFN1A=; b=nXboAeYlCcF/zPpOPlIZvUmrzJ BTlirQHtzX2iEb6BKwv8oq08WeXcTesdjieof8gl0uUgUWf5wEdBkuVebpF9RqaOiPevnhYkIEcS/ pjaCaLjEHzt59FXX1qkUyQpExIuKbtyBv5IFulvM7w8K8rC84x4zezBXBYaW46dojoBmGnMVwjqUm nF8nfnPRrptXmw0i78mJw+0WcV0vVd9wCisBHxjXgkqM0ANgfmKVYJu2eVwWDcB7vrAgI1scU5arC 9u78bHoi+wBhSxalLJDEDSdhTQj5G8zS5OswD85z75fNDbwF+X49HHWs6BF57YsOZsFjyLfoem3ay xQHtzn2Q==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71o-0001RJ-D7; Wed, 26 Jun 2019 12:27:56 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 11/25] memremap: lift the devmap_enable manipulation into devm_memremap_pages Date: Wed, 26 Jun 2019 14:27:10 +0200 Message-Id: <20190626122724.13313-12-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Just check if there is a ->page_free operation set and take care of the static key enable, as well as the put using device managed resources. Also check that a ->page_free is provided for the pgmaps types that require it, and check for a valid type as well while we are at it. Note that this also fixes the fact that hmm never called dev_pagemap_put_ops and thus would leave the slow path enabled forever, even after a device driver unload or disable. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- drivers/nvdimm/pmem.c | 23 +++-------------- include/linux/mm.h | 10 -------- kernel/memremap.c | 59 +++++++++++++++++++++++++++---------------- mm/hmm.c | 2 -- 4 files changed, 41 insertions(+), 53 deletions(-) diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 9dac48359353..48767171a4df 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -334,11 +334,6 @@ static void pmem_release_disk(void *__pmem) put_disk(pmem->disk); } -static void pmem_release_pgmap_ops(void *__pgmap) -{ - dev_pagemap_put_ops(); -} - static void pmem_pagemap_page_free(struct page *page, void *data) { wake_up_var(&page->_refcount); @@ -350,16 +345,6 @@ static const struct dev_pagemap_ops fsdax_pagemap_ops = { .cleanup = pmem_pagemap_cleanup, }; -static int setup_pagemap_fsdax(struct device *dev, struct dev_pagemap *pgmap) -{ - dev_pagemap_get_ops(); - if (devm_add_action_or_reset(dev, pmem_release_pgmap_ops, pgmap)) - return -ENOMEM; - pgmap->type = MEMORY_DEVICE_FS_DAX; - pgmap->ops = &fsdax_pagemap_ops; - return 0; -} - static int pmem_attach_disk(struct device *dev, struct nd_namespace_common *ndns) { @@ -415,8 +400,8 @@ static int pmem_attach_disk(struct device *dev, pmem->pfn_flags = PFN_DEV; pmem->pgmap.ref = &q->q_usage_counter; if (is_nd_pfn(dev)) { - if (setup_pagemap_fsdax(dev, &pmem->pgmap)) - return -ENOMEM; + pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; + pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); pfn_sb = nd_pfn->pfn_sb; pmem->data_offset = le64_to_cpu(pfn_sb->dataoff); @@ -428,8 +413,8 @@ static int pmem_attach_disk(struct device *dev, } else if (pmem_should_map_pages(dev)) { memcpy(&pmem->pgmap.res, &nsio->res, sizeof(pmem->pgmap.res)); pmem->pgmap.altmap_valid = false; - if (setup_pagemap_fsdax(dev, &pmem->pgmap)) - return -ENOMEM; + pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; + pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); pmem->pfn_flags |= PFN_MAP; memcpy(&bb_res, &pmem->pgmap.res, sizeof(bb_res)); diff --git a/include/linux/mm.h b/include/linux/mm.h index 6e4b9be08b13..aa3970291cdf 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -932,8 +932,6 @@ static inline bool is_zone_device_page(const struct page *page) #endif #ifdef CONFIG_DEV_PAGEMAP_OPS -void dev_pagemap_get_ops(void); -void dev_pagemap_put_ops(void); void __put_devmap_managed_page(struct page *page); DECLARE_STATIC_KEY_FALSE(devmap_managed_key); static inline bool put_devmap_managed_page(struct page *page) @@ -973,14 +971,6 @@ static inline bool is_pci_p2pdma_page(const struct page *page) #endif /* CONFIG_PCI_P2PDMA */ #else /* CONFIG_DEV_PAGEMAP_OPS */ -static inline void dev_pagemap_get_ops(void) -{ -} - -static inline void dev_pagemap_put_ops(void) -{ -} - static inline bool put_devmap_managed_page(struct page *page) { return false; diff --git a/kernel/memremap.c b/kernel/memremap.c index 00c1ceb60c19..3219a4c91d07 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -17,6 +17,35 @@ static DEFINE_XARRAY(pgmap_array); #define SECTION_MASK ~((1UL << PA_SECTION_SHIFT) - 1) #define SECTION_SIZE (1UL << PA_SECTION_SHIFT) +#ifdef CONFIG_DEV_PAGEMAP_OPS +DEFINE_STATIC_KEY_FALSE(devmap_managed_key); +EXPORT_SYMBOL(devmap_managed_key); +static atomic_t devmap_managed_enable; + +static void devmap_managed_enable_put(void *data) +{ + if (atomic_dec_and_test(&devmap_managed_enable)) + static_branch_disable(&devmap_managed_key); +} + +static int devmap_managed_enable_get(struct device *dev, struct dev_pagemap *pgmap) +{ + if (!pgmap->ops->page_free) { + WARN(1, "Missing page_free method\n"); + return -EINVAL; + } + + if (atomic_inc_return(&devmap_managed_enable) == 1) + static_branch_enable(&devmap_managed_key); + return devm_add_action_or_reset(dev, devmap_managed_enable_put, NULL); +} +#else +static int devmap_managed_enable_get(struct device *dev, struct dev_pagemap *pgmap) +{ + return -EINVAL; +} +#endif /* CONFIG_DEV_PAGEMAP_OPS */ + #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, unsigned long addr, @@ -156,6 +185,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) }; pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; + bool need_devmap_managed = true; switch (pgmap->type) { case MEMORY_DEVICE_PRIVATE: @@ -173,6 +203,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) break; case MEMORY_DEVICE_DEVDAX: case MEMORY_DEVICE_PCI_P2PDMA: + need_devmap_managed = false; break; default: WARN(1, "Invalid pgmap type %d\n", pgmap->type); @@ -185,6 +216,12 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) return ERR_PTR(-EINVAL); } + if (need_devmap_managed) { + error = devmap_managed_enable_get(dev, pgmap); + if (error) + return ERR_PTR(error); + } + align_start = res->start & ~(SECTION_SIZE - 1); align_size = ALIGN(res->start + resource_size(res), SECTION_SIZE) - align_start; @@ -351,28 +388,6 @@ struct dev_pagemap *get_dev_pagemap(unsigned long pfn, EXPORT_SYMBOL_GPL(get_dev_pagemap); #ifdef CONFIG_DEV_PAGEMAP_OPS -DEFINE_STATIC_KEY_FALSE(devmap_managed_key); -EXPORT_SYMBOL(devmap_managed_key); -static atomic_t devmap_enable; - -/* - * Toggle the static key for ->page_free() callbacks when dev_pagemap - * pages go idle. - */ -void dev_pagemap_get_ops(void) -{ - if (atomic_inc_return(&devmap_enable) == 1) - static_branch_enable(&devmap_managed_key); -} -EXPORT_SYMBOL_GPL(dev_pagemap_get_ops); - -void dev_pagemap_put_ops(void) -{ - if (atomic_dec_and_test(&devmap_enable)) - static_branch_disable(&devmap_managed_key); -} -EXPORT_SYMBOL_GPL(dev_pagemap_put_ops); - void __put_devmap_managed_page(struct page *page) { int count = page_ref_dec_return(page); diff --git a/mm/hmm.c b/mm/hmm.c index 987793fba923..5b0bd5f6a74f 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1415,8 +1415,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, void *result; int ret; - dev_pagemap_get_ops(); - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); if (!devmem) return ERR_PTR(-ENOMEM); From patchwork Wed Jun 26 12:27:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017695 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 6605A1580 for ; Wed, 26 Jun 2019 12:28:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 548C828399 for ; Wed, 26 Jun 2019 12:28:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 52A6D287A8; Wed, 26 Jun 2019 12:28:23 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 9A9BC28399 for ; Wed, 26 Jun 2019 12:28:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 20AC38E0015; Wed, 26 Jun 2019 08:28:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 147408E000E; Wed, 26 Jun 2019 08:28: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 F29EC8E0015; Wed, 26 Jun 2019 08:28:03 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by kanga.kvack.org (Postfix) with ESMTP id B2FF18E000E for ; Wed, 26 Jun 2019 08:28:03 -0400 (EDT) Received: by mail-pf1-f199.google.com with SMTP id q14so1682069pff.8 for ; Wed, 26 Jun 2019 05:28:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=eSi3S2UCkxhmCBrnGHmtw81ZNxp9oxJ8kWoR9DuGVFo=; b=qprjIyf4AbeHIGB7k8YHWZeaRoeCDVqKltEDzNFhLVzPYqavlsFnXu+R3D8XkPsx0U 2sYxcOuViLkJPRAUlWPPLL5h6OPutTm2PC0SIm6jlrsLYm7VjZustsiejiiMlRQBKTvx CT5nM3YS36BHcMznwP2+FP2BjlDZi7XGfoWNTbCX5pd9sjqxeJ47+VO69O4GZCsNOObG mgR8aX/9bDpiITkc1QQqZ8LJWENakQZOVty9dbDKkoV8VG/uJR4sYyjGqM2vvbnh+mpo qwlyngE+AYHX6mAy+2ORFbe6uVReymfdiz1Le+CFpFPiMR9/U8Of+fuU82tDqCJSm1Z1 /sfg== X-Gm-Message-State: APjAAAWRUsNwYEBVSuQHSfzb14Hj+E1hs3xOY7yb2BtYsRIfv05+91yh S7MRKstd8hXTgsJjyWCXK3rjsNHyMIqoTMvtsCQDPzt8f3kTM74gRrCd5joEBA03jVfEZ6aFW3Z Lxbl0GKkARR9aRhD7O0knRls3lf3PJSaFD2IZSQMItuB2K34CWq2DEQ+O6WhKn1I= X-Received: by 2002:a17:902:404:: with SMTP id 4mr5277573ple.200.1561552083383; Wed, 26 Jun 2019 05:28:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVBbwEtVzC9zvWTWSG03lOn4TiTE5ejCxPZUfj0A2VsVYnMIX2r+aGt//CwjK42NxNo6M3 X-Received: by 2002:a17:902:404:: with SMTP id 4mr5277511ple.200.1561552082404; Wed, 26 Jun 2019 05:28:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552082; cv=none; d=google.com; s=arc-20160816; b=YJ7ckoXcxIGIc5H1l36Sw3f9mop9zasG239lmezj2s+YHiJWrfL36Sji1TNUE2NroS gkJNGm6MxMQ4CNNmXAi9WoFs5XWgb1vVb82L7gn5+n5yCSntv/VJVwEZKejzi/ffUrE9 fkyTA+a188COGKxRIGK/no+V5AhqFnxCTy4bRSFyuJXLbHEAcsm++aGpo08B7CEfc55n fQbGqbWaHYoqj7kFGgQn3Y7JFpt+W733eumcJTTUzNQCw84M+wwVDBcI2BUvDxWyUC+m LCKzY21f7dB/OppGRVBKtXwp1nGaQDQJh9bfoeXbDLyJwLYeLsXPngUfVdZErozII0/p 5SIQ== 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:dkim-signature; bh=eSi3S2UCkxhmCBrnGHmtw81ZNxp9oxJ8kWoR9DuGVFo=; b=JOK8xl1LVpBLx5uXmSLEMZ2J6I5sG3QSzigX1961RL+5k63BvlFgan4gRGC+yiladP Rm4nrQcAtk+tgwsTCqk+Olyl0VVopi1tainpenDUjwXFQh/yvPNv/kFL1mwFKSRmpCjQ 9E3SgT1D+TRV+wO17MbH5BVc5K49zJTfhNuV4zvbvd2TyzIpMh9cuoTxdJuSkcEY4ibm YFQExLxQ+IMuc9s3+HRXAOJLZ2tc0aVJQNpLjfjsYtEaEAr81gooCEJqKOUZVzB1QGiX frfDUOjq5pemjhyY4p1wT9qiwQ9d241mZy8ebfryRKCW0/A5CMAdM8+RsnQviTUFfhu9 QobA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=VAr9mXfz; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id a4si1386797pjh.87.2019.06.26.05.28.02 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:02 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=VAr9mXfz; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=eSi3S2UCkxhmCBrnGHmtw81ZNxp9oxJ8kWoR9DuGVFo=; b=VAr9mXfz7cA+wOHeq9MHRYNO/Z Tw/udMQowLV+trSw45gnqEt0HZNhWG7lVgavlyWH7jsxvhGv9JgYvbk4lz7GD2//xNo/lo8m5agAs GxbGTWyz4pMQYv0hMGA19IuNlfi5HbAxp8MprYgFCBettSw3l032ywNQ0jbdWLeDaKHaJvhULeKQT YE6yKAU+ZSd0HR+Jw67bWZty6cwjOAyK2xSnjiJD5uG7aol2AxKoP2n3PoM6gDA2aswJclMgxpg87 4+Uygu7KZHfUC/zlgwWL5vJgddLEwVi4vJPg1q+Mz7uahZKqAZw4H1L+/SVnzz4/d8xL31Zgdt49k cHkty14w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71q-0001T6-VB; Wed, 26 Jun 2019 12:27:59 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Ralph Campbell Subject: [PATCH 12/25] memremap: add a migrate_to_ram method to struct dev_pagemap_ops Date: Wed, 26 Jun 2019 14:27:11 +0200 Message-Id: <20190626122724.13313-13-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 This replaces the hacky ->fault callback, which is currently directly called from common code through a hmm specific data structure as an exercise in layering violations. Signed-off-by: Christoph Hellwig Reviewed-by: Ralph Campbell Reviewed-by: Jason Gunthorpe --- include/linux/hmm.h | 6 ------ include/linux/memremap.h | 6 ++++++ include/linux/swapops.h | 15 --------------- kernel/memremap.c | 35 ++++------------------------------- mm/hmm.c | 13 +++++-------- mm/memory.c | 9 ++------- 6 files changed, 17 insertions(+), 67 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 44a5ac738bb5..ba19c19e24ed 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -692,11 +692,6 @@ struct hmm_devmem_ops { * chunk, as an optimization. It must, however, prioritize the faulting address * over all the others. */ -typedef vm_fault_t (*dev_page_fault_t)(struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp); struct hmm_devmem { struct completion completion; @@ -707,7 +702,6 @@ struct hmm_devmem { struct dev_pagemap pagemap; const struct hmm_devmem_ops *ops; struct percpu_ref ref; - dev_page_fault_t page_fault; }; /* diff --git a/include/linux/memremap.h b/include/linux/memremap.h index b8666a0d8665..ac985bd03a7f 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -80,6 +80,12 @@ struct dev_pagemap_ops { * Wait for refcount in struct dev_pagemap to be idle and reap it. */ void (*cleanup)(struct dev_pagemap *pgmap); + + /* + * Used for private (un-addressable) device memory only. Must migrate + * the page back to a CPU accessible page. + */ + vm_fault_t (*migrate_to_ram)(struct vm_fault *vmf); }; /** diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 4d961668e5fc..15bdb6fe71e5 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -129,12 +129,6 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) { return pfn_to_page(swp_offset(entry)); } - -vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp); #else /* CONFIG_DEVICE_PRIVATE */ static inline swp_entry_t make_device_private_entry(struct page *page, bool write) { @@ -164,15 +158,6 @@ static inline struct page *device_private_entry_to_page(swp_entry_t entry) { return NULL; } - -static inline vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp) -{ - return VM_FAULT_SIGBUS; -} #endif /* CONFIG_DEVICE_PRIVATE */ #ifdef CONFIG_MIGRATION diff --git a/kernel/memremap.c b/kernel/memremap.c index 3219a4c91d07..c06a5487dda7 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -11,7 +11,6 @@ #include #include #include -#include static DEFINE_XARRAY(pgmap_array); #define SECTION_MASK ~((1UL << PA_SECTION_SHIFT) - 1) @@ -46,36 +45,6 @@ static int devmap_managed_enable_get(struct device *dev, struct dev_pagemap *pgm } #endif /* CONFIG_DEV_PAGEMAP_OPS */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -vm_fault_t device_private_entry_fault(struct vm_area_struct *vma, - unsigned long addr, - swp_entry_t entry, - unsigned int flags, - pmd_t *pmdp) -{ - struct page *page = device_private_entry_to_page(entry); - struct hmm_devmem *devmem; - - devmem = container_of(page->pgmap, typeof(*devmem), pagemap); - - /* - * The page_fault() callback must migrate page back to system memory - * so that CPU can access it. This might fail for various reasons - * (device issue, device was unsafely unplugged, ...). When such - * error conditions happen, the callback must return VM_FAULT_SIGBUS. - * - * Note that because memory cgroup charges are accounted to the device - * memory, this should never fail because of memory restrictions (but - * allocation of regular system page might still fail because we are - * out of memory). - * - * There is a more in-depth description of what that callback can and - * cannot do, in include/linux/memremap.h - */ - return devmem->page_fault(vma, addr, page, flags, pmdp); -} -#endif /* CONFIG_DEVICE_PRIVATE */ - static void pgmap_array_delete(struct resource *res) { xa_store_range(&pgmap_array, PHYS_PFN(res->start), PHYS_PFN(res->end), @@ -193,6 +162,10 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) WARN(1, "Device private memory not supported\n"); return ERR_PTR(-EINVAL); } + if (!pgmap->ops || !pgmap->ops->migrate_to_ram) { + WARN(1, "Missing migrate_to_ram method\n"); + return ERR_PTR(-EINVAL); + } break; case MEMORY_DEVICE_FS_DAX: if (!IS_ENABLED(CONFIG_ZONE_DEVICE) || diff --git a/mm/hmm.c b/mm/hmm.c index 5b0bd5f6a74f..96633ee066d8 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1366,15 +1366,12 @@ static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) percpu_ref_kill(pgmap->ref); } -static vm_fault_t hmm_devmem_fault(struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp) +static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) { - struct hmm_devmem *devmem = page->pgmap->data; + struct hmm_devmem *devmem = vmf->page->pgmap->data; - return devmem->ops->fault(devmem, vma, addr, page, flags, pmdp); + return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, + vmf->flags, vmf->pmd); } static void hmm_devmem_free(struct page *page, void *data) @@ -1388,6 +1385,7 @@ static const struct dev_pagemap_ops hmm_pagemap_ops = { .page_free = hmm_devmem_free, .kill = hmm_devmem_ref_kill, .cleanup = hmm_devmem_ref_exit, + .migrate_to_ram = hmm_devmem_migrate_to_ram, }; /* @@ -1438,7 +1436,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; devmem->pfn_last = devmem->pfn_first + (resource_size(devmem->resource) >> PAGE_SHIFT); - devmem->page_fault = hmm_devmem_fault; devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; diff --git a/mm/memory.c b/mm/memory.c index bd21e7063bf0..293d2936fd6c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2748,13 +2748,8 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) migration_entry_wait(vma->vm_mm, vmf->pmd, vmf->address); } else if (is_device_private_entry(entry)) { - /* - * For un-addressable device memory we call the pgmap - * fault handler callback. The callback must migrate - * the page back to some CPU accessible page. - */ - ret = device_private_entry_fault(vma, vmf->address, entry, - vmf->flags, vmf->pmd); + vmf->page = device_private_entry_to_page(entry); + ret = vmf->page->pgmap->ops->migrate_to_ram(vmf); } else if (is_hwpoison_entry(entry)) { ret = VM_FAULT_HWPOISON; } else { From patchwork Wed Jun 26 12:27:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017699 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 C96B71580 for ; Wed, 26 Jun 2019 12:28:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B905F26222 for ; Wed, 26 Jun 2019 12:28:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AD7D428606; Wed, 26 Jun 2019 12:28:26 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 3A2CA26222 for ; Wed, 26 Jun 2019 12:28:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5B3298E0016; Wed, 26 Jun 2019 08:28:07 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 514C98E000E; Wed, 26 Jun 2019 08:28:07 -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 319238E0016; Wed, 26 Jun 2019 08:28:07 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by kanga.kvack.org (Postfix) with ESMTP id ED1AE8E000E for ; Wed, 26 Jun 2019 08:28:06 -0400 (EDT) Received: by mail-pl1-f197.google.com with SMTP id bb9so1371837plb.2 for ; Wed, 26 Jun 2019 05:28:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=u3zsuvlhpuVlW2irmLMymipD93NE9PuZGgr9ihGk+cw=; b=dyTT4tqihhNKYUC7FDsWtDD/afbL9ukgDruM5f9lJoUba5qV5nYlNIn87/E/ofyvBK +v4WZ3fItVYcrOWpmDJ8ZsI3K4Spcyq8pgccWqwJaryETfPxayP1nGzyZcH72PZeTJmI E2Eiey3vY/p+3I7B0Z0naoavdAd1x6gUgQs/IPinACtpFDrDqyHGNF/4bTbH2Ji7ptow xjJTnNTWIjwkO8TLWhIQWOwpB/j28ofm1Wat18QGjxMAauSJVATB51i3vD3+8hE1LBvw jHOi7Buko7sfnwszNqKWIF/ageNb0ufKsnn+J1D9lUZ2TL49kl02bLc9cy51u4cZqGl3 BAzQ== X-Gm-Message-State: APjAAAXFbEdXCx5p64sfOHCodV9YlktWstszmnNBwjCRgKDsn0swwHuR xdSzctpHKafTVXkWr1inFJxlE9zMAjUKw8CaGQ5sHUJ444zDUaI7lv3SkiRZWZRVTrKsIXH71Th 2oWafNQUV38IyJ05AKSRea34g7eUPgXnW1lTo4+VLVT6WRe1pILMvymWpVZ7H07o= X-Received: by 2002:a17:902:9a04:: with SMTP id v4mr5041612plp.95.1561552086609; Wed, 26 Jun 2019 05:28:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqz63bUGoy3VyxxsOWhRQLdCSyFm4GjsQ8votbk23RxkH5pVEAD+ay/aaFPD+7RO6bkhd0mk X-Received: by 2002:a17:902:9a04:: with SMTP id v4mr5041557plp.95.1561552085804; Wed, 26 Jun 2019 05:28:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552085; cv=none; d=google.com; s=arc-20160816; b=xCV+0yfcbZHZUFOxAbQ2/tKSjrrrLkCFm9m/izF3debmMg3VJqu8wzkjhoX0Ipr1dj ZoCYT0AaUiclYVH+xiHkvwjKaOJqcsZESUOEBCGZTDt/6v78ddhdJp1diao9jzAPm2iW my54l9jIcdFFoC0LI2RUjsMrXX9YlDen8QOYBILBsySm+XrbQbZ0md97CmqBIoNCLL9D ocTpciG2+B12gkEPTiX62fff8xjsAPvvOgjW29HSI1ja+lBB1clWqkCS25KoToBByJHN HQSGIeB/tLW7io3mGjHWN8QsXqTVo28DpXz7rZX8vuTumxuai17CpYEWRFD57LbkYkwa UkvA== 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:dkim-signature; bh=u3zsuvlhpuVlW2irmLMymipD93NE9PuZGgr9ihGk+cw=; b=PMIS1CxxTlKOtg7NtMcZfTax1Zq4wm5Slw2/61NpZJEXkIAW3/q9WFTqqnN8R8uisl +W2N1WP/8Mwz8teMkiEcGHxJqTh1qo9z9zmHT8RkBq1H6PETvfkPulyKNLoJzk2P4GA9 gG7caUmwWnJys0M7My6Y9mM6u9O51gL9s9tOu7q3/Qhh8Xa4CCAxJoM4dsc2NeuO5zLp srV59mCF7KINWF6JD260FC4w63d0hi4Z+VclRraB+CcKjf95ApJ6hKL/XvhiLl50rhPp Sie+Du407XEgj4FwQgN+kdq7DPwMQKERaX5MMha0b45nJM1oxVRuFZPYDxBWZhOnz9xy zw7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=d5qB8osf; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id j31si4659152pgi.151.2019.06.26.05.28.05 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=d5qB8osf; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=u3zsuvlhpuVlW2irmLMymipD93NE9PuZGgr9ihGk+cw=; b=d5qB8osfJqMohKxbGTFQMSvZ2L 1KQRqOrBzZgw95hqR7pC5Tucj3aBgj0VNA4cifFq8mAtLKD0y1772q8m2Z/ML4g9MnP7VyGZXROYQ CGsjiwCerbX6BpeiN/MViA/hM/oV9hr2xUNh/hyDYSytiOYO4VuD3HQ99ONPGzpXSDohyUZvaf5+5 tEP6Go2MhIcoBaHR6YQM6iXPbXRjeKNPZuAc5iukG7vmbCG+osMb+7klCclgJbFAUga+T2bDeuUhW MOLIB+v5w+TI2bA58t30lzk9E06TgqWSiqBPClXaFtnn8gsbsrA6lO0aCw7Xfkzg6beeIa6ehrRFz vyIO8/mQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71t-0001U5-Fd; Wed, 26 Jun 2019 12:28:01 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 13/25] memremap: remove the data field in struct dev_pagemap Date: Wed, 26 Jun 2019 14:27:12 +0200 Message-Id: <20190626122724.13313-14-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 struct dev_pagemap is always embedded into a containing structure, so there is no need to an additional private data field. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/nvdimm/pmem.c | 2 +- include/linux/memremap.h | 3 +-- kernel/memremap.c | 2 +- mm/hmm.c | 9 +++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 48767171a4df..093408ce40ad 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -334,7 +334,7 @@ static void pmem_release_disk(void *__pmem) put_disk(pmem->disk); } -static void pmem_pagemap_page_free(struct page *page, void *data) +static void pmem_pagemap_page_free(struct page *page) { wake_up_var(&page->_refcount); } diff --git a/include/linux/memremap.h b/include/linux/memremap.h index ac985bd03a7f..336eca601dad 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -69,7 +69,7 @@ struct dev_pagemap_ops { * reach 0 refcount unless there is a refcount bug. This allows the * device driver to implement its own memory management.) */ - void (*page_free)(struct page *page, void *data); + void (*page_free)(struct page *page); /* * Transition the refcount in struct dev_pagemap to the dead state. @@ -104,7 +104,6 @@ struct dev_pagemap { struct resource res; struct percpu_ref *ref; struct device *dev; - void *data; enum memory_type type; u64 pci_p2pdma_bus_offset; const struct dev_pagemap_ops *ops; diff --git a/kernel/memremap.c b/kernel/memremap.c index c06a5487dda7..6c3dbb692037 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -376,7 +376,7 @@ void __put_devmap_managed_page(struct page *page) mem_cgroup_uncharge(page); - page->pgmap->ops->page_free(page, page->pgmap->data); + page->pgmap->ops->page_free(page); } else if (!count) __put_page(page); } diff --git a/mm/hmm.c b/mm/hmm.c index 96633ee066d8..36e25cdbdac1 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1368,15 +1368,17 @@ static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) { - struct hmm_devmem *devmem = vmf->page->pgmap->data; + struct hmm_devmem *devmem = + container_of(vmf->page->pgmap, struct hmm_devmem, pagemap); return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, vmf->flags, vmf->pmd); } -static void hmm_devmem_free(struct page *page, void *data) +static void hmm_devmem_free(struct page *page) { - struct hmm_devmem *devmem = data; + struct hmm_devmem *devmem = + container_of(page->pgmap, struct hmm_devmem, pagemap); devmem->ops->free(devmem, page); } @@ -1442,7 +1444,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.ops = &hmm_pagemap_ops; devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; - devmem->pagemap.data = devmem; result = devm_memremap_pages(devmem->device, &devmem->pagemap); if (IS_ERR(result)) From patchwork Wed Jun 26 12:27:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017703 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 DF1831580 for ; Wed, 26 Jun 2019 12:28:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CD1F9287AA for ; Wed, 26 Jun 2019 12:28:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C1394287B4; Wed, 26 Jun 2019 12:28: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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 EF221287AB for ; Wed, 26 Jun 2019 12:28:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F04A98E0017; Wed, 26 Jun 2019 08:28:09 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id E8E918E000E; Wed, 26 Jun 2019 08:28:09 -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 CE0898E0017; Wed, 26 Jun 2019 08:28:09 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id 7F2C58E000E for ; Wed, 26 Jun 2019 08:28:09 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id i27so1676195pfk.12 for ; Wed, 26 Jun 2019 05:28:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ANw7RZagrpik3WocXdWXhNlp6QZ5do/+kvuvuFAYJx4=; b=AAJQt6ttMLceALEnf9sAEIa1hhjBqvX2HJydnUU2At0Q+MPiIh0xtRZEpTtx36IxCv hKgS/YeBt4tFFxVjjjOtkDVfnWPyQ9QsR1tQ0MxEsiAWwc9ssojM+wC6LLtpAiSs+Q2K QdyuJHgB0NYvZDls/yP8ZzYpBrwdvOBAN9Qz8HT5wcCQA3PNgoGizMhpMFB+6RNghxQF 3LaHs8pFnvDuPT8P7teayGqRpeJl6I3pzV1mJJO4a/unJWaqVXrCPbYnZl7+aNCmN1Bx VRFubUfd80tLTuT0TrvB/LUjGys6CWh5Z7+dAtm/YGY+TbBsIscr2jg+7Di0Vfh7u9ut A+Ag== X-Gm-Message-State: APjAAAXkVt2Yy8nzkQF5h/E2RQq+x+N7RquWh4156QtMOlC0UcFReeEv miqX8/hbT3wAoNuW0qEh+Xa/qv1XXX7coCxwDCdv1Jdo0ftbpRs8mZUg5eL8MbcGSE8EsR6B+8q oFH10d+eF9eCzpilOFsSLRuZgjqE/ZWEjAyHcELEzyzNfTx00/7aqrcmpjBhnXtQ= X-Received: by 2002:a63:b547:: with SMTP id u7mr2820223pgo.322.1561552089044; Wed, 26 Jun 2019 05:28:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqz+cCZxqsqcT/lH1l9bzAUDypNKTTPuAExTNvUX/H9bU/R+4iopRWXeoaaYhWOMbsUTFDwv X-Received: by 2002:a63:b547:: with SMTP id u7mr2820150pgo.322.1561552087906; Wed, 26 Jun 2019 05:28:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552087; cv=none; d=google.com; s=arc-20160816; b=ndO6tr4fG5E9ehY4h7sbmYBkP7XOPI65oM5yhjYOfS9xwc7YxZgfU9VyFUdF+26ST3 QBvJxhnYEGewwMz7XtENDHVSxmJ2hNt9gJ4BSbuPFBIUP0UhzhaJ1Isr/rWi50TwQtcQ JIT6gADn4o87jH9f/Ts0HDFTxVdIv52EXmrgw9dmYVPwiL/+5Cn6Ou34Txt9F07077MH 1E2USSqVjCSYOrhQ+jcbGIzoLujiSlttSKNbsgCovM0IDZpXxA5mHFOUicjD8Eu+V/JA dR/QIBAGl5KWaqkCCF0ht+zEnnrDA++osK40doOVgOW3S+iotZrpvq8v4ow84A6g71dI M8TA== 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:dkim-signature; bh=ANw7RZagrpik3WocXdWXhNlp6QZ5do/+kvuvuFAYJx4=; b=t9RUITaGwDBJENYItXlqY6SACtU2sNgUwDAaTiO0lYYYVejAaXnpU9M2OkgonTWX4W GoHk4axpcdneUJdzTbEGIpU7EP4prKBZXuv/X2WMNOaDCIRY+GjYMlZa1Jxx7NIwmOcU GA+PCatFjvH+XxKNzvPO7Gtj/Dqbx+xTrpnVYTPO/5CpKuHT1Rd3YGy9CcwDuotaVAw+ xoE7l6TUZQXiO5oEBeHffzPt9FqP+X1+nvRWUScCVnMgyZandiDNxV2y+AdZnc97DIi+ K6OMwN3mQ2bVjoFBGDMM4PWbhjYWkOlMzDY8Db71l2HlQ2JLWzr9c7/uaOpR9UEWl4lP hE3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=ijYZ5frF; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id k16si3130070pls.326.2019.06.26.05.28.07 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=ijYZ5frF; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ANw7RZagrpik3WocXdWXhNlp6QZ5do/+kvuvuFAYJx4=; b=ijYZ5frFBFM0E1S9/heolrZuVq fiehuQE8ACYkeVMEEUbSx9wtexApVjgDkdWFusYE+ResPKVxnKQ4NcJFTCxA6a0gtK/XV36izYV+4 pVwpqJV3wZ7SyB6qaM8OjGUctQIv0YwMKWoQH44rSJ9wzSiwDaQqNfB9IaU8uumtrzxglnb/XEQG0 xMvn3pNm5R92JRb8Vk5WeKYw90/4Vc31OIB8JzItC6bGVozyeO1DOGTbXiUtUi94Cxjfo71oNrmQ6 yer0TSsw0af5ck30pjrW2Th16XkgYmbL7wR2ClKTCR47UyymuvMJxVb6Il4LES4ylJ3NoLxhbmQoy tX0YR4qQ==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71w-0001VC-1N; Wed, 26 Jun 2019 12:28:04 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 14/25] memremap: replace the altmap_valid field with a PGMAP_ALTMAP_VALID flag Date: Wed, 26 Jun 2019 14:27:13 +0200 Message-Id: <20190626122724.13313-15-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Add a flags field to struct dev_pagemap to replace the altmap_valid boolean to be a little more extensible. Also add a pgmap_altmap() helper to find the optional altmap and clean up the code using the altmap using it. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- arch/powerpc/mm/mem.c | 10 +--------- arch/x86/mm/init_64.c | 8 ++------ drivers/nvdimm/pfn_devs.c | 3 +-- drivers/nvdimm/pmem.c | 1 - include/linux/memremap.h | 12 +++++++++++- kernel/memremap.c | 26 ++++++++++---------------- mm/hmm.c | 1 - mm/memory_hotplug.c | 6 ++---- mm/page_alloc.c | 5 ++--- 9 files changed, 29 insertions(+), 43 deletions(-) diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c index cba29131bccc..f774d80df025 100644 --- a/arch/powerpc/mm/mem.c +++ b/arch/powerpc/mm/mem.c @@ -131,17 +131,9 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page; + struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); int ret; - /* - * If we have an altmap then we need to skip over any reserved PFNs - * when querying the zone. - */ - page = pfn_to_page(start_pfn); - if (altmap) - page += vmem_altmap_offset(altmap); - __remove_pages(page_zone(page), start_pfn, nr_pages, altmap); /* Remove htab bolted mappings for this section of memory */ diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 693aaf28d5fe..3139e992ef9d 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -1211,13 +1211,9 @@ void __ref arch_remove_memory(int nid, u64 start, u64 size, { unsigned long start_pfn = start >> PAGE_SHIFT; unsigned long nr_pages = size >> PAGE_SHIFT; - struct page *page = pfn_to_page(start_pfn); - struct zone *zone; + struct page *page = pfn_to_page(start_pfn) + vmem_altmap_offset(altmap); + struct zone *zone = page_zone(page); - /* With altmap the first mapped page is offset from @start */ - if (altmap) - page += vmem_altmap_offset(altmap); - zone = page_zone(page); __remove_pages(zone, start_pfn, nr_pages, altmap); kernel_physical_mapping_remove(start, start + size); } diff --git a/drivers/nvdimm/pfn_devs.c b/drivers/nvdimm/pfn_devs.c index 0f81fc56bbfd..55fb6b7433ed 100644 --- a/drivers/nvdimm/pfn_devs.c +++ b/drivers/nvdimm/pfn_devs.c @@ -622,7 +622,6 @@ static int __nvdimm_setup_pfn(struct nd_pfn *nd_pfn, struct dev_pagemap *pgmap) if (offset < reserve) return -EINVAL; nd_pfn->npfns = le64_to_cpu(pfn_sb->npfns); - pgmap->altmap_valid = false; } else if (nd_pfn->mode == PFN_MODE_PMEM) { nd_pfn->npfns = PFN_SECTION_ALIGN_UP((resource_size(res) - offset) / PAGE_SIZE); @@ -634,7 +633,7 @@ static int __nvdimm_setup_pfn(struct nd_pfn *nd_pfn, struct dev_pagemap *pgmap) memcpy(altmap, &__altmap, sizeof(*altmap)); altmap->free = PHYS_PFN(offset - reserve); altmap->alloc = 0; - pgmap->altmap_valid = true; + pgmap->flags |= PGMAP_ALTMAP_VALID; } else return -ENXIO; diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 093408ce40ad..e7d8cc9f41e8 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -412,7 +412,6 @@ static int pmem_attach_disk(struct device *dev, bb_res.start += pmem->data_offset; } else if (pmem_should_map_pages(dev)) { memcpy(&pmem->pgmap.res, &nsio->res, sizeof(pmem->pgmap.res)); - pmem->pgmap.altmap_valid = false; pmem->pgmap.type = MEMORY_DEVICE_FS_DAX; pmem->pgmap.ops = &fsdax_pagemap_ops; addr = devm_memremap_pages(dev, &pmem->pgmap); diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 336eca601dad..e25685b878e9 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -88,6 +88,8 @@ struct dev_pagemap_ops { vm_fault_t (*migrate_to_ram)(struct vm_fault *vmf); }; +#define PGMAP_ALTMAP_VALID (1 << 0) + /** * struct dev_pagemap - metadata for ZONE_DEVICE mappings * @altmap: pre-allocated/reserved memory for vmemmap allocations @@ -96,19 +98,27 @@ struct dev_pagemap_ops { * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h + * @flags: PGMAP_* flags to specify defailed behavior * @ops: method table */ struct dev_pagemap { struct vmem_altmap altmap; - bool altmap_valid; struct resource res; struct percpu_ref *ref; struct device *dev; enum memory_type type; + unsigned int flags; u64 pci_p2pdma_bus_offset; const struct dev_pagemap_ops *ops; }; +static inline struct vmem_altmap *pgmap_altmap(struct dev_pagemap *pgmap) +{ + if (pgmap->flags & PGMAP_ALTMAP_VALID) + return &pgmap->altmap; + return NULL; +} + #ifdef CONFIG_ZONE_DEVICE void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap); void devm_memunmap_pages(struct device *dev, struct dev_pagemap *pgmap); diff --git a/kernel/memremap.c b/kernel/memremap.c index 6c3dbb692037..eee490e7d7e1 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -54,14 +54,8 @@ static void pgmap_array_delete(struct resource *res) static unsigned long pfn_first(struct dev_pagemap *pgmap) { - const struct resource *res = &pgmap->res; - struct vmem_altmap *altmap = &pgmap->altmap; - unsigned long pfn; - - pfn = res->start >> PAGE_SHIFT; - if (pgmap->altmap_valid) - pfn += vmem_altmap_offset(altmap); - return pfn; + return (pgmap->res.start >> PAGE_SHIFT) + + vmem_altmap_offset(pgmap_altmap(pgmap)); } static unsigned long pfn_end(struct dev_pagemap *pgmap) @@ -109,7 +103,7 @@ static void devm_memremap_pages_release(void *data) align_size >> PAGE_SHIFT, NULL); } else { arch_remove_memory(nid, align_start, align_size, - pgmap->altmap_valid ? &pgmap->altmap : NULL); + pgmap_altmap(pgmap)); kasan_remove_zero_shadow(__va(align_start), align_size); } mem_hotplug_done(); @@ -129,8 +123,8 @@ static void devm_memremap_pages_release(void *data) * 1/ At a minimum the res, ref and type and ops members of @pgmap must be * initialized by the caller before passing it to this function * - * 2/ The altmap field may optionally be initialized, in which case altmap_valid - * must be set to true + * 2/ The altmap field may optionally be initialized, in which case + * PGMAP_ALTMAP_VALID must be set in pgmap->flags. * * 3/ pgmap->ref must be 'live' on entry and will be killed and reaped * at devm_memremap_pages_release() time, or if this routine fails. @@ -142,15 +136,13 @@ static void devm_memremap_pages_release(void *data) void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) { resource_size_t align_start, align_size, align_end; - struct vmem_altmap *altmap = pgmap->altmap_valid ? - &pgmap->altmap : NULL; struct resource *res = &pgmap->res; struct dev_pagemap *conflict_pgmap; struct mhp_restrictions restrictions = { /* * We do not want any optional features only our own memmap */ - .altmap = altmap, + .altmap = pgmap_altmap(pgmap), }; pgprot_t pgprot = PAGE_KERNEL; int error, nid, is_ram; @@ -274,7 +266,7 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) zone = &NODE_DATA(nid)->node_zones[ZONE_DEVICE]; move_pfn_range_to_zone(zone, align_start >> PAGE_SHIFT, - align_size >> PAGE_SHIFT, altmap); + align_size >> PAGE_SHIFT, pgmap_altmap(pgmap)); } mem_hotplug_done(); @@ -319,7 +311,9 @@ EXPORT_SYMBOL_GPL(devm_memunmap_pages); unsigned long vmem_altmap_offset(struct vmem_altmap *altmap) { /* number of pfns from base where pfn_to_page() is valid */ - return altmap->reserve + altmap->free; + if (altmap) + return altmap->reserve + altmap->free; + return 0; } void vmem_altmap_free(struct vmem_altmap *altmap, unsigned long nr_pfns) diff --git a/mm/hmm.c b/mm/hmm.c index 36e25cdbdac1..e4470462298f 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1442,7 +1442,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; devmem->pagemap.res = *devmem->resource; devmem->pagemap.ops = &hmm_pagemap_ops; - devmem->pagemap.altmap_valid = false; devmem->pagemap.ref = &devmem->ref; result = devm_memremap_pages(devmem->device, &devmem->pagemap); diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index e096c987d261..6166ba5a15f3 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -557,10 +557,8 @@ void __remove_pages(struct zone *zone, unsigned long phys_start_pfn, int sections_to_remove; /* In the ZONE_DEVICE case device driver owns the memory region */ - if (is_dev_zone(zone)) { - if (altmap) - map_offset = vmem_altmap_offset(altmap); - } + if (is_dev_zone(zone)) + map_offset = vmem_altmap_offset(altmap); clear_zone_contiguous(zone); diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d66bc8abe0af..17a39d40a556 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5853,6 +5853,7 @@ void __ref memmap_init_zone_device(struct zone *zone, { unsigned long pfn, end_pfn = start_pfn + size; struct pglist_data *pgdat = zone->zone_pgdat; + struct vmem_altmap *altmap = pgmap_altmap(pgmap); unsigned long zone_idx = zone_idx(zone); unsigned long start = jiffies; int nid = pgdat->node_id; @@ -5865,9 +5866,7 @@ void __ref memmap_init_zone_device(struct zone *zone, * of the pages reserved for the memmap, so we can just jump to * the end of that region and start processing the device pages. */ - if (pgmap->altmap_valid) { - struct vmem_altmap *altmap = &pgmap->altmap; - + if (altmap) { start_pfn = altmap->base_pfn + vmem_altmap_offset(altmap); size = end_pfn - start_pfn; } From patchwork Wed Jun 26 12:27:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017711 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 D0AA21398 for ; Wed, 26 Jun 2019 12:28:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C055F287AB for ; Wed, 26 Jun 2019 12:28:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B43E2287B1; Wed, 26 Jun 2019 12:28:34 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 04012287B4 for ; Wed, 26 Jun 2019 12:28:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BA7A48E0018; Wed, 26 Jun 2019 08:28:12 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id AE15B8E000E; Wed, 26 Jun 2019 08:28:12 -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 9AB8A8E0018; Wed, 26 Jun 2019 08:28:12 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 592C08E000E for ; Wed, 26 Jun 2019 08:28:12 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id i35so1517823pgi.18 for ; Wed, 26 Jun 2019 05:28:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=MSqhsOhHHQhh/vRiKblwUI14+k+RDGeRz1Fjt2V0teQ=; b=TasEaDV61rdmVbHsVHqh05pe36oRdzApImoUxR8jPnlQNsE3PGi7xINkduF/QingQy mCSGrdrJwnYoNcPgWpFjkTPMfoduBufePe9J/+qbZvctrqh3nOjjEUUY5k1sZWXhv2p8 GaMD7OL2QGJR0E2Y+CuaN5fOyU1vY5m/W1XrRrPCjgKFOqe9czlomoue6ql+pICbQ89N 65i7/HfwhfoiOgr71NbYyYBGeneEW0kXWBiJlhYBTrlaUTQykzWI/gW4wVVW/LEs9CPo Hsy/OCtNUEHKnOBQ4VwL5TtZcX2S8NtNhqaica2nA6lzdQvIMDIuFKKL57uoiEhehNY8 Nz4g== X-Gm-Message-State: APjAAAUI+IXTEptlwRbngIul3DFg//qK7JVXiNGRux+K0mYd8UhFB0uQ UG0eenubPx3IIc7/8nHTuZyHleIeuFWXJRahp1FqzCTqhtF1Ita9f6v/F2BQBvaah2GWbulz611 qtRszt8ZhNJcp+lCPgXJkzTciXI2ZNcEUSu0wrlWtr1eQMj3P9NeDAUeRpm4I3+0= X-Received: by 2002:a63:2323:: with SMTP id j35mr2758351pgj.166.1561552091915; Wed, 26 Jun 2019 05:28:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqy7DWOiGDWNNw9oVvn5plMMoKGsxqvIfeNI6hpeUsKDJ5YO+EBj8TJ97+m6lXxLk+Rvg370 X-Received: by 2002:a63:2323:: with SMTP id j35mr2758287pgj.166.1561552090938; Wed, 26 Jun 2019 05:28:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552090; cv=none; d=google.com; s=arc-20160816; b=OqLzZvs4jeqtInJ1XFuy41brz5OXyxpyywvZc9TvkTW+r1aDvgP7hwRKkeSKVs1E4N 8ojkXt9EYO3RrHnj+zvg+fwAF0RC8QlR9ehMpGKBpIFaDXlAMSa9zC5EaHJoH6XwB745 JS1heKrAnlk8hzz8swTJSDFKoXhGfOViA7KA/fmYlKhV1gJSaczhlo0GqzFtkYAP2+KY gAogqs1T+Xcp2vD58xT5L0BsXxH8PqfJyfuXcO803ktxPWWsr8gpZJ8L28LJpVrDpHBw dYcPPe+kqGpd4YoUUXuwYpddqksbvhoqF+GEWAASCJSxZUU6Wcj2YqOe2KI8fzdNxkor CBJA== 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:dkim-signature; bh=MSqhsOhHHQhh/vRiKblwUI14+k+RDGeRz1Fjt2V0teQ=; b=Wz4o+OLuRtUQHUJAtJj3yB0Qj/tvRMRhocZUeb9b9k/ndGGk8B84JHwuEpmSsOypJm NciKUVkyqd6VQdB8LBPikFiOkzB8BSWZesXC92V7PRand8ox8SlyVXNDUxCodEMfsX7g goJyumyvRjaYMZQfTTrJfbPFyTG1Qy1Gz+bfYct9EYhQ3GnA5uUu8CthPDt1yeKzrUSM OWGUVtthxxomPJlBQuXLR2BL26PNLkgpcVh5gaBkqlfiyHiJ22qxQpjFnXbQzhBxz+bN Z2KPYMySHWevNkpLCnM5XYo1cwEMIVvdT1Lka6YA3NWUsjCrPxyccOERw8IkunKmjvMQ lrUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="N//4HeEC"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id v18si3084501ply.276.2019.06.26.05.28.10 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="N//4HeEC"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=MSqhsOhHHQhh/vRiKblwUI14+k+RDGeRz1Fjt2V0teQ=; b=N//4HeECq3UJOCKX62rkn37gSh ROohrNo4+XO2CypRboXwHfZL+x2pNZEqi/UIkkXTH/PQ3nlapb8sMzHVKe1fHcLMMZzb6wYHCmzyH DDjydit/uxRXm8YaKxHe3ZtRKYidhunf9j4brsDVxF63wuI/6JXONJeVNPHGm5xq7ao/0hJ+pWvNA B389MJkFLJVTCKHUMYaoZaXc109b5oFZFWiSVj2wstJp2EODd1ShO4JNs5qDLmHPnz9nTOowKwXpG kdLfgq9FfnwVfh6DxraUsJMGYBfzTxKILw6eBtZgS+WwfEUfRQeXrnJ0FkZJWo4zlmzPKAZv7ufMy ndCZw/WA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg71y-0001Vr-Ul; Wed, 26 Jun 2019 12:28:07 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 15/25] memremap: provide an optional internal refcount in struct dev_pagemap Date: Wed, 26 Jun 2019 14:27:14 +0200 Message-Id: <20190626122724.13313-16-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Provide an internal refcounting logic if no ->ref field is provided in the pagemap passed into devm_memremap_pages so that callers don't have to reinvent it poorly. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- include/linux/memremap.h | 4 ++ kernel/memremap.c | 64 ++++++++++++++++++++++++------- tools/testing/nvdimm/test/iomap.c | 58 ++++++++++++++++++++++------ 3 files changed, 101 insertions(+), 25 deletions(-) diff --git a/include/linux/memremap.h b/include/linux/memremap.h index e25685b878e9..f8a5b2a19945 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -95,6 +95,8 @@ struct dev_pagemap_ops { * @altmap: pre-allocated/reserved memory for vmemmap allocations * @res: physical address range covered by @ref * @ref: reference count that pins the devm_memremap_pages() mapping + * @internal_ref: internal reference if @ref is not provided by the caller + * @done: completion for @internal_ref * @dev: host device of the mapping for debug * @data: private data pointer for page_free() * @type: memory type: see MEMORY_* in memory_hotplug.h @@ -105,6 +107,8 @@ struct dev_pagemap { struct vmem_altmap altmap; struct resource res; struct percpu_ref *ref; + struct percpu_ref internal_ref; + struct completion done; struct device *dev; enum memory_type type; unsigned int flags; diff --git a/kernel/memremap.c b/kernel/memremap.c index eee490e7d7e1..bea6f887adad 100644 --- a/kernel/memremap.c +++ b/kernel/memremap.c @@ -29,7 +29,7 @@ static void devmap_managed_enable_put(void *data) static int devmap_managed_enable_get(struct device *dev, struct dev_pagemap *pgmap) { - if (!pgmap->ops->page_free) { + if (!pgmap->ops || !pgmap->ops->page_free) { WARN(1, "Missing page_free method\n"); return -EINVAL; } @@ -75,6 +75,24 @@ static unsigned long pfn_next(unsigned long pfn) #define for_each_device_pfn(pfn, map) \ for (pfn = pfn_first(map); pfn < pfn_end(map); pfn = pfn_next(pfn)) +static void dev_pagemap_kill(struct dev_pagemap *pgmap) +{ + if (pgmap->ops && pgmap->ops->kill) + pgmap->ops->kill(pgmap); + else + percpu_ref_kill(pgmap->ref); +} + +static void dev_pagemap_cleanup(struct dev_pagemap *pgmap) +{ + if (pgmap->ops && pgmap->ops->cleanup) { + pgmap->ops->cleanup(pgmap); + } else { + wait_for_completion(&pgmap->done); + percpu_ref_exit(pgmap->ref); + } +} + static void devm_memremap_pages_release(void *data) { struct dev_pagemap *pgmap = data; @@ -84,10 +102,10 @@ static void devm_memremap_pages_release(void *data) unsigned long pfn; int nid; - pgmap->ops->kill(pgmap); + dev_pagemap_kill(pgmap); for_each_device_pfn(pfn, pgmap) put_page(pfn_to_page(pfn)); - pgmap->ops->cleanup(pgmap); + dev_pagemap_cleanup(pgmap); /* pages are dead and unused, undo the arch mapping */ align_start = res->start & ~(SECTION_SIZE - 1); @@ -114,20 +132,29 @@ static void devm_memremap_pages_release(void *data) "%s: failed to free all reserved pages\n", __func__); } +static void dev_pagemap_percpu_release(struct percpu_ref *ref) +{ + struct dev_pagemap *pgmap = + container_of(ref, struct dev_pagemap, internal_ref); + + complete(&pgmap->done); +} + /** * devm_memremap_pages - remap and provide memmap backing for the given resource * @dev: hosting device for @res * @pgmap: pointer to a struct dev_pagemap * * Notes: - * 1/ At a minimum the res, ref and type and ops members of @pgmap must be - * initialized by the caller before passing it to this function + * 1/ At a minimum the res and type members of @pgmap must be initialized + * by the caller before passing it to this function * * 2/ The altmap field may optionally be initialized, in which case * PGMAP_ALTMAP_VALID must be set in pgmap->flags. * - * 3/ pgmap->ref must be 'live' on entry and will be killed and reaped - * at devm_memremap_pages_release() time, or if this routine fails. + * 3/ The ref field may optionally be provided, in which pgmap->ref must be + * 'live' on entry and will be killed and reaped at + * devm_memremap_pages_release() time, or if this routine fails. * * 4/ res is expected to be a host memory range that could feasibly be * treated as a "System RAM" range, i.e. not a device mmio range, but @@ -175,10 +202,21 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) break; } - if (!pgmap->ref || !pgmap->ops || !pgmap->ops->kill || - !pgmap->ops->cleanup) { - WARN(1, "Missing reference count teardown definition\n"); - return ERR_PTR(-EINVAL); + if (!pgmap->ref) { + if (pgmap->ops && (pgmap->ops->kill || pgmap->ops->cleanup)) + return ERR_PTR(-EINVAL); + + init_completion(&pgmap->done); + error = percpu_ref_init(&pgmap->internal_ref, + dev_pagemap_percpu_release, 0, GFP_KERNEL); + if (error) + return ERR_PTR(error); + pgmap->ref = &pgmap->internal_ref; + } else { + if (!pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup) { + WARN(1, "Missing reference count teardown definition\n"); + return ERR_PTR(-EINVAL); + } } if (need_devmap_managed) { @@ -296,8 +334,8 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) err_pfn_remap: pgmap_array_delete(res); err_array: - pgmap->ops->kill(pgmap); - pgmap->ops->cleanup(pgmap); + dev_pagemap_kill(pgmap); + dev_pagemap_cleanup(pgmap); return ERR_PTR(error); } EXPORT_SYMBOL_GPL(devm_memremap_pages); diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c index 82f901569e06..cd040b5abffe 100644 --- a/tools/testing/nvdimm/test/iomap.c +++ b/tools/testing/nvdimm/test/iomap.c @@ -100,26 +100,60 @@ static void nfit_test_kill(void *_pgmap) { struct dev_pagemap *pgmap = _pgmap; - WARN_ON(!pgmap || !pgmap->ref || !pgmap->ops || !pgmap->ops->kill || - !pgmap->ops->cleanup); - pgmap->ops->kill(pgmap); - pgmap->ops->cleanup(pgmap); + WARN_ON(!pgmap || !pgmap->ref); + + if (pgmap->ops && pgmap->ops->kill) + pgmap->ops->kill(pgmap); + else + percpu_ref_kill(pgmap->ref); + + if (pgmap->ops && pgmap->ops->cleanup) { + pgmap->ops->cleanup(pgmap); + } else { + wait_for_completion(&pgmap->done); + percpu_ref_exit(pgmap->ref); + } +} + +static void dev_pagemap_percpu_release(struct percpu_ref *ref) +{ + struct dev_pagemap *pgmap = + container_of(ref, struct dev_pagemap, internal_ref); + + complete(&pgmap->done); } void *__wrap_devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) { + int error; resource_size_t offset = pgmap->res.start; struct nfit_test_resource *nfit_res = get_nfit_res(offset); - if (nfit_res) { - int rc; - - rc = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); - if (rc) - return ERR_PTR(rc); - return nfit_res->buf + offset - nfit_res->res.start; + if (!nfit_res) + return devm_memremap_pages(dev, pgmap); + + pgmap->dev = dev; + if (!pgmap->ref) { + if (pgmap->ops && (pgmap->ops->kill || pgmap->ops->cleanup)) + return ERR_PTR(-EINVAL); + + init_completion(&pgmap->done); + error = percpu_ref_init(&pgmap->internal_ref, + dev_pagemap_percpu_release, 0, GFP_KERNEL); + if (error) + return ERR_PTR(error); + pgmap->ref = &pgmap->internal_ref; + } else { + if (!pgmap->ops || !pgmap->ops->kill || !pgmap->ops->cleanup) { + WARN(1, "Missing reference count teardown definition\n"); + return ERR_PTR(-EINVAL); + } } - return devm_memremap_pages(dev, pgmap); + + error = devm_add_action_or_reset(dev, nfit_test_kill, pgmap); + if (error) + return ERR_PTR(error); + return nfit_res->buf + offset - nfit_res->res.start; } EXPORT_SYMBOL_GPL(__wrap_devm_memremap_pages); From patchwork Wed Jun 26 12:27:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017715 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 D51F91398 for ; Wed, 26 Jun 2019 12:28:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C5104287A8 for ; Wed, 26 Jun 2019 12:28:37 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C36F4287AB; Wed, 26 Jun 2019 12:28:37 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 57915287B8 for ; Wed, 26 Jun 2019 12:28:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89C648E000E; Wed, 26 Jun 2019 08:28:14 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7D7088E0005; Wed, 26 Jun 2019 08:28:14 -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 5FFA38E000E; Wed, 26 Jun 2019 08:28:14 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by kanga.kvack.org (Postfix) with ESMTP id 251008E0005 for ; Wed, 26 Jun 2019 08:28:14 -0400 (EDT) Received: by mail-pf1-f200.google.com with SMTP id q14so1682276pff.8 for ; Wed, 26 Jun 2019 05:28:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=YDLkJcbbU4N/zfzWVPo9ZgCQKX5AsR9fCDGQSDpCCD0=; b=f2nDLqHdAHQ1QiCTWS0J3GV5c9I0weG3Xfhy0guNkwpdfvCtPuNwNNiGZ9yIKNi9yj w5Ij5EfPUhM9Pay0htHVPxi8ZIZBi+mr37NE4RCnrsOaYSU1XV5DpyK0hHrqoZfythdg 3PbSnlMWhgwDAlLB4hmBUsg4xxgWrlfpGacj9qq3z+LDvHGfsJlNTxyzCF64JpgAOyPK EvLnJBR+gyvlEcgeJG677pM2dD9/+OsKqrJ3FtQiEKR90sFt8XS875bXcNTltwmTbrQL xQLA3ZhqaQKQXjvCIfRMPIdFk57gJlKqrSMY5ahZUL97xukbBSHq/ZsEwBakJXpmETJL jLMA== X-Gm-Message-State: APjAAAWVnh4hAN1hbmQt67CKP+80CVx0g8hjIX1kH7mERouZvkEz+j4Q 7goU9/Q8VtO4Mrp10k1i2gp1i0X+5UjSwxL343O6oO9/7MCxWkk08XhTC1hHY4dl3/DCUfkw11o ZZrir6IbgK2lF/18dQkNue70pSfmKZI31Xl36DIWHLrrnDOqUQSCrUi8yWYhVeSE= X-Received: by 2002:a63:d0:: with SMTP id 199mr2739226pga.85.1561552093735; Wed, 26 Jun 2019 05:28:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqzQVdU9Wbq1EbMOCvuaicC7KreR+qQ6VRLnpYDwnbIh36ibFv3MP4c/yODuYAQ+F+QT1H3M X-Received: by 2002:a63:d0:: with SMTP id 199mr2739161pga.85.1561552092880; Wed, 26 Jun 2019 05:28:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552092; cv=none; d=google.com; s=arc-20160816; b=TV5O/mk6uHIu8ZqJ/mZW5PBF5KEa3kbMTrSGg01tZ2iv+Wa824PkKIxNmO6BJy9hlG Bnh/2L8/nm+BL5sBjQN7+JK+1gmqhjumPVB5TjJRNJxXHT+cPmTZsn/2LZVjvijnZHRw 9FcJ9/rW4WK3RPiChH7+dM216Yayn66WYNhf0RJY6IxiKwgcW7rFe9ndCqoDK6S8U6l0 Ntxn9wxxlDdAxqHHMpHLMYFFo8pgU5FAciPij0vevRL/t5RRLwFvhRiWJFjzNF3Oyls8 X2v5ZJrU/4GQk7t3mk10sF2QtRcwcsWwNusTJQBeKabCbOSrF3R0dJzlXnI/RXMWGyEK Nb7Q== 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:dkim-signature; bh=YDLkJcbbU4N/zfzWVPo9ZgCQKX5AsR9fCDGQSDpCCD0=; b=m9lGvb5u7DZHPQIn8Ga5gTXnAMNcLtVH7rEySJhWqlwih1B7mHblhtZUOxHhSOk/ez NxmudoyyQnZ8cxx6swuIn/wS4Yi2MNMBl1fGEhrNzEJYg9cx0tfJENv7ipV47iQWDkfv ZBR28AlDGPwxSF9qzdrAkA7U4XDHRi4+qYJdb4M375X4L9UuqIbtRcVwDR0Dpz61PTD7 xGFD4YSSv2P17P1vr5EVORzRNZBgj7iEHyxsKIaACb0RvBdHSt/GoWnW9AJfooQ0LhdL YJR8bmHCq5iNzO0C/+EHLlGA5mRdCaxbNT1rzzb9+09RCWowNM9Ng/BpC0t4sGL2sE4x LmsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=eqf0zYAq; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id r34si4278906pgl.141.2019.06.26.05.28.12 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:12 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=eqf0zYAq; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=YDLkJcbbU4N/zfzWVPo9ZgCQKX5AsR9fCDGQSDpCCD0=; b=eqf0zYAqZkZeG8aDStJr1BpZ1P ESvtZ/x6goy5uCLOi8uh5odrF/jDvEPUaqDs779fgL8qsCyiCG2Ery24ccFf7Y0roHYb5/v+BzjZd xvJYhdsaPbrOrKlFB9NzVbHgKqVz953pfvNGqyyv5cMEWoHLfF9YDaBYwCVVotAmsfAouontNfJIt pC/KsdDr1ehz4StOtp3FSfKb+O6soSwumbQYEJcyvsfr9PEr8MVPAAeAHs4HYu/6nrrbmT2tdJj4K nauKDKfBWnolN5vCPrT8Befr6TTsUp5glW5APuxKXXVhJiU6XtHj2xrRMVBIAKAAazFHBbPh/Dc4n j7M/oClg==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg721-0001X8-Jr; Wed, 26 Jun 2019 12:28:10 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 16/25] device-dax: use the dev_pagemap internal refcount Date: Wed, 26 Jun 2019 14:27:15 +0200 Message-Id: <20190626122724.13313-17-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 functionality is identical to the one currently open coded in device-dax. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- drivers/dax/dax-private.h | 4 ---- drivers/dax/device.c | 43 --------------------------------------- 2 files changed, 47 deletions(-) diff --git a/drivers/dax/dax-private.h b/drivers/dax/dax-private.h index b4177aafbbd1..c915889d1769 100644 --- a/drivers/dax/dax-private.h +++ b/drivers/dax/dax-private.h @@ -43,8 +43,6 @@ struct dax_region { * @target_node: effective numa node if dev_dax memory range is onlined * @dev - device core * @pgmap - pgmap for memmap setup / lifetime (driver owned) - * @ref: pgmap reference count (driver owned) - * @cmp: @ref final put completion (driver owned) */ struct dev_dax { struct dax_region *region; @@ -52,8 +50,6 @@ struct dev_dax { int target_node; struct device dev; struct dev_pagemap pgmap; - struct percpu_ref ref; - struct completion cmp; }; static inline struct dev_dax *to_dev_dax(struct device *dev) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index b5257038c188..1af823b2fe6b 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -14,36 +14,6 @@ #include "dax-private.h" #include "bus.h" -static struct dev_dax *ref_to_dev_dax(struct percpu_ref *ref) -{ - return container_of(ref, struct dev_dax, ref); -} - -static void dev_dax_percpu_release(struct percpu_ref *ref) -{ - struct dev_dax *dev_dax = ref_to_dev_dax(ref); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - complete(&dev_dax->cmp); -} - -static void dev_dax_percpu_exit(struct dev_pagemap *pgmap) -{ - struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - wait_for_completion(&dev_dax->cmp); - percpu_ref_exit(pgmap->ref); -} - -static void dev_dax_percpu_kill(struct dev_pagemap *pgmap) -{ - struct dev_dax *dev_dax = container_of(pgmap, struct dev_dax, pgmap); - - dev_dbg(&dev_dax->dev, "%s\n", __func__); - percpu_ref_kill(pgmap->ref); -} - static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma, const char *func) { @@ -441,11 +411,6 @@ static void dev_dax_kill(void *dev_dax) kill_dev_dax(dev_dax); } -static const struct dev_pagemap_ops dev_dax_pagemap_ops = { - .kill = dev_dax_percpu_kill, - .cleanup = dev_dax_percpu_exit, -}; - int dev_dax_probe(struct device *dev) { struct dev_dax *dev_dax = to_dev_dax(dev); @@ -463,15 +428,7 @@ int dev_dax_probe(struct device *dev) return -EBUSY; } - init_completion(&dev_dax->cmp); - rc = percpu_ref_init(&dev_dax->ref, dev_dax_percpu_release, 0, - GFP_KERNEL); - if (rc) - return rc; - - dev_dax->pgmap.ref = &dev_dax->ref; dev_dax->pgmap.type = MEMORY_DEVICE_DEVDAX; - dev_dax->pgmap.ops = &dev_dax_pagemap_ops; addr = devm_memremap_pages(dev, &dev_dax->pgmap); if (IS_ERR(addr)) return PTR_ERR(addr); From patchwork Wed Jun 26 12:27:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017721 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 EE88B1398 for ; Wed, 26 Jun 2019 12:28:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DD7D02862D for ; Wed, 26 Jun 2019 12:28:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D1664287B8; Wed, 26 Jun 2019 12:28:41 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 BCFB7287AA for ; Wed, 26 Jun 2019 12:28:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 208CE8E0019; Wed, 26 Jun 2019 08:28:17 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 195068E0005; Wed, 26 Jun 2019 08:28:17 -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 0349B8E0019; Wed, 26 Jun 2019 08:28:16 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id B876C8E0005 for ; Wed, 26 Jun 2019 08:28:16 -0400 (EDT) Received: by mail-pg1-f199.google.com with SMTP id k19so1541021pgl.0 for ; Wed, 26 Jun 2019 05:28:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=O8xTiSY5VJngyKM6+yEPSiv/sNrzxm4spoPZD5fr/FE=; b=KAjDH2wHx9HsXr3HqrMItRY+orju0KeGU1ozD0TavnK7QzIrCYoWPVnEWMhus3imBJ y5EjXMq980G+7381M9uA7UZyY6kV9SSs5AQbg+/uH0rhlzsKaS0iecWVnA4y/sieEYpE SSW7h5I36HzTVyd4vt7xLMXcmv8Ptgz75lOjAPXAvrrVALV2tiHnh0gvReBbOtcp74Cq o4C95f6Q7WRuPWGYv2X0MwbW/R8W+w/ya5G8s4o7mwl1KHOZhXvIRlRN2RXbAb5z77Wi vxgoDKFS0lezqd0tkdxuT2AAv400o5/CvM+bq3SPubDl1Lt9jT0sxzM/d2bcTgu6qhUz h3BA== X-Gm-Message-State: APjAAAVlyWUUZpXvSQr8Fo3sj42F3kDa/C9EoAnURLMj4NOQiy9HOgKG W5M3GKPe/vR1j3cMMkwuQVfdCjW5fPEmYtFww3lVwJgelqn4C5cboZZ9u/kadsktNzhrLHK0ugf 12TkgIr7F7s4uExe5Mw1Ndzy9ulYBy1MgNYa14vDjPfj7nhL/aF3bKcRBHRT5cjY= X-Received: by 2002:a65:50c3:: with SMTP id s3mr2711265pgp.177.1561552096265; Wed, 26 Jun 2019 05:28:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqwsTsF0YN4CLkc08GfUsrrCWNyYUUJSS0BmoKie8uvij7eB9SCC2ypoWgMOr99S6ueMZY70 X-Received: by 2002:a65:50c3:: with SMTP id s3mr2711218pgp.177.1561552095471; Wed, 26 Jun 2019 05:28:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552095; cv=none; d=google.com; s=arc-20160816; b=XR0YxXhR8mXOCat6nlaHZj+gGUIwsl1gvTE3sVq8iGwg+U3CL8Ne2LMXFUyr+T9jaQ HhgF/pwnlEQd1+DqO/Yv5MJxY2pUYy+SQUuvv0ohI6X9zhdm1bnU4SM+F6nclXU/5pjX zME5vNfTwrNpyJ76ydom8JHmt8dlr5xU+TYxii7LtmE2pZhw8p5HmsQdi63QJWANLk8l 1Yv6P6EjAho7z02FF/qtuXg5+wqNSmrlDbfCQmfi5TILO8/mjFuOlVDhEl3+Q+07/HU6 TRhdeSKXhXXvVC2YdpKFxmV6FdyRY2Sp7OBIhsGG/5lhWtPM9hqf/SOzQBUSzZS/5kGH 53lA== 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:dkim-signature; bh=O8xTiSY5VJngyKM6+yEPSiv/sNrzxm4spoPZD5fr/FE=; b=jYBpoBEDPeW5mK6fVPfvu7TOwU7G9FegEH9icDLCKlLApsCVW6wWfXjyxwWw+sjyyF 93JbPt++cGx1tVZsMZag+cHMV1N5//vCZD3lqWwT7gT/Cee0tgI52K4wMK1+UUSciFWW gDaVlfelS2wy6FCJGO2mVsT5/i8ygR+kaptaiDqs/+Epu7SrtJu+QLaUWu+et6h84+UJ 7Pg2EHbBvZDWBKsGjKtpTsJq5WMYjDXq/kZA6y8ZS8kMzRLTf76GWx0PWS0KFFAwv9Kb TzSUiIM8wJ8JeBlu4n5zIY3DrXP10/Fd3iwX7vnotFzMp2hAeX1pXXlG9fyHoVJTUMX2 zPYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=uYRez3iz; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id m7si1911832pjs.63.2019.06.26.05.28.15 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=uYRez3iz; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=O8xTiSY5VJngyKM6+yEPSiv/sNrzxm4spoPZD5fr/FE=; b=uYRez3izVT1tTJ2inEjlr+sqzJ mQ/FCU73nGQFwZr8hbyBONC+pRy4Y5zWmPKwE4e+/VnM1Wd54RXoko27P7OJdwYWEVZyOfhCpakZS NceKKQi8BIED/6Zf1boEQOc2fhm7lXJtPKrQRbyudvIk9ok/2lsM7oKgHQmN0A0NUt1wauMOTrnNb YztM4+JK3tURRAcVPdB2QDw04eLlKqyMRUZblAnCS+8D4s/P8NuKrPuYvEzOGKhpFIyCfq1gDkpSy T+Z7xfSW0MFySDPpzpi2T3kL1+k8AT2+W9JX8ZK8GzydNUFd8VyzyqZ163oz2EZ+8MZT6vIfA9Trk 2ljmFk6A==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg724-0001YD-CI; Wed, 26 Jun 2019 12:28:12 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 17/25] PCI/P2PDMA: use the dev_pagemap internal refcount Date: Wed, 26 Jun 2019 14:27:16 +0200 Message-Id: <20190626122724.13313-18-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 functionality is identical to the one currently open coded in p2pdma.c. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny Reviewed-by: Logan Gunthorpe Tested-by: Logan Gunthorpe --- drivers/pci/p2pdma.c | 57 ++++---------------------------------------- 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index ebd8ce3bba2e..608f84df604a 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -24,12 +24,6 @@ struct pci_p2pdma { bool p2pmem_published; }; -struct p2pdma_pagemap { - struct dev_pagemap pgmap; - struct percpu_ref ref; - struct completion ref_done; -}; - static ssize_t size_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -78,32 +72,6 @@ static const struct attribute_group p2pmem_group = { .name = "p2pmem", }; -static struct p2pdma_pagemap *to_p2p_pgmap(struct percpu_ref *ref) -{ - return container_of(ref, struct p2pdma_pagemap, ref); -} - -static void pci_p2pdma_percpu_release(struct percpu_ref *ref) -{ - struct p2pdma_pagemap *p2p_pgmap = to_p2p_pgmap(ref); - - complete(&p2p_pgmap->ref_done); -} - -static void pci_p2pdma_percpu_kill(struct dev_pagemap *pgmap) -{ - percpu_ref_kill(pgmap->ref); -} - -static void pci_p2pdma_percpu_cleanup(struct dev_pagemap *pgmap) -{ - struct p2pdma_pagemap *p2p_pgmap = - container_of(pgmap, struct p2pdma_pagemap, pgmap); - - wait_for_completion(&p2p_pgmap->ref_done); - percpu_ref_exit(&p2p_pgmap->ref); -} - static void pci_p2pdma_release(void *data) { struct pci_dev *pdev = data; @@ -153,11 +121,6 @@ static int pci_p2pdma_setup(struct pci_dev *pdev) return error; } -static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { - .kill = pci_p2pdma_percpu_kill, - .cleanup = pci_p2pdma_percpu_cleanup, -}; - /** * pci_p2pdma_add_resource - add memory for use as p2p memory * @pdev: the device to add the memory to @@ -171,7 +134,6 @@ static const struct dev_pagemap_ops pci_p2pdma_pagemap_ops = { int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, u64 offset) { - struct p2pdma_pagemap *p2p_pgmap; struct dev_pagemap *pgmap; void *addr; int error; @@ -194,26 +156,15 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, return error; } - p2p_pgmap = devm_kzalloc(&pdev->dev, sizeof(*p2p_pgmap), GFP_KERNEL); - if (!p2p_pgmap) + pgmap = devm_kzalloc(&pdev->dev, sizeof(*pgmap), GFP_KERNEL); + if (!pgmap) return -ENOMEM; - - init_completion(&p2p_pgmap->ref_done); - error = percpu_ref_init(&p2p_pgmap->ref, - pci_p2pdma_percpu_release, 0, GFP_KERNEL); - if (error) - goto pgmap_free; - - pgmap = &p2p_pgmap->pgmap; - pgmap->res.start = pci_resource_start(pdev, bar) + offset; pgmap->res.end = pgmap->res.start + size - 1; pgmap->res.flags = pci_resource_flags(pdev, bar); - pgmap->ref = &p2p_pgmap->ref; pgmap->type = MEMORY_DEVICE_PCI_P2PDMA; pgmap->pci_p2pdma_bus_offset = pci_bus_address(pdev, bar) - pci_resource_start(pdev, bar); - pgmap->ops = &pci_p2pdma_pagemap_ops; addr = devm_memremap_pages(&pdev->dev, pgmap); if (IS_ERR(addr)) { @@ -224,7 +175,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, error = gen_pool_add_owner(pdev->p2pdma->pool, (unsigned long)addr, pci_bus_address(pdev, bar) + offset, resource_size(&pgmap->res), dev_to_node(&pdev->dev), - &p2p_pgmap->ref); + pgmap->ref); if (error) goto pages_free; @@ -236,7 +187,7 @@ int pci_p2pdma_add_resource(struct pci_dev *pdev, int bar, size_t size, pages_free: devm_memunmap_pages(&pdev->dev, pgmap); pgmap_free: - devm_kfree(&pdev->dev, p2p_pgmap); + devm_kfree(&pdev->dev, pgmap); return error; } EXPORT_SYMBOL_GPL(pci_p2pdma_add_resource); From patchwork Wed Jun 26 12:27:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017725 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 47F6D1398 for ; Wed, 26 Jun 2019 12:28:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3666428437 for ; Wed, 26 Jun 2019 12:28:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2AEB0287AB; Wed, 26 Jun 2019 12:28:44 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 B7F2628437 for ; Wed, 26 Jun 2019 12:28:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 983F38E0006; Wed, 26 Jun 2019 08:28:19 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 90CF98E0005; Wed, 26 Jun 2019 08:28:19 -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 75FEC8E0006; Wed, 26 Jun 2019 08:28:19 -0400 (EDT) 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 387848E0005 for ; Wed, 26 Jun 2019 08:28:19 -0400 (EDT) Received: by mail-pl1-f199.google.com with SMTP id p14so1374248plq.1 for ; Wed, 26 Jun 2019 05:28:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=QG86Gl5gjTkDcVd0KCiaK4D2j85y6OTuL+IQQv8I36qV6wh8yCkNVrL8vXEiFEKBcT Jk2xU2MFszdBaANOIGzRaUvg7VxtEuIP1wBXuHd84dHHd5q9NeiZon2oKAc7QEcfHv93 iKVFOvDEILHT7FdbFiOHCCOOxHE9y25fKvXG8HXxcxrwglSp4su84Hl1uKvZuoZO713U w9mc4CYqnA+foLK+EIND42mV8JGgpDiU4ncUYE10Jbuq9jHPrOcTKGiUVUrBTrdj+LFs Y9BxOq1mzP3VVLZdBFIwAIVsItzZ/fCZcW3uBI8jv0jRmuqHAOynlARtFF0K/4M/swRw 8u/g== X-Gm-Message-State: APjAAAVOwWElTj9Lre8bPXtdwJiYa4TGRmpNUhFfhQ0DPF7mjsRqfffA j3q4n94KsDDDAfx8J9D+dusinIDwEyzTDYietcGJeFvo0GdWTjY53brqyTC99Ot+qKAevMpYso7 eVnw2ZJp/4BzUqdBzvagVFBkJMh4n1i/gKEfe6w+xOyv4P7kIZIc7uq9lrB0SXhM= X-Received: by 2002:a17:90a:21ac:: with SMTP id q41mr4524156pjc.31.1561552098908; Wed, 26 Jun 2019 05:28:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqyM8MvUkETI66ssnqn3Zbiqv9VlJgEM94UvuWEbfDVvLTyismajP6JOZFhBFUBmYh3X9tkm X-Received: by 2002:a17:90a:21ac:: with SMTP id q41mr4524090pjc.31.1561552098281; Wed, 26 Jun 2019 05:28:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552098; cv=none; d=google.com; s=arc-20160816; b=OctmhIqGGOt+LZsXZMUtNcwEk/yqhGk3ij/wzlDNY3D38g7Wq5Kz7JurbLn3XZ/EEw 9uQNYghbuthzB3rNVnvXaxo6XAv8EAr4W0x57ESjmijQjaAmvgiKFxbb1utBjggK7vp+ KxwbejGyUs1+/bAfcI44pVLAs2GFaYgwikQ2TJB1b4KGZwOr2+YZBwL0WnwBSY+An7/d J1aykTwMRfk/19fANn8HujJQrIGrtWPEodmqFGEXDQDyZa2BB47l13wIPeucTmoeHG48 Mzup9IMXGLSssq3fk2aOYkefzkJy23rbPylj9L6UdzL9okqLZ8k/OgfODd79+myxX6k9 pg/Q== 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:dkim-signature; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=iEeGd7PICx3YrN9DkEe+jwK1utl5ybJfJTD1RZHuoyLgXpHK4aUjSzVJWhgdB4cPtP VfZTtlc9ZtsF6NRkuuvcVTOSG+SYZRpmR8i/jNnOjH4cSO5S404k3DVN6Z2fcV7RcZ7e 9dOFJj9PK/rX4deiBVPfUN92hZof28SVSMbOqfEFxIE4waMHgk/l/+PtLc7FCZRTOflZ KearFkER7bwMW2dTHNdv106a59cLyR2LlCdndLs9psc51cjQSXS5g9OFBn1lgYsOWyQL jdkL2ouuhZAzmkzpY5t27yW1z+BjirL7/9yjHm2k31S/6GN0v5Yysr4besuaY2jnHc0o RnoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qt1wzdpe; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id j4si15889591pgh.209.2019.06.26.05.28.18 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qt1wzdpe; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=wJ4xmBbrpfmUG188a6jPO21+BmohIhmVPW5AXcG365o=; b=qt1wzdpeXOioJoeLjcBGzBBVU/ Sr6D01p4bOPlfFv7A/XbcaGQsl1IH01GeMcCCke5SJh7+fpyw5+rIKzgn9byxwe1kgVAu1j/h7ROQ 4lvA5eeeukgmWSeBeKgEDuEBjjwRhGPDC9AIWQm+7dOYdaQhTinbVKVEskkE0Io3IDHriXiis+aB9 8mEJ/G0aXx04YeP8uuuRQuTeOrRGeFyVQ4Rx8U+Noyv62xRv450IEmFtFO+E+MvzvI1V277cC6Z8i R9Dvb48L9i++e+EKM3J8sWleQK00iEHpItPQXvfVhC/OdM0WIglOrdTN/KRiePoYY842rwdj3ZwLW WRt9i5hw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg726-0001ZQ-Su; Wed, 26 Jun 2019 12:28:15 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 18/25] nouveau: use alloc_page_vma directly Date: Wed, 26 Jun 2019 14:27:17 +0200 Message-Id: <20190626122724.13313-19-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 hmm_vma_alloc_locked_page is scheduled to go away, use the proper mm function directly. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index 40c47d6a7d78..a50f6fd2fe24 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -148,11 +148,12 @@ nouveau_dmem_fault_alloc_and_copy(struct vm_area_struct *vma, if (!spage || !(src_pfns[i] & MIGRATE_PFN_MIGRATE)) continue; - dpage = hmm_vma_alloc_locked_page(vma, addr); + dpage = alloc_page_vma(GFP_HIGHUSER, vma, addr); if (!dpage) { dst_pfns[i] = MIGRATE_PFN_ERROR; continue; } + lock_page(dpage); dst_pfns[i] = migrate_pfn(page_to_pfn(dpage)) | MIGRATE_PFN_LOCKED; From patchwork Wed Jun 26 12:27:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017729 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 BA8B014C0 for ; Wed, 26 Jun 2019 12:28:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA87E287B1 for ; Wed, 26 Jun 2019 12:28:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9F086287A8; Wed, 26 Jun 2019 12:28:47 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 F306E2862D for ; Wed, 26 Jun 2019 12:28:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE2A98E001A; Wed, 26 Jun 2019 08:28:21 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A6D0A8E0005; Wed, 26 Jun 2019 08:28:21 -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 8E71B8E001A; Wed, 26 Jun 2019 08:28:21 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by kanga.kvack.org (Postfix) with ESMTP id 4DE4A8E0005 for ; Wed, 26 Jun 2019 08:28:21 -0400 (EDT) Received: by mail-pf1-f197.google.com with SMTP id y7so1681663pfy.9 for ; Wed, 26 Jun 2019 05:28:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=YZSTGTF7nnEADo+LQJNbZT7Ey+gBHpzeh+2lLfnpLT2KBX0CL8JQ3munFxxswpHZoo PM5FGwDKVE1It7R578ToUOCaZtH4XefnIVTnvfZ6WSO9YLSt3tQ5rBRlljcZJBZ+UQ8I PPuHtcYcMKtUvKUfxPC9P4Un0sQtQpxHT8eesZnxOTjp/Bn42AODgAp64lhGq5SgdKkW 7qHOt4luB8xUoHFCHkneplajwaFXduolUrT4lp+Rq7SquJz7tZOOp8GdtOWoejOoukoj IMGtqAAXiCeWBXTm2ueXkOWosLnQUrAEcQy4K/B0MfgYnYA2xzPNbhmM4P03mbhoWNne xQsw== X-Gm-Message-State: APjAAAWAjYon10+mnZWZ9fp5iIX0p6YnvA16nodIBP8+IT7brwtIHJg6 D883gavGoZ85BEb7e3isyOX73DLJz9rrp/f6ITaDGUOf8M/6K7oIU0sTPbnJqOFMxXTpG/qFVqo cC54PTPijLXmIkrhvSlhWy3kw4q51HiHqgXvj8bnXole4XFOpiTD3UO9zvs3gNEY= X-Received: by 2002:a17:90a:8a15:: with SMTP id w21mr4515221pjn.134.1561552100984; Wed, 26 Jun 2019 05:28:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqyHhVRvzsjyj7OzOzAuLaUJO7p67z4agbrlbku5uJr/h3HwPYKf+D1K1pY2UKBssLXYyLfT X-Received: by 2002:a17:90a:8a15:: with SMTP id w21mr4515144pjn.134.1561552100090; Wed, 26 Jun 2019 05:28:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552100; cv=none; d=google.com; s=arc-20160816; b=nSOfcymj3ouEN5In46COVXNPwpw3Odd3e6iBmBWjCcQpohbUdM31A+zSGDv3fyPjA1 Ziao1cDvfovHIWuRxgUKwt6BoM9VjEb90/2lVZpixR84eN+juFXOd5gRMwLpo/ua0jG4 QqkikN1oyCh4qM8cwExlTgPIsXd/VCii661577BXXFJRTQcIfb1+QXrwWUiUdVQJawRF sB8FxsJ60S8o9mQ3uI5YaAehf2/kT2G++w0Fm/8erZTPtCZPF+lw7wh+03xP4pSgJKSc q+Oi00zJCDn+0/kmyl42RGMXKzcVbV0kxr4K4q/s6QHb5+4KLd2u6FqY1HwUfYp+9u2I DPuQ== 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:dkim-signature; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=FIc57KcSakXlKsIioH1RBcYVJY1Cie/cT/aDgGmDO9tUbhgtHFjPIE8p1Zra7hsS0x ddwxgarf39vy2KlPNWCN+mFtgP+DjelKpoUyuB9EyMPJQNPZXmDzAFsTTG5GjS1PfZ+s LtqiLCL+l7GRzOEyZ7xFFM6Q1gyV8v1AVrLIk9WpIRhLcwYWR3DX/leHWOuYpzFTxqLv WPG/y8FUvcSW9k85VCsaS1qLaSGFTM+nsP316oMmzii68+duEbNuFX6GFA4zSscywyQG la0DxD1sZFexcLVdtfDJqmfpK8Q3caSmQfyWJl988Dd+pB04+Twxh5TVexmppargTBO5 meaA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jgy09Umb; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id q23si1920964pjp.63.2019.06.26.05.28.19 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=jgy09Umb; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=h3EyOBgzIzwY5aTyr8+M/7FbufnJaVYVU0zNDtVIxKY=; b=jgy09UmbLfN+TWf3ytByumWWNU MBpzdiGmKPVtjV+r0URWfeF2E9GRBVEM/c8PnQUO2wZiW0zBK04cKMOZbgGnhwOq4cUSwiniKoMeX nT+P2ZmloBddnkxKnDLCv0p9C9VKIfvJhCYoDMLDhebT7jxtq+qTcxT+DpTV1aEPuh24GfFM+21jc kOYj7R6c4SAui71wSqq81SUZTzHwpTbjiSuAhN1+J8BxHpjAxvSj7bpXQIAp5IJs+sveIvxCpy3e5 M8/sKyXAXPj85iSMU4X7j+qpHu/XpfkJAYPDnm1oVPWTY+HoDT6ptwrKa0Hjb/nKTsoEaSJKqs41g dD55ye6w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg729-0001ab-Cw; Wed, 26 Jun 2019 12:28:17 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 19/25] nouveau: use devm_memremap_pages directly Date: Wed, 26 Jun 2019 14:27:18 +0200 Message-Id: <20190626122724.13313-20-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Just use devm_memremap_pages instead of hmm_devmem_add pages to allow killing that wrapper which doesn't provide a whole lot of benefits. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 82 ++++++++++++-------------- 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index a50f6fd2fe24..0fb7a44b8bc4 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -72,7 +72,8 @@ struct nouveau_dmem_migrate { }; struct nouveau_dmem { - struct hmm_devmem *devmem; + struct nouveau_drm *drm; + struct dev_pagemap pagemap; struct nouveau_dmem_migrate migrate; struct list_head chunk_free; struct list_head chunk_full; @@ -80,6 +81,11 @@ struct nouveau_dmem { struct mutex mutex; }; +static inline struct nouveau_dmem *page_to_dmem(struct page *page) +{ + return container_of(page->pgmap, struct nouveau_dmem, pagemap); +} + struct nouveau_dmem_fault { struct nouveau_drm *drm; struct nouveau_fence *fence; @@ -96,8 +102,7 @@ struct nouveau_migrate { unsigned long dma_nr; }; -static void -nouveau_dmem_free(struct hmm_devmem *devmem, struct page *page) +static void nouveau_dmem_page_free(struct page *page) { struct nouveau_dmem_chunk *chunk; unsigned long idx; @@ -260,29 +265,21 @@ static const struct migrate_vma_ops nouveau_dmem_fault_migrate_ops = { .finalize_and_map = nouveau_dmem_fault_finalize_and_map, }; -static vm_fault_t -nouveau_dmem_fault(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp) +static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf) { - struct drm_device *drm_dev = dev_get_drvdata(devmem->device); + struct nouveau_dmem *dmem = page_to_dmem(vmf->page); unsigned long src[1] = {0}, dst[1] = {0}; - struct nouveau_dmem_fault fault = {0}; + struct nouveau_dmem_fault fault = { .drm = dmem->drm }; int ret; - - /* * FIXME what we really want is to find some heuristic to migrate more * than just one page on CPU fault. When such fault happens it is very * likely that more surrounding page will CPU fault too. */ - fault.drm = nouveau_drm(drm_dev); - ret = migrate_vma(&nouveau_dmem_fault_migrate_ops, vma, addr, - addr + PAGE_SIZE, src, dst, &fault); + ret = migrate_vma(&nouveau_dmem_fault_migrate_ops, vmf->vma, + vmf->address, vmf->address + PAGE_SIZE, + src, dst, &fault); if (ret) return VM_FAULT_SIGBUS; @@ -292,10 +289,9 @@ nouveau_dmem_fault(struct hmm_devmem *devmem, return 0; } -static const struct hmm_devmem_ops -nouveau_dmem_devmem_ops = { - .free = nouveau_dmem_free, - .fault = nouveau_dmem_fault, +static const struct dev_pagemap_ops nouveau_dmem_pagemap_ops = { + .page_free = nouveau_dmem_page_free, + .migrate_to_ram = nouveau_dmem_migrate_to_ram, }; static int @@ -581,7 +577,8 @@ void nouveau_dmem_init(struct nouveau_drm *drm) { struct device *device = drm->dev->dev; - unsigned long i, size; + struct resource *res; + unsigned long i, size, pfn_first; int ret; /* This only make sense on PASCAL or newer */ @@ -591,6 +588,7 @@ nouveau_dmem_init(struct nouveau_drm *drm) if (!(drm->dmem = kzalloc(sizeof(*drm->dmem), GFP_KERNEL))) return; + drm->dmem->drm = drm; mutex_init(&drm->dmem->mutex); INIT_LIST_HEAD(&drm->dmem->chunk_free); INIT_LIST_HEAD(&drm->dmem->chunk_full); @@ -600,11 +598,8 @@ nouveau_dmem_init(struct nouveau_drm *drm) /* Initialize migration dma helpers before registering memory */ ret = nouveau_dmem_migrate_init(drm); - if (ret) { - kfree(drm->dmem); - drm->dmem = NULL; - return; - } + if (ret) + goto out_free; /* * FIXME we need some kind of policy to decide how much VRAM we @@ -612,14 +607,16 @@ nouveau_dmem_init(struct nouveau_drm *drm) * and latter if we want to do thing like over commit then we * could revisit this. */ - drm->dmem->devmem = hmm_devmem_add(&nouveau_dmem_devmem_ops, - device, size); - if (IS_ERR(drm->dmem->devmem)) { - kfree(drm->dmem); - drm->dmem = NULL; - return; - } - + res = devm_request_free_mem_region(device, &iomem_resource, size); + if (IS_ERR(res)) + goto out_free; + drm->dmem->pagemap.type = MEMORY_DEVICE_PRIVATE; + drm->dmem->pagemap.res = *res; + drm->dmem->pagemap.ops = &nouveau_dmem_pagemap_ops; + if (IS_ERR(devm_memremap_pages(device, &drm->dmem->pagemap))) + goto out_free; + + pfn_first = res->start >> PAGE_SHIFT; for (i = 0; i < (size / DMEM_CHUNK_SIZE); ++i) { struct nouveau_dmem_chunk *chunk; struct page *page; @@ -632,8 +629,7 @@ nouveau_dmem_init(struct nouveau_drm *drm) } chunk->drm = drm; - chunk->pfn_first = drm->dmem->devmem->pfn_first; - chunk->pfn_first += (i * DMEM_CHUNK_NPAGES); + chunk->pfn_first = pfn_first + (i * DMEM_CHUNK_NPAGES); list_add_tail(&chunk->list, &drm->dmem->chunk_empty); page = pfn_to_page(chunk->pfn_first); @@ -643,6 +639,10 @@ nouveau_dmem_init(struct nouveau_drm *drm) } NV_INFO(drm, "DMEM: registered %ldMB of device memory\n", size >> 20); + return; +out_free: + kfree(drm->dmem); + drm->dmem = NULL; } static void @@ -833,13 +833,7 @@ nouveau_dmem_migrate_vma(struct nouveau_drm *drm, static inline bool nouveau_dmem_page(struct nouveau_drm *drm, struct page *page) { - if (!is_device_private_page(page)) - return false; - - if (drm->dmem->devmem != page->pgmap->data) - return false; - - return true; + return is_device_private_page(page) && drm->dmem == page_to_dmem(page); } void From patchwork Wed Jun 26 12:27:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017735 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 D4E3014C0 for ; Wed, 26 Jun 2019 12:28:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BFA6D284B5 for ; Wed, 26 Jun 2019 12:28:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BDC742864B; Wed, 26 Jun 2019 12:28:50 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 5ED6E284B5 for ; Wed, 26 Jun 2019 12:28:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CB7CB8E001B; Wed, 26 Jun 2019 08:28:24 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C42368E0005; Wed, 26 Jun 2019 08:28:24 -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 A94488E001B; Wed, 26 Jun 2019 08:28:24 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by kanga.kvack.org (Postfix) with ESMTP id 6F7248E0005 for ; Wed, 26 Jun 2019 08:28:24 -0400 (EDT) Received: by mail-pf1-f200.google.com with SMTP id i27so1676520pfk.12 for ; Wed, 26 Jun 2019 05:28:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Q+TYvRiX1OhT+BScY8OczmwoERZbakk+9rslWoznBYs=; b=hdEgQceODGpubjzf+6+S8EKRwI0QwUGxJ9daiyWADdJBv3bzDN3Z3oGJ6aJAeEqWPg ZQMhF/IV8LfzMiip94/qfUeqJApI9ZCcc16BUeP2dkgXIuizzzM2Sqa3J2jk67Nck57C fzfCpFoTVQj46diL0kPGWnpRKLhImF8NmBdiElhkEQDFpJeRoKrscOAaaFPZ/qaZMrke 4+1n+MzOEscNGMeNTP6DxPokSWbC5b3XO66xtZHnCrO3SIcscVLhDNOc0y1DuIelaEs8 yylgGk5s7Vfg9M8Qkwqqf0yrbkrTnwDyYnRxQxzf0ggDUyyKzXx5mEtbNRvA7rGuOn/c r91w== X-Gm-Message-State: APjAAAUhtQyzvkFDLNGYRcLUacJyJmsmHSwZv+hKOfmge8ZTTGPUW8xd FpPaxxzIpeJwkiL8u8cr//V+7bWA6H4H/t1QuLfQ+k2YS7qZy0ulnlX0Bch/trP6WzBIW3oQDxh e+MhBUWDgLBfNNg8fKdp2fKIlnaeMNkAIBIxBLNx8BxpuaBYEY29EMQdv0IrqnpY= X-Received: by 2002:a17:90a:37e9:: with SMTP id v96mr4415057pjb.10.1561552104056; Wed, 26 Jun 2019 05:28:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqwXiKkK3dFHmGdXmYI8rlNig9CVbxb6PTUXF3JdKHWykyQXbsriaX1cZDmK3Z+EXCv8aTo1 X-Received: by 2002:a17:90a:37e9:: with SMTP id v96mr4414987pjb.10.1561552103379; Wed, 26 Jun 2019 05:28:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552103; cv=none; d=google.com; s=arc-20160816; b=tiyyIn1wR+Q7rZ7MhLTwRAjbl/vtudJY9dD3t7UceC7mHsbNeanDPLbf24QbU1lMmX i0TVsZjdQhbY7R71mCBReQaXWlTOvltE0SHjk0pbqJeLD3uvF6NPfut70AhEpttdYhQz xO6LW9Ij8RafghEvTBlfn+xMn6a0ZUuv3cFnOEKcfmQ65NXihrJG/lsCaxNhqTjhrn1b bcEDW0nGzQzb5Nybt5JZ/bep2Fnmyg39za7I55aXMePOyaxwgk9l8d51APR3Qc2/X/9n 3Pe6Uq2gvaRDJxAMLob2bdayildpX7L+ybptg8zOydw7k3BiHmWUrIBZv8ScCpofQ+o5 5Bfw== 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:dkim-signature; bh=Q+TYvRiX1OhT+BScY8OczmwoERZbakk+9rslWoznBYs=; b=Rpk7zi6btj7gjatMkbcexjPtfP3JqTFt/aL0pCfxmUKHiYjAt/N3fbhGaNUJHR/Cpk Z2DGFa4u2XXPEN4IUbhwK8wPtOfhbvri0V6m7NJpoTZ9VMlauLV7SLc/Gtd/JlPPwo3t VfzevIJVGfUmGwggO8SQHncCYmMXFGT6xAQNhlSxOCT4ZF8BHzjVI/nE5lSTOHY0mceQ xSfNj/bPgCBJTWrLKhgXL0efhUB1nmiy7p3ivQs2Fs7z1DwVyJR85CN1fEUWzFTHodn3 gUu1gpZ5oD+SOylJuccIyiEQGN5/Vxax5YI8JAiflKT+YvPoo34DkC+1wc9QfW/y0mKL kyOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=e1I2Wme7; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id b92si2019077pjc.17.2019.06.26.05.28.23 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=e1I2Wme7; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Q+TYvRiX1OhT+BScY8OczmwoERZbakk+9rslWoznBYs=; b=e1I2Wme7Ox3SphXo/U291LQsFi 3MsV4dR6yO4KCQ2FSAu9/N4uNapXRXs4dz5vWPTNn9ZH7fPwZipzQi6fhI8Ahdaljbwgv8TKqjmXy iKSKLEl5eN3aNB5BKVY6ZDuPBgqiMxHFj8zu/PfbrJi+Xtpji+RaiGnOKIVP+UaYs1dxMiAc3tNMj xepXmBCES099SHbE2RluDL2qHrXXOo3qYkTaXO9Ys5YBarsJezAR4o94rn4r7aSSJiEUq27AMLr7Q Sfv5eRswkyXs4C0cmqD2h6WkAQ+t0O12yKFFanMfEUC3M8QOGS50Xyrtpl16hCtphB5Nujt/+/gJl +J5cCWZw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72C-0001bU-3z; Wed, 26 Jun 2019 12:28:20 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 20/25] mm: remove hmm_vma_alloc_locked_page Date: Wed, 26 Jun 2019 14:27:19 +0200 Message-Id: <20190626122724.13313-21-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 only user of it has just been removed, and there wasn't really any need to wrap a basic memory allocator to start with. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- include/linux/hmm.h | 3 --- mm/hmm.c | 14 -------------- 2 files changed, 17 deletions(-) diff --git a/include/linux/hmm.h b/include/linux/hmm.h index ba19c19e24ed..1d55b7ea2da6 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -587,9 +587,6 @@ static inline void hmm_mm_init(struct mm_struct *mm) {} #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) struct hmm_devmem; -struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, - unsigned long addr); - /* * struct hmm_devmem_ops - callback for ZONE_DEVICE memory events * diff --git a/mm/hmm.c b/mm/hmm.c index e4470462298f..fdbd48771292 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1330,20 +1330,6 @@ EXPORT_SYMBOL(hmm_range_dma_unmap); #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -struct page *hmm_vma_alloc_locked_page(struct vm_area_struct *vma, - unsigned long addr) -{ - struct page *page; - - page = alloc_page_vma(GFP_HIGHUSER, vma, addr); - if (!page) - return NULL; - lock_page(page); - return page; -} -EXPORT_SYMBOL(hmm_vma_alloc_locked_page); - - static void hmm_devmem_ref_release(struct percpu_ref *ref) { struct hmm_devmem *devmem; From patchwork Wed Jun 26 12:27:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017745 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 639491580 for ; Wed, 26 Jun 2019 12:29:01 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 52E71287B1 for ; Wed, 26 Jun 2019 12:29:01 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4734A287BD; Wed, 26 Jun 2019 12:29:01 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 501F42871C for ; Wed, 26 Jun 2019 12:29:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95E7B8E001E; Wed, 26 Jun 2019 08:28:34 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8979A8E0005; Wed, 26 Jun 2019 08:28:34 -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 73AEA8E001E; Wed, 26 Jun 2019 08:28:34 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by kanga.kvack.org (Postfix) with ESMTP id 2FEA68E0005 for ; Wed, 26 Jun 2019 08:28:34 -0400 (EDT) Received: by mail-pf1-f198.google.com with SMTP id u21so1663002pfn.15 for ; Wed, 26 Jun 2019 05:28:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=1EWGF/F6e1vBHfjAA6nX1LYEAAsLgFm61+exsZF7p+E=; b=crFYw/HXXrkYdzvkU1AQPD4qS2z1GErWMghZo2+4VHQez/bI7qjTx6dgR2LX6P5kb8 wJux8acB04Yt1VclLkKI4nvPaxptqGVI3mpQWQQXzJucpiKlolYl+Uy8j/jefMJ3r/O1 CP4LlvCYmKcj7Q8tZp+bwlvIC849xUEmU6eYiN0eznJLn+v752jym5/h+HNAnxyQiTyI oyqeNeNj1k08f1pq9qWrQRT6tAUAbAh3uSTB1pF8n06Adz+S09apKnjboSUqmpkwCDpc 602RtDfJqenj9Neu4Pb1ULwSfNEUko1bzf0k3fdrdRCBnrTtUQ/CfCxjbfpJVYJOOoig ouDw== X-Gm-Message-State: APjAAAUsk1yRCfZ+ZViYg7Iwrwu+Bh0uoeYWLpuJvyyFUlcJOqXRxFgk 9NDVS0Srew9wzdTXDX8lUvSg5Ftx/C+T5bik8P4CBpDJR6EJtActQQegIeTPPFFv/486FRYDnXl 9vYrJpjxm25ELB6GpCKaYmP7jNqgiKO/Vh959HvY6SSAsy+l9Fxj8DMZuYnbqxSk= X-Received: by 2002:a65:6204:: with SMTP id d4mr2751146pgv.104.1561552113734; Wed, 26 Jun 2019 05:28:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqwqjGVuQmh+MPUpdaUYdBORVdS2rzTkBGo3XAzASLcOc+E9KsxpmKGAI6OUBu105TckwlFI X-Received: by 2002:a65:6204:: with SMTP id d4mr2751060pgv.104.1561552112448; Wed, 26 Jun 2019 05:28:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552112; cv=none; d=google.com; s=arc-20160816; b=s3dsDeTBMxnIatyz9k/lxwd8FcX7j4wOe6kpcjTrqtIVONj11XRvZQV0U+jLqHS/iD Q2UBuxBAsaaMqfjh1+aioZZC+d1YHVcdoz3xI56+UFv+X+9dcVK1J8voO8fOwGhlKAAI CLi1KBhYs9dtg05ITzV3LdBhBd5pHsoT2Q+tzOlsoSipJDXvt7ADDSqcG1m/MfOu+TRX vkF+Vl2kATBh5vYe3LbguUjplLU8rVJr8rlUxfk1D8BqfGAQIPwYFmL3ymFAvJ1Fce1s J4qQW2p0n2KhKhCfSI9X0mF20CxHeZZc4qQbWdyTU+SJLnAvsLme8/6ZwwlZy35Epb2R Tufw== 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:dkim-signature; bh=1EWGF/F6e1vBHfjAA6nX1LYEAAsLgFm61+exsZF7p+E=; b=ZT9WkFTB1cNxQHKSmoKeiW2RgfkuQbuVMURJV+8aLBNdHialWUIet9Jf8joZxYG13g 7sx8eCNzSYxjXzcxEOC8Cf89MEVl9J9schh59Dh0/FpzVOcOm41QUgIBb0/ae9m4tIxO 32soki3WirzebW50NY9yv+25XCOXxgc2zldjaV6I6zz2B3yCyaUiYU0to2OFEtVoTtKo Xppamik+YiDrs8InhxmL6gWsdsBVjIga7ALKBVY5ayHbARsBd6OSudLyB+Hv3EMWwjTE p3BrajrGktUIwOQ//OeqT2wZPQ0fZaDtlBl9jWst4K8KN83znwLi5+e54U/P/zGZw/5N 44aA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=bL49WJDD; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id y10si1877630pjr.21.2019.06.26.05.28.32 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=bL49WJDD; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=1EWGF/F6e1vBHfjAA6nX1LYEAAsLgFm61+exsZF7p+E=; b=bL49WJDDJc3uz+E3Tq04Tm5aOh 6UKiHfGJ4xc1EdjM+wIO+4O7TabN+U+mE4CUE7GVW/6hNT1G25p6zM6t2nVmATDNy70CoTYKvUXYh h63gBbqAnP0fS/lvCqryLq3sJaRMn4yQ/kLLVV4MhA9L5yzp96EXF7zgv5NJOti4WMo+m7s82bMJK tcjaFPnwpZ0KnnQ9gPRDwYlIZplqIULbGZnpwlX73gmGQjQ6zUyUid/upr/R6McnyA6o8yC/58lCE OCyyeu7FUxcUuZa0aNWyNmTN2ebeV0grSQhN82z/PKk4I5ke7M0SV3GzBYODNCZUs6sDgaWMbxtfQ or4ndx9w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72E-0001cj-Jv; Wed, 26 Jun 2019 12:28:23 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 21/25] mm: remove hmm_devmem_add Date: Wed, 26 Jun 2019 14:27:20 +0200 Message-Id: <20190626122724.13313-22-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 There isn't really much value add in the hmm_devmem_add wrapper and more, as using devm_memremap_pages directly now is just as simple. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- Documentation/vm/hmm.rst | 26 -------- include/linux/hmm.h | 129 --------------------------------------- mm/hmm.c | 110 --------------------------------- 3 files changed, 265 deletions(-) diff --git a/Documentation/vm/hmm.rst b/Documentation/vm/hmm.rst index 7cdf7282e022..50e1380950a9 100644 --- a/Documentation/vm/hmm.rst +++ b/Documentation/vm/hmm.rst @@ -329,32 +329,6 @@ directly using struct page for device memory which left most kernel code paths unaware of the difference. We only need to make sure that no one ever tries to map those pages from the CPU side. -HMM provides a set of helpers to register and hotplug device memory as a new -region needing a struct page. This is offered through a very simple API:: - - struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size); - void hmm_devmem_remove(struct hmm_devmem *devmem); - -The hmm_devmem_ops is where most of the important things are:: - - struct hmm_devmem_ops { - void (*free)(struct hmm_devmem *devmem, struct page *page); - int (*fault)(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - struct page *page, - unsigned flags, - pmd_t *pmdp); - }; - -The first callback (free()) happens when the last reference on a device page is -dropped. This means the device page is now free and no longer used by anyone. -The second callback happens whenever the CPU tries to access a device page -which it cannot do. This second callback must trigger a migration back to -system memory. - Migration to and from device memory =================================== diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 1d55b7ea2da6..86aa4ec3404c 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -585,135 +585,6 @@ static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ #if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -struct hmm_devmem; - -/* - * struct hmm_devmem_ops - callback for ZONE_DEVICE memory events - * - * @free: call when refcount on page reach 1 and thus is no longer use - * @fault: call when there is a page fault to unaddressable memory - * - * Both callback happens from page_free() and page_fault() callback of struct - * dev_pagemap respectively. See include/linux/memremap.h for more details on - * those. - * - * The hmm_devmem_ops callback are just here to provide a coherent and - * uniq API to device driver and device driver should not register their - * own page_free() or page_fault() but rely on the hmm_devmem_ops call- - * back. - */ -struct hmm_devmem_ops { - /* - * free() - free a device page - * @devmem: device memory structure (see struct hmm_devmem) - * @page: pointer to struct page being freed - * - * Call back occurs whenever a device page refcount reach 1 which - * means that no one is holding any reference on the page anymore - * (ZONE_DEVICE page have an elevated refcount of 1 as default so - * that they are not release to the general page allocator). - * - * Note that callback has exclusive ownership of the page (as no - * one is holding any reference). - */ - void (*free)(struct hmm_devmem *devmem, struct page *page); - /* - * fault() - CPU page fault or get user page (GUP) - * @devmem: device memory structure (see struct hmm_devmem) - * @vma: virtual memory area containing the virtual address - * @addr: virtual address that faulted or for which there is a GUP - * @page: pointer to struct page backing virtual address (unreliable) - * @flags: FAULT_FLAG_* (see include/linux/mm.h) - * @pmdp: page middle directory - * Returns: VM_FAULT_MINOR/MAJOR on success or one of VM_FAULT_ERROR - * on error - * - * The callback occurs whenever there is a CPU page fault or GUP on a - * virtual address. This means that the device driver must migrate the - * page back to regular memory (CPU accessible). - * - * The device driver is free to migrate more than one page from the - * fault() callback as an optimization. However if device decide to - * migrate more than one page it must always priotirize the faulting - * address over the others. - * - * The struct page pointer is only given as an hint to allow quick - * lookup of internal device driver data. A concurrent migration - * might have already free that page and the virtual address might - * not longer be back by it. So it should not be modified by the - * callback. - * - * Note that mmap semaphore is held in read mode at least when this - * callback occurs, hence the vma is valid upon callback entry. - */ - vm_fault_t (*fault)(struct hmm_devmem *devmem, - struct vm_area_struct *vma, - unsigned long addr, - const struct page *page, - unsigned int flags, - pmd_t *pmdp); -}; - -/* - * struct hmm_devmem - track device memory - * - * @completion: completion object for device memory - * @pfn_first: first pfn for this resource (set by hmm_devmem_add()) - * @pfn_last: last pfn for this resource (set by hmm_devmem_add()) - * @resource: IO resource reserved for this chunk of memory - * @pagemap: device page map for that chunk - * @device: device to bind resource to - * @ops: memory operations callback - * @ref: per CPU refcount - * @page_fault: callback when CPU fault on an unaddressable device page - * - * This an helper structure for device drivers that do not wish to implement - * the gory details related to hotplugging new memoy and allocating struct - * pages. - * - * Device drivers can directly use ZONE_DEVICE memory on their own if they - * wish to do so. - * - * The page_fault() callback must migrate page back, from device memory to - * system memory, so that the CPU can access it. This might fail for various - * reasons (device issues, device have been unplugged, ...). When such error - * conditions happen, the page_fault() callback must return VM_FAULT_SIGBUS and - * set the CPU page table entry to "poisoned". - * - * Note that because memory cgroup charges are transferred to the device memory, - * this should never fail due to memory restrictions. However, allocation - * of a regular system page might still fail because we are out of memory. If - * that happens, the page_fault() callback must return VM_FAULT_OOM. - * - * The page_fault() callback can also try to migrate back multiple pages in one - * chunk, as an optimization. It must, however, prioritize the faulting address - * over all the others. - */ - -struct hmm_devmem { - struct completion completion; - unsigned long pfn_first; - unsigned long pfn_last; - struct resource *resource; - struct device *device; - struct dev_pagemap pagemap; - const struct hmm_devmem_ops *ops; - struct percpu_ref ref; -}; - -/* - * To add (hotplug) device memory, HMM assumes that there is no real resource - * that reserves a range in the physical address space (this is intended to be - * use by unaddressable device memory). It will reserve a physical range big - * enough and allocate struct page for it. - * - * The device driver can wrap the hmm_devmem struct inside a private device - * driver struct. - */ -struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size); - /* * hmm_devmem_page_set_drvdata - set per-page driver data field * diff --git a/mm/hmm.c b/mm/hmm.c index fdbd48771292..90ca0cdab9db 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -1327,113 +1327,3 @@ long hmm_range_dma_unmap(struct hmm_range *range, } EXPORT_SYMBOL(hmm_range_dma_unmap); #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ - - -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -static void hmm_devmem_ref_release(struct percpu_ref *ref) -{ - struct hmm_devmem *devmem; - - devmem = container_of(ref, struct hmm_devmem, ref); - complete(&devmem->completion); -} - -static void hmm_devmem_ref_exit(struct dev_pagemap *pgmap) -{ - struct hmm_devmem *devmem; - - devmem = container_of(pgmap, struct hmm_devmem, pagemap); - wait_for_completion(&devmem->completion); - percpu_ref_exit(pgmap->ref); -} - -static void hmm_devmem_ref_kill(struct dev_pagemap *pgmap) -{ - percpu_ref_kill(pgmap->ref); -} - -static vm_fault_t hmm_devmem_migrate_to_ram(struct vm_fault *vmf) -{ - struct hmm_devmem *devmem = - container_of(vmf->page->pgmap, struct hmm_devmem, pagemap); - - return devmem->ops->fault(devmem, vmf->vma, vmf->address, vmf->page, - vmf->flags, vmf->pmd); -} - -static void hmm_devmem_free(struct page *page) -{ - struct hmm_devmem *devmem = - container_of(page->pgmap, struct hmm_devmem, pagemap); - - devmem->ops->free(devmem, page); -} - -static const struct dev_pagemap_ops hmm_pagemap_ops = { - .page_free = hmm_devmem_free, - .kill = hmm_devmem_ref_kill, - .cleanup = hmm_devmem_ref_exit, - .migrate_to_ram = hmm_devmem_migrate_to_ram, -}; - -/* - * hmm_devmem_add() - hotplug ZONE_DEVICE memory for device memory - * - * @ops: memory event device driver callback (see struct hmm_devmem_ops) - * @device: device struct to bind the resource too - * @size: size in bytes of the device memory to add - * Returns: pointer to new hmm_devmem struct ERR_PTR otherwise - * - * This function first finds an empty range of physical address big enough to - * contain the new resource, and then hotplugs it as ZONE_DEVICE memory, which - * in turn allocates struct pages. It does not do anything beyond that; all - * events affecting the memory will go through the various callbacks provided - * by hmm_devmem_ops struct. - * - * Device driver should call this function during device initialization and - * is then responsible of memory management. HMM only provides helpers. - */ -struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, - struct device *device, - unsigned long size) -{ - struct hmm_devmem *devmem; - void *result; - int ret; - - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); - if (!devmem) - return ERR_PTR(-ENOMEM); - - init_completion(&devmem->completion); - devmem->pfn_first = -1UL; - devmem->pfn_last = -1UL; - devmem->resource = NULL; - devmem->device = device; - devmem->ops = ops; - - ret = percpu_ref_init(&devmem->ref, &hmm_devmem_ref_release, - 0, GFP_KERNEL); - if (ret) - return ERR_PTR(ret); - - devmem->resource = devm_request_free_mem_region(device, &iomem_resource, - size); - if (IS_ERR(devmem->resource)) - return ERR_CAST(devmem->resource); - devmem->pfn_first = devmem->resource->start >> PAGE_SHIFT; - devmem->pfn_last = devmem->pfn_first + - (resource_size(devmem->resource) >> PAGE_SHIFT); - - devmem->pagemap.type = MEMORY_DEVICE_PRIVATE; - devmem->pagemap.res = *devmem->resource; - devmem->pagemap.ops = &hmm_pagemap_ops; - devmem->pagemap.ref = &devmem->ref; - - result = devm_memremap_pages(devmem->device, &devmem->pagemap); - if (IS_ERR(result)) - return result; - return devmem; -} -EXPORT_SYMBOL_GPL(hmm_devmem_add); -#endif /* CONFIG_DEVICE_PRIVATE */ From patchwork Wed Jun 26 12:27:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017739 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 8929F1398 for ; Wed, 26 Jun 2019 12:28:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 794A728437 for ; Wed, 26 Jun 2019 12:28:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 778332864B; Wed, 26 Jun 2019 12:28:55 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 8E5A228437 for ; Wed, 26 Jun 2019 12:28:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 369B88E001C; Wed, 26 Jun 2019 08:28:30 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2F3DC8E0005; Wed, 26 Jun 2019 08:28: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 147A78E001C; Wed, 26 Jun 2019 08:28:30 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id CCF0D8E0005 for ; Wed, 26 Jun 2019 08:28:29 -0400 (EDT) Received: by mail-pl1-f198.google.com with SMTP id e7so1357015plt.13 for ; Wed, 26 Jun 2019 05:28:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=U8ovc4WTwnLx7F/LiZCoIjre+/SW/FETirwHxoajq6c=; b=HGsyytbf1JI34xzgeP18qASU27o2mxb0ZAp8I3krP9V74F/wwvHj/GwR34NoUKfkn7 5Ov0spUWbNdcz9P0nAdLpgSKXlDh5TPaHo4fz+wY2yAY4kHYYgUw6IE+ZoVWPWBxMnuB 95IIK3JhRk7r8rsIoY46dR+s0yU6sJfVj7xPv23cOo9wQYHU7T/q4vrv/4uYCsfq6jQG ynZnlcjWTO2yqeypwzjzTMJop823tQN98EulZEBYy4Cr6g6NCgZSlpf5x44f3/Tqy0uG FqUOqOVtE9R62UGAHSodekYpaHu1gOglZPIPM3X5Y0Ydf9yVPmw32STpvRcp1EMTTQfa 5HNw== X-Gm-Message-State: APjAAAWZh451XMrz70l4kTbWfguIiatjVkppTA3ulM84WSmpLeVLkfGf +7z4LPeC0RvUCJdunhMOsVxqsqC64WCW+3/H73GLSVBTp1cKXpzX/quIjaiwd1A5WhFG0U4bChu DbfMdEFTSxGa5TI93ObGwAKbTAfqVmwUch7sGpRDI5wnpZuFFWpHHIbMwWbq14Qs= X-Received: by 2002:a63:ee0c:: with SMTP id e12mr2791552pgi.184.1561552109402; Wed, 26 Jun 2019 05:28:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqwdaN4hC3L/frASv9O0PGMwMXIKlEjeSNDLmbiG6Jr5tCeqZb43itc0gPwzjGUAmsNi1QE3 X-Received: by 2002:a63:ee0c:: with SMTP id e12mr2791488pgi.184.1561552108525; Wed, 26 Jun 2019 05:28:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552108; cv=none; d=google.com; s=arc-20160816; b=p3wxAL89/SmshplNTGYk+l7GhWsiLvkixw1S5qBL0vCNFAS8JKGtPHXeCDcQRoAU5u PdGrnpj96BKubSgQvwWCP76KNMDb8W9OcEPnCRzaOKMhX7hbVtlZRG/oOdg8Qy31GPBU 5fOXha+9NG1inndFa3V+Zw2WbSXYaz2qz6UKsPy4EbcNM69+lbizg6PsTPDXWL19iP5i EebH/MErrpoOBAAOO3+tEHeJZ3RCbfqplWAofbRS9q3Y5l54g9SXI2fMSKknDy30hQaF lMQHCyqDPX3umHR85o+M0qyDz+k0Z7QKeVQ3kkg0tfQUY3zSjRZd7bZtKkUAHgh/QQVi WiIA== 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:dkim-signature; bh=U8ovc4WTwnLx7F/LiZCoIjre+/SW/FETirwHxoajq6c=; b=ga6ErPXB3BzJSoWc+GQchhgrDD0fGHd9OG/DwMtRqzyTa30TQhMTsk73vSVVAcfUko 7DANj8jXIj67tcGSyN5sBHWARej5ckW9HRNQpfyAbGCZz7xN0L0lvW/T2192vxzcn23K ksZQ77ojGcrzbKM31X/p0KoiDeJ5KXCBJRQCYTSrpAC/nRfJzwaYJaUMOuxenf0kgmRZ c+Be05HEtTh6R1UX/8dlE2Cwiv/r1Yv5D5NOwNWBOBbLSh8RmwDKfxiUElEXTgwctf7B vAsi//zRo5cpVxkszCrSu788+3KNUWiJgGq6Agwjo5tfrjV1oQ+MWqN07b65Adf6Xbrl uQfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="qQ/u8z56"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id g3si15846814pgq.247.2019.06.26.05.28.28 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b="qQ/u8z56"; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=U8ovc4WTwnLx7F/LiZCoIjre+/SW/FETirwHxoajq6c=; b=qQ/u8z56xU9mfbqQN6tyeQBlFM ZK9nFZF90cDqpofPjuvNx4qSQiOJWXKAvNK1R4pNh5ZU7sgI9qEokbjwoKNqOq2jdl6uarrX/vc0p hvwUNz1VZ0Ma1qiyc0HQN+WoNz48SUGdFZlf4pPv9ii1mC6pe5F/2u7IxmCniJbsX3uq7jTvLv78S Z4v6+5F9aAkLS0+Vac/orsjkQURZePG57AJddUchAi/8lOdQsc7akhimT4jFDMZNvyH/urTu9zV4n byCoV/htdJTMJbMfUzfUnkyudRhO13bGJRA2vcLzOKbVmOip+aXQKAaaYhQvwH9+qaP12x4YxvJ5C XBpgHV2w==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72H-0001di-9H; Wed, 26 Jun 2019 12:28:25 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 22/25] mm: simplify ZONE_DEVICE page private data Date: Wed, 26 Jun 2019 14:27:21 +0200 Message-Id: <20190626122724.13313-23-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 Remove the clumsy hmm_devmem_page_{get,set}_drvdata helpers, and instead just access the page directly. Also make the page data a void pointer, and thus much easier to use. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/nouveau/nouveau_dmem.c | 18 ++++++--------- include/linux/hmm.h | 32 -------------------------- include/linux/mm_types.h | 2 +- mm/page_alloc.c | 8 +++---- 4 files changed, 12 insertions(+), 48 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c index 0fb7a44b8bc4..42c026010938 100644 --- a/drivers/gpu/drm/nouveau/nouveau_dmem.c +++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c @@ -104,11 +104,8 @@ struct nouveau_migrate { static void nouveau_dmem_page_free(struct page *page) { - struct nouveau_dmem_chunk *chunk; - unsigned long idx; - - chunk = (void *)hmm_devmem_page_get_drvdata(page); - idx = page_to_pfn(page) - chunk->pfn_first; + struct nouveau_dmem_chunk *chunk = page->zone_device_data; + unsigned long idx = page_to_pfn(page) - chunk->pfn_first; /* * FIXME: @@ -200,7 +197,7 @@ nouveau_dmem_fault_alloc_and_copy(struct vm_area_struct *vma, dst_addr = fault->dma[fault->npages++]; - chunk = (void *)hmm_devmem_page_get_drvdata(spage); + chunk = spage->zone_device_data; src_addr = page_to_pfn(spage) - chunk->pfn_first; src_addr = (src_addr << PAGE_SHIFT) + chunk->bo->bo.offset; @@ -633,9 +630,8 @@ nouveau_dmem_init(struct nouveau_drm *drm) list_add_tail(&chunk->list, &drm->dmem->chunk_empty); page = pfn_to_page(chunk->pfn_first); - for (j = 0; j < DMEM_CHUNK_NPAGES; ++j, ++page) { - hmm_devmem_page_set_drvdata(page, (long)chunk); - } + for (j = 0; j < DMEM_CHUNK_NPAGES; ++j, ++page) + page->zone_device_data = chunk; } NV_INFO(drm, "DMEM: registered %ldMB of device memory\n", size >> 20); @@ -698,7 +694,7 @@ nouveau_dmem_migrate_alloc_and_copy(struct vm_area_struct *vma, if (!dpage || dst_pfns[i] == MIGRATE_PFN_ERROR) continue; - chunk = (void *)hmm_devmem_page_get_drvdata(dpage); + chunk = dpage->zone_device_data; dst_addr = page_to_pfn(dpage) - chunk->pfn_first; dst_addr = (dst_addr << PAGE_SHIFT) + chunk->bo->bo.offset; @@ -862,7 +858,7 @@ nouveau_dmem_convert_pfn(struct nouveau_drm *drm, continue; } - chunk = (void *)hmm_devmem_page_get_drvdata(page); + chunk = page->zone_device_data; addr = page_to_pfn(page) - chunk->pfn_first; addr = (addr + chunk->bo->bo.mem.start) << PAGE_SHIFT; diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 86aa4ec3404c..3d00e9550e77 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -584,36 +584,4 @@ static inline void hmm_mm_destroy(struct mm_struct *mm) {} static inline void hmm_mm_init(struct mm_struct *mm) {} #endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ -#if IS_ENABLED(CONFIG_DEVICE_PRIVATE) -/* - * hmm_devmem_page_set_drvdata - set per-page driver data field - * - * @page: pointer to struct page - * @data: driver data value to set - * - * Because page can not be on lru we have an unsigned long that driver can use - * to store a per page field. This just a simple helper to do that. - */ -static inline void hmm_devmem_page_set_drvdata(struct page *page, - unsigned long data) -{ - page->hmm_data = data; -} - -/* - * hmm_devmem_page_get_drvdata - get per page driver data field - * - * @page: pointer to struct page - * Return: driver data value - */ -static inline unsigned long hmm_devmem_page_get_drvdata(const struct page *page) -{ - return page->hmm_data; -} -#endif /* CONFIG_DEVICE_PRIVATE */ -#else /* IS_ENABLED(CONFIG_HMM) */ -static inline void hmm_mm_destroy(struct mm_struct *mm) {} -static inline void hmm_mm_init(struct mm_struct *mm) {} -#endif /* IS_ENABLED(CONFIG_HMM) */ - #endif /* LINUX_HMM_H */ diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 8ec38b11b361..f33a1289c101 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -158,7 +158,7 @@ struct page { struct { /* ZONE_DEVICE pages */ /** @pgmap: Points to the hosting device page map. */ struct dev_pagemap *pgmap; - unsigned long hmm_data; + void *zone_device_data; unsigned long _zd_pad_1; /* uses mapping */ }; diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 17a39d40a556..c0e031c52db5 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -5886,12 +5886,12 @@ void __ref memmap_init_zone_device(struct zone *zone, __SetPageReserved(page); /* - * ZONE_DEVICE pages union ->lru with a ->pgmap back - * pointer and hmm_data. It is a bug if a ZONE_DEVICE - * page is ever freed or placed on a driver-private list. + * ZONE_DEVICE pages union ->lru with a ->pgmap back pointer + * and zone_device_data. It is a bug if a ZONE_DEVICE page is + * ever freed or placed on a driver-private list. */ page->pgmap = pgmap; - page->hmm_data = 0; + page->zone_device_data = NULL; /* * Mark the block movable so that blocks are reserved for From patchwork Wed Jun 26 12:27:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017741 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 7750F1398 for ; Wed, 26 Jun 2019 12:28:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 67BA828673 for ; Wed, 26 Jun 2019 12:28:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5C2F12871C; Wed, 26 Jun 2019 12:28:57 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 EC8C9286AD for ; Wed, 26 Jun 2019 12:28:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9AE888E001D; Wed, 26 Jun 2019 08:28:32 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8BE658E0005; Wed, 26 Jun 2019 08:28:32 -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 738888E001D; Wed, 26 Jun 2019 08:28:32 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id 3907C8E0005 for ; Wed, 26 Jun 2019 08:28:32 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id e16so1535686pga.4 for ; Wed, 26 Jun 2019 05:28:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Q7MnaJX/iVm/t0Em26EnUyAunznzqEObFDwyR3G5AJk=; b=UK76uyjAK82+t3wyFZKqrrFwC6U0RSVj88psUmGr9601fWPR1QxbN89TTSlaI9Vitw TBlyjlZCurdhGV2Qzzn80+Jgp9LBHpWj32ZA/vMZy6FKJeowKFrFfJIq1I9hS458Z1W6 /HdVzvDRRbQqLJHhs8nFRJiVSh2sfbSObK/l5CVKawhi6U0528adLuzMe8eDr2LXpDwu GNKL1oGIBbjYUxoeAJSPJACt6tVucFaVKHlEq9pOzf7VzFenc14REhoI0lGzYChv9zKF x2DtRa2DqK62MYZA3Yy4q/tFDf/shpq6zUEY/9Q3Nhx12U4PPcr7njJ3TTdOwPqXLKiK yXbg== X-Gm-Message-State: APjAAAXbM+DqnIJBdQt8anNZ0klrn6f7r8g+RH+g1iW5fu5cNgFPMe62 r/Pc+zwm2GfrInMNKeGty/d6mPSRMuEgLE3r6dI78rmDARWo24FvlWDbPQqTyyhaWR+asAaNUgP Pir1dxQgqOtdPhrHGdoNwpbzlw6jYPDnlg3HHq+4M/xIKsgCRVO/QhiB2TbZicFY= X-Received: by 2002:a17:90a:b903:: with SMTP id p3mr4393731pjr.79.1561552111918; Wed, 26 Jun 2019 05:28:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqzJZIE1qldqfF37c/P3DSmMQne0ERmCOJ7iA0kShgxSyJ1Xw1kHE5LeMispF1RjLBBPRWJQ X-Received: by 2002:a17:90a:b903:: with SMTP id p3mr4393667pjr.79.1561552111229; Wed, 26 Jun 2019 05:28:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552111; cv=none; d=google.com; s=arc-20160816; b=S5nV4kQWu4X41HUZ8dCFcpIdQEtLV5TfIEmetpUP22tenzEpf7chAWK2RKUj99PJIY xCOpo5YDlj3/J0Dy53Zb/quYzgsVECLJ/AvBv5/4lFjdY2OFt4GBcDxxu3OkYU+fhwBS VVL8efNaKv7docExd+LbBODiuuoRXMwUQVOSMXeWUSXNYhH3l0AH2/v1OTlI2vRl36rP eOO1g6fxzpt4HU6MI9fBL5EFHghIN8zW/qLTXRyGBdB4E1td9DKYinJZp601ugTQRLze g+6IiSCtEtaj0xPKU/xLyrzo02HjuUnaOPbrXlWvnb7NE7ZWCbCADTpO0bFANeJmIfIh Oklg== 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:dkim-signature; bh=Q7MnaJX/iVm/t0Em26EnUyAunznzqEObFDwyR3G5AJk=; b=zVml5SfAbUQMy5zpNBWohHmOGQdMjBV7gN47VJmMtVjUp2+2RehIJJvBYgI7p1np26 BYmBrBVqjbjh5w3wMuuVRA7V6st5Ivsl0VmjlvjBbnI5+VAssHuty3G3QhvpmZw5PtC5 7zFGU1YSgazNVgr6/WeNoEJC5TAXM6+9vceqjDTSCg+jz4M0jIV31fCD499oTD3NK/x1 jHe3G2IE+0XE6qQK1Fesn0ID8NAoM/Rya+mnhuc7odYNnO5Pi018dvH64bvEHQjFYlQt gNMuC4WKG2nFp/XGkBLtTw/NEY4Nqh6K7fk6e18+7ck9HvY9IpzqPw4tEtZZqQZP75K2 D5ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Tbo19KxP; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id c82si18147756pfb.32.2019.06.26.05.28.30 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=Tbo19KxP; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Q7MnaJX/iVm/t0Em26EnUyAunznzqEObFDwyR3G5AJk=; b=Tbo19KxPBD9CoStAag7hFRkhL1 UVbFR8/CEYnn6vco/RRdP7PkksW7LjaWOT2ywOSCt9dpWa1RFcZy8LipzSnYlREvTu9l5/oK26ATg Nk0WFaww+s7avBAde8Jm8KV50DOvVQEgDhHB6A8NSXWHXbsvgvkGAlYyeSqX2vJCoK3eLU9ouWC1p iel5ayxHoDx57ghhSjAUcaejPQLgxHwBJURlO9R2A5MY23VdntE10dntwJYao10el5aD5sXkfAOSY FOQs8Fuhnmthsq51h7FNDZAyBxsUOGDEFV0k50lYyd/nwnlHH9m9h+Q6hRj6OU7uwuOEV50gFx+DI HsH+LMPw==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72K-0001eP-1U; Wed, 26 Jun 2019 12:28:28 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 23/25] mm: sort out the DEVICE_PRIVATE Kconfig mess Date: Wed, 26 Jun 2019 14:27:22 +0200 Message-Id: <20190626122724.13313-24-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 ZONE_DEVICE support doesn't depend on anything HMM related, just on various bits of arch support as indicated by the architecture. Also don't select the option from nouveau as it isn't present in many setups, and depend on it instead. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny --- drivers/gpu/drm/nouveau/Kconfig | 2 +- mm/Kconfig | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index dba2613f7180..6303d203ab1d 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -85,10 +85,10 @@ config DRM_NOUVEAU_BACKLIGHT config DRM_NOUVEAU_SVM bool "(EXPERIMENTAL) Enable SVM (Shared Virtual Memory) support" depends on ARCH_HAS_HMM + depends on DEVICE_PRIVATE depends on DRM_NOUVEAU depends on STAGING select HMM_MIRROR - select DEVICE_PRIVATE default n help Say Y here if you want to enable experimental support for diff --git a/mm/Kconfig b/mm/Kconfig index 6f35b85b3052..eecf037a54b3 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -677,13 +677,13 @@ config ARCH_HAS_HMM_MIRROR config ARCH_HAS_HMM bool - default y depends on (X86_64 || PPC64) depends on ZONE_DEVICE depends on MMU && 64BIT depends on MEMORY_HOTPLUG depends on MEMORY_HOTREMOVE depends on SPARSEMEM_VMEMMAP + default y config MIGRATE_VMA_HELPER bool @@ -709,8 +709,7 @@ config HMM_MIRROR config DEVICE_PRIVATE bool "Unaddressable device memory (GPU memory, ...)" - depends on ARCH_HAS_HMM - select HMM + depends on ZONE_DEVICE select DEV_PAGEMAP_OPS help From patchwork Wed Jun 26 12:27:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017747 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 454181398 for ; Wed, 26 Jun 2019 12:29:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 350CE28437 for ; Wed, 26 Jun 2019 12:29:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 28FCD287AA; Wed, 26 Jun 2019 12:29:04 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 83BCB28606 for ; Wed, 26 Jun 2019 12:29:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 564FF8E001F; Wed, 26 Jun 2019 08:28:36 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 4C7E48E0005; Wed, 26 Jun 2019 08:28:36 -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 344F58E001F; Wed, 26 Jun 2019 08:28:36 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by kanga.kvack.org (Postfix) with ESMTP id E8BC28E0005 for ; Wed, 26 Jun 2019 08:28:35 -0400 (EDT) Received: by mail-pl1-f197.google.com with SMTP id q2so1352829plr.19 for ; Wed, 26 Jun 2019 05:28:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=8c7Qw79j4iTVfYu8BDZ4XSZccS1fj4ydMQxMOZ0rYRM=; b=SmazmG2E+o4I4dFOsu8r9Qe7qDokUC0XQpOpoy82t7vgWjN4ZrnGY+u9ELWguH3yco GQHn8UhifxE77lE6nJRgLskaqnDcoMuk9t6+hUmvt1J/kR1jOB6QtkrfJOtiPb2TYjV1 ZGzEpG1Np9WmpJhoDzSjQzi/w3AbS4Yx5q3hnV/vYVPb6NEH19zgArO1fzN8F6mqgfNr V+ieTTmSzYdYmLU+NtsUFQVIAQq/toqHXP2cVpQSCaY3ZV6MNQjq/yHLoHix5pUV2fgy aRloEB0A0v8sjFaGuzr6ZDbgrPOd6Z+5eaPwf5tXkWR4XSyGxvSFd6NB6Q4O9BUjsn5u TMhw== X-Gm-Message-State: APjAAAXOCd0diysW8kMsYK/z+RF65nnNgr3ZvQPXrzvUQi3ruyyT7sU2 gRr1lkikBxkTL2aDPXyAktFnz4h9RFXG7fpXNb/tAgUGs8lBKXqFGKRr7qP7i4IBTSU140vH4Ff MO9YYlMZjlkKANtquCU6sA6NFJc/XcjxkABSSNJ7rUBy39UJyWTCVbQu3aDIHiDc= X-Received: by 2002:a65:5c8c:: with SMTP id a12mr2734268pgt.255.1561552115435; Wed, 26 Jun 2019 05:28:35 -0700 (PDT) X-Google-Smtp-Source: APXvYqzzqFUCByEVVHcgIvOCGPgzTDdjj0kfhFcBG3mV8Y0bh9L+ORY5wpcc04a/3FRDCaCXo+Wo X-Received: by 2002:a65:5c8c:: with SMTP id a12mr2734202pgt.255.1561552114516; Wed, 26 Jun 2019 05:28:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552114; cv=none; d=google.com; s=arc-20160816; b=Ys7ZIJrkX/Sb59cNDBLayVUEiekJFM3e8rebaGhf/urGiA/dZ9SGEHxv77cUfinqRl icHRizq+p4Flw0YjDX+DUCsY1DluyOwIvUZEWDRvCLImcTN/HrtOhk3ogNQ5N3byw2Zu 9iZ63c4Z1H+CMdF93HMhI2UFi/aBgvRXbrLQh5KKf47G2DUBmtYoEKjg6/DYfOyRf2L2 PEzCImhfwLjCQT9pUgfCVJGJxm9C5mU0fIXa6vmFdfaezGbLKga37WQt97+/SK1p/8Jc T//MKlbTAVariKMuhwTymrrR3JVSZtH4Ipfp0g2Lsleg7D5s17++POMSoTh6TJPTgZlc priw== 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:dkim-signature; bh=8c7Qw79j4iTVfYu8BDZ4XSZccS1fj4ydMQxMOZ0rYRM=; b=lCHxzpLuOlrlgWxcckzvv21NbEA8TzGe6+xiVLqxQNxixYWFFomv2lgGc+HTsjP+3R PqDCqZ26wkPCl6wSLoXOHNLpBRDFvtqdr0AZ5kja44sSxScKItH6l8KUxtlhZHSnnMK4 mC9WvDz+TwJhvl+UOHC0KnpSqE82wnm1dBzFdt9WKk0H5CyN4y5/lm/1htYjp3FcnG6F dsm4PEZ+hvPpnxwvcapKjMH5+d4gqquOx5ScjyYQbftdjfSYMd+upHBBPcTuT8GPq1oK JQEIRvIedgM1iUVgGNt/p04iBWBw6yxresUDcUrf6vQI/n0gR1NQdoF0ES7PBdNxqWIw e2VA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qeW+utdJ; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id y134si18040826pfc.285.2019.06.26.05.28.34 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=qeW+utdJ; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=8c7Qw79j4iTVfYu8BDZ4XSZccS1fj4ydMQxMOZ0rYRM=; b=qeW+utdJvjdhQsheXW/BJJc+6E Je3Qw7KX8yqGRD61b+aMkwDnKhRl79dbPTB2oSJS9EJkkp6B04gH0AKwiMVXmZSWXedEVwmeZuHtd rxfolj9Lb0kntloPPle3ysnemn+eVNPk1PVLI65krTeg8f8ixCclNzvQ1VMgjJNdcaSfpbGEE5JqZ LdQuIQpaH4WpWeh96t9pFdDMHn8Nlh1iBjfjdCn7Tu5xaSa1u8SC412S343cnc/TFWSgHhCX2D4kz T8P1Ggyzn7yKEs00DA9YZRe2O9RSSxL1RnyDktKkewIGQSovonLhKuAUk0FzNPPqOPnS9qC33UPWA glFwMabA==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72M-0001fg-QA; Wed, 26 Jun 2019 12:28:31 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 24/25] mm: remove the HMM config option Date: Wed, 26 Jun 2019 14:27:23 +0200 Message-Id: <20190626122724.13313-25-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 All the mm/hmm.c code is better keyed off HMM_MIRROR. Also let nouveau depend on it instead of the mix of a dummy dependency symbol plus the actually selected one. Drop various odd dependencies, as the code is pretty portable. Signed-off-by: Christoph Hellwig Reviewed-by: Ira Weiny Reviewed-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/Kconfig | 3 +-- include/linux/hmm.h | 5 +---- include/linux/mm_types.h | 2 +- mm/Kconfig | 27 ++++----------------------- mm/Makefile | 2 +- mm/hmm.c | 2 -- 6 files changed, 8 insertions(+), 33 deletions(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index 6303d203ab1d..66c839d8e9d1 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -84,11 +84,10 @@ config DRM_NOUVEAU_BACKLIGHT config DRM_NOUVEAU_SVM bool "(EXPERIMENTAL) Enable SVM (Shared Virtual Memory) support" - depends on ARCH_HAS_HMM depends on DEVICE_PRIVATE depends on DRM_NOUVEAU + depends on HMM_MIRROR depends on STAGING - select HMM_MIRROR default n help Say Y here if you want to enable experimental support for diff --git a/include/linux/hmm.h b/include/linux/hmm.h index 3d00e9550e77..b697496e85ba 100644 --- a/include/linux/hmm.h +++ b/include/linux/hmm.h @@ -62,7 +62,7 @@ #include #include -#if IS_ENABLED(CONFIG_HMM) +#ifdef CONFIG_HMM_MIRROR #include #include @@ -332,9 +332,6 @@ static inline uint64_t hmm_pfn_from_pfn(const struct hmm_range *range, return hmm_device_entry_from_pfn(range, pfn); } - - -#if IS_ENABLED(CONFIG_HMM_MIRROR) /* * Mirroring: how to synchronize device page table with CPU page table. * diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index f33a1289c101..8d37182f8dbe 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -501,7 +501,7 @@ struct mm_struct { #endif struct work_struct async_put_work; -#if IS_ENABLED(CONFIG_HMM) +#ifdef CONFIG_HMM_MIRROR /* HMM needs to track a few things per mm */ struct hmm *hmm; #endif diff --git a/mm/Kconfig b/mm/Kconfig index eecf037a54b3..1e426c26b1d6 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -669,37 +669,18 @@ config ZONE_DEVICE If FS_DAX is enabled, then say Y. -config ARCH_HAS_HMM_MIRROR - bool - default y - depends on (X86_64 || PPC64) - depends on MMU && 64BIT - -config ARCH_HAS_HMM - bool - depends on (X86_64 || PPC64) - depends on ZONE_DEVICE - depends on MMU && 64BIT - depends on MEMORY_HOTPLUG - depends on MEMORY_HOTREMOVE - depends on SPARSEMEM_VMEMMAP - default y - config MIGRATE_VMA_HELPER bool config DEV_PAGEMAP_OPS bool -config HMM - bool - select MMU_NOTIFIER - select MIGRATE_VMA_HELPER - config HMM_MIRROR bool "HMM mirror CPU page table into a device page table" - depends on ARCH_HAS_HMM - select HMM + depends on (X86_64 || PPC64) + depends on MMU && 64BIT + select MMU_NOTIFIER + select MIGRATE_VMA_HELPER help Select HMM_MIRROR if you want to mirror range of the CPU page table of a process into a device page table. Here, mirror means "keep synchronized". diff --git a/mm/Makefile b/mm/Makefile index ac5e5ba78874..91c99040065c 100644 --- a/mm/Makefile +++ b/mm/Makefile @@ -102,5 +102,5 @@ obj-$(CONFIG_FRAME_VECTOR) += frame_vector.o obj-$(CONFIG_DEBUG_PAGE_REF) += debug_page_ref.o obj-$(CONFIG_HARDENED_USERCOPY) += usercopy.o obj-$(CONFIG_PERCPU_STATS) += percpu-stats.o -obj-$(CONFIG_HMM) += hmm.o +obj-$(CONFIG_HMM_MIRROR) += hmm.o obj-$(CONFIG_MEMFD_CREATE) += memfd.o diff --git a/mm/hmm.c b/mm/hmm.c index 90ca0cdab9db..d62ce64d6bca 100644 --- a/mm/hmm.c +++ b/mm/hmm.c @@ -25,7 +25,6 @@ #include #include -#if IS_ENABLED(CONFIG_HMM_MIRROR) static const struct mmu_notifier_ops hmm_mmu_notifier_ops; static inline struct hmm *mm_get_hmm(struct mm_struct *mm) @@ -1326,4 +1325,3 @@ long hmm_range_dma_unmap(struct hmm_range *range, return cpages; } EXPORT_SYMBOL(hmm_range_dma_unmap); -#endif /* IS_ENABLED(CONFIG_HMM_MIRROR) */ From patchwork Wed Jun 26 12:27:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 11017753 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 1946B14C0 for ; Wed, 26 Jun 2019 12:29:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0589526222 for ; Wed, 26 Jun 2019 12:29:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 040232864B; Wed, 26 Jun 2019 12:29:07 +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.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable 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 9CB3E287B8 for ; Wed, 26 Jun 2019 12:29:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1B778E0020; Wed, 26 Jun 2019 08:28:37 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D51F48E0005; Wed, 26 Jun 2019 08:28:37 -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 BCB8D8E0020; Wed, 26 Jun 2019 08:28:37 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by kanga.kvack.org (Postfix) with ESMTP id 7F9E58E0005 for ; Wed, 26 Jun 2019 08:28:37 -0400 (EDT) Received: by mail-pl1-f197.google.com with SMTP id d2so1352480pla.18 for ; Wed, 26 Jun 2019 05:28:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:from:to:cc:subject:date :message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=ZjBYUWyGZeQFbLdeL3I3vLQlcbJ5I4BbNFzVpFyfAyY=; b=LPzyeZDqBg4i4cno3qiOdFb3BMVTbMWu3lQLkjs8kKPqCe7yT0wcClSchhd5MaUSMr bDoDWFkPkccNKiwJn2OJs1Kg0MDqUHFqN1AtdvPOUyMsjoeXIIA3NpbkUgRbmBKbfvFN EffWFujHdLb1Qu51kW59Rft4cLaFCVxW48kmyOcqBuqGkjnGxPExlh/1F52X3gKT1Qp0 BV8cUDsdfi9OCuebzff/Z1LcyFKdkg5p0NrsOrA8+DslobgWMGesoc2ozcTdH2nMVQoP jgDKOrhXwEe23jd2BCWTiSB/8OJoPdhGaLRiNqgjTumdIAaEpnYUduI+a5WjG/oOp+iK 3A+A== X-Gm-Message-State: APjAAAXJjsKBoTN4RF9UnFWhF5Gmte/Ar99nn4g3rG9YrBZUOh+hA0+H +JH/gf7RjtwTlzaphR54cbLE4HSv+C2ZqPx58ZV0f3J4YHpkfAcKI04CfJhmEf2rGUXs3K6r7HY AWH2tlr+pVwjh1eGnL0utKn+uA8PmGN4sKTw9rnRtXFaCXqWTS4exCmSrz+Y1wLE= X-Received: by 2002:a17:902:296a:: with SMTP id g97mr5091585plb.115.1561552117186; Wed, 26 Jun 2019 05:28:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqy8rMzVKR3dLLC1/jw5GvNhGjSc3+g9nbh1jIMO0eRczeZpUkIJP4LIQBrKKAPQkYU46vTz X-Received: by 2002:a17:902:296a:: with SMTP id g97mr5091532plb.115.1561552116486; Wed, 26 Jun 2019 05:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561552116; cv=none; d=google.com; s=arc-20160816; b=BqBq+5yKuhhnRLgxpwjT6tM2iLOriwN1xZxLZhMde8c6bOFLhH48vQABg9IbuA5muI rQzjNG8zBgMhMy5aGBxQVw4M8xPQFc0rBL5OvTkmNw9YIseqgSxXgeKq3qQ+CMg3htsD jYXd76PMbKFA57ABNtWyCTuG+KXMiMh3CkgB5QInexxE1XJ2bVReI7pFdnSCc5Oyod2t YSVNuVgp0Ou0lvgYeTL96YGVIs9yHpEeZ4sPndk590z1mrQJ1hkwBPqWWEOCPFO+rmDz EbV++ykmiCHiQfPsI4TIWT17y5ZTxf6qBztx21+2FE4/pbAQLKV4+77pAJHG1tToGga0 dymA== 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:dkim-signature; bh=ZjBYUWyGZeQFbLdeL3I3vLQlcbJ5I4BbNFzVpFyfAyY=; b=oFXc/qlDxkU2N9d9lpUhsFAkwijRGArGVXZwmGDCEN/WGacSpL3bDya5/DA2ZWWDCA MTgvZDBloOuRFGv6dM67doXf02uLth15mQXV2BUFrzdM+Q8xsoN7pVKo4qEO+WOsdgXn mGSFYlAqR7IC9dz1LIQsg3cTmqhxPh78/4hBRqrKmagXVeY/wrBSxZ/QUco8KHQOvqLn 27daIu2jvoJ/M5NWi3/J5uzx3unvfWckTBd1Lz007SCBfETKCsGnAkxq/5j79N/LfQmb meMuSgvuR+0Kts97jXK9C8ng90sJNdcaBLTv4KRTVDOb3ClXFKx0nhTxycZZjbGglMt0 dPYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=KN1fXz1V; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org Received: from bombadil.infradead.org (bombadil.infradead.org. [2607:7c80:54:e::133]) by mx.google.com with ESMTPS id o2si1163993pfg.136.2019.06.26.05.28.36 for (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 26 Jun 2019 05:28:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) client-ip=2607:7c80:54:e::133; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20170209 header.b=KN1fXz1V; spf=pass (google.com: best guess record for domain of batv+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org designates 2607:7c80:54:e::133 as permitted sender) smtp.mailfrom=BATV+ab1f803c58217d155be4+5785+infradead.org+hch@bombadil.srs.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ZjBYUWyGZeQFbLdeL3I3vLQlcbJ5I4BbNFzVpFyfAyY=; b=KN1fXz1VRCySW0ycRrfAX1GqWC nBzrlUj6EH8tEn5EKRnrhZ/clBQwfvfHZco8c9jjozD1fh/my91ln6undw3f0URs/bl+BIWm9b6hu GRC9l8p7WXmZ8Xxi9iA+E0W9Gm1MASDaRp1hsctZvyH++evwZDdjgMK5FluTFNT1RwdwEeDzbsvSM 2Vaw9si/vPSSHdp8MpGf4yt7KV6VBBfa72BTk2t+4oMw4Ihq6663f/SIsQz3QotN454E3JNgKTXLf k83PbIqllqoxK5hwQg9uLoykDjdc5EnRrvh/P54vz5TNn3UfdvW/VR54c5mGcZIc55bXkoE7hGw3x iOkrcrng==; Received: from clnet-p19-102.ikbnet.co.at ([83.175.77.102] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hg72P-0001gm-Ia; Wed, 26 Jun 2019 12:28:33 +0000 From: Christoph Hellwig To: Dan Williams , =?utf-8?b?SsOpcsO0bWUgR2xpc3Nl?= , Jason Gunthorpe , Ben Skeggs Cc: linux-mm@kvack.org, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-nvdimm@lists.01.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 25/25] mm: don't select MIGRATE_VMA_HELPER from HMM_MIRROR Date: Wed, 26 Jun 2019 14:27:24 +0200 Message-Id: <20190626122724.13313-26-hch@lst.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190626122724.13313-1-hch@lst.de> References: <20190626122724.13313-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html 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 migrate_vma helper is only used by noveau to migrate device private pages around. Other HMM_MIRROR users like amdgpu or infiniband don't need it. Signed-off-by: Christoph Hellwig Reviewed-by: Jason Gunthorpe --- drivers/gpu/drm/nouveau/Kconfig | 1 + mm/Kconfig | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig index 66c839d8e9d1..96b9814e6d06 100644 --- a/drivers/gpu/drm/nouveau/Kconfig +++ b/drivers/gpu/drm/nouveau/Kconfig @@ -88,6 +88,7 @@ config DRM_NOUVEAU_SVM depends on DRM_NOUVEAU depends on HMM_MIRROR depends on STAGING + select MIGRATE_VMA_HELPER default n help Say Y here if you want to enable experimental support for diff --git a/mm/Kconfig b/mm/Kconfig index 1e426c26b1d6..40cf0562412d 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -680,7 +680,6 @@ config HMM_MIRROR depends on (X86_64 || PPC64) depends on MMU && 64BIT select MMU_NOTIFIER - select MIGRATE_VMA_HELPER help Select HMM_MIRROR if you want to mirror range of the CPU page table of a process into a device page table. Here, mirror means "keep synchronized".