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;