From: "Benno Lossin" <lossin@kernel.org>
To: "Joel Fernandes" <joelagnelf@nvidia.com>,
"Danilo Krummrich" <dakr@kernel.org>
Cc: "Alexandre Courbot" <acourbot@nvidia.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"John Hubbard" <jhubbard@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Timur Tabi" <ttabi@nvidia.com>,
rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org,
nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v5 02/12] gpu: nova-core: move GSP boot code to a dedicated method
Date: Sun, 14 Sep 2025 09:58:44 +0200 [thread overview]
Message-ID: <DCSD437J7EES.359ZQ732TXJY@kernel.org> (raw)
In-Reply-To: <20250913230254.GA1568515@joelbox2>
On Sun Sep 14, 2025 at 1:02 AM CEST, Joel Fernandes wrote:
> On Sat, Sep 13, 2025 at 09:53:16PM +0200, Danilo Krummrich wrote:
>> On Sat Sep 13, 2025 at 7:13 PM CEST, Joel Fernandes wrote:
>> > On Sat, Sep 13, 2025 at 03:30:31PM +0200, Danilo Krummrich wrote:
>> >> However, we should never do such things. If there's the necessity to do
>> >> something like that, it indicates a design issue.
>> >>
>> >> In this case, there's no problem, we can use pin-init without any issues right
>> >> away, and should do so.
>> >>
>> >> pin-init is going to be an essential part of *every* Rust driver given that a
>> >> lot of the C infrastruture that we abstract requires pinned initialization, such
>> >> as locks and other synchronization primitives.
>> >
>> > To be honest, the pinning concept seems like an after thought for such a
>> > fundamental thing that we need, requiring additional macros, and bandaids on
>> > top of the language itself, to make it work for the kernel. I am not alone in
>> > that opinion. This should be first-class in a (systems) language, built into
>> > the language itself? I am talking about the whole pin initialization,
>> > accessing fields dances, etc.
>>
>> Yes, that's exactly why people (Benno) are already working on making this a
>> language feature (here's a first step in this direction [1]).
>>
>> Benno should have more details on this.
>>
>> [1] https://github.com/rust-lang/rust/pull/146307
That's the link to the implementation PR, if you know the internals of
the compiler it sure is useful, but if not, only the first comment is :)
> Ack, thanks for the pointer. I will study it further.
I'd recommend looking at these links, as they talk more about the design
& not the compiler implementation:
* https://github.com/rust-lang/rust/issues/145383
* https://hackmd.io/@rust-lang-team/S1I1aEc_lx
* https://rust-lang.github.io/rust-project-goals/2025h2/field-projections.html
For pin specifically, there also is the pin-ergonomics effort:
* https://github.com/rust-lang/rust/issues/130494
Which is less general than the field projections that I'm working on,
but more specific to pin & tries to make it more compiler internal.
Now for pinned initialization, Alice has a project goal & proposal:
* https://rust-lang.github.io/rust-project-goals/2025h2/in-place-initialization.html
* https://hackmd.io/%40aliceryhl/BJutRcPblx
This proposal was heavily influenced by pin-init & we're actively
working together with others from the Rust community in getting this to
a language feature.
It's a pretty complicated feature and people just worked around it
before, which you can do when starting from the ground-up (similar to
field projections).
>> > Also I am concerned that overusage of pinning defeats a lot of optimizations
>>
>> pin-init does the oposite it allows us to use a single memory allocation where
>> otherwise you would need multiple.
>>
>> Can you please show some optimizations that can not be done in drivers due to
>> pin-init for dynamic allocations?
>
> Aren't the vector resizing issues an example? The debugfs discussions for
> example. You can't resize pinned vectors without boxing each element which is
> suboptimal due to requiring additional allocations?
Yes, but that's not really an optimization, is it? In the non-pinned
case, the compiler wouldn't remove the allocation. You can select less
efficient algorithms, since the objects aren't allowed to move, but that
same restriction also applies in C.
---
Cheers,
Benno
next prev parent reply other threads:[~2025-09-14 7:58 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-11 11:04 [PATCH v5 00/12] gpu: nova-core: process and prepare more firmwares to boot GSP Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 01/12] gpu: nova-core: require `Send` on `FalconEngine` and `FalconHal` Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 02/12] gpu: nova-core: move GSP boot code to a dedicated method Alexandre Courbot
2025-09-11 11:22 ` Danilo Krummrich
2025-09-11 12:17 ` Alexandre Courbot
2025-09-11 12:46 ` Danilo Krummrich
2025-09-11 13:26 ` Alexandre Courbot
2025-09-11 14:22 ` Benno Lossin
2025-09-13 1:02 ` Joel Fernandes
2025-09-13 13:30 ` Danilo Krummrich
2025-09-13 17:13 ` Joel Fernandes
2025-09-13 19:53 ` Danilo Krummrich
2025-09-13 23:02 ` Joel Fernandes
2025-09-14 7:58 ` Benno Lossin [this message]
2025-09-13 20:37 ` Miguel Ojeda
2025-09-13 21:16 ` Joel Fernandes
2025-09-13 21:29 ` John Hubbard
2025-09-13 22:06 ` Joel Fernandes
2025-09-14 1:49 ` Alexandre Courbot
2025-09-14 14:42 ` Benno Lossin
2025-09-15 4:59 ` Alexandre Courbot
2025-09-15 6:44 ` Benno Lossin
2025-09-11 11:04 ` [PATCH v5 03/12] gpu: nova-core: initialize Gpu structure fully in-place Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 04/12] gpu: nova-core: add Chipset::name() method Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 05/12] gpu: nova-core: firmware: move firmware request code into a function Alexandre Courbot
2025-09-11 11:23 ` Danilo Krummrich
2025-09-11 12:18 ` Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 06/12] gpu: nova-core: firmware: add support for common firmware header Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 07/12] gpu: nova-core: firmware: process Booter and patch its signature Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 08/12] gpu: nova-core: firmware: process and prepare the GSP firmware Alexandre Courbot
2025-09-11 11:27 ` Danilo Krummrich
2025-09-11 12:29 ` Alexandre Courbot
2025-09-11 12:31 ` Danilo Krummrich
2025-09-11 11:04 ` [PATCH v5 09/12] gpu: nova-core: firmware: process the GSP bootloader Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 10/12] gpu: nova-core: firmware: use 570.144 firmware Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 11/12] gpu: nova-core: Add base files for r570.144 firmware bindings Alexandre Courbot
2025-09-11 11:04 ` [PATCH v5 12/12] gpu: nova-core: compute layout of more framebuffer regions required for GSP Alexandre Courbot
2025-09-11 11:28 ` [PATCH v5 00/12] gpu: nova-core: process and prepare more firmwares to boot GSP Danilo Krummrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DCSD437J7EES.359ZQ732TXJY@kernel.org \
--to=lossin@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=apopple@nvidia.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gary@garyguo.net \
--cc=jhubbard@nvidia.com \
--cc=joelagnelf@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nouveau@lists.freedesktop.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=tmgross@umich.edu \
--cc=ttabi@nvidia.com \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.