summaryrefslogtreecommitdiff
path: root/src/cpu/x86
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/x86')
-rw-r--r--src/cpu/x86/smm/smm_module_handler.c6
-rw-r--r--src/cpu/x86/smm/smm_module_loader.c17
2 files changed, 23 insertions, 0 deletions
diff --git a/src/cpu/x86/smm/smm_module_handler.c b/src/cpu/x86/smm/smm_module_handler.c
index 0daae00ebb..6322e59beb 100644
--- a/src/cpu/x86/smm/smm_module_handler.c
+++ b/src/cpu/x86/smm/smm_module_handler.c
@@ -60,6 +60,12 @@ int get_console_loglevel(void)
}
#endif
+void smm_get_smmstore_com_buffer(uintptr_t *base, size_t *size)
+{
+ *base = smm_runtime.smmstore_com_buffer_base;
+ *size = smm_runtime.smmstore_com_buffer_size;
+}
+
void smm_get_cbmemc_buffer(void **buffer_out, size_t *size_out)
{
*buffer_out = smm_runtime.cbmemc;
diff --git a/src/cpu/x86/smm/smm_module_loader.c b/src/cpu/x86/smm/smm_module_loader.c
index ea51d63e83..646f3bb551 100644
--- a/src/cpu/x86/smm/smm_module_loader.c
+++ b/src/cpu/x86/smm/smm_module_loader.c
@@ -10,6 +10,7 @@
#include <device/device.h>
#include <device/mmio.h>
#include <rmodule.h>
+#include <smmstore.h>
#include <stdio.h>
#include <string.h>
#include <types.h>
@@ -350,6 +351,22 @@ static void setup_smihandler_params(struct smm_runtime *mod_params,
if (CONFIG(SMM_PCI_RESOURCE_STORE))
smm_pci_resource_store_init(mod_params);
+
+ if (CONFIG(SMMSTORE_V2)) {
+ struct smmstore_params_info info;
+ if (smmstore_get_info(&info) < 0) {
+ printk(BIOS_INFO, "SMMSTORE: Failed to get meta data\n");
+ return;
+ }
+
+ void *ptr = cbmem_add(CBMEM_ID_SMM_COMBUFFER, info.block_size);
+ if (!ptr) {
+ printk(BIOS_ERR, "SMMSTORE: Failed to add com buffer\n");
+ return;
+ }
+ mod_params->smmstore_com_buffer_base = (uintptr_t)ptr;
+ mod_params->smmstore_com_buffer_size = info.block_size;
+ }
}
static void print_region(const char *name, const struct region region)