From patchwork Wed Jun 5 19:29:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Oliveira X-Patchwork-Id: 13687380 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53307C25B76 for ; Wed, 5 Jun 2024 19:30:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CFDF26B0089; Wed, 5 Jun 2024 15:30:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C5E726B008A; Wed, 5 Jun 2024 15:30:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A89626B008C; Wed, 5 Jun 2024 15:30:21 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 8A95C6B0089 for ; Wed, 5 Jun 2024 15:30:21 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 11F99A1346 for ; Wed, 5 Jun 2024 19:30:21 +0000 (UTC) X-FDA: 82197826242.01.81E2723 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2137.outbound.protection.outlook.com [40.107.93.137]) by imf11.hostedemail.com (Postfix) with ESMTP id 5BDF940012 for ; Wed, 5 Jun 2024 19:30:18 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=eideticcom.onmicrosoft.com header.s=selector2-eideticcom-onmicrosoft-com header.b="a8UQ/Jos"; dmarc=none; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf11.hostedemail.com: domain of Martin.Oliveira@eideticom.com designates 40.107.93.137 as permitted sender) smtp.mailfrom=Martin.Oliveira@eideticom.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1717615818; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=AIe0PRGMhSUCv0s2EUxxu78eE4q16NkHsAtEFa7tqMs=; b=wXrGomt/hcBXEBiIJE0TwPWTTRDhBMiQ9Vm6P5ddmfCA6NgfOpxmaqG18+7JgAqRHtwie/ +x8J7tmnEmTSANtCzM8//Mo1miKZq3zhxHAtTxSjN7Ncf+B4w5D6TWwBNU3MPGbTMDUfS3 UdCjMMscb5ObyKqUQzrBjfVTLmBbCJI= ARC-Authentication-Results: i=2; imf11.hostedemail.com; dkim=pass header.d=eideticcom.onmicrosoft.com header.s=selector2-eideticcom-onmicrosoft-com header.b="a8UQ/Jos"; dmarc=none; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf11.hostedemail.com: domain of Martin.Oliveira@eideticom.com designates 40.107.93.137 as permitted sender) smtp.mailfrom=Martin.Oliveira@eideticom.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1717615818; a=rsa-sha256; cv=pass; b=7FsIJJYfhRoVrY7fS8qwB8wE9NV5DXGm7Jfcyk4RgbRbZ47HfWJsnB5XSbL61IbH8YnG5/ WuTGWELLaVtrzNgwwd4uNj/9WZay5LhQf/7sa9K5kDRLbPC+QYnQ0oiQAWmF2JltzkxKEF Mv0bhem1bJiaYc6WC05zIgMei55TKdk= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NkvlAW1EXTA4C05j+iPYYDpt3nQnjh/Q0in2Du9xefr0+F3eBqVBW/g4+6XOzg4/xcQP1JW9TSqBGsYJXAM8viHiqxpBJygYFTqN7aW0PfCbNGVNuN9n5dkS4qdJbqn78WovDU/FBWmsceZTaRSXHOTgkztR3IVdKegVcNcYSmMvRF3G80tZ1hBO1UYKBK8MjPMdbVy6L6osjnMBfSaKJy+9qK1STANR69E6Ndz5PWovtbS3GffMVPTgru/XuOA0niU2r5R7ogPQcLeq1nw1/uw/Dcc/nru2E2wr2zyGg+/vH5Uhae3i/8EyHYu/5S9hyhiMam/TZRnDHh6QCnbQbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AIe0PRGMhSUCv0s2EUxxu78eE4q16NkHsAtEFa7tqMs=; b=L8eUAYiqNXmwgz+ueCgnROkdGv7zCVVqIkqPZ/qA9C1HP1EdSqOgQRV/db2S8mhEAzeA+ROZpN5Or2WAQ7jCKO1wf1++pL6/pok4wLxfoW5Kx/U2+u7v5zGYDvDvldK/EZkeoPqFPwNFH3qtJHeTCyxipGCe62MuLtUua71TnLVYPFHXSWfB56p9auFRZl8wAG7t5lTcYBVDJBTPb1wz9QQwd55thydSLBQLlPr1UCwqqyOlo/VwPtjel0MqTNzJ/u/mNCdqY485Klf+WrfLYKqYsi2Rvqk7q7sLdJOuYov2hgW1A//gElkc8D3w3v5Bzu4ZHHTwGfJL/q1L0n7oyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=eideticom.com; dmarc=pass action=none header.from=eideticom.com; dkim=pass header.d=eideticom.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eideticcom.onmicrosoft.com; s=selector2-eideticcom-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AIe0PRGMhSUCv0s2EUxxu78eE4q16NkHsAtEFa7tqMs=; b=a8UQ/Josy0g1lpfJ4mdW57U0DkB/iudTDse6p/23yRlQJAcYunF/xL4koCs8Z5QgCsivBmKRQAnyE9m+RuvBFtZCT7eo2Wxh+5efCkgbf43fsS166xc5G46S16eFJpzIi2uJo4pBppeZeaPHO9GGDWWZKfvtOIGw75ag+mmzfg4= Received: from MW3PR19MB4250.namprd19.prod.outlook.com (2603:10b6:303:46::16) by PH8PR19MB7093.namprd19.prod.outlook.com (2603:10b6:510:223::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.21; Wed, 5 Jun 2024 19:30:07 +0000 Received: from MW3PR19MB4250.namprd19.prod.outlook.com ([fe80::3280:d8d:de43:6376]) by MW3PR19MB4250.namprd19.prod.outlook.com ([fe80::3280:d8d:de43:6376%6]) with mapi id 15.20.7633.033; Wed, 5 Jun 2024 19:30:05 +0000 From: Martin Oliveira To: linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-mm@kvack.org Cc: Jason Gunthorpe , Leon Romanovsky , Bjorn Helgaas , Logan Gunthorpe , Greg Kroah-Hartman , Tejun Heo , "Rafael J. Wysocki" , Andrew Morton , Mike Marciniszyn , Michael Guralnik , Martin Oliveira , Dan Williams , Ard Biesheuvel , Valentine Sinitsyn , Lukas Wunner Subject: [PATCH 0/6] Enable P2PDMA in Userspace RDMA Date: Wed, 5 Jun 2024 13:29:28 -0600 Message-Id: <20240605192934.742369-1-martin.oliveira@eideticom.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: MW4P222CA0007.NAMP222.PROD.OUTLOOK.COM (2603:10b6:303:114::12) To MW3PR19MB4250.namprd19.prod.outlook.com (2603:10b6:303:46::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MW3PR19MB4250:EE_|PH8PR19MB7093:EE_ X-MS-Office365-Filtering-Correlation-Id: 48b86261-45e5-4e55-5546-08dc8595e6f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230031|52116005|7416005|376005|1800799015|366007|38350700005; X-Microsoft-Antispam-Message-Info: gw8J4P+lOGiECPnQ5DZTkHBBzsceQiyloW8KnXdJe70o19m1nz93UeTqQuSEAG36sBVD2T3p3KJcs9jrWQTBir+hh5Ujf0khP+cy9g0rAOrw8zopio2hzZpR0fqECgYFbdU02WsdJp1UpFGNIOhUudB5MVywlkl4U53fMzVlrb8dL0koKMClhO0QPkpdsAkDz67zOBZL3akf9BiswPDPkjjeexSiQziOJ+2X9VTzyyrdUtAiZSdsmTm0Z53kJFPx/aWFKiQpyxNO+0o90LghVb8fKJQg+9hSx8eg7ABaJPxy8yXXDa06jion2TlmeXSKLSJZFLwtjrLgYZ1VLGI+3kGTjqPIpMdS4dWoUofzCf4hYLButwbet4+DoGa3+UBfMqOcBdeI8nPjDS8gR6qOZ7Ao1oJBAs7ZOEP8/cmBUP5fxyN8LXQVjI/6WiInuLOuUVQhHbwLw/7R65Ir/OIZ5FP5f8jLdE2iBtg+Ph5Cp6xMHJvkIU36vS9MnDDozs9TQ/q2WASvRu/4FeK8rcmgQdYR3/EbQucjvN22bOXVhYyfYLoe+9/Orb6QbStx1b4QgV62nnUKW7iXFyWreQdCP84RItx24ZhgEcM0VD5VCsnDzUy6RDwI2JjpmYBoQ+l07Ldhkf8Au4eqgkGG+owc9szOXdNtZs4YpjSD6Q7kmbfeUjW1ZIn+7IYU+yPQMTmlWgMwVPLWfCnYwlfxuLyBNdcQBLav9jcttfUWoO+DevLhLZWaIWgcLWr+hV+gbOCRjib6OYWEEK9mrf0LPmfvSmSRNHbFTA3IRpn3ZSGwlqeLhZbn14mUgEYS+xombKpp0tM84dfCp3zJwIVev4o3tryY7CvoJGcYf72Z0DGB+w23BXt8R+FeAW2j9qEwkGUK/GBq5CnxSZhlSSUV0FjZsHrOFKXnztSShHWCAUtjWKkqh9mMQZk3LQpajBql2I8x41KB39xcWCMhZ6gnf/wJIUSR1lmXxR7bCXsmDsJ4luUonGCsWhoOMs0Rj/tPvHIP0RBIhdHnd0DivIIIViePJHZqpZMovu04ZfsfHfANx21ebn0URL0fOzoYZu8pEMSCUgOYATaZ8/5PGWFOPpO6AD0+C1a9p5V+M9vy7LoexL3eKynSAJ9TnJlHh5cPmrGs5SV6tSFng2xfmafMy452eOFF4+9J+TA6xJx5hq4DRbHHSXgoQ+yGlPXvP+IwrWZXJqGDGoB+u6tSq57F4cEmviaPCVJkJcQKqpYOuXm2PqrMDQwX/wFqkLjl9lM8A3nsApbjR1OwWR2jC/IBShG7qliHUkQ3ubbMG7khd1LAEs44Nz9BHGb4X8zIOQmpoG6ctBv/ccfvpAhNnLgleY+AZsfYrZGd4xoinFrOcNsysOc= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR19MB4250.namprd19.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(52116005)(7416005)(376005)(1800799015)(366007)(38350700005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NfAlDP+QdePrynhmfTr9zTOJJlcnAZ2KfM0R11/QIrLHR/aruq0k2bj1BSanPxtGGmWKE4J5CdtOxVpyJ9aWZsMZ0d5elaeQqVHM8b3ZB8ETGM2u18veDyR/DFPfEO07JpPtoNbFcfp7CNOqW93jUeXIg1c11EOqoDN70H/jhhllboRmy+tow1HCvjZCqP0NkdRFv9kS+i3dHrHSOvQF1tf/tLUeC6wKG4GrqiYkXmCguN0W88k07D0DBhpPR4B6bnpOFOxp4lNvFVMZuiCV/VDKLkJwRr609nkdMXS9sGdEisr5TtjRaftC+Y1EVtK7r8ntaD3sL/W/HA0Nuk4V8Yict4n0nQDGa2gfCFNeV/VUsa/ZrtHolrGaU/qyqBpEyMPUP0wewN2p0N+so/RwfE585s5cj+RM/mB1wkv+OTacuX+zpZNePoGs2J6ZAGg8mFp6nbNxJF1LWjGVRPHTxsqJlTak1tqGgiSQwDHLHXje1RPc0cfKMbyY5Tk/33Mq7xLIXgkxrsa6gs+Gbx25GQkqxfAsw7mEZKqSZKlQqX9lKT8uj/kuJbv2jDf3ajRUAMKxBbYnCnWttrnXJJJ3QpOO8s0vuAPPdByCGOP9PBBfM5zm6I/C9l4kc702PVboBQ/doLosq0DbgT7pU1E2Hi9tgfOSGfYug5yBhb41uWIgdRdfp+h/LSvqSjiU4M7q2JG+5IgMfrdhw6waFDbJLbmrGKw3ZTmrAryR6ajMtCEbndo8b6CyfObPDqQe5OSiaIJP6QutXLtfaFVrq/j9ZvK/ZTFgjjKUbTkfH/xfMJ4TljW4/e4eJHr6walzPYJzWHWHVtN/R+oVy2pm4YGA2maSgpQBVWIop3aLc2RyevURvGFjLkZ1ul6vuGphdvasaw/Nt8cZzPXgIZDAaMpvlBLEBsLytM7SGxKPHx2xpr2J4Yb9j20G7f04yimc7t9MAKya56vZ7DfM5W1gwLUBQQ7ymngOPotdeBKGLK/QaUI7cenn5hrowfV81H74Q//uXuQShN5oQQBdv+ht1PAoKDJqvMqVDl1Dnen8IJVDC+X7JYbLNXLlVy4BiFRX+d8jXJk7MzQUSr1W84Xb2jxlNTYmRQ9yzNFW4bVb8UkiWSXso0ifUOpwBAEWcd8Peqr3SdxF18v9aqdYU1gXIggCncF36vWvm7JBwlkjYaSuuCmQaxRvycctx7B0JXIIax41XFNyTysyg6yM/wVEfXadreutMgsxCLwM2OiElQ9rVS2G+CSSU6Tf0/XyUqUbwyem/QLYqNP7Mbo7V3EeHberICuUwwdKLZ73PHFDXlLqSDH6HOF/Jg+3xxuyXHqTUSfRaNszTd8azY52XEjCqLCU9VsBSeQSq05m6p4F+dbPfjZqC0a42t35p4cixXpxSec2z8iMBlE8h81LejxLuwCQ5rg+UUiA6AgZYcWmz7o7tzzML5cgFaPDVyeaxmQazV3rUUabjFBhjaggy1Y0RRET2v1VDh574IAUVkqxUS9KGXekPe7zNwwnzWwtCHZUCfud/5daWkP44G8JvFUDTPlmIufpg//7ci7rim3+X/MBTp7nN3mly6IaL9o15wpZkPzwiMSONVDhsnhhFDX51V+y5A== X-OriginatorOrg: eideticom.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48b86261-45e5-4e55-5546-08dc8595e6f6 X-MS-Exchange-CrossTenant-AuthSource: MW3PR19MB4250.namprd19.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2024 19:30:05.2381 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3490cd4b-0360-4377-abb1-15f8c5af8fc2 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1k3er67CFE4N2MmJR94CeHeDErKUJM5IfRvkbhinqgElgDFvNRcukJxSztK4wRJG07Mu6BWjSEAxC6iWGdmQJJPnh8aq2Q8syY717iOOUKs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR19MB7093 X-Rspamd-Queue-Id: 5BDF940012 X-Stat-Signature: mzxuyybgiiqr34pepemeje4czn7ngexx X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1717615818-950172 X-HE-Meta: U2FsdGVkX1/LfEimQsuNE8fyknCtBaTf7IZg6VTaIiXnggi2sHZkBur+wljqU9YT7RuhYVBFx7L2q+r7L544RNBpmyfsDC53ddbI3nuy/sVBAfQdAbCD+Qz5B4eVJ4dvV8HKpxrIO1xtCsTp0Fi2dXvf72J7rHgdrOVYoxhPpxP0ScBn4R8CliZcNcYq4LGGc9kTdqyUNJkSQJYf1TO5l6oqyYc37c0ByCPCkwtTyrXrXdBEQ/eh4ADzwx/4+SzPCcFU3GYnR/ACF7jm+skbVvR+Csy5wU0Ij2j5yMT54rduheEhl32q67ijGdW9Fpg2Q/X8mEf8E+vU5CJpnJpx+mHwZ0AN96RtmMdf8BnP0y2x2juo5GALUPt/0PF99csrj9C3W0YoOveB7fj99dD6yI6JPOA5p7+YDZ7eQp5turTjhwDkDF4rX3q3Xj9CB/K9QpAekQNyVAvAoHGpJkMheo40THI8isGRNKbOtcX2Ehurwa4yi1RCV8nLCJ54kgv4gvLpOxrTqtUhd2TJhYw+mw9P7wLS2Wyz7+mu1wSHMUYJtN8sYZX+aVlbv/O1RYBfcy3g3yuLka8Sml4RniA9ZAHwKNmXctmdCbrMy2iFmH6Icp3WIwjxR4bagiZ8Ua2sDuJVjbZkSthbjUejwPG9C4PWpvJm5mvOD9E8l0YwbYGeet/1w6JKaj7EF0m+Ka68RXs5ekEYJBM4r/oZrTtkscB4mIGjCkbr7i6DiO+oA2uH+Dd9xqK1W/L9JElF+eQ+qSY0SLDfXjNAKbsZF0Tl56xsXx2RH96OVqhdSu0M8xEqb8pIGjbky7lWLQjZuUWKQmEBldo7ZYp9WfJ1QfDEznQKWU66KM6CMVJ/lGaRU3WGlG9+XBoNFjLzB/ezZi2R/T7Eu8xpo+l7RFd01L7sF7cwo5w777lsXE4PN+KLP7GKYvIvfh+Sfl7K0b/0fSbNhv8K3VrDgRpl6ZPKD51 avB4XK08 p2jnEzcEE+kknQVP0WMiqcXaoPqR/BALAaCRvLDUbXoDHonajsu1CVHnCfdbz8Z570e3nvr4Mvx4r0pIDP3Rs1yzSRxNfgTsYUsFfbIXhgnw+A2SWc9tI+0d0WMqs+QCPiD12CtqlTlDi30roCPlT2vfxEMJPT9xcSkvmyxUrCUZ4to3Xo8rZZ9hJBb309J4xUXe6n4SzVUs+/EQ0ln/HZopBdO4jJx+Sp00CItR3id6rb8up8daqz42rW2xTPMxoY/Z9YRDQ9DsffjywQye01fZbrzvB5UWKg4ETU7T4TTQcdbZhJIErLYltLj3Z39ybc+M8 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: List-Subscribe: List-Unsubscribe: This patch series enables P2PDMA memory to be used in userspace RDMA transfers. With this series, P2PDMA memory mmaped into userspace (ie. only NVMe CMBs, at the moment) can then be used with ibv_reg_mr() (or similar) interfaces. This can be tested by passing a sysfs p2pmem allocator to the --mmap flag of the perftest tools. This requires addressing three issues: * Stop exporting the P2PDMA VMAs with page_mkwrite which is incompatible with FOLL_LONGTERM * Fix folio_fast_pin_allowed() path to take into account ZONE_DEVICE pages. * Remove the restriction on FOLL_LONGTREM with FOLL_PCI_P2PDMA which was initially put in place due to excessive caution with assuming P2PDMA would have similar problems to fsdax with unmap_mapping_range(). Seeing P2PDMA only uses unmap_mapping_range() on device unbind and immediately waits for all page reference counts to go to zero after calling it, it is actually believed to be safe from reuse and user access faults. See [1] for more discussion. This was tested using a Mellanox ConnectX-6 SmartNIC (MT28908 Family), using the mlx5_core driver, as well as an NVMe CMB. Thanks, Martin [1]: https://lore.kernel.org/linux-mm/87cypuvh2i.fsf@nvdebian.thelocal/T/ Martin Oliveira (6): kernfs: create vm_operations_struct without page_mkwrite() sysfs: add mmap_allocates parameter to struct bin_attribute PCI/P2PDMA: create VMA without page_mkwrite() operator mm/gup: handle ZONE_DEVICE pages in folio_fast_pin_allowed() mm/gup: allow FOLL_LONGTERM & FOLL_PCI_P2PDMA RDMA/umem: add support for P2P RDMA drivers/infiniband/core/umem.c | 3 +++ drivers/pci/p2pdma.c | 1 + fs/kernfs/file.c | 15 ++++++++++++++- fs/sysfs/file.c | 25 +++++++++++++++++++------ include/linux/kernfs.h | 7 +++++++ include/linux/sysfs.h | 1 + mm/gup.c | 9 ++++----- 7 files changed, 49 insertions(+), 12 deletions(-) base-commit: c3f38fa61af77b49866b006939479069cd451173