This is the PoC implementation for the USENIX 2022 paper Half-Double: Hammering From the Next Row Over by Andreas Kogler, Jonas Juffinger, Salman Qazi, Yoongu Kim, Moritz Lipp, Nicolas Boichat, Eric Shiu, Mattias Nissler, and Daniel Gruss.
After cloning this repository, use the following command to initialize the submodules.
make submodules
For page table modifications, we use the PTEditor. The kernel module needed for the experiments is built with:
make pteditor
If the PoCs are run on the provided hardware, the PTEditor module is precompiled with the kernel. Therefore, executing the following command is enough:
modprobe pteditor
To build the PoC for both Arm and x86, we need to install a cross-compiler and additional tools (we assume the host is x86):
sudo apt install cmake ninja-build build-essential git python3 python3-pip g++-aarch64-linux-gnu gcc-aarch64-linux-gnu python3
sudo apt install linux-tools-$(uname -r)
Please install the required python3 packages required via:
python3 -m pip install numpy z3-solver sklearn
Please follow each README.md in the subfolders:
Warning #1: We are providing this code as-is. You are responsible for protecting yourself, your property and data, and others from any risks caused by this code. This code may cause unexpected and undesirable behavior to occur on your machine.
Warning #2: This code is only for testing purposes. Do not run it on any production systems. Do not run it on any system that might be used by another person or entity.