Messages in this thread | | | From | <> | Date | Tue, 1 Mar 2011 09:53:57 -0600 | Subject | Re: [PATCH v2] dcdbas: force SMI to happen when expected |
| |
On 02/24/2011 8:35 PM, Stuart Hayes wrote: > This is a reworked version of a very similar patch I sent about three > weeks ago... a flaw was pointed out with the original. That patch > didn't make it into the kernel, though, so I'm just sending this one as > a new patch. > > The dcdbas driver can do an I/O write to cause a SMI to occur. The SMI > handler looks at certain registers and memory locations, so the SMI > needs to happen immediately. On some systems I/O writes are posted, > though, causing the SMI to happen well after the "outb" occurred, which > causes random failures. Following the "outb" with an "inb" forces the > write to go through even if it is posted. > > This patch is against the 2.6.37.1 kernel. > > Signed-off-by: Stuart Hayes <stuart_hayes@yahoo.com> > --- > > --- linux-2.6.37/drivers/firmware/dcdbas.c 2011-01-18 > 10:44:44.869882461 -0500 > +++ linux-2.6.37_test/drivers/firmware/dcdbas.c 2011-02-24 > 13:23:58.663771596 -0500 > @@ -268,8 +268,10 @@ int dcdbas_smi_request(struct smi_cmd *s > } > > /* generate SMI */ > + /* inb to force posted write through and make SMI happen now */ > asm volatile ( > - "outb %b0,%w1" > + "outb %b0,%w1\n" > + "inb %w1" > : /* no output args */ > : "a" (smi_cmd->command_code), > "d" (smi_cmd->command_address), >
Acked-by: Doug Warzecha <douglas_warzecha@dell.com>
| |