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 CC13FC54E58 for ; Mon, 11 Mar 2024 10:51:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6299E6B0072; Mon, 11 Mar 2024 06:51:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5D9C06B0082; Mon, 11 Mar 2024 06:51:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4A17E6B0088; Mon, 11 Mar 2024 06:51:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 3AFEF6B0072 for ; Mon, 11 Mar 2024 06:51:02 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id CC5381C0E70 for ; Mon, 11 Mar 2024 10:51:01 +0000 (UTC) X-FDA: 81884440722.26.4C0B62D Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf15.hostedemail.com (Postfix) with ESMTP id 0E922A001D for ; Mon, 11 Mar 2024 10:50:59 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="GQ+lDc/W"; spf=pass (imf15.hostedemail.com: domain of 3E-LuZQkKCMgozwqs5Cvzu22uzs.q20zw18B-00y9oqy.25u@flex--aliceryhl.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3E-LuZQkKCMgozwqs5Cvzu22uzs.q20zw18B-00y9oqy.25u@flex--aliceryhl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710154260; 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=QkH89xHzV1IOGFDhkdj9/o38QLblihNlGOq4CZ122VI=; b=LLxMH1zYVqrwUjXa7jLvqRh0BqnyR0mWgUPZIEFztUo4JY+5eKu90pwM5eku+gLNI+Kpk7 L+EdlOw2JJtKukrQTpjVW8PgHapXjjIkH3ukiO8yqPgDWUcHjQNvmh3HZ6Fduk2UDJ/kPZ 2KLj1repIcBaq/vupdq4W/BJKT2AVyQ= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="GQ+lDc/W"; spf=pass (imf15.hostedemail.com: domain of 3E-LuZQkKCMgozwqs5Cvzu22uzs.q20zw18B-00y9oqy.25u@flex--aliceryhl.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3E-LuZQkKCMgozwqs5Cvzu22uzs.q20zw18B-00y9oqy.25u@flex--aliceryhl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710154260; a=rsa-sha256; cv=none; b=5ChUpYQdluucwIjLdXUMCL/ZqGRK+WMeE1qEYsUfYcTjJp4IWFfTgn7OpElxViAQ7jdJA+ Tn43w1wvxXu7h0zDdaGi37QNSvIvqhhjxV+a/um2iFJyVRS+LaUuGbWogMscbcHg8axrnK uC4tIj8jgTByNsmBU0Mn9q0p9vsIBLQ= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-60a03635590so49907727b3.0 for ; Mon, 11 Mar 2024 03:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710154259; x=1710759059; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=QkH89xHzV1IOGFDhkdj9/o38QLblihNlGOq4CZ122VI=; b=GQ+lDc/WvNEEKtm4YZqVqufHyL8m5BPqi/iZ6YFq+zzsKSywAv4zjABURarkwqYIjC rpQb0XoVRWqH+0e29MtSY2b6J2QD21NcMdrTIfxP9A5baQ3Bhara1qcSDBPBLbLF/Y8u 9nu8MBJAts2zgDo2rKATiAvNrRDYCUidbJS6ZhPE/FU30nuH2Rob3yTdvafncQ7n+/Ux u/z6nVJsTlVPzlFctxJ5EqaKlUdiO9NqvDPO2nOaHUYFxnJLTIn59z071iYm5jT+xlnZ Cp0N3vqoZWg2Hf3lYnGmHmZw9L/qjQge4mqYbWjZE9/L+BTh456j/l0GrOlveXmZZATJ ufoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710154259; x=1710759059; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QkH89xHzV1IOGFDhkdj9/o38QLblihNlGOq4CZ122VI=; b=dgp7PZR3YFZBHhCoa+HhHHIjxlN9VQWG9vCoDzKmiw070o97m6dAjY2SkgFxZ7db3U Npt6Y7wAEd6G2ES9UUheaFJCxKrqewAI0IofYIdd1uilGdPQv5wcfbRMa61I1RY7X3np vWuFt7woYMO/iW4LcpMUZwqgr3GMe3AvEZyuoKLmguNKAQYMtgpcaz9pdSsQxZXqhsG0 pm25R8MrCzZWRKVTGkLrwA0qiwcG75S6fYD5DDLqJM0J0n6K3jbSP/EnTtjOkyOBMxRh yRfQBC0VZacA7KtE8IzpgS3thtNnY6DYqAJM0MOqKGQsu5QMiEr1bXUeax0B6f40wpGJ 7V5g== X-Forwarded-Encrypted: i=1; AJvYcCVupTLrWCgSojYCITUgatHTWMwVTkG5nxi4SKSE/0AdPpi4J1LjZTFvxtEw1UwMH8WTfcqYwX/nxe19nsg3gZfub+o= X-Gm-Message-State: AOJu0YwQK/r1aA6ZA54M/HhF+hmHyo8wGVyZw2zjP7Y2r/MPhUoyDfgh RQ+IexyEm25EhQeuX5ugX6dKrfz/3vOyqA1Av4tFAJ5YnByTyKMURNk/kvd+u32uzV2rKUJ41Rq bJEATfjh38WSotw== X-Google-Smtp-Source: AGHT+IGk2L4RyDWsKEcTyzOXU5v0TXO+qH8NTfIYrhBPgHVqCAeETCeddjOHE8Z9t06NiIqRNoH7ePmbWCeR9e4= X-Received: from aliceryhl2.c.googlers.com ([fda3:e722:ac3:cc00:68:949d:c0a8:572]) (user=aliceryhl job=sendgmr) by 2002:a25:dbc2:0:b0:dc6:d233:ffdd with SMTP id g185-20020a25dbc2000000b00dc6d233ffddmr1754817ybf.0.1710154259109; Mon, 11 Mar 2024 03:50:59 -0700 (PDT) Date: Mon, 11 Mar 2024 10:50:56 +0000 In-Reply-To: <20240311-alice-mm-v3-4-cdf7b3a2049c@google.com> Mime-Version: 1.0 References: <20240311-alice-mm-v3-4-cdf7b3a2049c@google.com> X-Mailer: git-send-email 2.44.0.278.ge034bb2e1d-goog Message-ID: <20240311105056.122734-1-aliceryhl@google.com> Subject: Re: [PATCH v3 4/4] rust: add abstraction for `struct page` From: Alice Ryhl To: Matthew Wilcox , Andreas Hindborg Cc: akpm@linux-foundation.org, alex.gaynor@gmail.com, arnd@arndb.de, arve@android.com, benno.lossin@proton.me, bjorn3_gh@protonmail.com, boqun.feng@gmail.com, brauner@kernel.org, cmllamas@google.com, gary@garyguo.net, gregkh@linuxfoundation.org, joel@joelfernandes.org, keescook@chromium.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, maco@android.com, ojeda@kernel.org, rust-for-linux@vger.kernel.org, surenb@google.com, tkjos@android.com, viro@zeniv.linux.org.uk, wedsonaf@gmail.com, aliceryhl@google.com Content-Type: text/plain; charset="utf-8" X-Rspamd-Queue-Id: 0E922A001D X-Rspam-User: X-Stat-Signature: 65cc1fig6g1ydyncd1dtt4sfrags8kux X-Rspamd-Server: rspam01 X-HE-Tag: 1710154259-49153 X-HE-Meta: U2FsdGVkX18i6GeZ3tsoL+hg7ls+BSU/myCj4JuZCstA/MjgfZajk9ZLIphKHronpW+nD8cdyACQgwY+dKSV5y0oA/yXU0yJ7eCWJdfzWluvRgnPVFGrv1jruxkwCUacYzGCuPdPXw2zS8PiEN7uU2fpBqtsKqcsXKKUEz9dUXYgRq38Fz7IDwUHrxEyel0g3StKg3oLXAqe08G3zgF+8yRTGSEmGbi6empQ7ZgDR81aeUFdrkpBDacnHaZPrecteS7tMv5VZlgZHoFAOMkSUZTiEptqM5jR2/6J+dHeTjP84+i/T6RF/gbUvZJ3rhbAe7zrAIh0JyAQPdi+XHovszn5EjcQiepMmrQ/k1t/GVg3L7XK46E6U95z4NvU1XL3+mgp5XNqUvR0G7mmdbXUI37v6QgMQwkRSBQK/9EqQ0mWceXH3J4IIlNPWAcHl22qcrYHXe9vUrIhLXy4RdbEHIVnemefBddpFDP/UuEdPHVVGKyH4FWYrrVsqq72D825h7MT72sJN4IvGeF2LNsq9KQnHNlSvJA9/8PcEnY/KlstdGkVbOZRl404dpWr6fQjrXbeZuQBX/dULIkFhXEqQaPY+6vsbbMpBVAJKCtmlWnsrQXn6tpelZZhZPHQJt6kjMrsM0VU45toezsgsFVok5WWbS9w++MQp0mY08Ttq/Qbp8YFBLjTSarZgrYHJnVTncEwE+s09LN994D2WmwRhmvP+7lijnKc5UFjLB6rktGsRnN0gMxzRxSdcPoybLXsc0xcG2HJaW1W/SfldYmHfvKmRTTlX2BlleimZJvOqo9IS5wfSPmSZ85dH5Xhlo0tJ3OhsyKuo0XpfO/i3fxjamrp0APwJ4+Xc5YY2KD6zYq+Zdgf6G6iZNcF2fcbFoj88DlyM/k8euhWkRPjzrBZTtdPX8x7kwPMfs0seHaqtL+tHduiLv5tuU0AuJOx0HwBuapUjBZHyrjBorlt1CL 7dqBARZW x9EY4KrHIQOx1lJsp/eZzmkVs8ot8rjlFq2KEaShYuu40siaiCrU81CFrVTZHuQ47XeSWezk0x4Q6uXvvYvqzgBF6/5tk2uQ7E/WxOy8y3GV+t6qgYFI1zp5wdtuxIJDVuIs9KHH239uQkR2oPRe6gzrvJ1HB5E9gqT6IFgL+vqai84aV/q4RlNsSDerg4WER+vHYVCujXU1QPJwpHdWhHzgTTr0ROo06SwSaxtrfv8+75dWU1GDInHQmi9WFHT8Gnai90S6OmgN17cKCHD80pjw8BMY+4KlKRSLQOWWflPb54WfgLELZ5AaGhN+g8tYSLiHKZbitOAp2ROkNcXjrtr/LQf+6VZebYfCwHwAPLDwbP/acCCgaqyjfNpgWZT5FXv0R/DjXHPbjgpkuqag1AcmIZlyf2FgZ8wI2FhLqsm38ih4Abg1WT98mQ1vp276WrUOyzIAYwg7mQHnwxpTKqf7QtqIyIoa2zihgxc78fNvFrx8eiR8Z+cs0e5XDzBUcjAzz8AOiqVk2oatTks/QTEXxho1r1Vo+Wp5g1M3zQpXim78H+GRpF3I6HDS8i7jXf3qW4OuiuiR08K0u2ZQhkKgLPUBz5sMwNUqIydflzdadnbMmareY2vK2oAIzdcN5pMmg6wz8vyDayE6QpcQff1TkvHuRLCeJj+MXascYo7/x9cDXnH65x0U+lvKYoXtaIu0Fba5uBRDlNiBnKFneF//zAHw/q0Jm8IHI0Mvfouko9EXv7hSeLPwrftrLxtkLHJ16 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: Alice Ryhl writes: > +/// Flags for the "get free page" function that underlies all memory allocations. > +pub mod flags { > + pub type gfp_t = bindings::gfp_t; > + > + /// `GFP_KERNEL` is typical for kernel-internal allocations. The caller requires `ZONE_NORMAL` > + /// or a lower zone for direct access but can direct reclaim. > + pub const GFP_KERNEL: gfp_t = bindings::GFP_KERNEL; > + /// `GFP_ZERO` returns a zeroed page on success. > + pub const __GFP_ZERO: gfp_t = bindings::__GFP_ZERO; > + /// `GFP_HIGHMEM` indicates that the allocated memory may be located in high memory. > + pub const __GFP_HIGHMEM: gfp_t = bindings::__GFP_HIGHMEM; > +} > > [...] > > +impl Page { > + /// Allocates a new page. > + pub fn alloc_page(gfp_flags: flags::gfp_t) -> Result { > + // SAFETY: The specified order is zero and we want one page. > + let page = unsafe { bindings::alloc_pages(gfp_flags, 0) }; > + let page = NonNull::new(page).ok_or(AllocError)?; > + // INVARIANT: We checked that the allocation succeeded. > + Ok(Self { page }) > + } Matthew Wilcox: You suggested on a previous version that I use gfp flags here, or that I rename it to e.g. BinderPage to make it clear that this is specific to the kind of pages that Binder needs. In this version I added some gfp flags, but I'm not actually sure that the Page abstraction works for all combinations of gfp flags. For example, I use kmap_local_page when accessing the page, but is that correct if there's a user that doesn't pass GFP_HIGHMEM? So perhaps it should be called HighmemPage since the methods on it hardcode that. Or maybe it really doesn't make sense to generalize it beyond what Binder needs. What do you think? How broadly does these implementations generalize? I would be happy to hear your advice on this. Andreas Hindborg: I recall you mentioning that you also needed an abstraction for pages. To what extent do these abstractions fit your needs? Which gfp flags do you need? Also, sorry for taking so long to submit this version. I spent a long time debugging the crash that led to the submission of [1]. Alice [1]: https://lore.kernel.org/rust-for-linux/20240305-shadow-call-stack-v2-1-c7b4a3f4d616@google.com/