[PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting

John Hubbard posted 30 patches 1 week, 1 day ago
There is a newer version of this series
[PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting
Posted by John Hubbard 1 week, 1 day ago
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 <jhubbard@nvidia.com>
---
 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
Re: [PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting
Posted by Gary Guo 6 days, 1 hour ago
On Sat Jan 31, 2026 at 12:55 AM GMT, 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 <jhubbard@nvidia.com>
> ---
>  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"))?;

I think the `as_ref()` here is no longer necessary?

Best,
Gary

> +                }
>              },
>  
>              sysmem_flush: SysmemFlush::register(pdev.as_ref(), bar, chipset)?,
Re: [PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting
Posted by Danilo Krummrich 6 days, 1 hour ago
On Mon Feb 2, 2026 at 3:49 PM CET, Gary Guo wrote:
> On Sat Jan 31, 2026 at 12:55 AM GMT, 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 <jhubbard@nvidia.com>
>> ---
>>  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"))?;
>
> I think the `as_ref()` here is no longer necessary?

Current drm-rust-next does not have the required changes yet, but it will after
-rc1 is out. I'd recommend basing patch series on linux-next if they do not
target the current cycle.
Re: [PATCH v2 08/30] gpu: nova-core: Hopper/Blackwell: skip GFW boot waiting
Posted by John Hubbard 5 days, 18 hours ago
On 2/2/26 6:52 AM, Danilo Krummrich wrote:
> On Mon Feb 2, 2026 at 3:49 PM CET, Gary Guo wrote:
>> On Sat Jan 31, 2026 at 12:55 AM GMT, John Hubbard wrote:
...
>>> +                    gfw::wait_gfw_boot_completion(bar)
>>> +                        .inspect_err(|_| dev_err!(pdev.as_ref(), "GFW boot did not complete\n"))?;
>>
>> I think the `as_ref()` here is no longer necessary?
> 
> Current drm-rust-next does not have the required changes yet, but it will after
> -rc1 is out. I'd recommend basing patch series on linux-next if they do not
> target the current cycle.

OK, I can do that. Maybe ASAP, so that reviewers don't have to deal with
"old" issues that are solved in linux-next?


thanks,
-- 
John Hubbard