[PATCH v2] gpu: nova-core: gsp: cmdq: reduce sleep delta in wait_for_msg

From: Alexandre Courbot

Date: Mon Nov 02 2026 - 07:37:03 EST


If a message is not immediately available on the queue, `wait_for_msg`
sleeps for 1 millisecond before checking again. This is 3 orders of
magnitude more than Nouveau (which sleeps for 1 microsecond) or OpenRM
(which does not sleep at all and busy-polls) and is way too much, as GSP
commands are expected to be processed much faster than that.

Reduce the sleep time to 1 microsecond. This effectively makes `fsleep`
busy-loop with a call to `cpu_relax` afterwards, keeping latency to a
minimum.

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
Changes in v2:
- Wait for 1 microsecond. (Eliot)
- Link to v1: https://patch.msgid.link/20261030-cmdq_wait_msg_timeout-v1-1-a1e628d2732c@xxxxxxxxxx
---
drivers/gpu/nova-core/gsp/cmdq.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/nova-core/gsp/cmdq.rs b/drivers/gpu/nova-core/gsp/cmdq.rs
index 936406004a57..8ee8a99e4d7e 100644
--- a/drivers/gpu/nova-core/gsp/cmdq.rs
+++ b/drivers/gpu/nova-core/gsp/cmdq.rs
@@ -603,7 +603,7 @@ fn wait_for_msg(&self, timeout: Delta) -> Result<GspMessage<'_>> {
read_poll_timeout(
|| Ok(self.gsp_mem.driver_read_area()),
|driver_area| !driver_area.0.is_empty(),
- Delta::from_millis(1),
+ Delta::from_micros(1),
timeout,
)
}

---
base-commit: 9fe580fd90e20c8432832c5f9a7e92b049ae9af6
change-id: 20261030-cmdq_wait_msg_timeout-26df11234d10

Best regards,
--
Alexandre Courbot <acourbot@xxxxxxxxxx>