image_pdfimage_print
Running U-Boot x86_64 Directly from ROM Without SPL

Running U-Boot x86_64 Directly from ROM Without SPL

Introduction U-Boot on x86_64 has traditionally relied on a Secondary Program Loader (SPL) to bootstrap into 64-bit mode. SPL starts in 16-bit real mode (as required by the x86 reset vector), transitions through 32-bit protected mode, sets up page tables, and finally jumps into the 64-bit U-Boot proper. A recent series adds support for running…

Streamlining U-Boot Workflows: Build and Summarize in One Shot

Streamlining U-Boot Workflows: Build and Summarize in One Shot

If you use U-Boot’s buildman tool frequently, you are likely familiar with the standard two-step dance. First, you run the build. Then, to really understand what happened—checking for code bloat, size changes, or new warnings—you run buildman -s to generate the summary. While buildman effectively has two modes (building and summarising), treating them as mutually…

U-Boot CLI Gets a Power-Up: Multi-level Undo/Redo and More

Have you ever found yourself wishing for a bit more “modernity” while editing environment variables or command strings at the U-Boot prompt? Our latest patch series brings a suite of enhanced editing features to U-Boot, designed to make the command-line experience much more forgiving and efficient. While these features improve the standard CLI, they were…

Improving Text Editing in U-Boot’s Expo: Multiline Support and Cursor Independence

Improving Text Editing in U-Boot’s Expo: Multiline Support and Cursor Independence

As the “Expo” menu system in U-Boot continues to mature, we are moving beyond simple menu selections and into more complex user interaction. One area needing significant attention is text input—specifically, how we handle multi-line text editing and the underlying video console cursor. In a new 16-patch series, we overhaul the textedit object to support…

Safety at Scale: Introducing check and Per-Commit Validation in pickman

Safety at Scale: Introducing check and Per-Commit Validation in pickman

Automating cherry-picks with AI (as seen in our introduction to pickman) was a huge step forward for U-Boot Concept maintenance. However, as any maintainer knows, theory and practice often collide when you try to apply 260+ commits in a single session. After several weeks of real-world use, we’ve identified three “stress points” in large-scale cherry-picking:…

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Managing cherry-picks across multiple branches is one of the more tedious aspects of maintaining a large project like U-Boot. When you need to backport dozens of commits from an upstream branch while handling merge commits, resolving conflicts, and creating merge requests, the process can consume hours of developer time. Today we’re introducing pickman, a new tool…

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

U-Boot has two testing worlds that rarely meet. Python tests are flexible and can set up complex scenarios – disk images, network configurations, boot environments. C tests are fast, debuggable, and run directly on hardware. What if we could combine them? The Problem Consider filesystem testing. You need to: The Python test framework handles steps…

When -858993444 Tests Run: A Tale of Linker Lists and Magic Numbers

When -858993444 Tests Run: A Tale of Linker Lists and Magic Numbers

Have you ever seen output like this from your test suite? That’s not a buffer overflow or memory corruption. It’s a wierd interaction between linker alignment, compiler optimisations, and pointer arithmetic. Let me tell you how we tracked it down. The Mystery U-Boot uses ‘linker lists’ extensively – a pattern where the linker collects scattered…

The Silent Saboteurs: Detecting and Resolving malloc() Failures in U-Boot

The Silent Saboteurs: Detecting and Resolving malloc() Failures in U-Boot

The robust operation of any complex software system, especially one as foundational as U-Boot, hinges on the reliability of its core services. Among these, dynamic memory allocation via malloc() is paramount. While often taken for granted, failures in malloc() can be silent saboteurs, leading to unpredictable behaviour, security vulnerabilities, or outright system crashes. Here, we…