On Sat Nov 15, 2025 at 4:55 AM JST, Joel Fernandes wrote:
> Move falcon reading/writing to mbox functionality into helper so we can
> use it from the sequencer resume flow.
>
> Reviewed-by: Lyude Paul <[email protected]>
> Signed-off-by: Joel Fernandes <[email protected]>
> ---
>  drivers/gpu/nova-core/falcon.rs | 51 +++++++++++++++++++++++----------
>  1 file changed, 36 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/nova-core/falcon.rs b/drivers/gpu/nova-core/falcon.rs
> index 30af7fc2814d..5c9f054a0f42 100644
> --- a/drivers/gpu/nova-core/falcon.rs
> +++ b/drivers/gpu/nova-core/falcon.rs
> @@ -578,19 +578,13 @@ pub(crate) fn start(&self, bar: &Bar0) -> Result<()> {
>          Ok(())
>      }
>  
> -    /// Start running the loaded firmware.
> -    ///
> -    /// `mbox0` and `mbox1` are optional parameters to write into the 
> `MBOX0` and `MBOX1` registers
> -    /// prior to running.
> -    ///
> -    /// Wait up to two seconds for the firmware to complete, and return its 
> exit status read from
> -    /// the `MBOX0` and `MBOX1` registers.
> -    pub(crate) fn boot(
> +    /// Writes values to the mailbox registers if provided.
> +    pub(crate) fn write_mailboxes(
>          &self,
>          bar: &Bar0,
>          mbox0: Option<u32>,
>          mbox1: Option<u32>,
> -    ) -> Result<(u32, u32)> {
> +    ) -> Result<()> {
>          if let Some(mbox0) = mbox0 {
>              regs::NV_PFALCON_FALCON_MAILBOX0::default()
>                  .set_value(mbox0)
> @@ -602,18 +596,45 @@ pub(crate) fn boot(
>                  .set_value(mbox1)
>                  .write(bar, &E::ID);
>          }
> +        Ok(())
> +    }
>  
> -        self.start(bar)?;
> -        self.wait_till_halted(bar)?;
> +    /// Reads the value from `mbox0` register.
> +    pub(crate) fn read_mailbox0(&self, bar: &Bar0) -> Result<u32> {

None of these methods can ever fail, so there is no need to return a
`Result` here. I'll make them infallible when applying.

Reply via email to