On Tue Feb 10, 2026 at 3:45 AM CET, John Hubbard wrote:
> Hopper and Blackwell GPUs use FSP-based secure boot and do not require
> waiting for GFW_BOOT completion. Skip this step for these architectures.
>
> Signed-off-by: John Hubbard <[email protected]>
> ---
> drivers/gpu/nova-core/gpu.rs | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
> index 24feb0e8723e..f04e2a795e90 100644
> --- a/drivers/gpu/nova-core/gpu.rs
> +++ b/drivers/gpu/nova-core/gpu.rs
> @@ -304,10 +304,19 @@ pub(crate) fn new<'a>(
> let chipset = spec.chipset();
>
> try_pin_init!(Self {
> - // We must wait for GFW_BOOT completion before doing any
> significant setup on the GPU.
> + // Turing, Ampere, Ada: we must wait for GFW_BOOT completion
> before doing any
> + // significant setup on the GPU.
> + //
> + // Hopper/Blackwell: skip GFW_BOOT completion waiting entirely,
> and use the simpler FSP
> + // Chain of Trust boot path (elsewhere) instead.
> _: {
> - gfw::wait_gfw_boot_completion(bar)
> - .inspect_err(|_| dev_err!(pdev, "GFW boot did not
> complete\n"))?;
> + if matches!(
> + chipset.arch(),
> + Architecture::Turing | Architecture::Ampere |
> Architecture::Ada
I assume Blackwell is not an exception and we expect this to be the case for
future architectures as well? I.e. checking for "!Architecture::Blackwell" makes
no sense?
> + ) {
> + gfw::wait_gfw_boot_completion(bar)
> + .inspect_err(|_| dev_err!(pdev, "GFW boot did not
> complete\n"))?;
> + }
> },