Messages in this thread | | | Date | Tue, 26 Jul 2011 09:24:27 -0700 | From | Andres Salomon <> | Subject | Re: [PATCH] x86, olpc: Wait for last byte of EC command to be accepted |
| |
Acked-by: Andres Salomon <dilinger@queued.net>
After some squinting.. This patch looks correct. This is a long-standing issue, we should probably add a Cc: stable@kernel.org so it gets picked up for stable kernels.
On Tue, 26 Jul 2011 16:42:26 +0100 (BST) Daniel Drake <dsd@laptop.org> wrote:
> From: Paul Fox <pgf@laptop.org> > > When executing EC commands, only waiting when there are still more > bytes to write is usually fine. However, if the system suspends very > quickly after a call to olpc_ec_cmd(), the last data byte may not yet > be transferred to the EC, and the command will not complete. > > This solves a bug where the SCI wakeup mask was not correctly written > when going into suspend. > > Signed-off-by: Paul Fox <pgf@laptop.org> > Signed-off-by: Daniel Drake <dsd@laptop.org> > --- > arch/x86/platform/olpc/olpc.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/platform/olpc/olpc.c > b/arch/x86/platform/olpc/olpc.c index 8b9940e..7cce722 100644 > --- a/arch/x86/platform/olpc/olpc.c > +++ b/arch/x86/platform/olpc/olpc.c > @@ -161,13 +161,13 @@ restart: > if (inbuf && inlen) { > /* write data to EC */ > for (i = 0; i < inlen; i++) { > + pr_devel("olpc-ec: sending cmd arg 0x%x\n", > inbuf[i]); > + outb(inbuf[i], 0x68); > if (wait_on_ibf(0x6c, 0)) { > printk(KERN_ERR "olpc-ec: timeout > waiting for" " EC accept data!\n"); > goto err; > } > - pr_devel("olpc-ec: sending cmd arg 0x%x\n", > inbuf[i]); > - outb(inbuf[i], 0x68); > } > } > if (outbuf && outlen) {
| |