Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp180244imm; Thu, 4 Oct 2018 21:04:23 -0700 (PDT) X-Google-Smtp-Source: ACcGV62wGGFg0x9m0monsZH+dVW/EzpJ7GiJAG48ztOc63tYE6QFBP5ECKWrRYtrfbdvtUI/FW1Z X-Received: by 2002:a63:4e4e:: with SMTP id o14-v6mr8614132pgl.181.1538712263586; Thu, 04 Oct 2018 21:04:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538712263; cv=none; d=google.com; s=arc-20160816; b=WbbUuvkhdUp9ePY3HPBAJQvdqFsn8avK+QlE72bqDy2YMmoehjOOuK08jMDmE3dtWA 0q33CnqVHZgzgh4YRitvOjivWdCVDCsOL6fVsn8LyMoRieAC/yQjCpbkvjr9XGWkDky6 bUpOJh6nSP9AoaXzZNjktUu1IrKOMDPb0b9R+jixLr9brcEZBwrUm274V6/1Wan/wrLi N1z6nHmOtK69OUkMnFUYgC8GfBfd6nfPoCAbOxRd0xJlB2WU/1OnWj8CudmxX4eeEXhy vK/uvEEZQLvc61lCR1SjZDpv4XkNvNtY1CqaoX+zxUZ5YVyQ611hjAX0zw0WLWlvK1lU CHCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=fpy3uRdvgiLxbv/YgQjmak7Z81EMHZur9/b3TrGMUZw=; b=cYMimrchCmLgtcBoEuZAib/Wywr90HBEoC557wBbGv/FZuetaLKZgiLQ8D/pbNBa+A 6I3C3s3TLAjmDOqs1lUy/oa+eXXoTmqsMIcClgQcfZdTx8fU47sXRVtwok2PvaVwk6u1 kyHAZ13X3KsTH+2sANM2xsKPEsbfbPtE5Wzqg1K2IFheARzD6sLhLoLXMgpQT23VvfLh l4YVwgtnN2zTOUdvV7GbxKz2X755fOZpOyFzcs0EtEoW4QxFEJ5rfkW5q5XqR7D1nz+7 qr3BOrHW0oyedOIJOfnuP+VHwUfvaAklBgotgjZs7TA8G+7o1NpHO7i/abSgtbH1bqK7 lVug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=p93nkplT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i68-v6si7066526pgd.220.2018.10.04.21.04.08; Thu, 04 Oct 2018 21:04:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=p93nkplT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727491AbeJEK7R (ORCPT + 99 others); Fri, 5 Oct 2018 06:59:17 -0400 Received: from mail-pf1-f196.google.com ([209.85.210.196]:37384 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726742AbeJEK7R (ORCPT ); Fri, 5 Oct 2018 06:59:17 -0400 Received: by mail-pf1-f196.google.com with SMTP id j23-v6so4427372pfi.4; Thu, 04 Oct 2018 21:02:29 -0700 (PDT) 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=fpy3uRdvgiLxbv/YgQjmak7Z81EMHZur9/b3TrGMUZw=; b=p93nkplTtA6tZCC53ZjTadVbFpIsHdIjL0uoqbuTkiZwUt3J5jgFLhQUXXU5Xo5DTZ 4QmW0z4w+zrn1KZhbAD749M0LreTUUr3c4ubr5ZcJscq7HHhzUDehG0EOZIvsFfDGSHv wJgr+iSh81Hu/CS5Y+v/niYJS6LOElPBT++LdgrGm1s2aM8cRRL6tcrQYzAawxeW8y9A gWjPhkEhCUJMwtkQ5EaoUbT+v58CtSD1BLtdduYkL6UJn+FX7w8Q7XTknZEeCBcpT+/0 UVdK6zu4IfIpppS36PO9gwEv5oaMdxY5CW+WcOUtJvPTLTSf1WeZFqq6Nd5PRWrf+AIK SPfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fpy3uRdvgiLxbv/YgQjmak7Z81EMHZur9/b3TrGMUZw=; b=W8AJEWQJKgMPEy1wE2djI2Cw/mc4ZyZ76UTRFVvTi042BVFeoRQ2zvBxn/3TTeem6D WJ4EbVQYf3XsCga8Yg5iAeOuX68inYbdU9zlxlAoQtF18H6iw3/34JnrjawM9jqe+flP s/uED1qZzFIWi+J1bRhruS+imQedCsiGk7iPHJt+ViX3rSqYAKCvYK/v1K7J+Ejp7lBO NcloPs0C3PbkZKrqI/2q3Yd7VV13OrkQRIp4lg+iagGTTLAACKsgSNAMTeamnvU+nHe4 cqxlg9asrp9l0MGJZPEBHUiShr8L7P4LfW0bHxvesAiNmxCfoHnnA6nTpEvLt7U88ine zvxQ== X-Gm-Message-State: ABuFfojE817xyjNLfkqxZbP6sR4bnVFiV7faVW897Tn5urks7dUHteWS gJx4m+fSMGCbYgsnFto4eZo= X-Received: by 2002:a63:9712:: with SMTP id n18-v6mr8408003pge.69.1538712148634; Thu, 04 Oct 2018 21:02:28 -0700 (PDT) Received: from blueforge.nvidia.com (searspoint.nvidia.com. [216.228.112.21]) by smtp.gmail.com with ESMTPSA id c2-v6sm8787899pfo.107.2018.10.04.21.02.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 04 Oct 2018 21:02:27 -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 Cc: linux-mm@kvack.org, LKML , linux-rdma , linux-fsdevel@vger.kernel.org, John Hubbard , Al Viro , Jerome Glisse , Christoph Hellwig Subject: [PATCH v2 0/3] get_user_pages*() and RDMA: first steps Date: Thu, 4 Oct 2018 21:02:22 -0700 Message-Id: <20181005040225.14292-1-jhubbard@nvidia.com> X-Mailer: git-send-email 2.19.0 MIME-Version: 1.0 X-NVConfidentiality: public Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: John Hubbard Changes since v1: -- Renamed release_user_pages*() to put_user_pages*(), from Jan's feedback. -- Removed the goldfish.c changes, and instead, only included a single user (infiniband) of the new functions. That is because goldfish.c no longer has a name collision (it has a release_user_pages() routine), and also because infiniband exercises both the put_user_page() and put_user_pages*() paths. -- Updated links to discussions and plans, so as to be sure to include bounce buffers, thanks to Jerome's feedback. Also: -- Dennis, thanks for your earlier review, and I have not yet added your Reviewed-by tag, because this revision changes the things that you had previously reviewed, thus potentially requiring another look. This short series prepares for eventually fixing the problem described in [1], and is following a plan listed in [2], [3], [4]. 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(), and also exercises put_user_pages_dirty_locked(). 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. [3]https://lkml.kernel.org/r/20180710082100.mkdwngdv5kkrcz6n@quack2.suse.cz Bounce buffers (otherwise [2] is not really viable). [4] https://lkml.kernel.org/r/20181003162115.GG24030@quack2.suse.cz Follow-up discussions. CC: Matthew Wilcox CC: Michal Hocko CC: Christopher Lameter CC: Jason Gunthorpe CC: Dan Williams CC: Jan Kara CC: Al Viro CC: Jerome Glisse CC: Christoph Hellwig John Hubbard (3): mm: get_user_pages: consolidate error handling mm: introduce put_user_page[s](), placeholder versions infiniband/mm: convert to the new put_user_page[s]() calls drivers/infiniband/core/umem.c | 2 +- drivers/infiniband/core/umem_odp.c | 2 +- drivers/infiniband/hw/hfi1/user_pages.c | 11 ++---- drivers/infiniband/hw/mthca/mthca_memfree.c | 6 +-- drivers/infiniband/hw/qib/qib_user_pages.c | 11 ++---- drivers/infiniband/hw/qib/qib_user_sdma.c | 8 ++-- drivers/infiniband/hw/usnic/usnic_uiom.c | 2 +- include/linux/mm.h | 42 ++++++++++++++++++++- mm/gup.c | 37 ++++++++++-------- 9 files changed, 80 insertions(+), 41 deletions(-) -- 2.19.0