Re: [PATCH v2 9/9] gpu: nova-core: gsp: add CeGetFaultMethodBufferSize RM control command

From: Danilo Krummrich

Date: Fri Mar 20 2026 - 09:31:43 EST


On Wed Mar 18, 2026 at 8:14 AM CET, Eliot Courtney wrote:
> +/// Sends the `CeGetFaultMethodBufferSize` RM control command and waits for its reply.
> +///
> +/// Returns the CE fault method buffer size in bytes.
> +#[expect(dead_code)]
> +pub(crate) fn get_ce_fault_method_buffer_size(
> + cmdq: &Cmdq,
> + bar: &Bar0,
> + client: Handle<Client>,
> + subdevice: Handle<Subdevice>,
> +) -> Result<u32> {
> + // Stack-allocate the request; CeGetFaultMethodBufferSizeParams is small (4 bytes).
> + let req = [0u8; size_of::<CeGetFaultMethodBufferSizeParams>()];
> +
> + let cmd = RmControl::new(
> + client,
> + subdevice,
> + RmControlMsgFunction::CeGetFaultMethodBufferSize,
> + &req,
> + );
> + let reply = send_rm_control(cmdq, bar, cmd)?;
> +
> + let params = CeGetFaultMethodBufferSizeParams::from_bytes(&reply).ok_or(EINVAL)?;
> +
> + Ok(params.size())
> +}

This is similar to send_rm_control(), I think RmControl should be generic over
the control message type, so you could just write something along the lines of:

RmControl::<CeGetFaultMethodBufferSize>::new(...).send();

Admittedly, CeGetFaultMethodBufferSize is a bit long, but that's GSP naming and
get_ce_fault_method_buffer_size() isn't shorter anyway.

(Btw. please try to avoid building functions named get_*() or *_get(), though
I'm aware that it is part of the struct name in this case. Yet another reason
not to solve this with a helper function. :)

Alternatively, you could also consider a builder pattern approach.