From 2d45c28675e1196ad03915ffba58b602363a19ed Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Fri, 5 Aug 2016 21:26:53 -0500 Subject: [PATCH] soc/intel/common: fix gsmi handler The gsmi_exec() expects the parameter to be a pointer to the 32-bit register storage of the SMI save state. The previous code was passing a pointer with the value obtained from the saved-state -- not a pointer to the storage of the register value. This bug causes gsmi to not log events because it's interrogating the parameter buffer itself as if it were a pointer. BUG=chrome-os-partner:55932 Change-Id: I37981424f1414edad1456b31cad1b99020d57db6 Signed-off-by: Aaron Durbin Reviewed-on: https://review.coreboot.org/16087 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie Reviewed-by: Furquan Shaikh --- src/soc/intel/common/smihandler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/soc/intel/common/smihandler.c b/src/soc/intel/common/smihandler.c index f0c913fcaa..e27752b48d 100644 --- a/src/soc/intel/common/smihandler.c +++ b/src/soc/intel/common/smihandler.c @@ -221,7 +221,7 @@ static void southbridge_smi_gsmi(const struct reg_ebx = save_state_ops->get_reg(io_smi, RBX); /* drivers/elog/gsmi.c */ - ret = gsmi_exec(sub_command, (u32 *)(uintptr_t)reg_ebx); + ret = gsmi_exec(sub_command, ®_ebx); save_state_ops->set_reg(io_smi, RAX, ret); }