Message ID | 20220614070909.8458-4-j@jannau.net |
---|---|
State | Accepted |
Commit | 942b54b4ee9ad6509a144bb78093f4ee376b7762 |
Delegated to: | Tom Rini |
Headers | show |
Series | Improve robustness of NVMe suuport for Apple silicon devices | expand |
> From: Janne Grunau <j@jannau.net> > Date: Tue, 14 Jun 2022 09:09:09 +0200 > > 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> > --- > > (no changes since v1) > > arch/arm/mach-apple/rtkit.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/mach-apple/rtkit.c b/arch/arm/mach-apple/rtkit.c > index da7771844230..a550b553b663 100644 > --- a/arch/arm/mach-apple/rtkit.c > +++ b/arch/arm/mach-apple/rtkit.c > @@ -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; > > -- > 2.35.1 > >
On Tue, Jun 14, 2022 at 09:09:09AM +0200, Janne Grunau wrote: > 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> Applied to u-boot/master, thanks!
diff --git a/arch/arm/mach-apple/rtkit.c b/arch/arm/mach-apple/rtkit.c index da7771844230..a550b553b663 100644 --- a/arch/arm/mach-apple/rtkit.c +++ b/arch/arm/mach-apple/rtkit.c @@ -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;
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> --- (no changes since v1) arch/arm/mach-apple/rtkit.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)