mirror of
https://github.com/torvalds/linux.git
synced 2026-09-25 17:42:03 +02:00
gpu: nova-core: gsp: tu102: keep unloading if FWSEC-SB fails
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.
Fixes: adb99ce3cc ("gpu: nova-core: run Booter Unloader and FWSEC-SB upon unbinding")
Reported-by: Sashiko <sashiko-bot@kernel.org>
Closes: https://sashiko.dev/#/patchset/20260529-nova-unload-v7-0-678f39209e00%40nvidia.com?part=3
Reviewed-by: Eliot Courtney <ecourtney@nvidia.com>
Link: https://patch.msgid.link/20260531-nova-unload-fix-v1-1-c8dcdc769b53@nvidia.com
[acourbot: log Booter Unloader errors.]
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
This commit is contained in:
parent
bfd90545ad
commit
9eaff54780
|
|
@ -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));
|
||||
|
||||
// Remove WPR2 region if set.
|
||||
let wpr2_hi = bar.read(regs::NV_PFB_PRI_MMU_WPR2_ADDR_HI);
|
||||
if wpr2_hi.is_wpr2_set() {
|
||||
let booter_unloader_res = (|| {
|
||||
if !wpr2_hi.is_wpr2_set() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
sec2_falcon.reset(bar)?;
|
||||
sec2_falcon.load(dev, bar, &self.booter_unloader)?;
|
||||
|
||||
|
|
@ -160,9 +168,12 @@ fn run(
|
|||
);
|
||||
return Err(EBUSY);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
Ok(())
|
||||
})()
|
||||
.inspect_err(|e| dev_err!(dev, "Booter Unloader failed to run: {:?}\n", e));
|
||||
|
||||
fwsec_sb_res.and(booter_unloader_res)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user