Blogs

Reading notes for awesome blog posts.

Rust and C++ Interoperability

This is an EuroRust'22 presentation.

A Rust macro is a function written in Rust that accepts a stream of tokens as input and produces a stream of tokens as output. The compiler runs this function at compile time whenever it encounters the macro in code, passing in the current stream of tokens and replacing it by the generated stream.

To EL2, and Beyond! Optimizing the Design and Implementation of KVM/ARM

Introduces ARM virtualization extensions (VE) and virtualization host extensions (VHE).

In VE, hypervisor is required to run in EL1 yet guest kernel has to hypercall to EL2 (KVM lowvisor). Then EL2 redirects the hypercall to EL1 (KVM highvisor). This enlarges the performance overhead.

VHE supports running unmodified OSes in EL2 without using EL1. Thus mediating the performance overhead.

Thoughts on software-defined silicon

What is SDSi: software defined silicon

SDSi disables access to specific processor capabilities unless purchasing the subscription. The SDSi hardware also maintains a couple of counters that track the number of unsuccessful attempts to prevent brute-force attacks.

SDSi will also come to Linux kernel driver.

Tales of the M1 GPU

Asahi Linux rewrite M1 GPU driver in Rust. (i.e. this commit)

Mind the Gap

This post discussed an in the wild exploit targeting the Pixel 6 and leveraging CVE-2021-39793, a vulnerability in the ARM Mali GPU driver used by a large number of other Android devices. ARM's advisory described the vulnerability as CVE-2022-22706.

Kernel Development with Qemu (Printing "Hello World" On Bare Metal)

Blog post by Mars Research Group

TODO

Debugging QEMU/KVM Setup If Something Goes Wrong (e.g., Support for 1GB Pages)

Blog post by Mars Research Group

TODO

How much does Rust's bounds checking actually cost?

What’s the cost of those bounds checks for a real-world, production application?

TODO

Exploit Engineering – Attacking the Linux Kernel by NCC Group

Exploitation Mitigations by NCC Group

Low Level Bits Blog