From: "Eliot Courtney" <ecourtney@nvidia.com>
To: "Alexandre Courbot" <acourbot@nvidia.com>,
"Danilo Krummrich" <dakr@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>
Cc: "John Hubbard" <jhubbard@nvidia.com>,
"Alistair Popple" <apopple@nvidia.com>,
"Timur Tabi" <ttabi@nvidia.com>,
"Eliot Courtney" <ecourtney@nvidia.com>,
"Zhi Wang" <zhiw@nvidia.com>, <nova-gpu@lists.linux.dev>,
<rust-for-linux@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/7] gpu: nova-core: run the generic bootloader from its own type
Date: Thu, 05 Nov 2026 21:50:41 +0900 [thread overview]
Message-ID: <DMNAGSL6AZXR.2LDSAZU9GOTEF@nvidia.com> (raw)
In-Reply-To: <20261103-r000-fw-v1-4-e3d38fc130e3@nvidia.com>
On Tue Nov 3, 2026 at 7:22 PM JST, Alexandre Courbot wrote:
> From: John Hubbard <jhubbard@nvidia.com>
>
> The generic falcon bootloader needs a descriptor in DMEM to know what to
> load, so loading it into a falcon means loading the two together by PIO
> and starting the falcon. The FWSEC wrapper did that through its own
> implementation of the PIO loading traits. The r000 load-and-execute
> bootloader event will need to do the same thing.
>
> Give the generic bootloader a run method, which pairs it with the
> descriptor that it receives, loads the pair by PIO, starts the falcon
> with the given MAILBOX0 value and returns the mailboxes once the falcon
> has halted. This will allow the FWSEC and r000 load-and-execute
> bootloader event to share the same code.
>
> No functional changes.
>
> Assisted-by: LLM
> Signed-off-by: John Hubbard <jhubbard@nvidia.com>
> Co-developed-by: Alexandre Courbot <acourbot@nvidia.com>
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
> ---
> drivers/gpu/nova-core/firmware/fwsec/bootloader.rs | 55 ++-------------
> drivers/gpu/nova-core/firmware/gen_bootloader.rs | 80 +++++++++++++++++++++-
> 2 files changed, 84 insertions(+), 51 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/firmware/fwsec/bootloader.rs b/drivers/gpu/nova-core/firmware/fwsec/bootloader.rs
> index ad798ec5645a..c7bb877fcf20 100644
> --- a/drivers/gpu/nova-core/firmware/fwsec/bootloader.rs
> +++ b/drivers/gpu/nova-core/firmware/fwsec/bootloader.rs
> @@ -16,22 +16,16 @@
> register::Array,
> Io, //
> },
> - prelude::*,
> - transmute::AsBytes,
> + prelude::*, //
> };
>
> use crate::{
> falcon::{
> gsp::Gsp,
> Falcon,
> - FalconBromParams,
> FalconDmaLoadable,
> FalconFbifMemType,
> - FalconFbifTarget,
> - FalconFirmware,
> - FalconPioDmemLoadTarget,
> - FalconPioImemLoadTarget,
> - FalconPioLoadable, //
> + FalconFbifTarget, //
> },
> firmware::{
> fwsec::FwsecFirmware,
> @@ -50,11 +44,10 @@
> pub(crate) struct FwsecFirmwareWithBl<'a> {
> /// DMA object the bootloader will copy the firmware from.
> _firmware_dma: Coherent<'a, [u8]>,
> + /// The bootloader that copies the firmware.
nit: doc change looks like it should be in a different patch
> bootloader: GenericBootloader,
> /// Descriptor to be loaded into DMEM for the bootloader to read.
> dmem_desc: BootloaderDmemDescV2,
> - /// BROM parameters of the loaded firmware.
> - brom_params: FalconBromParams,
> }
>
> impl<'a> FwsecFirmwareWithBl<'a> {
> @@ -127,7 +120,6 @@ pub(crate) fn new(
> _firmware_dma: firmware_dma,
> bootloader,
> dmem_desc,
> - brom_params: firmware.brom_params(),
> })
> }
>
> @@ -136,13 +128,9 @@ pub(crate) fn new(
> /// The bootloader will load the FWSEC firmware and then execute it. This function returns
> /// after FWSEC has reached completion.
> pub(crate) fn run(&self, dev: &Device<device::Bound>, falcon: &Falcon<'_, Gsp>) -> Result<()> {
> - // Reset falcon, load the firmware, and run it.
> falcon
> .reset()
> .inspect_err(|e| dev_err!(dev, "Failed to reset GSP falcon: {:?}\n", e))?;
> - falcon
> - .pio_load(self)
> - .inspect_err(|e| dev_err!(dev, "Failed to load FWSEC firmware: {:?}\n", e))?;
>
> // Configure DMA index for the bootloader to fetch the FWSEC firmware from system memory.
> falcon.pfalcon.update(
Does it make sense for the generic bootloader to also do this step
(falcon.pfalcon.update())? This appears to be something that's part of
what the generic bootloader expects to be done no matter what, and it's
doable just from `BootloaderDmemDescV2` which it already gets.
Modulo answer to above question,
Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>
next prev parent reply other threads:[~2026-11-05 12:52 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 10:22 [PATCH 0/7] gpu: nova-core: generic bootloader and falcon DMA changes for r000 Alexandre Courbot
2026-11-03 10:22 ` [PATCH 1/7] gpu: nova-core: separate the generic falcon bootloader from FWSEC Alexandre Courbot
2026-11-05 12:17 ` Eliot Courtney
2026-11-03 10:22 ` [PATCH 2/7] gpu: nova-core: place the generic bootloader at the top of IMEM Alexandre Courbot
2026-11-05 12:59 ` Eliot Courtney
2026-11-03 10:22 ` [PATCH 3/7] gpu: nova-core: move the bootloader DMEM descriptor out of FWSEC Alexandre Courbot
2026-11-05 12:47 ` Eliot Courtney
2026-11-03 10:22 ` [PATCH 4/7] gpu: nova-core: run the generic bootloader from its own type Alexandre Courbot
2026-11-05 12:50 ` Eliot Courtney [this message]
2026-11-03 10:22 ` [PATCH 5/7] gpu: nova-core: falcon: allow DMEM DMA transfers to request tagging Alexandre Courbot
2026-11-05 13:50 ` Eliot Courtney
2026-11-03 10:22 ` [PATCH 6/7] gpu: nova-core: falcon: allow DMA transfers to read from a framebuffer address Alexandre Courbot
2026-11-03 10:22 ` [PATCH 7/7] gpu: nova-core: falcon: check the per-block DMA offsets for overflow Alexandre Courbot
2026-11-05 13:02 ` Eliot Courtney
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=DMNAGSL6AZXR.2LDSAZU9GOTEF@nvidia.com \
--to=ecourtney@nvidia.com \
--cc=acourbot@nvidia.com \
--cc=airlied@gmail.com \
--cc=aliceryhl@google.com \
--cc=apopple@nvidia.com \
--cc=dakr@kernel.org \
--cc=jhubbard@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nova-gpu@lists.linux.dev \
--cc=rust-for-linux@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=ttabi@nvidia.com \
--cc=zhiw@nvidia.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®