Hey there 👋

I’m Troy Mitchell. Welcome to my blog.

linux-mm[0]: Physical Memory and struct page

How the Linux kernel slices RAM into pages, tracks per-page metadata via struct page, and manages page lifetime through reference counting and dirty writeback.

April 23, 2026 · 6 min · Troy Mitchell

Hello World

This is my first Hugo blog post. Migrated from Hexo + Butterfly to Hugo + PaperMod, pursuing simplicity and efficiency.

April 23, 2026 · 1 min · Troy Mitchell

Building LazyVim on RISC-V from Scratch

A complete guide to compiling and running Neovim with LazyVim on RISC-V Linux, including LuaJIT porting, tree-sitter, LSP, blink.cmp native build, and snacks.nvim workarounds.

April 20, 2026 · 6 min · Troy Mitchell

Fix LazyVim Clipboard over SSH

LazyVim disables system clipboard when running over SSH. A one-line config override fixes it.

November 30, 2024 · 2 min · Troy Mitchell

Booting a Linux Kernel via PXE in U-Boot

How to set up TFTP-based PXE boot in U-Boot to load a Linux kernel and device tree over the network, including the fdt_addr_r pitfall on SpacemiT K1.

September 6, 2024 · 2 min · Troy Mitchell

Rockchip Boot Flow Explained

A walkthrough of the Rockchip SoC boot sequence from BootROM to U-Boot, covering both the open-source TPL/SPL path and the closed-source miniloader path.

August 23, 2024 · 3 min · Troy Mitchell

Linux earlycon: How the Kernel Gets Console Output Before Drivers Are Ready

A deep dive into the Linux earlycon mechanism — how the kernel provides console output during early boot before the real serial driver is initialized, covering both command-line and device-tree paths.

July 3, 2024 · 7 min · Troy Mitchell