On Sun, 2026-05-31 at 21:37 +0900, Alexandre Courbot wrote:
> On Turing and Ampere, resetting the GSP involves running two firmware
> images: FWSEC-SB and Booter Unloader. They are independent from one
> another, and we should do whatever is possible to restore the GSP's
> unloaded state even if a failure occurs along the way.
> 
> Thus, keep going and run Booter Unloader even if the execution of
> FWSEC-SB failed.
> 
> Reported-by: Sashiko <[email protected]>
> Closes:
> https://sashiko.dev/#/patchset/20260529-nova-unload-v7-0-678f39209e00%40nvidia.com?part=3
> Fixes: adb99ce3cc78 ("gpu: nova-core: run Booter Unloader and FWSEC-SB upon 
> unbinding")
> Signed-off-by: Alexandre Courbot <[email protected]>
> ---
> This was caught by Sashiko; I unfortunately noticed it after pushing the
> series, but having it as a follow-up is beneficial regardless as it
> allows more time for review.
> ---
>  drivers/gpu/nova-core/gsp/hal/tu102.rs | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/nova-core/gsp/hal/tu102.rs 
> b/drivers/gpu/nova-core/gsp/hal/tu102.rs
> index a033bc892066..b10215190257 100644
> --- a/drivers/gpu/nova-core/gsp/hal/tu102.rs
> +++ b/drivers/gpu/nova-core/gsp/hal/tu102.rs
> @@ -134,11 +134,19 @@ fn run(
>          sec2_falcon: &Falcon<Sec2>,
>      ) -> Result {
>          // Run FWSEC-SB to reset the GSP falcon to its pre-libos state.
> -        self.fwsec_sb.run(dev, bar, gsp_falcon)?;
> +        // Log errors but keep going if it fails.
> +        let fwsec_sb_res = self
> +            .fwsec_sb
> +            .run(dev, bar, gsp_falcon)
> +            .inspect_err(|e| dev_err!(dev, "FWSEC-SB failed to run: {:?}\n", 
> e));

Shouldn't this be dev_warn?

Also, how did you test this?  Have you tried breaking the FWSEC-SB code and 
telling
booter_unload run anyway, and seeing if you can still reload the driver?  
Sashiko said this:

> Since FWSEC-SB (running on gsp_falcon) and the Booter Unloader (running
on sec2_falcon) are independent cleanup steps, returning early here bypasses
the Booter Unloader execution entirely.

Are we sure they really are independent?  What does RM do?

Reply via email to