perf setup

This post describes the necessary setup for Linux-perf. The setup machine is an Ubuntu VM. No custom kernel build.


Quick kernel upgrade with kexec

Upgrade kernel of a virtual machine in seconds. Normally kernel upgrade will require a reboot. As reboot will take minutes to complete, service downtime will be more. Here we'll see how upgrade kernel of a VM running Debian-9 in seconds.


kexec - A travel to the purgatory

A story about how I fixed the boot delay in an ARM64 system. This article walks through Linux reboot / kexec code path, a bit of kexec-tools source and importantly how kexec-tools injects its code in your boot path.


Variadic functions with unknown argument count

Variadic function is function that accepts varying number arguments. But often times we've to pass the number of arguments as the first argument. But once we faced a peculiar problem where the number of arguments can't be passed. And we solved it in a peculiar ;) way.


64-bit Mainline kernel on Raspberry Pi 3

Raspberry Pi foundation maintains customized Linux kernel for Raspberry Pi devices. Cross-compiling vanilla kernel to Raspberry Pi is bit challenging. But its worth giving a try as we can test latest kernel on it. This article is a step-by-step guide to build vanilla kernel for Raspberry Pi 3. It explains necessary device-tree files and kernel configurations related to Raspberry Pi.


Anatomy of Linux system call in ARM64

Architecture of Linux system call. Explains ARM64 exception levels and privilege of each level. Walks through Linux code path related to interrupt vectors and instructions that handle the system call. Bit of assembly code understanding is necessary. Explains every single instruction between `printf` and `sys_write`.