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 18CE9C4345F for ; Mon, 15 Apr 2024 09:55:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 735C36B008C; Mon, 15 Apr 2024 05:55:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E5A56B0093; Mon, 15 Apr 2024 05:55:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5D4666B0095; Mon, 15 Apr 2024 05:55:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 3CBAD6B008C for ; Mon, 15 Apr 2024 05:55:00 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 02BE71A04F7 for ; Mon, 15 Apr 2024 09:54:59 +0000 (UTC) X-FDA: 82011307560.08.7E40FC9 Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by imf23.hostedemail.com (Postfix) with ESMTP id 3058A140004 for ; Mon, 15 Apr 2024 09:54:57 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=jggoFhwR; spf=pass (imf23.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.22 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713174898; 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=t8wo9oBZ3T0/ktHZWfSC05XgtiqQfwhxlvieiuSqOyE=; b=czoTpswxzOEnChY4OCbAxn25Fz6u6sILTXlZQ3VzZPtiXAB+aeLuqq1E1tqFMj1wqN8S5a PDZ+V4kBWBfABtI5OPKcJf8ycN6HtQa7hyUdaUeCA3i0bZuVjomH1rES3Dm5+w66B6pOba duG0cui+G/H6RC75qsvD1bzC3AYfsKw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713174898; a=rsa-sha256; cv=none; b=ORnMovfSbUP/ApuiX6eIi4efzw+bRJ5rDb5gNfu5RRAeJZEe/jY98G5dPwVtRN2Tu7jTcP 3iV03hukRky/BLh4E9V0kZhUG3SgdrRUOVaT9jhI43EUSET4VGhYCzJp0TvRQJaFd0K4PQ 0OGxnZv1O+MbHROI0q6FrM2b4xwtzRU= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=jggoFhwR; spf=pass (imf23.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.22 as permitted sender) smtp.mailfrom=benno.lossin@proton.me; dmarc=pass (policy=quarantine) header.from=proton.me DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1713174895; x=1713434095; bh=t8wo9oBZ3T0/ktHZWfSC05XgtiqQfwhxlvieiuSqOyE=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=jggoFhwRhcdTbNRIjpMSKlUsYFgcBrwbZEv0XKICXZ8SZPsbHOcIXYuq/dxBy0cDF qoDDh3Ni4OIeKz/VGQANYpA6Exrf2VZgtBS2maIQBHWev6wdib9L3F0vESKTl77V3O LA3y+KsfIZiUOTlBzOnX11tuCPIMRExAHvRpoA8nM+5zF/V0cYolbZGa3HDk3vqeww /B9Wn1zV3fPR+GToPiAHa6og1a/3BVIoFXlEDVUXds/WmpNsGuQlBSbexqvEETwZuG yHi9RJhIugbXYN1o22owWxWSrtvAWJpOiFkCqp1F2rHvcT8Cchp0EjOQR0AKfOdxOi CYBfqXaQQpd7Q== Date: Mon, 15 Apr 2024 09:54:07 +0000 To: Alice Ryhl , Miguel Ojeda , Matthew Wilcox , Al Viro , Andrew Morton , Kees Cook From: Benno Lossin Cc: Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?utf-8?Q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Greg Kroah-Hartman , =?utf-8?Q?Arve_Hj=C3=B8nnev=C3=A5g?= , Todd Kjos , Martijn Coenen , Joel Fernandes , Carlos Llamas , Suren Baghdasaryan , Arnd Bergmann , linux-mm@kvack.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Christian Brauner Subject: Re: [PATCH v5 4/4] rust: add abstraction for `struct page` Message-ID: <7918eb1a-2c3a-4c5a-b309-1306573dbd1f@proton.me> In-Reply-To: <20240415-alice-mm-v5-4-6f55e4d8ef51@google.com> References: <20240415-alice-mm-v5-0-6f55e4d8ef51@google.com> <20240415-alice-mm-v5-4-6f55e4d8ef51@google.com> Feedback-ID: 71780778:user:proton MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 3058A140004 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: b33xufibmzmg9qaci5pfrn6ox5eqgafa X-HE-Tag: 1713174897-351829 X-HE-Meta: U2FsdGVkX1/uwQH7ToRnV4toCEKl0Kd+Hpm2OCEcEb3dLNF2FKt7W04StPLtvdWMwl3kWoNeVKFBJ+/GVMKhImhXWf+FSjerRlTytmEaYrBLEzqZupTbwc2PQcPIV7EuXOzhK5x0qZBTWW8nIweXpDf+Ft4BKhvWdCkYP+2Ko/wLI/ljpwQgnRa2XkyOFmIUu8LY0wIhfL49gyf70nR0u+GSGvJxNvjozRW+FJF4tgNOiSTbbj5rJxq3WnAe9G4jjUO2u1fVqFiZzXgSw4j/jf7Uetige0PvdSGk2czxfHTR53yBlCCbpVTv/aHE6yvgwWTPgIcVp5VT2VuwcWjxWTIvD1HBzc1s4uLKn/pjOXnAxVwtbHYIF1XoQRjN+mn4tq3S7TiFka+fZ/LbR8rpIDQ1qkjYPP42lOSdThJ2J/3E/KQaVG/vdM2BI/TQKvrgkXC0CcHtQ2QAMBOEY+IqPVKYAQi2TDAq+ADnT0rjS5Wzazmq3TeTfzmDEr9HSWRwEPbivhvauyP0P8WQwinJjY7ko3YhltxuMHmlRFwanYu5JeYBWzkJYx867X2Jw34maAxqXqeEbf3K5h3bkPGqsRr7g1nYrecFq0YazrmFbi9hm6msWCn4oTsADvr1WdHFf+JO3FJg73we2oo72VOKgCCVqCMOGFRPpNSM7lpO3Zo00W0hu6HzPJ3LRgxV8LikrWfsHcDTP2FJAjDr6jHYS7Q7EFBJPaVAzZhG94/+Z5XlxUMDOEJtyeizUOrIj/qR1rcH4TtlRRBWvNHsGjp9+dYne6+r7kPe6w4R7FxDpDMAH2pDXXIjue/qw7/Xumi8LTERYlpCskUU+lNKLbyxsfeKK+HAA08bhdsuUe3tlvhiDfN1mr+EkEWzcDYp4PehwWRG89tfOWDzEaCT65/3g4oreFFS9bBaJA4WHrTOT+tTsCrYyJQqHatwHggMHWLMwEWJGjIC1EzH1UDnh3O quf40U6X zyPlRp5WetBLCucKagascIFjzFMKq+/OqBv+5BedZV+/Nc2lWSUbMbxcfbjM7sV3IG9BMo8k0QebKv2ppF1+WhfYwtxIG0mfv+B2jHOGkVAoP7LxtVnxdixss5BNfnKFCfnA2Bhb+u50ZsrcCUlfijMsIiaDEqgDdXwHl4zArins/CJpcBnpQDnSllOm/FcoWgSHM8p479nZ2WXcA7fLMVbf99ptsbJWHDJNBPGZ29yj5lQSRxbbO7yQMYZWX+K0ZyjtPrjX16I8S7r2Fjw5Z5gmhDbWbF44vqppxpQw1dQUKncspmwRSaozllP4aoui+BHiBAYthh3gcz6wxwoWCUbJ/90sgd5qtV5V9PQa3HUgfyiVzEzKUy0pAcg== 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 15.04.24 09:13, Alice Ryhl wrote: > Adds a new struct called `Page` that wraps a pointer to `struct page`. > This struct is assumed to hold ownership over the page, so that Rust > code can allocate and manage pages directly. >=20 > The page type has various methods for reading and writing into the page. > These methods will temporarily map the page to allow the operation. All > of these methods use a helper that takes an offset and length, performs > bounds checks, and returns a pointer to the given offset in the page. >=20 > This patch only adds support for pages of order zero, as that is all > Rust Binder needs. However, it is written to make it easy to add support > for higher-order pages in the future. To do that, you would add a const > generic parameter to `Page` that specifies the order. Most of the > methods do not need to be adjusted, as the logic for dealing with > mapping multiple pages at once can be isolated to just the > `with_pointer_into_page` method. >=20 > Rust Binder needs to manage pages directly as that is how transactions > are delivered: Each process has an mmap'd region for incoming > transactions. When an incoming transaction arrives, the Binder driver > will choose a region in the mmap, allocate and map the relevant pages > manually, and copy the incoming transaction directly into the page. This > architecture allows the driver to copy transactions directly from the > address space of one process to another, without an intermediate copy > to a kernel buffer. >=20 > This code is based on Wedson's page abstractions from the old rust > branch, but it has been modified by Alice by removing the incomplete > support for higher-order pages, by introducing the `with_*` helpers > to consolidate the bounds checking logic into a single place, and by > introducing gfp flags. >=20 > Co-developed-by: Wedson Almeida Filho > Signed-off-by: Wedson Almeida Filho > Signed-off-by: Alice Ryhl > --- > rust/bindings/bindings_helper.h | 2 + > rust/helpers.c | 20 ++++ > rust/kernel/lib.rs | 1 + > rust/kernel/page.rs | 240 ++++++++++++++++++++++++++++++++++= ++++++ > 4 files changed, 263 insertions(+) Reviewed-by: Benno Lossin --=20 Cheers, Benno