1# Hafnium
2
3Hafnium is the Secure Partition Manager(SPM) reference implementation, following the
4[Arm's Firmware Framework specification](https://developer.arm.com/documentation/den0077/latest/).
5
6It leverages Arm's virtualization extensions in the secure world of Arm's A class of
7devices (feature introduced with Armv8.4 FEAT_SEL2) to allow multiple Trusted OSes or
8Applications to run concurrently, inside the Trusted Execution Environment, each running
9as a Secure Partition (SP).
10Its main goal is to control the system access given to Trusted OSes, and serve as
11a mediator to the rest of the system.
12
13For example, it limits the memory use, and handles all system calls from Trusted OS.
14Thus the SPM can enforce spacial isolation, and enforce some level of access control,
15protecting other critical system resources such as: the secure monitor, the normal world
16software stack, the SPM itself and other SPs/Trusted Applications.
17Other important features are: secure interrupt handling, device assignment, inter-partition
18communication and with the Normal World Software stack, also known as Rich Execution
19Environment (REE).
20
21The following diagram shows an overview of a typical aarch64-based system, and where Hafnium
22fits:
23
24![Hafnium Architecture](./docs/resources/diagrams/Hafnium_overview.png)
25
26Get in touch and keep up-to-date at:
27* [hafnium@lists.trustedfirmware.org](https://lists.trustedfirmware.org/mailman3/lists/hafnium.lists.trustedfirmware.org/).
28* At the community [Discord](https://discord.gg/8bxF2rRZBg).
29
30See feature requests and bugs through [github](https://github.com/TF-Hafnium/hafnium/issues).
31
32## Documentation
33
34To find more about Hafnium, [view the full documentation](https://hafnium.readthedocs.io/en/latest/).
35It includes valuable resources such as: Getting Started guide, Threat Model, and other documentation.
36