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 2e7b90b80877..2ed0f6d8d19d 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.as_ref(), "GFW boot did not complete\n"))?; + if matches!( + chipset.arch(), + Architecture::Turing | Architecture::Ampere | Architecture::Ada + ) { + gfw::wait_gfw_boot_completion(bar) + .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete\n"))?; + } }, sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, chipset)?, -- 2.52.0
