diff -purN linux-2.6.37/drivers/firmware/dcdbas.c linux-2.6.37_test/drivers/firmware/dcdbas.c --- 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-01-18 10:41:15.404612154 -0500 @@ -278,6 +278,9 @@ int dcdbas_smi_request(struct smi_cmd *s : "memory" ); + /* read to force posted write through and make SMI happen now */ + inb(smi_cmd->command_address); + out: set_cpus_allowed_ptr(current, old_mask); free_cpumask_var(old_mask);