1 # x86 System Management Mode
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
17 There exist two methods to verify data:
20 /* Returns true if the region overlaps with the SMM */
21 bool smm_region_overlaps_handler(struct region *r);
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);
29 [ring0]: https://en.wikipedia.org/wiki/Protection_ring