Re: [PATCH v9 24/31] gpu: nova-core: Hopper/Blackwell: add FSP Chain of Trust boot

Alexandre Courbot
2026-04-08T03:01:01Z

On Thu Mar 26, 2026 at 10:38 AM JST, John Hubbard wrote:
> Add boot_fmc() which builds and sends the Chain of Trust message to FSP,
> and FmcBootArgs which bundles the DMA-coherent boot parameters that FSP
> reads at boot time. The FspFirmware struct fields become pub(crate) and
> fmc_full changes from DmaObject to KVec<u8> for CPU-side signature
> extraction.

The temporary `KVec` field has been removed, so this commit message
needs updating too.

>
> Co-developed-by: Alexandre Courbot <acourbot@nvidia.com>
> Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>

Was I involved in the development of this? The code must have evolved
beyond recognition, you can probably remove this. :)

<snip>
> diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
> index ab378c0297c7..780a4d1169e2 100644
> --- a/drivers/gpu/nova-core/gpu.rs
> +++ b/drivers/gpu/nova-core/gpu.rs
> @@ -138,7 +138,6 @@ pub(crate) const fn needs_fwsec_bootloader(self) -> bool {
> ///
> /// Hopper (GH100) uses version 1, Blackwell uses version 2.
> /// Returns `None` for architectures that do not use FSP.
> - #[expect(dead_code)]
> pub(crate) const fn fsp_cot_version(&self) -> Option<FspCotVersion> {
> match self.arch() {
> Architecture::Hopper => Some(FspCotVersion::new(1)),
> diff --git a/drivers/gpu/nova-core/mctp.rs b/drivers/gpu/nova-core/mctp.rs
> index 9e052d916e79..c23e8ec69636 100644
> --- a/drivers/gpu/nova-core/mctp.rs
> +++ b/drivers/gpu/nova-core/mctp.rs
> @@ -6,8 +6,6 @@
> //! Device Management) messages between the kernel driver and GPU firmware
> //! processors such as FSP and GSP.
>
> -#![expect(dead_code)]
> -
> /// NVDM message type identifiers carried over MCTP.
> #[derive(Debug, Clone, Copy, PartialEq, Eq)]
> #[repr(u8)]
> @@ -101,11 +99,6 @@ pub(crate) fn nvdm_type(self) -> core::result::Result<NvdmType, u8> {
> NvdmType::try_from(self.raw_nvdm_type())
> }
>
> - /// Extract the NVDM type field as a raw value.
> - pub(crate) fn nvdm_type_raw(self) -> u32 {
> - u32::from(self.raw_nvdm_type())
> - }

This method was introduced a few patches before, and I don't think it is
ever used - you can probably drop it since the beginning.