summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/x86/smm/smm_module_loader.c6
-rw-r--r--src/cpu/x86/smm/smm_module_loaderv2.c8
-rw-r--r--src/cpu/x86/smm/smm_stub.S8
-rw-r--r--src/include/cpu/x86/smm.h6
4 files changed, 5 insertions, 23 deletions
diff --git a/src/cpu/x86/smm/smm_module_loader.c b/src/cpu/x86/smm/smm_module_loader.c
index a4ace43880..d799ae2805 100644
--- a/src/cpu/x86/smm/smm_module_loader.c
+++ b/src/cpu/x86/smm/smm_module_loader.c
@@ -249,7 +249,6 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
stub_params->stack_top = (uintptr_t)stacks_top;
stub_params->stack_size = params->per_cpu_stack_size;
stub_params->c_handler = (uintptr_t)params->handler;
- stub_params->c_handler_arg = (uintptr_t)params->handler_arg;
stub_params->fxsave_area = (uintptr_t)fxsave_area;
stub_params->fxsave_area_size = FXSAVE_SIZE;
stub_params->runtime.smbase = (uintptr_t)smbase;
@@ -265,8 +264,8 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
/* Allow the initiator to manipulate SMM stub parameters. */
params->runtime = &stub_params->runtime;
- printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p(%p)\n",
- smm_stub_loc, params->handler, params->handler_arg);
+ printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p\n",
+ smm_stub_loc, params->handler);
return 0;
}
@@ -390,7 +389,6 @@ int smm_load_module(void *smram, size_t size, struct smm_loader_params *params)
return -1;
params->handler = rmodule_entry(&smm_mod);
- params->handler_arg = rmodule_parameters(&smm_mod);
return smm_module_setup_stub(smram, size, params, fxsave_area);
}
diff --git a/src/cpu/x86/smm/smm_module_loaderv2.c b/src/cpu/x86/smm/smm_module_loaderv2.c
index 8e02fa8316..be0e23d50c 100644
--- a/src/cpu/x86/smm/smm_module_loaderv2.c
+++ b/src/cpu/x86/smm/smm_module_loaderv2.c
@@ -429,7 +429,6 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
stub_params->stack_top = (uintptr_t)stacks_top;
stub_params->stack_size = params->per_cpu_stack_size;
stub_params->c_handler = (uintptr_t)params->handler;
- stub_params->c_handler_arg = (uintptr_t)params->handler_arg;
stub_params->fxsave_area = (uintptr_t)fxsave_area;
stub_params->fxsave_area_size = FXSAVE_SIZE;
stub_params->runtime.smbase = (uintptr_t)smbase;
@@ -470,8 +469,8 @@ static int smm_module_setup_stub(void *smbase, size_t smm_size,
/* Allow the initiator to manipulate SMM stub parameters. */
params->runtime = &stub_params->runtime;
- printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p(%p)\n",
- smm_stub_loc, params->handler, params->handler_arg);
+ printk(BIOS_DEBUG, "SMM Module: stub loaded at %p. Will call %p\n",
+ smm_stub_loc, params->handler);
return 0;
}
@@ -618,7 +617,6 @@ int smm_load_module(void *smram, size_t size, struct smm_loader_params *params)
return -1;
params->handler = rmodule_entry(&smm_mod);
- params->handler_arg = rmodule_parameters(&smm_mod);
printk(BIOS_DEBUG, "%s: smram_start: 0x%p\n",
__func__, smram);
@@ -630,8 +628,6 @@ int smm_load_module(void *smram, size_t size, struct smm_loader_params *params)
__func__, params->handler);
printk(BIOS_DEBUG, "%s: handler_size %zx\n",
__func__, handler_size);
- printk(BIOS_DEBUG, "%s: handler_arg %p\n",
- __func__, params->handler_arg);
printk(BIOS_DEBUG, "%s: fxsave_area %p\n",
__func__, fxsave_area);
printk(BIOS_DEBUG, "%s: fxsave_size %zx\n",
diff --git a/src/cpu/x86/smm/smm_stub.S b/src/cpu/x86/smm/smm_stub.S
index 45f634d0c9..b9b0670ef6 100644
--- a/src/cpu/x86/smm/smm_stub.S
+++ b/src/cpu/x86/smm/smm_stub.S
@@ -21,8 +21,6 @@ stack_top:
.long 0
c_handler:
.long 0
-c_handler_arg:
-.long 0
fxsave_area:
.long 0
fxsave_area_size:
@@ -201,10 +199,10 @@ smm_trampoline32:
* c_handler(&arg)
*/
#ifdef __x86_64__
+ push $0x0 /* Padding */
push %rbx /* uintptr_t *canary */
push $(smm_runtime)
push %rcx /* size_t cpu */
- push c_handler_arg /* void *arg */
mov %rsp, %rdi /* *arg */
@@ -229,13 +227,9 @@ smm_trampoline32:
wrmsr
#else
- push $0x0 /* Padding */
- push $0x0 /* Padding */
- push $0x0 /* Padding */
push %ebx /* uintptr_t *canary */
push $(smm_runtime)
push %ecx /* size_t cpu */
- push c_handler_arg /* void *arg */
push %esp /* smm_module_params *arg (allocated on stack). */
mov c_handler, %eax
call *%eax
diff --git a/src/include/cpu/x86/smm.h b/src/include/cpu/x86/smm.h
index 30accb3041..692da5c7d7 100644
--- a/src/include/cpu/x86/smm.h
+++ b/src/include/cpu/x86/smm.h
@@ -72,7 +72,6 @@ struct smm_runtime {
} __packed;
struct smm_module_params {
- void *arg;
size_t cpu;
const struct smm_runtime *runtime;
/* A canary value that has been placed at the end of the stack.
@@ -87,7 +86,6 @@ struct smm_stub_params {
u32 stack_size;
u32 stack_top;
u32 c_handler;
- u32 c_handler_arg;
u32 fxsave_area;
u32 fxsave_area_size;
struct smm_runtime runtime;
@@ -131,9 +129,6 @@ static inline bool smm_points_to_smram(const void *ptr, const size_t len)
* - num_concurrent_save_states - number of concurrent cpus needing save state
* space
* - handler - optional handler to call. Only used during SMM relocation setup.
- * - handler_arg - optional argument to handler for SMM relocation setup. For
- * loading the SMM module, the handler_arg is filled in with
- * the address of the module's parameters (if present).
* - runtime - this field is a result only. The SMM runtime location is filled
* into this field so the code doing the loading can manipulate the
* runtime's assumptions. e.g. updating the APIC id to CPU map to
@@ -154,7 +149,6 @@ struct smm_loader_params {
size_t num_concurrent_save_states;
smm_handler_t handler;
- void *handler_arg;
struct smm_runtime *runtime;