OpenBSD 7.9 Released

bradley_taunt4 pts0 comments

OpenBSD 7.9

OpenBSD<br>7.9

Released May 19, 2026. (60th OpenBSD release)

Copyright 1997-2026, Theo de Raadt.

Artwork by Lyra Henderson.

See the information on the FTP page for<br>a list of mirror machines.<br>Go to the pub/OpenBSD/7.9/ directory on<br>one of the mirror sites.<br>Have a look at the 7.9 errata page for a list<br>of bugs and workarounds.<br>See a detailed log of changes between the<br>7.8 and 7.9 releases.

signify(1)<br>pubkeys for this release:

openbsd-79-base.pub:

RWTSdNN9A3yvWNn7mUjXwv9DOCOUnyfuV+mq1iGPIfD+NhN8EYnEQ1at<br>openbsd-79-fw.pub:

RWQdmBb/OCe1hXE08xCj5VLnBpGpphy7kYPdU3oWyfnrwswjtl8K385E

openbsd-79-pkg.pub:

RWSw1kDLJJy6OYgnayEMReLV57z2rzx5jYNCghO+2ARwqd6KuwGFWSn7

openbsd-79-syspatch.pub:

RWTJmz/ur68S9e26/JVRr7T88lAPZIF3YgZ3w2lDnf/frAxTerC/DrZ6

All applicable copyrights and credits are in the src.tar.gz,<br>sys.tar.gz, xenocara.tar.gz, ports.tar.gz files, or in the<br>files fetched via ports.tar.gz.

What's New

This is a partial list of new features and systems included in OpenBSD 7.9.<br>For a comprehensive list, see the changelog leading to 7.9.

Platform-specific improvements:

arm64:

Enabled ice(4) on arm64.<br>Added support for the RK3588 and RK3576 SoCs with new or additions to existing drivers.<br>Added support for the Genesys Logic GL9755 SDHC controller<br>(which includes the SDHC controller on some of the Apple Silicon<br>laptops) to sdmmc(4).

amd64:

Added SMU support to amdpmc(4). The SMU is a<br>microcontroller buried deep in the bowels of AMD SoCs and needs to be<br>tickled in order to reach the lowest power states in suspend.<br>Disabled Panel Self Refresh (PSR) in amdgpu to avoid a potential hang on a ThinkPad X13 gen 6.<br>Increased MAXCPUs on amd64 to 255.<br>On amd64, we now zero the DM PTE/PDE pages before use. This fixes a bug on machines with more than 512GB RAM.<br>Mitigated floating point state leakage observed on AMD Zen/Zen+ (Zen 1).

luna88k:

Switched luna88k compiler to gcc4.<br>Switched luna88k to PIE (Position Independent Executables) by default.

riscv64:

Systems with a SpacemiT K1 SoC gained support with the following (and more) changes:

Added smtclock(4), a driver for the clock/reset controller on the SpacemiT K1 SoC.<br>Added many more drivers to support the SpacemiT K1 SoC.<br>Implemented support for the Zicbom (Cache-Block Management) and Svpbmt (Page-Based Memory Types) extensions.<br>Added the SpacemiT K1 device trees onto the riscv64 miniroot making them accessible during installation.<br>Made "Instruction access fault" (EXCP_FAULT_FETCH) traps being treated as PROT_EXEC. This fixes random SIGSEGV on the SpacemiT X60 cores.<br>Added SpacemiT K1 support to dwpcie(4).

Other architectures:

Fixed various errors on big-endian systems in ice(4) to make it work on sparc64.<br>Changed powerpc64 memory barriers to "sync".<br>Reworked and improved TLB shootdown on alpha.<br>Hoisted mips64 CPU accounting to get multiple softnet threads on MP systems.<br>Made sure to initialize all FPU registers on sparc64 to all 1 (or -NaN), and not only the lower 32 registers.<br>Fixed parking mutex on sun4u sparc64 cpus.

More platform-specific changes can be found in the hardware support section below.

Various kernel improvements:

Introduced a mechanism to manage CPU cores with different speeds<br>in the scheduler. The sysctl(8) variable<br>"hw.blockcpu" takes a sequence of 4 letters: S (for SMT), P (regular<br>performance CPU), E (efficient CPU, generally 80% to 50% as fast), and<br>L (lethargic CPU) which are even slower. Set this to select CPUs to<br>kick out of the scheduler (SL by default). Currently works on amd64 and arm64.<br>Replaced the cas spinlock in kernel mutexes with a "parking" lock.<br>Stopped forcing the page daemon to sleep when there are outstanding paging requests.<br>Implemented a ddb(4) stop command that sends a SIGSTOP to the specified pid.<br>Made ddb(4) output visible when entering ddb from X on amdgpu.<br>Added infrastructure to allow future support of up to 52 partitions per disk.<br>Made changes to avoid memory allocation from within the swapencrypt path of the<br>pagedaemon by pre-allocating 32 swapclusters up-front.<br>Changed the strategy by which the pagedaemon creates free memory<br>by overshooting the creation of inactive and free pages, in order to<br>defragment memory.<br>Refuse to load a binary without a PT_LOAD exec segment.

Suspend/Hibernate Support:

Implemented delayed hibernation:

In order to prevent running out of battery while suspended, this<br>feature wakes up a suspended system after a configurable time to then<br>immediately perform a hibernation. The machdep.hibernatedelay sysctl(2) is used to<br>configure the number of seconds after which the system will wake up<br>from suspend and hibernate itself.

SMP Improvements:

Unlocked socket splicing.<br>Unlocked icmp6_sysctl().<br>Unlocked the IGMP slow timeout.<br>Enabled parallel fault handling on amd64 and arm64.<br>Made bse(4) interrupts mp-safe.<br>Protected the IGMP and MLD6 fast timers with an rwlock.

Direct Rendering Manager and graphics drivers:

Updated drm(4) to<br>Linux 6.18.22.

VMM/VMD and virtualization...

openbsd support added spacemit amd64 memory

Related Articles