cpu/x86/smm: Add helper functions to verify SMM access

* Add a function to check if a region overlaps with SMM.
* Add a function to check if a pointer points to SMM.
* Document functions in Documentation/security/smm

To be used to verify data accesses in SMM.

Change-Id: Ia525d2bc685377f50ecf3bdcf337a4c885488213
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Christian Walter <christian.walter@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41084
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Patrick Rudolph
2020-05-06 10:55:12 +02:00
committed by Patrick Georgi
parent c59d9e3917
commit 41fec869fb
5 changed files with 63 additions and 1 deletions

View File

@@ -4,6 +4,7 @@
#define CPU_X86_SMM_H
#include <arch/cpu.h>
#include <commonlib/region.h>
#include <types.h>
#define SMM_DEFAULT_BASE 0x30000
@@ -93,6 +94,17 @@ asmlinkage void smm_handler_start(void *params);
* account CPUs which are configured to not save their state to RAM. */
void *smm_get_save_state(int cpu);
/* Returns true if the region overlaps with the SMM */
bool smm_region_overlaps_handler(const struct region *r);
/* Returns true if the memory pointed to overlaps with SMM reserved memory. */
static inline bool smm_points_to_smram(const void *ptr, const size_t len)
{
const struct region r = {(uintptr_t)ptr, len};
return smm_region_overlaps_handler(&r);
}
/* SMM Module Loading API */
/* The smm_loader_params structure provides direction to the SMM loader: