arm: apple: Increase RTKit timeouts
authorJanne Grunau <j@jannau.net>
Tue, 14 Jun 2022 07:09:09 +0000 (09:09 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 23 Jun 2022 12:24:49 +0000 (08:24 -0400)
Timeouts are not expected to happen and are handled as fatal errors.
Increase all timeouts to 1 second as defensive measure to avoid relying
on the timing behaviour of certain firmware versions or configurations.

Signed-off-by: Janne Grunau <j@jannau.net>
Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
Tested-by: Mark Kettenis <kettenis@openbsd.org>
arch/arm/mach-apple/rtkit.c

index da77718..a550b55 100644 (file)
@@ -52,6 +52,8 @@
 #define APPLE_RTKIT_BUFFER_REQUEST_SIZE GENMASK(51, 44)
 #define APPLE_RTKIT_BUFFER_REQUEST_IOVA GENMASK(41, 0)
 
+#define TIMEOUT_1SEC_US 1000000
+
 struct apple_rtkit {
        struct mbox_chan *chan;
        void *cookie;
@@ -168,7 +170,7 @@ int apple_rtkit_boot(struct apple_rtkit *rtk)
                return ret;
 
        /* Wait for protocol version negotiation message. */
-       ret = mbox_recv(rtk->chan, &msg, 10000);
+       ret = mbox_recv(rtk->chan, &msg, TIMEOUT_1SEC_US);
        if (ret < 0)
                return ret;
 
@@ -210,7 +212,7 @@ int apple_rtkit_boot(struct apple_rtkit *rtk)
 
 wait_epmap:
        /* Wait for endpoint map message. */
-       ret = mbox_recv(rtk->chan, &msg, 10000);
+       ret = mbox_recv(rtk->chan, &msg, TIMEOUT_1SEC_US);
        if (ret < 0)
                return ret;
 
@@ -275,7 +277,7 @@ wait_epmap:
 
        pwrstate = APPLE_RTKIT_PWR_STATE_SLEEP;
        while (pwrstate != APPLE_RTKIT_PWR_STATE_ON) {
-               ret = mbox_recv(rtk->chan, &msg, 100000);
+               ret = mbox_recv(rtk->chan, &msg, TIMEOUT_1SEC_US);
                if (ret < 0)
                        return ret;
 
@@ -330,7 +332,7 @@ int apple_rtkit_shutdown(struct apple_rtkit *rtk, int pwrstate)
        if (ret < 0)
                return ret;
 
-       ret = mbox_recv(rtk->chan, &msg, 100000);
+       ret = mbox_recv(rtk->chan, &msg, TIMEOUT_1SEC_US);
        if (ret < 0)
                return ret;