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 1AAAEE64006 for ; Thu, 21 Nov 2024 19:10:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A208F6B009A; Thu, 21 Nov 2024 14:10:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D3856B009C; Thu, 21 Nov 2024 14:10:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 871C66B009D; Thu, 21 Nov 2024 14:10:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 67E606B009A for ; Thu, 21 Nov 2024 14:10:52 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id DFF6B1614BB for ; Thu, 21 Nov 2024 19:10:51 +0000 (UTC) X-FDA: 82811043378.11.04C1E7E Received: from mail-qv1-f53.google.com (mail-qv1-f53.google.com [209.85.219.53]) by imf09.hostedemail.com (Postfix) with ESMTP id E44FF140003 for ; Thu, 21 Nov 2024 19:10:12 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Gkh5qFMC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of boqun.feng@gmail.com designates 209.85.219.53 as permitted sender) smtp.mailfrom=boqun.feng@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732216113; a=rsa-sha256; cv=none; b=M0WvN6KRgFVzwKBWbV8q4Kto/zP73VhfFWkCPlvuqyZGRu5u8A4eu6reggzw1Es/dMEq0m RmavUhyYZjsfMrYhdMmGv80tTUFnLkKxxPBuUfLpqRjHUXx7UyWEI/eIP0pQBXWygpFmxI 4FkxatA2iswmPzln5qCtBaGW3QJXYIQ= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Gkh5qFMC; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of boqun.feng@gmail.com designates 209.85.219.53 as permitted sender) smtp.mailfrom=boqun.feng@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732216113; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mndBLNzJ+Ni1BuMLAuNFNji89qTPweETAMDxodRxvFs=; b=qntCJOE7kYx99T+qRKxBpBxf3WvcUsujHdEtv1mOTfsiY7rvo1aVDE8LeIposLOaIGHUxV +GpNatnBpGWxJF0vpaBnKLkit2WIhiLSveArLgP0ZGzR4mu/id2gPzC2TmaBdGnJfOP+l1 oZtJgmEH8J7kUi39nA1Iwpck1unPX8w= Received: by mail-qv1-f53.google.com with SMTP id 6a1803df08f44-6d40263adbaso8940106d6.0 for ; Thu, 21 Nov 2024 11:10:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732216248; x=1732821048; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:feedback-id:from:to:cc:subject:date :message-id:reply-to; bh=mndBLNzJ+Ni1BuMLAuNFNji89qTPweETAMDxodRxvFs=; b=Gkh5qFMCJIkQ2C9cQNgP/axWfb/Dyxv6RtCME1O6tm8cmIszDRqguR4AJElc4LpxVk mNWueppA7dwCrMqwwvHMRkJX5evehogW9t5EoUfF8f1qLLBMZ+v080Ug8eMlLGe9U1UZ /E2QoO0ExPhvdZ2KlQwTBswPQLMm4BkGR+U3rvIuS9aFyOYUxE5AW16lQZnNTH0ideHL OJ7UDHNNmUo9aLeyeZKE6gziZdD8RqEzhW9Ou9DRHhiQmcluM6cmTSvWQLj8cgzuim0T WzDSKYt6IFqnyMwr5XWoz+Mg+WM/aSmKSrfnzo47S7eESZMA0KIupnBFf/S/rc52m8N3 3rhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732216248; x=1732821048; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:feedback-id:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mndBLNzJ+Ni1BuMLAuNFNji89qTPweETAMDxodRxvFs=; b=OZ+2ny2UXLoJJusdwI845hj7pItTfnTtJKcE13+CO0N+MRM95t851OSZDkENIM1bXu VDD+e9Bp/OJlWGkGmviPJ6AeHg89+fKc3gisRy02ZCtmNYR0y2xqEyIjicVlRouMyEhe Bx9M/1E+8h9GBmLoNG+fFtyrG+hUkUeTFWAIjzP02/RUJZS1oUq8LBxRtNsMNPhgdMFb bunWneYPMs8Jq5VgWaVJY+bvPSkCGzbaVgDl51jCn5DFcHAHwCaEe5wS4TkuJz4PsUeq EiOQgsIHwU79OYOdUY0dRDP8EBhc9h1da11UfxPmsIJkDMmEYGn7QPBIL2gJ5MWUd8HA rVLw== X-Forwarded-Encrypted: i=1; AJvYcCUDZH52OkCK9sVSwWvYU/gsgWX6XKUrdnOBALrogdkvW3Yy6gS5+WfzCUhbXh3W1xTLwI1Le+/D5Q==@kvack.org X-Gm-Message-State: AOJu0Yxpj+Sg7aYud7SJVvVzznenWnHO3FEz9kVSjtnuCocPCOvJ4i36 WUq+eZlcNRbpGOOLm92DfS6UhMJ8pSja4V+sqtSPEqKGhniVSUA2 X-Gm-Gg: ASbGncsv0jacAzGHbphBit//zBq1Wti25LWxMTg5V8JcAb7JEdpbvt/+q16tS2G9kVU 50V6y0t5WF0h+F4VMZA7j6ob8G305j+YM4BVbhIE+34RmmmnuuQzRar0GQ6PNdv5lPUOf/+ji1T axWEzFwTp2nTp2iQrbaZupjz/IHi5K0EPDZd9jODtU66yqAX+she+QeZwmGtQPz3aZWB9NxqTKj BS4JSfEqInO8iMqYFtIdWXkogGRnHv+UiV0MKLOg3p6L1d8iw8Hb+jugm3Ch977tI/KlKEVc5RC TwsYA3tAMroiU9m1pz30nlqmoEdPzdZqT7Ok62ql X-Google-Smtp-Source: AGHT+IE3EG78k8zKCjeh5hjn2+K+HjogsMTfgQ2VCCRmJRLUKsnlTob6emyf0BQC3dIB0wmhUpVEVw== X-Received: by 2002:ad4:4eec:0:b0:6d3:f1ff:f8d6 with SMTP id 6a1803df08f44-6d451360ff4mr4235686d6.40.1732216248463; Thu, 21 Nov 2024 11:10:48 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6d451ab53dcsm695156d6.56.2024.11.21.11.10.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Nov 2024 11:10:47 -0800 (PST) Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfauth.phl.internal (Postfix) with ESMTP id 3D2891200043; Thu, 21 Nov 2024 14:10:47 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Thu, 21 Nov 2024 14:10:47 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrfeeigdduudelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesthdtredttddtvden ucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrihhlrd gtohhmqeenucggtffrrghtthgvrhhnpeehudfgudffffetuedtvdehueevledvhfelleei vedtgeeuhfegueevieduffeivdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmh epmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhi thihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppehgmh grihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepudelpdhmohgu vgepshhmthhpohhuthdprhgtphhtthhopegrsgguihgvlhdrjhgrnhhulhhguhgvsehgmh grihhlrdgtohhmpdhrtghpthhtohepfihilhhlhiesihhnfhhrrgguvggrugdrohhrghdp rhgtphhtthhopegrlhhitggvrhihhhhlsehgohhoghhlvgdrtghomhdprhgtphhtthhope hruhhsthdqfhhorhdqlhhinhhugiesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphht thhopehojhgvuggrsehkvghrnhgvlhdrohhrghdprhgtphhtthhopegrlhgvgidrghgrhi hnohhrsehgmhgrihhlrdgtohhmpdhrtghpthhtohepghgrrhihsehgrghrhihguhhordhn vghtpdhrtghpthhtohepsghjohhrnhefpghghhesphhrohhtohhnmhgrihhlrdgtohhmpd hrtghpthhtohepsggvnhhnohdrlhhoshhsihhnsehprhhothhonhdrmhgv X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Nov 2024 14:10:46 -0500 (EST) Date: Thu, 21 Nov 2024 11:10:45 -0800 From: Boqun Feng To: Abdiel Janulgue Cc: Matthew Wilcox , Alice Ryhl , rust-for-linux@vger.kernel.org, Miguel Ojeda , Alex Gaynor , Gary Guo , =?iso-8859-1?Q?Bj=F6rn?= Roy Baron , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich , Wedson Almeida Filho , Valentin Obst , open list , Andrew Morton , "open list:MEMORY MANAGEMENT" , airlied@redhat.com Subject: Re: [PATCH v3 0/2] rust: page: Add support for existing struct page mappings Message-ID: References: <20241119112408.779243-1-abdiel.janulgue@gmail.com> <98a46b27-c4bb-4540-8f75-f176c3f2fae1@gmail.com> <650846e4-b6a0-472d-a14e-4357d20faadb@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <650846e4-b6a0-472d-a14e-4357d20faadb@gmail.com> X-Rspamd-Queue-Id: E44FF140003 X-Stat-Signature: up59c8npwfogqa83ikgiz4tr17rkhfpr X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1732216212-503324 X-HE-Meta: U2FsdGVkX19LRREX+pPXGytdf59JpB1V+wxsKXDZGSVk4x/eLeDWprwrthW89V4bssswpmz5Cx/fxStwEs3BnZN/MeiIY1cc4h9wpUdMSt+LPSKZ8GXOV2AfETl3NkOPtE208OZP19r+HtsNhJ2dzxReaHUGVUJcskFCQ8Un9Eh6rDh0CgtMQGrmd8aU2o6ZAEN4s9mGr9eWjKccWh8Yr680BMQzNg2sBpdxRYyUY16bPjR8covbdlHYZw/+PDS7gpKurRlUzhbQSJPVuESnEt0fnp/AkWxKlkU+wA8Oxkv8gWmuupO6fIhBcipBcN3Znm/dEfRdjpCo4oM0TSHN7KPEqS+88cI2utiOVcjd1fJpHQmiBUQcAGKiTylT40qDqZ8r3RSDX3L8VaJB9MG77DbyS/DS8gKZIfIgFE32sAckOIc89TwobqxbL01+A+gESEQ8iiazSg5BJNV4WaEpAoS1kFl9PUIXy/gyfKl5Uz20qFma08Vip18Oxpoob17ToXhof6ZVqgFUr2JBOS9t23LvI5a3lZDVgVwOJYUjHXCmSeoJMja2O/07fcFKgjAuXO7zskNDDFL2T9750eC47LdMclnIaAsXJGPWHtgtmfJmDIXu0GdFpJSL0TQt0q6/hhD/DIuEYHq/hylDspFTbH1nEPdzwvVWrfQxKD86mR1F4twcZGkq7ni3PQ5qDBaPClLmiKZifacnpqy3/qmPCSnDBsbnoeJJbCxuvbJoYh6jRUCXBudVoIDJ2qOpRn5vcPX/CDwAKdgqViEoObaoNulWM46fFVJy+Zrknhn1BIuH+akxu2FLl72KpONmqv0zmDr1IKu05VYzr/O6VQWh2eU4lT/XRnRV8DRGZ4vFWwN17X6HwTQgag4H7Ed4aNYw7WnYs4tXaLw7MmHp2VdqdBi8OAXI6uvz3oR7k5ZwDiyirPaFLlKO0GHBkyv/E6ho05jyc7fcFBhexxdcQIP MJ8vo0Sr 9IEfo3Xfkld8DNlNGa7OLy9U+gha5q6oOprhJ4m+9otvAIFgYN7IIKfDL0l2BqPnwDr+i01l1PFKSG5doBfFJShSjcd+1bkigk0f7O/H3bNG/1oJ3LdlUefi4F8zecgPSOkxtmDx8lv+BeOhNXMEiuPiJkSA8rb6/xNXEK3jMityOOGjHnsRfXRtrVBHIkpUhVZZe3WIV/55zz5sXMuUlNKVclcwcizs56nauxtc2YmfGH/UDZMFP9z1Dl8LnPsUpwPGIyBkzvCAffODB2Szxg2/pDbEknECvBPPmnvk/1CoQGSLmwOJTk8BDILwpDhW41d7ZB+oeAkMHGSZZn2rodUBQijpC/GNWsfKQJypp4NXMJHUa9Hc17i6c/cYXJsusaafGOx72jUPfX+P8n4/LvsN9ilE6RQPrpTIypv3TBnOPetdAdS+TLNz6eR+f9qANjKea 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: [Cc Kairui in case he's interested] On Thu, Nov 21, 2024 at 11:30:13AM +0200, Abdiel Janulgue wrote: > Hi Boqun, Matthew: > > On 21/11/2024 02:24, Boqun Feng wrote: > > > > So if I understand correctly, what Abdiel needs here is a way to convert > > > > a virtual address to the corresponding page, would it make sense to just > > > > use folio in this case? Abdiel, what's the operation you are going to > > > > call on the page you get? > > > > > > Yes that's basically it. The goal here is represent those existing struct > > > page within this rust Page abstraction but at the same time to avoid taking > > > over its ownership. > > > > > > Boqun, Alice, should we reconsider Ownable and Owned trait again? :) > > > > > > > Could you use folio in your case? If so, we can provide a simple binding > > for folio which should be `AlwaysRefcounted`, and re-investigate how > > page should be wrapped. > > > > I'm not sure. Is there a way to get the struct folio from a vmalloc'd > address, e.g vmalloc_to_folio()? > I think you can use page_folio(vmalloc_to_page(..)) to get the folio, but one thing to notice is that folio is guaranteed to be a non-tail page, so if you want to do something later for the particular page (if it's a tail page), you will need to know the offset of the that page in folio. You can do something like below: pub fn page_slice_to_folio<'a>(page: &PageSlice) -> Result<(&'a Folio, usize)> { ... let page = vmalloc_to_page(ptr); let folio = page_folio(page); let offset = folio_page_idx(folio, page); Ok((folio, offset)) } And you have a folio -> page function like: pub struct Folio(Opaque); impl Folio { pub fn nth_page(&self, n: usize) -> &Page { &*(nth_page(self.0.get(), n)) } } Of course, this is me acting as I know MM ;-) but I feel this is the way to go. And if binder can use folio as well (I don't see a reason why not, but it's extra work, so defer to Alice), then we would only need the `pub struct Page { inner: Opaque }` part in your patch #1, and can avoid doing `Ownable` or `AlwaysRefcounted` for `Page`. Thoughts? Regards, Boqun > Regards, > Abdiel