- Linus drops Linux v0.1 on an unsuspecting world. Thirty-five years later, scraps of that fossil cling to the kernel like barnacles on a shipwreck.
Thomas Gleixner — kernel veteran with a scalpel for bad code — just unleashed a tree-wide cleanup. Targets? LATCH, CLOCK_TICK_RATE, get_cycles(). Remnants so old they’re practically museum pieces.
Why Does Linux Still Hoard 1991 Code?
Look. Kernels bloat. Happens to the best. But this? Criminal negligence wrapped in “historical amusement.”
Gleixner lays it bare in his patch notes. LATCH started as x86 PIT frequency hack. Non-x86 arches forced a kludge: tie it to CLOCK_TICK_RATE. Timers rewrote everything two decades back. Meaningless. Yet apm_32.c — from Linux 1.3.46, December 1995 — kept it alive. A zombie file.
Here’s the blockquote gold:
The LATCH define goes back to Linux version 0.1 and has survived until today for the very wrong reasons. Initially it was based on the x86 PIT frequency and also steered the timekeeping conversions.
Punchy. Brutal. True.
CLOCK_TICK_RATE? Same sad saga. Copied to new arches post-obsoletion, with comments screaming “this is pointless.” Survivor in setup.c, alias for PIT_TICK_RATE. Why? Laziness. Or fear of breakage.
get_cycles()? Introduced 1998 for TSC. Broke everything. Fixed with stubs returning zero. Name’s a lie — not cycles, just some counter. Or zero. Frequency scaling turned it into noise. Now? Debugging fodder. Gleixner calls it bogo_cycles material. Spot on.
This cleanup nukes LATCH and CLOCK_TICK_RATE outright. get_cycles() shrinks to arch-internal stubs. No more macro mazes for random_get_entropy(). Patch series hits the mailing list. Merge for 6.15? Fingers crossed.
But here’s my hot take, absent from Gleixner’s post: this mirrors the BSD wars of the ’90s. Back then, AT&T code cruft sparked holy wars. Linux dodged that bullet — open from day one — yet accreted its own garbage. 2026 cleanup? Preemptive strike for a Rust-infused, edge-AI future. Kernel slims down before hardware demands it. Bold prediction: by 2030, we’ll see v0.1 obits for arch/x86 entirely.
Is Linux Kernel Bloat a Real Problem?
Short answer: yes. But not the way you think.
Not about size — modern kernels balloon anyway. It’s the mental tax. Newbies trip over defines from the Minix era. Maintainers waste cycles on #ifdeffery. Gleixner nails it: “proliferating the bogosity.”
Amusing survivors abound. BogoMIPS printk? Still prints fake MHz to “impress friends.” Hilarious in 1991. Cringe now.
Patch touches apm_32.c. Advanced Power Management. Who uses that? Laptops from the dial-up age. Yet it blocked cleanup for decades. Laziness? Backward compat fetish? Pick your poison.
Non-x86 ports copied the rot blindly. ARM? RISC-V? They got LATCH clones, comments and all. Gleixner: “for amusement value.” Dry humor gold.
Deep history dive. v0.1: hobby project. No arches beyond i386. PIT timer ruled. LATCH = 1193182 Hz. Hardcode heaven.
v1.0: SMP hints. Still x86.
Mid-90s: arches explode. Alpha, SPARC. LATCH flexes via CLOCK_TICK_RATE. Hack upon hack.
2004: timekeeping rewrite. High-res timers. Scheduling overhaul. Dead code everywhere.
Yet stubs linger. get_cycles() for perf tests? Returns zero on half the arches. “Hilarious,” says Gleixner. Understatement.
Corporate angle? None. This is pure FOSS heroism. No Red Hat spin, no Google funding. Just Gleixner, annoyed, coding.
Compare to Windows. NT kernel from 1993. Still ships 16-bit thunks? Proprietary hell hides the rot. Linux? We air it out. Public shaming works.
Patch series: 20+ chunks. Tree-wide. x86/apm_32.c gutted. setup.c cleansed. get_cycles() neutered.
Stays for arches needing it internally. Fair. No breakage.
What Happens Post-Cleanup?
Kernel shrinks a tad. Brains unburdened.
Devs rejoice. No more grepping LATCH in 2026.
But watch: this sparks copycats. Other ancients: old IRQ cruft? Floppy drivers? Gleixner’s todo list grows.
Unique insight time. Echoes Unix’s great purge, 1980s Berkeley. Bill Joy axed V7 cruft for 4.2BSD. Spawned modern networking. Linux 2026? Seeds for invariant-TSC everywhere, post-quantum crypto hooks. Maintainers smell efficiency mandates from IoT hell.
Dry laugh: if get_cycles() was bogo, what’s next? Bogus entropy from /dev/urandom circa 1994?
Patch on LKML. Review it. Test it. Merge it.
Linux endures because of this. Not despite.
🧬 Related Insights
- Read more: MCP: The Protocol That Actually Delivered on AI Hype
- Read more: Nine Vulnerabilities Expose IP KVMs as the Skeleton Key to Your Entire Network
Frequently Asked Questions
What is Linux 2026 Spring Cleaning?
Thomas Gleixner’s patch series removing ancient defines like LATCH from kernel v0.1 era. Targets bloat in timekeeping stubs.
Why was get_cycles() never removed before?
Laziness and convenience. Used for debugging, entropy. Now obsolete post-2004 rewrites; returns junk or zero on most arches.
Will this break my Linux distro?
Unlikely. Dead code purge. Stubs preserved where needed. Test on latest mainline.
Word count: 942.