From patchwork Fri Sep 28 05:39:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: john.hubbard@gmail.com X-Patchwork-Id: 10618939 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 372F2175A for ; Fri, 28 Sep 2018 05:40:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2560E2B14F for ; Fri, 28 Sep 2018 05:40:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 18F8B2B177; Fri, 28 Sep 2018 05:40: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=-3.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,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 ECA8D2B16F for ; Fri, 28 Sep 2018 05:39:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E07C68E0003; Fri, 28 Sep 2018 01:39:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DDEA58E0001; Fri, 28 Sep 2018 01:39: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 CA8318E0003; Fri, 28 Sep 2018 01:39:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by kanga.kvack.org (Postfix) with ESMTP id 89E698E0001 for ; Fri, 28 Sep 2018 01:39:57 -0400 (EDT) Received: by mail-pg1-f197.google.com with SMTP id h3-v6so5600010pgc.8 for ; Thu, 27 Sep 2018 22:39:57 -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:mime-version:content-transfer-encoding; bh=J2hgA74dPm3XPw9UsKR4RfXplU0BnJxwDgszRzFnK00=; b=IgnEaEizNAg3BIPW6LmPhMdwc83xbSBVqCHZN9hZ/WktCMR9+cdoZKdVxqbcLGRciJ NAYPKsn9TkRlyaL1vmBqgJfk9lGxKsGqKX6Dz75aMQBrmtlK82QOGMC+r/1vjJ9ffPiI +YfB4MT8mwcoTNeqUeKYD9xSXfo+sya7JtF2j1nTA11ZjrGdkYkWoQl6LncvXRf8WzlE CT1isAT+XZHPF82V17mxl7LGKMjyejnucG02NNagWbgylyMuMMmPZaxyK7YXn5ZX8gj2 +Rb2DJWb3Xolmc0tGTK/d++Gf04kual9mZ/aLjqrefYU1AKKCs+Y603uIHSu7o5pkkc4 Lvug== X-Gm-Message-State: ABuFfohzNlnbfiWNIQxrThC3XhEWUeKpKQYc76XZ4Zs3E5EiLpbNs9zC EujdRsM32UYmS/4IJAK28GU9CKBdilMhUduaMxkfDyKI9Lqlybh7kEAzt5S8vVWPE9NecqQ4nP/ Ys2ztj9OiNXphAaWExtNeZzLqdvAsInHftKef1MEdJDO8nq5VvDrrRhfFAzr9nm3Jg5/GMoStS6 AhWGzjDDdbXRwT93X+CXP18gqr8PduVECfecv9dhiR+5JiRAqbM13tINhbFy2Ox/Z2v/bvfpW4E Hz8t4GcAWslZKXBuAhcgKie3yki9n/0icfoyUzBilP7G6R+YfkTxrJ0fHGAFi+ztQOcOXt7tzla cjC6ZZZoESwa/pDiKOTU5bATW7d+bUDPQfbATorBt5JduWf418zlbBuy9+hbp/XXBWGe6joTgu+ u X-Received: by 2002:a17:902:246a:: with SMTP id m39-v6mr14207152plg.57.1538113197237; Thu, 27 Sep 2018 22:39:57 -0700 (PDT) X-Received: by 2002:a17:902:246a:: with SMTP id m39-v6mr14207093plg.57.1538113196478; Thu, 27 Sep 2018 22:39:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538113196; cv=none; d=google.com; s=arc-20160816; b=C2iURcoWycYujGUaHWYM+4DWDjzVvpz0DEfKfZxoeWt7SzSCmVLtFIRY1D4i74udp6 mr5HwYGlFZ2yZnwm7Miv0hOcdxufgaL+jG2YrdOblE73mKE8c1WZdP5ZkLsfGiJMQ7Sk gP5Nj8BL55wHd5vLs5ciSsjRzwbH877x0kFav9S4N2XNkt3FMVufVwTTTaxJtiFZdqla vIBuX5U3Qc5ui7XGEL6ne3j+CnN2tRjWTIFoCwg4r0T8IFf4YsBLyq6EItXxlJVXnAZY g+B98ng/uBFy/YRsldhwIUjzQugVXEb5cxnPcBLECtKYtGGbMu/+gRxu8LCTk7Y7/2ig EZNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=J2hgA74dPm3XPw9UsKR4RfXplU0BnJxwDgszRzFnK00=; b=U60z3nU2iQ2BhVRaHXhmzYYu90yA2S2OPePzmXc8sMjVIqz054M+p8OQrjcHyyx1qM 0lTz6Pb+uUoenLX36KEDnAFrO1UkQQDyBOp+EOPM9fEfYt4XWtxN8j5c2gKuTWDywjGL JBZ9lpBLvJYExv8GKMpgFVEKZWzecnWbM5dpcPKgbZxmEd6PEJJt1o8ujwryemJq3Cpw hK/7p5vngBq9McgOpRCq+/KkmzUFbSi8RxBNajjyBOHGV9qN9nkk71NZ0okVHK9+rpkz 72Qi6gItGKFvMNTidpyvtQG4zpQuV2bzE3CyoQT8QDcUw2cijCQrRDNYXRJFdcnB22ss Rheg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="OVvx/jX6"; spf=pass (google.com: domain of john.hubbard@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.hubbard@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id o26-v6sor890869pgc.243.2018.09.27.22.39.56 for (Google Transport Security); Thu, 27 Sep 2018 22:39:56 -0700 (PDT) Received-SPF: pass (google.com: domain of john.hubbard@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="OVvx/jX6"; spf=pass (google.com: domain of john.hubbard@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.hubbard@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=J2hgA74dPm3XPw9UsKR4RfXplU0BnJxwDgszRzFnK00=; b=OVvx/jX6uKzMr3lAfwsb+GdhgB6MOtjKb+gpZh/1ZI24JzMhAp7kDuizQhS2Mhq7Jl x8lSPu730dibmQ3OaR+3zfUzulqfuOpaDfdFhC+GlXjtdnwVJ/XqJHiRzhV2u59SYPyp AKAGGB9wl/DuRR4YZz1EsuJg37SGwsfrEG3gycKimsojadRzzSYVVJelP1Hf2gJPx3Ff WXpuiIWe4ZQqzCHcSFDxA33GzrZWvMawMhTMfoKwbrLl0UTqwjn/9jIpR2OH3hHSe/xT Gr/SIVx8NQtJQnlTDH3G3T/GS/4sgqAQw4UaqqMa6rbIStpXD0BlBGTDCl1dxn4opvrt A0rg== X-Google-Smtp-Source: ACcGV615AdD9uMz04n0+3UqNEVDhQvipc1wOoOB6NO9M3+iYIULVpxLKfCsncwcXF0mr+02dvHr8nw== X-Received: by 2002:a63:1c1b:: with SMTP id c27-v6mr13079669pgc.351.1538113196128; Thu, 27 Sep 2018 22:39:56 -0700 (PDT) Received: from blueforge.nvidia.com (searspoint.nvidia.com. [216.228.112.21]) by smtp.gmail.com with ESMTPSA id u9-v6sm6569953pfi.104.2018.09.27.22.39.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Sep 2018 22:39:54 -0700 (PDT) From: john.hubbard@gmail.com X-Google-Original-From: jhubbard@nvidia.com To: Matthew Wilcox , Michal Hocko , Christopher Lameter , Jason Gunthorpe , Dan Williams , Jan Kara , Al Viro Cc: linux-mm@kvack.org, LKML , linux-rdma , linux-fsdevel@vger.kernel.org, John Hubbard , Christian Benvenuti , Dennis Dalessandro , Doug Ledford , Mike Marciniszyn Subject: [PATCH 0/4] get_user_pages*() and RDMA: first steps Date: Thu, 27 Sep 2018 22:39:45 -0700 Message-Id: <20180928053949.5381-1-jhubbard@nvidia.com> X-Mailer: git-send-email 2.19.0 MIME-Version: 1.0 X-NVConfidentiality: public 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 From: John Hubbard Hi, This short series prepares for eventually fixing the problem described in [1], and is following a plan listed in [2]. I'd like to get the first two patches into the -mm tree. Patch 1, although not technically critical to do now, is still nice to have, because it's already been reviewed by Jan, and it's just one more thing on the long TODO list here, that is ready to be checked off. Patch 2 is required in order to allow me (and others, if I'm lucky) to start submitting changes to convert all of the callsites of get_user_pages*() and put_page(). I think this will work a lot better than trying to maintain a massive patchset and submitting all at once. Patch 3 converts infiniband drivers: put_page() --> put_user_page(). I picked a fairly small and easy example. Patch 4 converts a small driver from put_page() --> release_user_pages(). This could just as easily have been done as a change from put_page() to put_user_page(). The reason I did it this way is that this provides a small and simple caller of the new release_user_pages() routine. I wanted both of the new routines, even though just placeholders, to have callers. Once these are all in, then the floodgates can open up to convert the large number of get_user_pages*() callsites. [1] https://lwn.net/Articles/753027/ : "The Trouble with get_user_pages()" [2] https://lkml.kernel.org/r/20180709080554.21931-1-jhubbard@nvidia.com Proposed steps for fixing get_user_pages() + DMA problems. CC: Al Viro CC: Christian Benvenuti CC: Christopher Lameter CC: Dan Williams CC: Dennis Dalessandro CC: Doug Ledford CC: Jan Kara CC: Jason Gunthorpe CC: Matthew Wilcox CC: Michal Hocko CC: Mike Marciniszyn CC: linux-kernel@vger.kernel.org CC: linux-mm@kvack.org CC: linux-rdma@vger.kernel.org John Hubbard (4): mm: get_user_pages: consolidate error handling mm: introduce put_user_page(), placeholder version infiniband/mm: convert to the new put_user_page() call goldfish_pipe/mm: convert to the new release_user_pages() call drivers/infiniband/core/umem.c | 2 +- drivers/infiniband/core/umem_odp.c | 2 +- drivers/infiniband/hw/hfi1/user_pages.c | 2 +- drivers/infiniband/hw/mthca/mthca_memfree.c | 6 ++-- drivers/infiniband/hw/qib/qib_user_pages.c | 2 +- drivers/infiniband/hw/qib/qib_user_sdma.c | 8 ++--- drivers/infiniband/hw/usnic/usnic_uiom.c | 2 +- drivers/platform/goldfish/goldfish_pipe.c | 7 ++-- include/linux/mm.h | 14 ++++++++ mm/gup.c | 37 ++++++++++++--------- 10 files changed, 52 insertions(+), 30 deletions(-)