drivers/pc80/pc: Clean up formatting of PS/2 related ASL code
[coreboot.git] / Documentation / security / smm.md
blob397b7af55298d71a6a7222d414cd9c0616197d57
1 # x86 System Management Mode
3 ## Introduction
5 The code running in System Management Mode (SMM) provides runtime services
6 to applications running in [ring0]. It has a higher privilege level than
7 [ring0] and resides in the SMRAM region which cannot be accessed from [ring0].
9 SMM can be entered by issuing System Management Interrupts (SMIs).
11 ## Secure data exchange
13 In order to not leak SMM internals or accidentally overwrite parts of SMM,
14 [ring0] provided data (pointers, offsets, sizes, ...) must be checked before
15 using them in SMM.
17 There exist two methods to verify data:
19 ```C
20 /* Returns true if the region overlaps with the SMM */
21 bool smm_region_overlaps_handler(struct region *r);
22 ```
24 ```C
25 /* Returns true if the memory pointed to overlaps with SMM reserved memory. */
26 static inline bool smm_points_to_smram(const void *ptr, const size_t len);
27 ```
29 [ring0]: https://en.wikipedia.org/wiki/Protection_ring