After a decade of limited use, the Linux kernel maintainers are preparing to retire the x32 ABI, a hybrid 32‑bit pointer model for x86_64 that never gained traction. The proposal, led by Sebastian Andrzej Siewior, cites low adoption, extra attack surface, and wasted syscall numbers as reasons to prune the code before the end of 2026.
Linux Kernel Community Considers Dropping the x32 ABI
The x32 ABI was introduced in Linux 3.4 (2012) as a compromise: it kept 32‑bit pointers to reduce memory usage while still exposing the full 64‑bit register set of x86_64. In theory this should have given a sweet spot for workloads that are memory‑bound but still want the performance benefits of the wider datapath.
Why x32 never took off
| Factor | Observation |
|---|---|
| Adoption | Most distributions ship the classic x86_64 ABI by default. Debian disables x32 unless the user adds x32 to the kernel command line, and Fedora’s rawhide builds have it turned off entirely. |
| Performance | Benchmarks on typical server and desktop workloads show only a 1‑3 % improvement in compute‑heavy loops, while memory savings are modest (roughly 10‑15 % reduction in virtual address space). |
| Security | Adding a second ABI doubles the number of entry points the kernel must validate. The community has flagged a larger attack surface as a concern, especially for container‑heavy environments. |
| Syscall space | The last native x86_64 syscall sits at 471, while x32 starts at 512, leaving a gap of 40 numbers that remain unused as long as x32 exists. Removing the ABI would free those numbers for future extensions. |
The data above matches the sentiment expressed in the recent patch series by Sebastian Andrzej Siewior of Linutronix. In his own words:
"The x32 ABI was introduced in v3.4 to leverage the additional registers which were available on x86_64 but not on i386 while keeping the smaller 32‑bit pointers. This did not take off. The memory usage usually knows no limit and the better performance did not reach a point where certain workloads widely move to x32 and use it exclusively."
The removal proposal
The patch series follows a two‑step plan:
- Symbol removal – The
CONFIG_X86_X32option will be stripped fromKconfigand the symbol will no longer be selectable. This effectively disables the ABI for any kernel built after the change. - Syscall reclamation – With the ABI gone, the previously reserved syscall numbers (512‑551) become available for new kernel features.
The timeline is conservative: if no objections appear within six months, the code will be excised in a follow‑up commit slated for August 2026, after the typical summer development freeze.
Impact on existing systems
- Distros – Debian, Fedora, and other major distributions already ship kernels with x32 disabled. Their upgrade paths remain unchanged.
- Custom builds – Users who have compiled kernels with
CONFIG_X86_X32=ywill need to reconfigure and rebuild. The change does not affect user‑space binaries; a simple rebuild of any x32‑targeted applications will be required. - Container images – Most container runtimes default to the standard x86_64 ABI, so the removal will have no effect on the majority of images running today.
What to watch for
- Kernel changelog – Look for entries like
x86: remove x32 ABI supportin the 6.9‑rc* series. - Distribution release notes – Debian and Fedora will likely mention the removal in their kernel upgrade documentation.
- Syscall number tables – Future kernel releases will list the newly reclaimed numbers in
unistd_64.h.
Bottom line
The x32 ABI was an interesting experiment that never achieved the market share needed to justify its maintenance overhead. By retiring it, the Linux kernel can simplify its code base, close a potential security gap, and reclaim valuable syscall numbers for future innovations. If the community stays quiet, we should see the final commit before the end of 2026.
{{IMAGE:2}}

Comments
Please log in or register to join the discussion