From mboxrd@z Thu Jan 1 00:00:00 1970 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 E0613C36010 for ; Tue, 1 Apr 2025 17:31:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3AABA280002; Tue, 1 Apr 2025 13:31:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 359D8280001; Tue, 1 Apr 2025 13:31:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1FAB9280002; Tue, 1 Apr 2025 13:31:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id F05CB280001 for ; Tue, 1 Apr 2025 13:31:42 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7FD87B7B68 for ; Tue, 1 Apr 2025 17:31:43 +0000 (UTC) X-FDA: 83286167286.20.903F7B5 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf24.hostedemail.com (Postfix) with ESMTP id 9C918180005 for ; Tue, 1 Apr 2025 17:31:41 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UIlM6Ukb; spf=pass (imf24.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743528701; 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:in-reply-to:references:references:dkim-signature; bh=M7syCWAOyThNyQUw4zwHmCXZr8Gy/oYrWc7UBGiI35o=; b=a9H28YqFhhrthjKuo1777T1Oqzqmnnk4cmCzychEfkSIrXemULVZJRtjUdf3lpbOiAe2BJ Bbo5IsLyF/JYpeMVRbjyb126PBj0YkyFtG+r2pV14tWoXRvrcHQWKkA3MtXKZsfYPm94RM 4XHLgQH80yCXnvTwmlABhULi4Sjwpd8= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=UIlM6Ukb; spf=pass (imf24.hostedemail.com: domain of vishal.moola@gmail.com designates 209.85.214.172 as permitted sender) smtp.mailfrom=vishal.moola@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743528701; a=rsa-sha256; cv=none; b=OuPOP7RXAsnInCPlj+wk2Zr+EpA5m6qa5pP7ikNRRLQNKpA92SHMw3F7jdOr+0ynVapCRS iOYkVc8zdavbzbhjeKTQCGvfqTE3snFLopSgNVL7iZcu6uoHs0rnuwg6p7X73r0Wi/rI+r 1/peMK1+sw8Y5acBi99pIhNrbbxlrrE= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-227a8cdd241so25714275ad.3 for ; Tue, 01 Apr 2025 10:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743528700; x=1744133500; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=M7syCWAOyThNyQUw4zwHmCXZr8Gy/oYrWc7UBGiI35o=; b=UIlM6Ukb/J3EK9eLzsi1IN8Ock75E8n03Y5ZSppIAjh26g/3jd3GgWI4pJBO2Su1CA QS9pLlZ8mA+Q8ZoUz6ZXRtOisNNNd8Dn6fS4AU4lhQuVEJs3rbvWvHsTl7+xD6UVwdDV lkez+j2FIRPEmDZgLTauRClxEtmDBCvjJDSqEPNRWDj0tEPe7J5vnrIl8YwOngYvcNTU FbVuBgOESi9d5LgIX/oT5lgvGAS1Xstl5m9WrbA5uXhuApbIx7WmsyMjnUYDZd9cPIal L63HwiosKfS/Dj1zmrgA9ePFrpfdlIWQKH5DKyNpNsqzm8XoRG/c4+KHR2Txk/Cb3fTz xJ5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743528700; x=1744133500; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=M7syCWAOyThNyQUw4zwHmCXZr8Gy/oYrWc7UBGiI35o=; b=A9KSOLZg1zdWzAScCfZ3WQjH0s1CU7LCN3GG93T1kmmUeetiRS01ek/4mFHbbtnBgz LaP7ZbJFdjp130/wH0TJkR6F9iViX+MB1l0HNKOg3XIPJGw03mAL2jBhK4DnkhdC/rbD TrTQ7X3U0iyxEVB1rBq8Z7zjtnE7HIF2ngBwR1Eohiy26gHkld6dDNEjx69GAMefeJyT DHQxs35c/29eG9glA6ZdsNMw7LsZwJeb6fYg9J3E9eqb/KYUTVnatKpQcbiP4Xbe9PON Cz0f3VjLkmHKYWSObuCurwUDHeX/NXa4i4XX1/5Ue+BQhkVndQbDgEW5qiEiC7glqp4p IB9w== X-Gm-Message-State: AOJu0YyvmGVt7b8TKWUbFHwn3y5uOzzjjG521o4ck0MpwtVEKyPPsbuc UCWPfzqkSl15P1cf1Ch8RcrW/3yAeYeY1X67J5uKTySgRgegTm4N X-Gm-Gg: ASbGncu/XjzSeF63LFtFeY5ml019vkPlFXhqZggxwCEIE45AyfrrrynVbJp47ZOu8v7 VZ4w8zZuCV+QHZKgzNWW8kWYSkWxmD7f2S24gD++5QiCj12ZgeGEareJobWccphrmPVFF/S/rpi +ANi/sRDvSqYgpkMlP/JQheianaju2VLfWIFgCdjQAvre+lYMvo29XVWlKy2cy8a2d9vVXlw17T cmvnl/K6e/dHsdQj8fwBHjFmv2sbOYvHN64ENhn3OrLa334wgZVSmdWsqETDNnjcBrh2RsryRsU w5Eo9Kw8Lpwc8iNZQu6UrTi9kfi+AwTtW9Id2ub5O1N/hutKh+ZIHJol2/gdoEZ7EO8BWE/Spd5 7hodXZ2YmLbM= X-Google-Smtp-Source: AGHT+IFrgdARhEFfvez2DLqR5DhUrUFREzAIsj4WG+NeSvM84PY/b6JyKRGyF2HOs6rD5AG+dqJd5A== X-Received: by 2002:a05:6a00:1309:b0:736:55ec:ea94 with SMTP id d2e1a72fcca58-73980452a03mr22291576b3a.20.1743528700372; Tue, 01 Apr 2025 10:31:40 -0700 (PDT) Received: from fedora (c-67-164-59-41.hsd1.ca.comcast.net. [67.164.59.41]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-739710b0f31sm9455943b3a.146.2025.04.01.10.31.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Apr 2025 10:31:39 -0700 (PDT) Date: Tue, 1 Apr 2025 10:31:37 -0700 From: "Vishal Moola (Oracle)" To: Huan Yang Cc: linux-mm@kvack.org, Andrew Morton , Brendan Jackman , linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH v2 0/1] Introduce vmap_file() Message-ID: References: <20250328211349.845857-1-vishal.moola@gmail.com> <02ba63ed-ef1c-426d-b469-09878c5f03d7@vivo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 9C918180005 X-Stat-Signature: oi9a59jmfy4fr3szrtsekyjkgsoirbg9 X-HE-Tag: 1743528701-536177 X-HE-Meta: U2FsdGVkX18OH7ACgwSxGz1MpTzdI/YTnKdjXkMGLyq4+CdODOu/5q3XLPiPlsh5f0qpLBmrXzBtTtUtWtOC6B/wx6tJ/scOesApJ+HSx902LpzIUMsWrAnl3GkdMB1lE+ZBc73EIwu8t17r3p8y9zukQQ1+LOKhIuyMrA9UgS3RStPmbVkaveoseDDjb4hY6Ecw50ANiEbhUngjnzSCGvjT86m9m/1FP7IKu8b0l+91DXjlqaLiQx8JmyGvp/LS5BX2986vJA3xxwXUVJUIm11mKO9juRKKyEHiPsUaGf54EIbYrgkQPhVseTgrcID3VQaKlxYVyomnvq6HMeRlnIHkzoHER9F0Ikb2uw3WO2cSUaHGNs7fTm7+iv5ZAGARPUPoJucCIQE5marvdrVD6mTLWYGxkWoV0AHcrbMERnPNKikKUsDV7YTR7JkYOK1s5EceMcdCpwq1/jKh8L2KCEMDXiKddHZytvgWy2o/Z+nqNAr9WreOyz++U8gj37EXKRnqEFOd7tzQDK/cICOrjVBt2m/5sAtvuk0fclV/53HODSB5kIYKRgCu2G7LFdZ4YRcYxBNRlSBlI7vmTO5TBApDdeAlJzq4G29NmU17nnCt4HADUpAM/mfsUJsO+44aEPnGa5nXIhKB88hILMNdSQCvnU4xcZWlG5/KpdZ6J50IFJ+jtCcpFkVKNzqJbRue6F4Ly/jE9Pox/o45eKF5SE73jnIh6d2R4oBSC79/WxDgDcXAEc5tYQL15P7LNa6g/kKgAxWtDTSqPSIc3gmGdfOn0tZLONA2panfVWHAfCd3YFcX5kamHH7odqdLhtsBg23veILL5HdTmohykEnoeAQi7Ti1CH48LMaPz83WK4wx2iJ7QRWkScPF0L8B9ES5p+Z+fxrLbM5nf29lzMhCCy4l0vzD7elK/+XKZa8vYbelDmzx/Mn5udvyBACHj7tkrVzqTsxbdkezlhSyow8 sRpoHEvq j2owZR7LERUMO8env9dq27iHPNp1XkoqTwxY53hlJI0C8lrJXG8XYb2ZW3O9AlLBYTuZ33DXHoWj8Am+IdZg2BrLVauJE1cMgveMATtcOfoLCUIERtf8sdKW5pq8OX6CW4/UsObwQcEbXq/DjGoLWLl4r+1SC1/+RtQKQo7kp4/nExpwN6QT9vsKV0AEDUUdB7G/T55uDC5faYwnFf9pVw35Ju0cBc09KCa1PJBQ5v8b6ZeLI9m6YTUa0txBEFzBh71JHAuZ08UGTjKf8+ZmrMZGYX8bGffD9KIG6pml3Lzw93YrcjunszLV+ZVnwIKUeesFoH3loQR0lfWowmG7UgOjiNjE5NtjPEOtt/GWEWdoibhxI4nBZb5bioQhRmRv5OBOtAMO5th3dfsSLEHZb7J6+pITHvW6u4CZEEP8VC7cXtEIh7Z1GaTTm86QVaWdDr+WYcJ4MYnQqj2YnrZ+TtMXpesSnC5kzYCk1yHRs8h6IJbiUuHaWZHstew== 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: On Tue, Apr 01, 2025 at 02:08:53PM +0800, Huan Yang wrote: > > 在 2025/4/1 11:19, Vishal Moola (Oracle) 写道: > > On Tue, Apr 01, 2025 at 10:21:46AM +0800, Huan Yang wrote: > > > 在 2025/4/1 09:50, Vishal Moola (Oracle) 写道: > > > > On Mon, Mar 31, 2025 at 10:05:53AM +0800, Huan Yang wrote: > > > > > HI Vishal, > > > > > > > > > > 在 2025/3/29 05:13, Vishal Moola (Oracle) 写道: > > > > > > Currently, users have to call vmap() or vmap_pfn() to map pages to > > > > > > kernel virtual space. vmap_pfn() is for special pages (i.e. pfns > > > > > > without struct page). vmap() handles normal pages. > > > > > > > > > > > > With large folios, we may want to map ranges that only span > > > > > > part of a folio (i.e. mapping half of a 2Mb folio). > > > > > > vmap_file() will allow us to do so. > > > > > You mention vmap_file can support range folio vmap, but when I look code, I can't figure out > > > > > > > > > > how to use, maybe I missed something? :) > > > > I took a look at the udma-buf code. Rather than iterating through the > > > > folios using pfns, you can calculate the corresponding file offsets > > > > (maybe you already have them?) to map the desired folios. > > > Currently udmabuf folio's not simple based on file(even each memory from memfd). User can provide > > > > > > random range of memfd  to udmabuf to use. For example: > > > > > > We get a memfd maybe 4M, user split it into [0, 2M), [1M, 2M), [2M, 4M), so you can see 1M-2M range repeat. > > > > > > This range can gathered by udmabuf_create_list, then udmabuf use it. So, udmabuf record it by folio array+offset array. > > I was thinking you could call vmap_file() on every sub-range and use > > those addresses. It should work, we'd have to look at making udmabuf api's > > support it. > > Hmmm, how to get contigous virtual address? Or there are a way to merge each split vmap's return address? I'm not sure, I'd have to take a look at that. Maybe going into a large folio world that might be a useful expansion on the APIs? > IMO, user invoke vmap want to map each scatter memory into contigous virtual address, but as your suggestion, > > I think can't to this. :) We could discuss vmap_file() supporting a series of offsets to map portions of a file; I think thats a reasonable ask for the general API. We could potentially do multiple files as well, but things start getting really complex at that point so I'd like to avoid that. The Udma code looks to be doing some buggy stuff, so I'd prefer we look at fixing/reworking those before hacking in a 'generic' API just so they can keep doing that.