FreeBSD Status Report First Quarter 2026
Here is the first 2026 status report, with 45 entries.
This is the first status report since we changed the schedule and started enforcing it. As you can see, we are indeed on schedule! It is being published within one month of the end of the quarter, as expected!
It has a very high number of entries (for reference, 2025Q4 had 28) in spite of the fact that we waited much less.
Have a nice read!
Lorenzo Salvadore, on behalf of Status Team
- FreeBSD Team Reports
- Projects
- Cyber Resilience Act (CRA) Readiness Project
- More robust pkgbase conversion
- Alpha-Omega Beach Cleaning project
- FreeBSD Software Bill of Materials
- Laptop Testing and Integration Project
- Desktop Script for BSDInstall
- A bhyve management GUI written in Freepascal/Lazarus
- Full CPUID Control for bhyve
- Sylve — A Unified System Management Platform for FreeBSD
- AppJail, AppScripts and Sandboxed X11 Applications
- daemonless: Native FreeBSD OCI Containers
- Kernel Benchmark, MAINTAINERS, and pkgdist
- LLDB Improvement on FreeBSD
- Userland
- Kernel
- Architectures
- Cloud
- Documentation
- Ports
- KDE on FreeBSD
- GCC on FreeBSD
- Valgrind: stabilization, FreeBSD 16 fixes and additions
- Improve OpenJDK on FreeBSD
- Make openjdk21 the default JAVA_VERSION
- Make openjdk25 the default JAVA_VERSION
- Wazuh on FreeBSD
- FreeBSD HPC Modernization Initiative: Ecosystem Expansion and Upstream Integration
- Improve libvirt support for bhyve hypervisor
FreeBSD Team Reports
Entries from the various official and semi-official teams, as found in the Administration Page.
FreeBSD Foundation
Links:
FreeBSD Foundation
URL: https://freebsdfoundation.org/
Technology
Roadmap URL: https://freebsdfoundation.org/blog/technology-roadmap/
Donate URL:
https://freebsdfoundation.org/donate/
Foundation Partnership Program URL: https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/
FreeBSD
Journal URL: https://freebsdfoundation.org/journal/
Foundation
Events URL: https://freebsdfoundation.org/our-work/events/
Contact: Deb Goodkin <deb@FreeBSDFoundation.org>
The FreeBSD Foundation is a 501(c)(3) non-profit dedicated to advancing FreeBSD through both technical and non-technical support. Funded entirely by donations, the Foundation supports software development, infrastructure, security, and collaboration efforts; organizes events and developer summits; provides educational resources; and represents the FreeBSD Project in legal matters.
OS Improvements
In the first quarter of 2026, there were 555 src,
83 ports, and 16 doc commits sponsored by
the FreeBSD Foundation.
Refer to these report entries describing much of that sponsored development work:
Other highlights:
-
The Foundation is supporting two projects: the Laptop Support and Usability project (in collaboration with Quantum Leap Research), and a Cyber Resilience Act Readiness Project.
-
For background on the Laptop Support and Usability project, refer to the 2025Q1 quarterly status report.
-
FreeBSD has been accepted to participate in Google Summer of Code (GSoC) 2026. Potential contributors have submitted their applications to Google, and we will learn how many FreeBSD projects will be funded on April 30.
Advocacy
In the first quarter of 2026, our advocacy work focused on expanding our educational video content, reaching more viewers than ever, bringing the community together for a productive Vendor Summit, and reflecting on the work that is helping sustain and grow interest in FreeBSD. Here are just a few of the ways the Foundation advocated for FreeBSD in Q1 2026:
-
Helped represent FreeBSD at FOSDEM 2026, SCALE 23X, AsiaBSDCon, and CHERI Blossoms Conference
-
Began planning the June 2026 FreeBSD Developer Summit, taking place June 17-18, 2026, co-located with BSDCan 2026; Registration is now open
-
Finalized our Silver Sponsorship of BSDCan and opened the BSDCan 2026 Travel Grant Application
-
Signed for a Silver level sponsorship to AsiaBSDCon26, which took place March 19-22, 2026, in Taipei, Taiwan.
-
Deb Goodkin, Executive Director of the FreeBSD Foundation, will be speaking at Open Source Summit North America, hosted by the Linux Foundation on May 19, 2026
-
Published the following blogs and videos to help to inform and educate the community:
-
Published the January 2026, February 2026, and March 2026 FreeBSD Foundation Newsletters
-
Released the October/November/December issue of the FreeBSD Journal with HTML versions of the articles
Continuous Integration and Workflow Improvement
The Foundation supports a full-time staff member dedicated to improving the Project’s continuous integration system and test infrastructure.
Legal/FreeBSD IP
The Foundation owns the FreeBSD trademarks, and it is our responsibility to protect them. We also provide legal support for the core team to investigate questions that arise.
Go to https://freebsdfoundation.org to find more about how we support FreeBSD and how we can help you!
FreeBSD Release Engineering Team
Links:
FreeBSD
14.4-RELEASE announcement URL: https://www.freebsd.org/releases/14.4R/announce/
FreeBSD
15.1-RELEASE schedule URL: https://www.freebsd.org/releases/15.1R/schedule/
FreeBSD
releases URL: https://download.freebsd.org/releases/ISO-IMAGES/
FreeBSD
development snapshots URL: https://download.freebsd.org/snapshots/ISO-IMAGES/
Contact: FreeBSD Release Engineering Team <re@FreeBSD.org>
The FreeBSD Release Engineering Team is responsible for setting and publishing release schedules for official project releases of FreeBSD, announcing code freezes and maintaining the respective branches, among other things.
The Team managed 14.4-RELEASE, leading to the official RELEASE build and announcement in March. Planning has started for the upcoming 15.1-RELEASE, which is due to arrive in June.
The Team gained four new members, Sergio Carlavilla Delgado, Craig Leres, Vladlen Popolitov, and Alexander Ziaee, and two members have departed: Jake Freeland and Mahdi Mokhtari. We thank them for their contributions.
The Release Engineering Team continued providing weekly development snapshot builds for the main, stable/15, stable/14, and stable/13 branches. Note that the weekly snapshot builds for stable/13 will end when that branch reaches its End-of-Life at the end of April.
Ports Collection
Links:
About FreeBSD Ports
URL:https://www.FreeBSD.org/ports/
Contributing to Ports URL: https://docs.freebsd.org/en/articles/contributing/#ports-contributing
Ports Management
Team URL: https://www.freebsd.org/portmgr/
Ports
Tarball URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/
Contact: FreeBSD Ports Management Team <portmgr@FreeBSD.org>
The Ports Management Team is responsible for overseeing the overall direction of the Ports Tree, building packages, and personnel matters. Below is what happened in the last quarter.
During the last quarter, we welcomed Yusuf Yaman (nxjoseph), Kousuke Kannagi (mce), Piotr Smyrak (smyru), Laurent Chardon (laurent), and Kenneth Raplee (kenrap) as new ports committers, and said goodbye to one committer.
According to INDEX, there are currently 37,958 (up from 37,163) ports in the Ports Collection. There are currently about 2,710 (down from 3,428) open ports PRs, of which 798 (down from 821) are unassigned. The last quarter saw 8,970 (up from 8,738) commits by 166 (up from 156) committers on the main branch and 697 (down from 898) commits by 59 (down from 61) committers on the 2026Q1 branch.
The most active committers to main were:
-
2135 sunpoet@FreeBSD.org
-
800 yuri@FreeBSD.org
-
528 vvd@FreeBSD.org
-
312 bofh@FreeBSD.org
-
153 fuz@FreeBSD.org
A lot has happened in the ports tree in the last three months, an excerpt of the major software upgrades are:
-
pkg 2.6.2
-
New USES: inotify
-
Default version of Go switched to 1.25
-
Default version of Java switched to 21 (and 11 on armv*)
-
Default version of Lazarus switched to 4.6 (and 4.99 on aarch64 and powerpc*)
-
Default version of MySQL switched to 8.4
-
Default version of PostgreSQL switched to 18
-
Chromium 146.0.7680.177
-
Electron 40.8.3 added
-
Firefox 149.0
-
Firefox-esr 140.9.0
-
KDE Plasma 6.6.3
-
KDE Frameworks 6.24.0
-
KDE Applications 25.12.3
-
Qt6 6.10.2
-
Ruby 3.2.10, 3.4.8, 4.0.1
-
Rust 1.94.0
-
SDL 3.2.30
-
wlroots 0.20.0 added
-
Wine 11.0
During the last quarter, pkgmgr@ ran 29 exp-runs to test various base system changes and ports upgrades.
Cluster Administration Team
Links:
Cluster
Administration Team members URL: https://www.freebsd.org/administration/#t-clusteradm
Contact: Cluster Administration Team <clusteradm@FreeBSD.org> Contact: Philip Paeps <philip@FreeBSD.org>
FreeBSD Cluster Administration Team members are responsible for managing the machines the Project relies on to synchronize its distributed work and communications.
In this quarter, the team has worked on the following:
-
Regular support for FreeBSD.org user accounts.
-
Regular disk and parts support (and replacement) for all physical hosts and mirrors.
-
Cluster software refresh.
-
Coordinate community mirrors.
Cluster refresh
The stable/13 branch will stop being supported by the FreeBSD security-officer@ team at the end of April 2026. Several pieces of critical FreeBSD Project infrastructure were upgraded from FreeBSD stable/13 to FreeBSD stable/14 and FreeBSD stable/15. This work is ongoing at the end of the month.
The clusteradm team refreshes the production package builders (circa 35 physical machines) on a roughly six- to eight-week cadence. These machines run FreeBSD current snapshots.
Other machines are upgraded on an as-needed basis, keeping up with security fixes depending on how exposed they are.
At the time of this writing there are 146 physical machines in the cluster. We have 42 machines on current, 17 on stable/15 and 80 on stable/14.
Most of the remaining stable/13 jails will be upgraded to stable/15.
12.x: Regular 0, Jails 7
13.x: Regular 7, Jails 33
14.x: Regular 80, Jails 263
15.x: Regular 17, Jails 4
>16.x: Regular 42, Jails 6
Total: Regular 146, Jails 313
Total installations: 459
Running -RELEASE|{-p*}: 0
Total geographic sites: 13FreeBSD official mirrors
Current locations are Australia, Brazil, Japan (two full mirror sites), Malaysia, South Africa, Sweden, Taiwan and United States of America — California, Chicago, New Jersey, and Washington.
Our mirror site in Taiwan is experiencing an extended outage.
One of our mirror sites in Japan will get a complete hardware refresh in 2026Q2.
The hardware and network connection have been generously provided by:
-
Cloud and SDN Laboratory at BroadBand Tower, Inc
-
Department of Computer Science, National Yang Ming Chiao Tung University
New official mirrors are always welcome. We have noted the benefits of hosting single mirrors at Internet Exchange Points globally, as evidenced by our existing mirrors in Australia, Brazil, and South Africa. If you are affiliated with or know of any organizations willing to sponsor a single mirror server, please contact us. We are particularly interested in locations in Europe.
See generic mirrored layout for full mirror site specs and tiny-mirror for a single mirror site.
The FreeBSD Foundation does not fund work on the FreeBSD.org cluster.
Sponsor: Several anonymous individuals and companies Sponsor: https://github.com/sponsors/ppaeps
Bugmeister Team
Links:
FreeBSD Bugzilla URL: bugs.freebsd.org/
Contact: Bugmeister <bugmeister@FreeBSD.org>
The Bugmeister team is responsible for ensuring that the Problem Report software is in working order, entries are correctly categorised, and that there are no invalid entries.
We are ending the quarter with 9548 open PRs, creeping slightly upwards in every category from this time last year. We spent most of our time this quarter greeting new contributors before providing them with an account. We think this is going very nicely and has provided an increase in engagement and submission quality, but we do think we could use a few more people on the team.
We welcomed a new member of the Triage Team, Simon Wollwage, who has been lovingly going through the database, rebasing patches, and being kind to contributors. Many reports have been closed or had their underlying issues fixed from his efforts, and we thank him.
We finished updating documentation to request that proposed changes are sent as git format patches. This will save time, increase security, and properly convey author metadata. If we missed a spot, please let us know.
Projects
Projects that span multiple categories, from the kernel and userspace to the Ports Collection or external projects.
Cyber Resilience Act (CRA) Readiness Project
Links:
Cyber Resilience Act Readiness URL: https://github.com/FreeBSDFoundation/all-projects/tree/main/Cyber%20Resilience%20Act%20Readiness
The Foundation is running a project through 2026 to actively prepare the FreeBSD Foundation, Project, and the community for the EU Cyber Resilience Act. There are six main areas of focus: Security and Vulnerability Handling, SBOM Toolchain, Public Documentation, Community Legislative Engagement, Public Project Repository, and Communications.
Over February and March the project has moved from planning into active delivery. Internal weekly coordination meetings are now in place, and the Foundation’s contracted security lead, Pierre Pronchery, has joined the FreeBSD Security Team to align the project work more closely with the FreeBSD Project’s existing security processes.
On the regulatory engagement front, the Foundation co-signed an Open Source Initiative letter to the European Commission supporting voluntary security attestations, contributed to Eclipse Foundation feedback on draft CRA guidance, and attended FOSDEM and FOSS Backstage to collaborate with other open source communities navigating the CRA.
Technical work on the SBOM toolchain is progressing well, with early automated SBOM generation now under testing. A public project repository has been created to track progress transparently, a community FAQ has been published, and a dedicated contact address is available for questions. Outreach to downstream manufacturers has also begun.
More robust pkgbase conversion
Contact: Isaac Freund <ifreund@freebsdfoundation.org>
The pkgbasify script is used to convert non-pkgbase FreeBSD systems to pkgbase systems.
In the last quarter, I landed several improvements
in upstream pkg, allowing pkgbasify to become both simpler and more
robust. At the same time, the dependency of pkgbasify on the
etcupdate database in /var/db/etcupdate/current can be
now be eliminated, making pkgbasify much more flexible.
These improvements will be available to end users after the pkg 2.7 release.
Sponsor: The FreeBSD Foundation
Alpha-Omega Beach Cleaning project
Links:
Alpha-Omega — Linux Foundation
Project URL: https://alpha-omega.dev
Alpha-Omega on
GitHub URL: https://github.com/ossf/alpha-omega
FreeBSD Foundation URL:
https://freebsdfoundation.org
Project
repository from the FreeBSD Foundation URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaning
Contact: Pierre Pronchery <pierre@freebsdfoundation.org>
Alpha-Omega’s mission is to catalyze sustainable security improvements to critical open source projects and ecosystems. After a successful project with the FreeBSD Foundation in 2024 — auditing the bhyve hypervisor and the Capsicum sandboxing framework — Alpha-Omega has selected FreeBSD again, for the Alpha Omega Beach Cleaning project this time. This new grant consists in generally improving the security and maintenance of third-party software within the FreeBSD base system. The FreeBSD Foundation received the grant and has managed and executed the project. This project is officially completed as of March 30th, 2026.
After the previous report from 2025Q4, two major objectives have been identified:
-
Import of pkgconf into the base system (see draft PR #1994 on GitHub)
-
Import of pkg into the base system (see the khorben/pkg-2.6.2 branch on GitHub)
Both objectives are nearing completion, and they were presented publicly at AsiaBSDCon 2026 in Taiwan, during the FreeBSD Developer Summit as well as during the conference’s Work-in-Progress session.
Monthly reporting has been submitted to alpha-omega and is available as before on GitHub for 2025 and for 2026.
Sponsor: Alpha-Omega, The FreeBSD Foundation
FreeBSD Software Bill of Materials
Links:
spdxtool: Add
parameter for using URI as SPDX id URL: https://github.com/pkgconf/pkgconf/pull/484
spdxtool: Add
cli parameter for changing SPDX id URL: https://github.com/pkgconf/pkgconf/pull/483
spdxtool:
spdxtool: Add homepage handling URL: https://github.com/pkgconf/pkgconf/pull/475
spdxtool: Add
source handling to SBOM URL: https://github.com/pkgconf/pkgconf/pull/474
spdxtool: Add
support for copyright text URL: https://github.com/pkgconf/pkgconf/pull/473
spdxtool:
Rework of License-tag SDPX expression evaluation URL: https://github.com/pkgconf/pkgconf/pull/461
Add some
stricter compiler warnings and overcome new warnings URL:
https://github.com/pkgconf/pkgconf/pull/450
libpkgconf/libpkgconf.h:
Add printf-like attributes to functions URL: https://github.com/pkgconf/pkgconf/pull/447
spdxtool:
Update variables that are const to const URL: https://github.com/pkgconf/pkgconf/pull/446
man/spdxtool.1: Add
man page for spdxtool URL: https://github.com/pkgconf/pkgconf/pull/445
Added
SPDX-License-Identifiers URL: https://cgit.freebsd.org/src/log/?qt=author&q=Tuukka+Pasanen
SPDX-License-Identifiers up-to review and waiting for
upstreaming URL: https://github.com/freebsd/freebsd-src/compare/main…illuusio:freebsd-src:update-spdx-licenses
Issue open for
commenting and review: caesar: Add SPDX-License-Identifier tags
URL: https://reviews.freebsd.org/D55461
.pc file for SBOM metadata (WIP) URL: https://github.com/illuusio/freebsd-src/tree/sbom-pkgconfig/release/sbom
Contact: Tuukka Pasanen <tuukka.pasanen@ilmi.fi>
The FreeBSD Software Bill of Materials (SBOM) project started in 2025 and continued in 2026. Work in 2026 has focused more on the EU Cyber Resilience Act (CRA), and the effort has shifted toward delivering a framework for FreeBSD source.
In the first quarter of 2026, SBOM work was delivered in three categories:
-
Pkgconf upstream work, especially with spdxtool-tool, which is used for creating SPDX Lite 3.0.1 JSON-LD SBOMs from .pc-files.
Several missing features have been added and are under active development by pkgconf contributors.
The tool is now nearly compatible with SPDX Lite 3.0.1 requirements and is ready for general use.
Additionally, there is an effort to import pkgconf as part of the FreeBSD source, led by Pierre Pronchery. -
Adding missing SPDX-License-Identifier to files under the FreeBSD source in the bin, sbin, usr.bin, and usr.sbin directories.
-
Creating .pc-files for SBOM. The first patch is expected to land in 2026Q2, starting with files from bin.
If you want to help with this effort:
-
Verify that SPDX-License-Identifier licenses are correct and assist with upstreaming files.
-
Verify that .pc files contain accurate information and help upstreaming them to git.
-
Assist in reviewing the pkgconf import to the FreeBSD source.
Sponsor: The FreeBSD Foundation
Laptop Testing and Integration Project
Links:
Project
URL URL: https://freebsdfoundation.github.io/freebsd-laptop-testing/
GitHub
repository URL: https://github.com/FreeBSDFoundation/freebsd-laptop-testing
Contact: Shreeney Ajmeri <shreeney@freebsdfoundation.org>
The goal of this project is to create a community workflow for users of FreeBSD to easily test their laptops against, placing all tested laptops in a table, along with a ranking system to automatically deduce which laptops are currently the best for running FreeBSD on.
As part of the FreeBSD Foundation’s Laptop Support and Usability Project, this workflow will prove very useful for prospective users of FreeBSD, who want to test their laptops to see how well-supported they are. It also helps buyers who want to purchase a laptop that is known to be well-supported by FreeBSD.
The main goal is to consolidate all FreeBSD laptop compatibility information into one central knowledge base for the community to refer to.
During this quarter the following items were completed,
-
Created a Python-based application which builds on top of the
hw-probeutility, which collects and aggregates a relevant subset of the data for both laptop developers and end users to view. -
Developed a static-site-generation system to parse the files created by the Python application into HTML fragments for use in the website
-
Set up a GitHub Actions workflow to auto-run the parser and generate the website upon new merge or git actions from a user
-
Outlined a sub-set of relevant information created by
hw-probeto be used in the FreeBSD laptop testing workflow -
Created a pull request template for the users to follow outlining important features of the laptop that work or not.
-
Developed a scoring system to be used in the application to automatically score laptops based on how many devices on the laptop function or not. Added a workflow that makes manual adjustment of criteria and scores easier for maintainers.
-
Created Makefile and shell scripts to aid users in running the tests using a simple
makecommand within a terminal, complete with user-friendly prompts if required applications are not installed. -
Tested all laptops and desktops in the Kitchener office with the test suite inside the repository to verify if it works properly across both laptops and desktops
In addition, extensive testing took place during this quarter,
-
Tested the Framework Laptop 13 (AMD 7040 Series) and Lenovo Yoga 11e (Kaby Lake) against the FreeBSD Laptop Integration Testing Guidelines on FreeBSD 16-CURRENT
-
Worked on testing
drm-kmodsupport on the Framework Desktop (Ryzen AI MAX) , as well as s2idle (suspend-2-idle) support on the Framework Laptop. -
Created FreeBSD Handbook documentation on Wayland, including setting up Niri, Labwc, Hyprland, and RiverWM window managers properly. Tested and debugged Wayland support on the commited test targets, and reported bugs to relevant developers.
-
Integrated the Ly display manager into the upcoming KDE installer for FreeBSD 15.1, allowing users to choose between SDDM and Ly.
-
Evaluated the viability of GPU Passthrough on a Dell OptiPlex 7010 system using an NVIDIA GPU
Other notes:
-
Started work on testing GPU passthrough on other machines; they are yet to arrive at the Kitchener office
-
Continuing to iterate on the
freebsd-laptop-testingrepository and listening to user feedback after it goes live. -
Working on iterating the laptop testing project into the
freebsd.orgdomain
Sponsor: The FreeBSD Foundation
Desktop Script for BSDInstall
Links:
Laptop
Support and Usability Project Task URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/25
Project
repository URL: https://gitlab.com/alfix/kde-installer-dialogs
Contact: Alfonso Sabato Siciliano <asiciliano@FreeBSD.org>
In the past, I developed several shell scripts with graphical interfaces to install and configure a complete desktop environment on my laptop. These interfaces allowed users to select their preferred options. One script in particular included GPU drivers, desktop environments, and tools for both laptops and desktop systems. These projects are still available in public online repositories, but they are now likely obsolete, as they have not been used or maintained for several years.
Recently, the FreeBSD Foundation launched the Laptop Support and Usability Project. One of the short-term goals of this project is to provide a simple feature in bsdinstall(8), the FreeBSD system installer, to install and configure a graphical environment. The installer should ask users whether they want to install a desktop environment and, if so, automatically install and configure everything needed with minimal or no user intervention. After reboot, users should be presented with a KDE Plasma graphical login screen.
To implement this feature, I reused one of my previous scripts as a proof of concept. It has been updated, simplified, and renamed to desktop. The script installs and configures GPU drivers, Xorg, KDE Plasma, and SDDM. Based on the feedback received, I introduced several improvements over the original version:
-
Automatic GPU detection with a suggested video driver, since some users selected the wrong GPU during testing. This is particularly important as the script targets less experienced users.
-
Addition of dialog-based messages to provide information, documentation, and error reporting.
-
Extra features and menus to allow users to choose certain configurations.
In the future, depending on user interest and feedback, support can be extended to additional desktop environments and tools.
One of the main challenges was the wide variety of supported GPUs. For this reason, I launched a call for testing, involving the community through a script to be executed on an already installed system. The feedback and suggestions received were very positive and valuable. Contributions are still welcome, especially for:
-
NVIDIA Optimus with recent GPUs.
-
Systems with non-amd64 architectures.
A version of the script was later adapted for integration into bsdinstall and into an installation ISO. After successful testing on both CURRENT and STABLE, a review has been submitted to add the desktop script to bsdinstall: D56167.
Sponsor: The FreeBSD Foundation
A bhyve management GUI written in Freepascal/Lazarus
Links:
Bhyvemgr URL:
https://github.com/alonsobsd/bhyvemgr/
Contact: José Alonso Cárdenas Márquez <acm@FreeBSD.org>
Bhyvemgr is a bhyve management GUI written in Freepascal/Lazarus on FreeBSD. It needs a bunch of tools, mostly installed on base system, and some installed from ports/packages. The main goal is to be a desktop application with focus on desktop users to easily and quickly setup and run virtual machines on FreeBSD hosts.
During this quarter, there were many bugfixes and improvements to Bhyvemgr.
These are some highlights that were added:
-
Add PF/NAT support
-
Add -n to sudo/doas command. They will save an error to log file if the permissions to run some apps are missing
-
Add some how-to to bhyvemgr wiki
-
Change RDP parameter: /log-level:off to /log-level:ERROR
-
Improve aarch64 support
-
Improve settings window
-
Improve IPv6 support
-
Improve log functionality
-
Update translations
Bhyvemgr supports aarch64 from 15.x to 16-CURRENT and amd64 from FreeBSD 14.x to 16-CURRENT. It can be compiled or installed from ports or packages with gtk2, qt5, or qt6 interface support.
People interested in helping or supporting the project are welcome.
Current version: 1.13.1
Sponsor: https://paypal.me/alonsocbsd
Full CPUID Control for bhyve
Contact: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>
Project Overview
Ongoing work on this project aims to integrate the existing proof-of-concept work into FreeBSD, and to add the following usability features:
-
a user-friendly configuration method to override individual bits, parts or even whole CPUID functions as needed, while keeping the rest of the host CPUID information or a pre-defined CPUID configuration
-
a user-friendly configuration method for the hypervisor signature reported by bhyve
-
a set of predefined CPUID configurations based on common x86 architecture levels, perhaps also including a set of CPUID data for a few real CPU models, and a user-friendly configuration method to choose one for a VM
Changes during the last quarter
Extensions to bhyvectl
The CPUID configuration prototype already implemented a new
command for bhyvectl, --get-cpuid-cfg, to query the
CPUID configuration of a vCPU.
Another new command for bhyvectl has now been implemented,
--get-cpuid, which fetches CPUID values emulated for a
vCPU.
There are several modes of operation of
--get-cpuid:
bhyvectl --get-cpuid=<leaf>[,<index>]-
This fetches the emulated CPUID value for an individual CPUID leaf and optionally index.
bhyvectl --get-cpuid[=all]-
This fetches the complete set of emulated CPUID values, for all supported leaves and all supported indices.
bhyvectl --get-cpuid=all,p-
Same as above, but the output is parsable as a set of CPUID configuration options for bhyve.
bhyvectl --get-cpuid=all,s-
Same as above, but the output is "sparse", meaning that only CPUID leaves and indices are printed if their values on the given vCPU (with the
--cpuswitch) differ from the same leaf and index on vCPU 0.
The latter two can be used to construct a baseline CPUID configuration based on the CPUID emulation of bhyve, which can then be modified as desired.
More flexible CPUID configuration
The CPUID configuration mechanism implemented as part of the prototype has been reworked to allow a more flexible and fine-grained configuration that does not require the whole set of CPUID information to be specified. Here is an example configuration:
cpuid.0x00000001=edx|=0x00040000 cpuid.0x00000003=ecx=0x01234567,edx=0x89abcdef vcpu.1.cpuid.0x00000003=ecx|=0x10000000 vcpu.2.cpuid.0x00000003=ecx|=0x20000000 vcpu.3.cpuid.0x00000003=ecx|=0x30000000 vcpu.4.cpuid.0x00000003=ecx|=0x40000000 vcpu.5.cpuid.0x00000003=ecx|=0x50000000 vcpu.6.cpuid.0x00000003=ecx|=0x60000000 vcpu.7.cpuid.0x00000003=ecx|=0x70000000 vcpu.8.cpuid.0x00000003=ecx|=0x80000000 vcpu.9.cpuid.0x00000003=ecx|=0x90000000 vcpu.10.cpuid.0x00000003=ecx|=0xa0000000 vcpu.11.cpuid.0x00000003=ecx|=0xb0000000 vcpu.12.cpuid.0x00000003=ecx|=0xc0000000 vcpu.13.cpuid.0x00000003=ecx|=0xd0000000 vcpu.14.cpuid.0x00000003=ecx|=0xe0000000 vcpu.15.cpuid.0x00000003=ecx|=0xf0000000 cpuid.0x0000000b,0=edx=0xffffffff cpuid.0x0000000b,1=edx=0xeeeeeeee cpuid.0x0000000b,2=edx=0xdddddddd
The above CPUID configuration enables the Processor Serial Number (0x00000001, EDX bit 18) feature on all vCPUs and sets a default serial of 0x01234567, 0x89abcef.
On each vCPU other than vCPU 0, it overwrites one digit of the serial number with the vCPU ID so that each vCPU has a unique serial number.
The last three assignments does not make any sense. Leaf 0x0000000b contains topology information in all indices, and register EDX always contains the x2APIC ID of the vCPU. Consequently, these last three assignments will be silently ignored.
Using x86 architecture levels
It is now possible to specify a x86 architecture level:
cpuid.archlevel=v1
This will disable all features of x86 architecture level v2 to v3, restricting the CPU featureset to that of x86 architecture level v1.
Plans for next quarter
-
The x86 architecture level support should be more robust. While a direct configuration of CPUID information should allow to change almost everything, for x86 architecture levels we should check whether all the features defined in an architecture level are actually supported by the hardware. Setting an architecture level that is not supported by the CPU should be disallowed, or at least being warned about.
-
Similar to setting a x86 architecture level, a mechanism will be implemented to override the hypervisor identification without requiring manually changing CPUID bits.
-
Get the whole wad reviewed and committed into FreeBSD.
Sponsor: The FreeBSD Foundation
Sylve — A Unified System Management Platform for FreeBSD
Links:
Website URL: https://sylve.io
GitHub URL:
https://github.com/AlchemillaHQ/Sylve
CI URL: https://sylve-ci.alchemilla.io
Discord URL: https://discord.gg/bJB826JvXK
Contact: Hayzam Sherif <hayzam@alchemilla.io>
Sylve is a modern, unified system management platform for FreeBSD. It provides an integrated web interface for managing virtual machines (via Bhyve), Jails, the networking around them, and ZFS storage.
The backend is implemented in Go, while the frontend is built with Svelte. The project emphasizes a minimal system footprint. By default, it does not require any packages outside of the base system.
At the end of this quarter, we made our first v0.1.0 release of Sylve, and at the time of writing this article, we are at v0.2.3.
Optional runtime dependencies, required only when their respective features are used, include:
-
devel/libvirt for virtualization
-
devel/qemu-tools for disk image management
-
net/samba419 for SMB file sharing
-
sysutils/swtpm for TPM emulation support
-
dns/dnsmasq for DHCP and DNS services
The port pulls in these dependencies for convenience to the user, but by itself, Sylve needs no dependencies to run.
Q1 Progress Highlights
Data Center / Cluster
-
Improved how clusters are created and managed, making setups quicker and less prone to errors.
-
Implemented a backup solution using sysutils/zelta, which supports backing up VMs, Jails, and custom datasets on a schedule without the need for custom software running on the target host (except SSH and ZFS).
Jails
-
Snapshots for Jails (including their configs) are now supported directly from the Jail-specific UI.
-
Added Wake-On-LAN support for Jails with VNET.
-
Improved customizability of Jails by allowing users to specify a wide variety of supported options (hooks, DevFS ruleset, metadata, etc.).
-
Added support for a Ghostty (Zig/WASM)-based web terminal.
-
Linux jails now support static IP configuration.
-
A templating feature is now implemented for Jails; a Jail can be converted to a template and then cloned any number of times.
-
Start/Stop lifecycles and the associated UI have been significantly improved to make use of our built-in queue system, providing a faster and smoother user experience.
Virtual Machines
-
Snapshots for VMs (including their configs) are now supported directly from the VM-specific UI.
-
9P Filesystem support was implemented for quick sharing of folders between guest and host.
-
QEMU guest agent support was added for retrieving basic system and networking information.
-
Reboot/Start/Stop lifecycles and the associated UI have been significantly improved to make use of our built-in queue system, providing a faster and smoother user experience.
-
Added support for a Ghostty (Zig/WASM)-based web terminal for the serial console.
-
A templating feature is now implemented for VMs; a VM can be converted to a template and then cloned any number of times.
-
CPU Pinning has been reworked significantly, specifically to add support for multi-socket systems.
Authentication
-
Passkey support was added for easy logins without the need to enter passwords.
Utilities
-
The downloader now also supports uploads.
-
Queuing has been significantly improved for the downloader to make it more performant.
General
We have also made numerous improvements to the UI/UX, performance optimizations, and bug fixes across the platform. Some of these include:
-
PCI Passthrough support has been significantly improved and now includes a "Prepare Passthrough" button, which prepares a PCI device for passthrough, making it available for use with VMs after a system reboot.
-
Removed several NPM libraries in favor of custom-built alternatives or vendored-in dependencies to reduce the risk of supply chain attacks.
-
Made numerous performance optimizations to reduce RAM and CPU usage on the frontend.
-
Migrated the CI system from Jenkins to GitHub Actions, which now uses sysroots to build, allowing us to achieve faster build times.
-
Most of the telemetry data has been moved from the main SQLite database to a new telemetry database. This reduces the risk of locks on the primary DB, thereby increasing performance.
-
Wrote initial documentation and deployment guides for users to get started.
Roadmap Update
-
Address user feedback.
-
Work on integrating more features (NFS Shares, NAT/Traffic Rules UI, etc.).
Sponsors: The FreeBSD Foundation, Alchemilla Ventures (Development), IPTechnics LLC (Infrastructure & Testing)
AppJail, AppScripts and Sandboxed X11 Applications
Links:
AppJail on GitHub
URL: https://github.com/DtxdF/AppJail
AppScript on
GitHub URL: https://github.com/DtxdF/appscript
x11appjail on
GitHub URL: https://github.com/DtxdF/x11appjail
Contact: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
AppJail is an open-source BSD-3 licensed framework entirely written in POSIX shell and C to create isolated, portable and easy to deploy environments using FreeBSD jails that behaves like an application.
AppScript is a very lightweight and easy-to-use tool for creating self-extracting executables.
OS-level virtualization is not as perfect as hardware-level virtualization: a vulnerability in a device not hidden within the jail could pose a risk to the host, but, if done correctly, it is much better than running an application directly from the host.
Jails are the implementation of OS-level virtualization for
FreeBSD. With jails, many things can be easily restricted: limiting
resources, restricting
access to /dev devices, limiting the filesystem, restricting the
network, and many other aspects. All transparently to the
application running within the jail. However, one issue,
specifically with X11 applications, is the lack of isolation. Users
often misuse the xhost + trick to run an X11
application inside the jail and display the application on the
host’s X server. This poses a security risk because, even though
the X11 application runs inside the jail and even though it does so
as an unprivileged process, it can obtain a great deal of
information from the host. Therefore, a compromised application,
one with a backdoor, or simply one that collects a lot of
information for «telemetry purposes» could be a nightmare with this
setup and, in the worst-case scenario, compromise the host.
A new command has recently been implemented in AppJail to solve this problem: appjail-x11(1). This command runs an application inside the jail but displays it on a new X server created by Xephyr, which is already authenticated with MIT-MAGIC-COOKIE-1. This is much simpler and lightweight than setting up an SSH server inside the jail, creating a key pair for this purpose, connecting to the jail, etc. However, this command is not limited to just that: you can resize the Xephyr window, and your DE/WM will be refreshed accordingly, as this command is capable of detecting such changes.
However, while much has been achieved with this command, the user must install a DE/WM and the application inside the jail, and perhaps install a custom .desktop file on the host. This can be automated using Makejails, and advanced users will be fine with that, since they love customizing everything, but for the average user (or even for me), what I wanted was to distribute applications so that users would not have to do anything more than simply run the application, and that is what x11appjail aims to solve.
x11appjail is a repository containing pre-made scripts for deploying certain X11 applications using appjail-x11, which automates the installation of the .desktop file, the icon, the creation of the jail via Makejails, and some reasonable default environment variables that can be easily modified at runtime. However, the repository actually exacerbates the usability issue: now the user has to clone and pull updates, which may be enough for some users, but what I wanted was reasonably good usability of the application and the ability to easily isolate it in a jail. Therefore, I wrote appscript, which creates SFX files in ELF format, and these are automatically created with each new release of that repository thanks to a GitHub workflow.
Sponsor: https://www.patreon.com/appjail
daemonless: Native FreeBSD OCI Containers
Links:
Daemonless URL: https://daemonless.io
Contact: Michael Johnson <ahze@ahze.net> Contact: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
Daemonless is a collection of FreeBSD-native OCI images that run directly on the FreeBSD kernel. It combines the power and security of Jails with the modern container ecosystem—compatible with Podman, AppJail, or any OCI-compliant runtime. No Linux virtual machines or overhead required.
Features:
-
s6 Process Supervision — Proper signal handling, no zombie processes
-
PUID/PGID Support — Seamless permission mapping for ZFS datasets and bind mounts
-
Multiple Tags — Choose between upstream binaries (:latest), quarterly packages (:pkg), or rolling packages (:pkg-latest)
-
Automated CI/CD — Every image built and tested automatically
Our image fleet contains more than 60 images, ranging from media managers such as Radarr, Sonarr, Prowlarr, Lidarr, Readarr, Bazarr, and Jellyfin, to downloaders like SABnzbd and Transmission, and even infrastructure software such as nginx, Vaultwarden, Smokeping, and OpenSpeedTest. We even have a complete stack for Immich!
All of these images were created using https://daemonless.io/guides/dbuild/, the primary build engine for the Daemonless project, which has been recently ported. It provides a unified interface for building, testing, and publishing FreeBSD OCI container images, ensuring consistency between local development and CI/CD environments.
In addition to deploying OCI containers using Podman and Podman-Compose, it has recently become possible to use https://github.com/DtxdF/AppJail and https://github.com/DtxdF/director as alternatives, thanks to their OCI compatibility.
Kernel Benchmark, MAINTAINERS, and pkgdist
Links:
Kernel benchmark writeup URL: https://github.com/Humanoid-Human/fbsd-work/blob/main/kernel-benchmark.md
MAINTAINERS
srcmgr thread URL: https://github.com/freebsd/srcmgr/issues/21
MAINTAINERS pull
request URL: https://github.com/freebsd/freebsd-src/pull/2107
pkg to
distribution set converter URL: https://github.com/Humanoid-Human/fbsd-work/pull/1
Contact: Trevor Xu <trevorxu5@gmail.com>
My work this term was split between three projects.
Kernel Benchmark
I ran several benchmarks of FreeBSD 15.0-RELEASE, FreeBSD 16.0-CURRENT (default installation), and FreeBSD 16.0-CURRENT with kernel debugging disabled. The purpose of this work was to provide proper measurements of the performance impacts of kernel debug tooling. I found that the default installation of 16.0-CURRENT (i.e. with debug) was significantly slower than 15.0-RELEASE, particularly in areas such as memory allocation. On the other hand, 16.0-CURRENT when configured correctly had performance comparable to 15.0-RELEASE in every test I ran. A full writeup is available.
MAINTAINERS Modernization
Based on the info from the srcmgr thread, I made a layout for a UCL file that would store maintainers and paths to watch, as a replacement for the current MAINTAINERS file. I then wrote a flua script that reads this file and can output CODEOWNERS for GitHub or Forgejo, get the maintainers for a particular path, get paths for a particular maintainer, etc. The pull request can be found here.
pkg to Distribution Set Converter
Currently working on writing a shell script that can convert a pkgbase package set into a distribution set. This would help facilitate the transition to pkgbase.
Sponsor: The FreeBSD Foundation
LLDB Improvement on FreeBSD
Contact: Minsoo Choo <minsoochoo0122@proton.me>
Due to the licensing issue with GDB (GPLv3), FreeBSD has adopted LLVM, including LLDB, in its base system since FreeBSD 10.0. However, most kernel developers still rely on KGDB, a patched version of a recent GDB, to debug the kernel. This is partly a matter of personal preference (some find GDB’s command syntax more comfortable), but there are also practical reasons: LLDB lacks several features that KGDB provides (see below for details) and has insufficient support even in the base system. My work aims to achieve feature parity with KGDB by the end of April.
The improvements I have made so far are listed in the link above. Note that small bug fixes are not included in that list.
The following are not supported: i386, arm, powerpc32, powerpc64be, and mips*. FreeBSD 13 and earlier are also unsupported. The targeted LLVM version is 23, although this work may be backported to FreeBSD’s in-tree LLVM and MFCed to stable/14 and stable/15 after Dimitry Andric finishes his LLVM 21 MFV.
I started this work in late January, and it is projected to be complete by April. Beyond feature parity, there are further possible improvements, such as minidump2elf support and adding UUIDs to kernel and core dump ELF headers.
The biggest blocker for this project is a lack of reviewers knowledgeable in both FreeBSD internals and KGDB internals. If you have time, please provide feedback on my pull requests. Testers on non-x86 and non-arm64 machines would also be very welcome. If you find any issues, please file a bug and ping me on llvm/llvm-project.
Sponsor: The FreeBSD Foundation
Userland
Changes affecting the base system and programs in it.
Process Descriptor API completion
Contact: Konstantin Belousov <kib@FreeBSD.org>
FreeBSD offered the Process Descriptors facility for long time. Its main use is in the Capsicum sandboxes where the handle is required to operate on an object, and process descriptor provided such handle. Other operating systems provide similar facility under the same name. The offered API was not complete, main lacking part being the pdwait(2) system call, the analog of wait(2) family, which operates on the process descriptor instead of the process id.
The described project added pdwait(2) call. Another important addition was the pdrfork(2) call, which provides the same fine-grained support for process copy construction as rfork(2), but also returns the process descriptor as the handle, like pdfork(2).
After pdwait and pdrfork addition, the natural extensions for the posix_spawn(3) facilities were possible. Now the posix_spawnattr_setprocdescp_np(3) attribute requests that posix_spawn(3) returned process descriptor. Another natural addition was posix_spawnattr_setexecfd_np(3) which specifies the executable image by file descriptor instead of the name.
Together, the newly added features make the process descriptor complete and allow the use of posix_spawn in the sandboxes.
Sponsor: The FreeBSD Foundation
Kernel
Updates to kernel subsystems/features, driver support, filesystems, and more.
ACPI Driver for System76 Laptops
Contact: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
I have been working on a dedicated driver for System76 laptops and it is now available on CURRENT.
So far, I have added the support for:
-
Battery charging thresholds. (commit)
-
Keyboard brightness with backlight(8) support. (commit)
-
Keyboard RGB color handling. (commit)
The only thing left is switching between dGPU and iGPU by the driver. However, it is possible to switch without driver assistance.
Suspend/Resume Improvements
Links:
Blog URL: https://obiw.ac/s0ix/
BSDCan talk on
s2idle/S0ix URL: https://youtu.be/RCjPc4X2Edc
Sleep testing
image URL: https://people.freebsd.org/~obiwac/s0ix/
Working
branch URL: https://github.com/obiwac/freebsd-s0ix/pull/15
Contact: obiwac <obiwac@FreeBSD.org>
Suspend-to-idle and support for S0ix sleep is in the process of being added to FreeBSD.
This will allow modern Intel and AMD laptops, some of which do not support ACPI S3 sleep, to enter low power states to increase battery life.
Most revisions have now been committed at this point, including the new acpi_spmc driver and s2idle support. The only remaining things to land are USB4 suspend support and the s2idle loop (but that requires some more discussion and investigation). See revisions D52861 and D54410 respectively.
Many bugs have been fixed, but there still is an issue where the system will sometimes lock up a few seconds after resuming. This was narrowed down to the NVMe drive not waking correctly after being suspended — still requires further investigation.
Work on an Intel PMC driver has started: D54881 This already allows for reading residency in the deepest possible S0ix state on Intel CPUs.
Work has started on a new generic power management interface: D55508 This is needed as s2idle is not an ACPI power state, and the only (modern) mechanism for power transition requests is the ACPI ioctl interface. It has not yet landed because we might end up changing or even removing the distinction between sleep types and sleep state transitions.
Sponsor: The FreeBSD Foundation
Hibernate (aka Suspend-to-disk)
Links:
Code for
the initial prototype for saving the system image URL: https://github.com/OlCe2/freebsd-src/tree/oc-hibernate
Design
document on the loader part of the resume process URL: https://hackmd.io/50ygFG3qSmqMOKytJMuOGw?both=
Contact: Olivier Certner <olce@FreeBSD.org>
Contact: Konstantin Belousov <kib@FreeBSD.org>
Work is ongoing to have FreeBSD support hibernate
(suspend-to-disk), without BIOS/firmware assistance to save the
current machine state, for amd64 UEFI-booted
machines.
The first phase was to make a prototype that saves a system image, at the moment putting aside consistency matters, so that parallel work can start on an EFI application meant to restore and bootstrap the saved image (Konstantin Belousov is working on this part). This phase was completed in March. A significant refactoring, in particular of the underlying dump infrastructure, needs to occur before that experimental code can be committed.
The main next phase is to ensure consistency of the saved system image, so that the system is viable once restored. In a nutshell, the biggest constraint here is that we must ensure that no more I/O is in flight for several reasons, which consists in first ensuring that no more I/O requests can be created and then draining the existing requests. In particular, on-going DMA accesses could change memory while it is being saved, leading to out-of-date caching in the saved image. Also, if resuming fails (because of, e.g., some hardware consistency issue), I/O that did not reach stable storage would be lost, whereas application or filesystem code would expect them to be committed (loss of consistency). We have started identifying the subsystems that need attention and analyzing which changes are required in them (e.g., bus, GEOM, disk drivers).
The phase after is to determine how to finally save the system image without tainting the consistency, as this operation itself modifies kernel memory. A first high-level possibility is to take a snapshot of memory after ensuring stability, and then resume normal operation to save the pages in their state at the moment the snapshot was taken. There are several possible refinements, such as forefront or lazy copying, with different implementation strategies, and thus characteristics and requirements. Advantages of snapshotting include the ability to use regular kernel code to save the image, with all available transformations supported. Drawbacks are higher memory consumption, although that depends a lot on the chosen implementation strategy and seems to be mitigable for a large part, and possibly some complications at very low levels of the kernel. An alternative which is under study is not to snapshot, but instead ensure that sending the image to disk only modifies state that will be effectively reset on resume. This alternative requires implementation of selective suspend, but otherwise we expect that a large part of the existing dump-on-panic code would be reusable. We are currently digging into the different options to better understand their feasibility and the trade-offs involved.
Sponsor: The FreeBSD Foundation
Collaborative Processor Performance Control (CPPC)
Contact: ShengYi Hung <aokblast@FreeBSD.org>
Contact: Olivier Certner <olce@FreeBSD.org>
Collaborative Processor Performance Control (CPPC) is a standard introduced by ACPI to allow the OS to manage performance and, conversely, efficiency levels of CPUs thanks to an abstract performance scale in general uncorrelated to and more fine-grained than mere frequency levels. Intel and AMD have been providing CPU implementations in support of ACPI CPPC for several years now.
FreeBSD had been supporting enabling CPPC but only for Intel processors and allowing to manage a useful but very limited subset of its functionality, thanks to the hwpstate_intel(4) driver added in 2020. Hardware autonomous selection of the performance target depending on the workload is forcibly enabled, and only the main corresponding hardware tunable, called Efficiency/Performance Preference (EPP), is exported to the administrator via a sysctl(8) knob.
We have added support for AMD CPPC’s implementation in the existing hwpstate_amd(4) driver which, contrary to hwpstate_intel(4), so far managed only "regular" P-states. The driver exports 4 sysctl(8) knobs: Minimum performance, maximum performance, desired performance and EPP. Minimum, maximum and desired performances are values between 0 and 255, but only a sub-range may have an effect depending on the hardware. Initial values of minimum and maximum performances are set to the effective sub-range bounds as instructed by the platform (if available). The EPP control serves to express a bias towards efficiency or performance, and is a value between 0 (maximum performance preference) and 255 (maximum efficiency preference). The desired performance may be set to any value between minimum and maximum performance, or to the special value 0 to enable hardware autonomous selection of target performance by the hardware depending on the current workload. The minimum performance, maximum performance and EPP controls apply regardless of whether autonomous selection is enabled or a specific desired performance specified. Note that the effect of each combination of these values depend on the CPU model, and we have already been able to observe wildly different behaviors on a few ones. Therefore, you should expect to have to experiment to find the values adapted to your use cases on a given machine.
hwpstate_amd(4) is included by the GENERIC kernel
(through
cpufreq(4)) and uses CPPC if the CPUs support it unless
explicitly instructed otherwise (through the
machdep.hwpstate_amd_cppc_enable tunable).
Consequently, in order to avoid performance regressions, for the
time being we have decided to set the above-mentioned controls for
maximum performance, as this is the default behavior for
traditional P-state support and also that of any other
cpufreq(4) driver except for
hwpstate_intel(4) (which currently forces hardware autonomous
selection and sets EPP to 0x80 (50%) by default). This
may be revised later depending on whether we can reliably determine
if the running computer is a laptop.
Next steps are:
-
Modify hwpstate_intel(4) to be on par with hwpstate_amd(4)'s CPPC support in terms of functionality and default behavior. This includes:
-
Better error-handling and debugging output
-
Exporting knobs for all the above-mentioned controls
-
Change the scale of EPP (from percents to an 8-bit value)
-
Change the default values
-
-
Write a manual page for hwpstate_amd(4) (in the meantime, the explanations here and the embedded sysctl(8) knobs' documentation should be enough).
-
Teach powerd(8) the CPPC control knobs and some simple policies on how to set them.
-
Teach cpufreq(4) about the abstract performance values, to provide a unified interface to retrieve or set them.
-
Make cpufreq(4) support per-CPU settings.
-
Select default control values based on the platform type (probably from ACPI’s
FADT'sPreferred_PM_Profilefield). -
Possibly move powerd(8) policies to kernel space.
Sponsor: The FreeBSD Foundation
Audio Stack Improvements
Contact: Christos Margiolis <christos@FreeBSD.org>
I have been working on the audio stack since 2024Q1. Below is a list of the previous status reports:
2024Q1 URL: https://www.freebsd.org/status/report-2024-01-2024-03/#_audio_stack_improvements
2024Q2 URL: https://www.freebsd.org/status/report-2024-04-2024-06/#_audio_stack_improvements
2024Q3 URL: https://www.freebsd.org/status/report-2024-07-2024-09/#_audio_stack_improvements
2024Q4 URL: https://www.freebsd.org/status/report-2024-10-2024-12/#_audio_stack_improvements
2025Q1 URL: https://www.freebsd.org/status/report-2025-01-2025-03/#_audio_stack_improvements
2025Q2 URL: https://www.freebsd.org/status/report-2025-04-2025-06/#_audio_stack_improvements
2025Q3 URL: https://www.freebsd.org/status/report-2025-07-2025-09/#_audio_stack_improvements
2025Q4 URL: https://www.freebsd.org/status/report-2025-10-2025-12/#_audio_stack_improvements
Important work since last report:
-
FreeBSD Journal article published.
-
sound(4) and virtual_oss(8) cleanups, fixes and improvements.
-
libxo support for sndctl(8).
-
Started implementing DSD format and DoP support.
-
Started implementing a bluetooth device management utility.
You can also follow the development process on the FreeBSD Foundation’s status-updates repository, where I post weekly reports.
Sponsor: The FreeBSD Foundation
LinuxKPI 802.11 and Native Wireless Update
Links:
Support
the MediaTek Wireless cards URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/66
Support
the Realtek Wireless cards URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/99
Contact: Bjoern A. Zeeb <bz@FreeBSD.org>
Contact: The FreeBSD wireless mailing list <wireless@FreeBSD.org>
This report focuses on the efforts using permissively licensed Linux wireless drivers, mostly unmodified, on FreeBSD, as well as preparing the native net80211 stack for support of newer standards.
Driver updates
All LinuxKPI based wireless drivers were updated to Linux v6.19 in main and stable/15.
This includes * the shipping drivers Intel iwlwifi(4) mvm/mld, Realtek rtw88(4) and rtw89(4), * the Mediatek mt76 driver which is a work in progress, * the three Qualcomm Atheros drivers ath10k, ath11k, and ath12k, which are TODO, as well as * the Broadcom brcmfmac, which compiles and loads firmware but is lacking the cfg80211 compat shim and some netdev work.
Intel iwlwifi support
In order for the iwlwifi(4) driver update to be applied a few FreeBSD specific adjustments were made to allow the mld sub-driver to load properly. Also multiple bug fixes were worked out.
Realtek rtw88 and rtw89 support
After the driver updates it turned out that our chandef emulation needed to be more elaborate. In the follow-up further problems were discovered related to the fact that some rtw88 drivers can fail the hardware scan needing a fallback to software scanning. Lastly the two rtw88 chipsets 8821c and 8822b seem to often have a 6s delay when we are preparing to authenticate. It is unclear why the firmware fails in those cases but in the end I decided to leave this problem alone and try to get the 802.11n and 802.11ac updates in next (before 15.1-R hopefully) and only then go back to these chipsets and see what we can do.
Mediatek mt76 support
MT7921/7922 and MT7925 are the primary chipsets to work on currently. After the driver update some DMA32 problems along with page_pools got sorted. The drm-kmod changes prepared for the switch from native vm_page to Linux struct page were thankfully committed. This we allow me to get a testing version out to people more easily. MT7925 also revealed an insufficiency in our LinuxKPI IDR implementation, which more or less was documented there from day one. This will need a complete rework to avoid problems with accesses to already destroyed entries which can happen in Linux. I have also started to rack up further chipsets for testing. 802.11n and 802.11ac support will mostly come along with the Realtek work.
Broadcom brcmfmac
The Broadcom brcmfmac driver is compiling for PCIe and loading firmware (with a minor work around for arm64). We are now lacking some cfg80211 and netdev LinuxKPI compat work in order to create the interface and drive wireless.
QCA support
While ath10k is mostly sorted for station mode, ath11k and ath12k need more work to compile again and an implementation for the MHI and other bits as needed.
LinuxKPI USB support
The LinuxKPI USB implementation has been sitting there for more than a decade. I already put out a call for any users last years and again this year without any reply. I do have an overhauled version which allows Realtek, Mediatek QCA ath10k, and Broadcom brcmfmac USB chipsets to compile. The latter two are mostly irrelevant with old, and little actual USB dongles available. Realtek and Mediatek attach and do pass packets but need a bit more work on stability and clean teardown.
There is one blocker on this in that the (old and new) LinuxKPI USB implementation is intermingle our native USB stack leading to conflicts. There is work in progress to resolve this and two possible ways have been identified but there is a 15 year old change in the way that first needs to be understood and cleaned up.
LinuxKPI SDIO support
The LinuxKPI SDIO support has been sitting in my development tree for a good year and was done mostly for Realtek rtw88. Broadcom will need a few more placeholders to be filled, but that should not be too hard. Interrupts need to be finalized and speed upgrade support pulled in from someone else’s work in progress. My plan is to get it into the tree as-is as soon as USB is out of the way for people to help testing and finalizing it.
Native net80211
Thanks to the Ports Management Team for running an exp-run (experimental test build). I prepared a patch in order to identify all ports using the net80211 ioctl interface. This is needed in order to minimize breakage of upcoming ioctl interface changes upfront.
Check PR 293016 for details.
Other
I have given an update on most of this during the March LDWG (Laptop Desktop Working Group) call. See LDWG Wiki Page for more information.
Sponsor: The FreeBSD Foundation
Removal of RFC 2675 Support
Contact: Tom Jones <thj@FreeBSD.org>
The Jumbo Payload Option is an IPv6 extension header intended to support packet sizes in excess of 65,735 octets. FreeBSD gained Jumbo Payload support from the KAME project, but not real networks ever carried support.
As part of modernising the IPv6 stack Jumbo support has been removed. As far as we can tell it has never been possible to use this support with a FreeBSD host.
Sponsor: The FreeBSD Foundation
GENEVE Tunnel
Contact: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
Since the last report, I have broken the GENEVE implementation down into many smaller revisions to make it easier to review:
You can help to speed up the process by reviewing and providing feedback on phabricator.
Architectures
Updating platform-specific features and bringing in support for new hardware platforms.
drm-kmod: Build and run on ARM64 with 16.0-CURRENT
Links:
drm-kmod:
Build and run on ARM64 with 16.0-CURRENT URL: https://github.com/freebsd/drm-kmod/pull/402
Contact: Dmitry Salychev <dsl@FreeBSD.org>
I have successfully built and run graphics/drm-66-kmod with those patches on my Honeycomb LX2 with Radeon RX 460. With these patches 6.6-lts could be a substitute for anyone who relied upon retired graphics/drm-510-kmod.
FreeBSD Driver Development for BananaPi-R64/R2-PRO
Links:
Wiki URL:
https://wiki.freebsd.org/arm/Bananapi
Contact: Martin Filla <freebsd@sysctl.cz>
R64 Introduction
The Banana Pi R64 is a MediaTek MT7622-based development board (ARM Cortex-A53, dual-core ~1.35 GHz) featuring 4× Gigabit LAN, 1× Gigabit WAN, Wi-Fi (4×4n), Bluetooth 5.0, and multiple peripheral interfaces (UART, SPI, I²C, GPIO, SATA, mini-PCIe, eMMC, etc.).
Current State of FreeBSD Support R64
Implemented so far:
-
UART driver
-
Clock management (clocks)
-
Pinctrl
-
Storage controllers (eMMC/SD/MMC) driver
-
Ethernet Switch mt7531 driver
-
Ethernet mt7622 driver
-
XHCI driver
-
Watchdog driver
-
RTC driver
-
RNG driver
-
Pciecfg driver
-
SysIRQ driver
Development roadmap R64
Implement missing drivers:
-
USB3 / T-PHY
-
SATA / AHCI / T-PHY
-
Wi-Fi (likely MediaTek MT7615)
-
GPIO subsystems
-
I2C
-
SPI
-
PWM
-
PCIE
Work in progress drivers: - T-PHY
R2-PRO Introduction
The Banana Pi BPI-R2 Pro is the next generation smart router development board. It is powered by Rockchip RK 3568 processor. Onboard 2GB LPDDR4 memory and 16GB eMMC storage, and supports 2 USB 3.0 interface, 5 gigabit network port. M.2 key-E and mini PCIe interface, 2 mipi DSI interface (one can change to LVDS by software), 1 CSI camera interface, 1 HDMI output.
Current State of FreeBSD Support R2-PRO
Implemented so far:
-
UART driver
-
Clock management (clocks)
-
Pinctrl
-
GPIO
-
Storage controllers (eMMC/SD/MMC) driver
-
XHCI driver
-
Watchdog driver
-
PCIE driver
Development roadmap R2-PRO
Implement missing drivers: - HDMI - MIPI - USB3
Work in progress drivers: - AHCI/SATA - PCIE
NXP DPAA2 support
Links:
Bug
292006 - dpni doesn’t behave properly in a bridge URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292006
dpaa2: Setup interface
caps on attach URL: https://reviews.freebsd.org/D53436
dpnaa2: announce
transmit checksum support URL: https://reviews.freebsd.org/D54809
dpaa2: Perform bus_dma
pre-write sync before enqueue operation URL: https://reviews.freebsd.org/D56144
dpaa2: dpaa2_ni_rx()
RX checksum EN/ERR information for L3/4 URL: https://reviews.freebsd.org/D55320
dpaa2: Extract
frame-specific routines to dpaa2_frame.[h,c] URL: https://reviews.freebsd.org/D56315
dpaa2: Extract
checksum statuses on ingress URL: https://reviews.freebsd.org/D56383
dpaa2: ni: add more
stats and link information URL: https://reviews.freebsd.org/D55321
Contact: Michael Tuexen <tuexen@FreeBSD.org>
Contact: Bjoern A. Zeeb <bz@FreeBSD.org>
Contact: Dmitry Salychev <dsl@FreeBSD.org>
What is DPAA2?
DPAA2 (Data Path Acceleration Architecture Gen2) is a hardware-level networking architecture found in some NXP SoCs which contains hardware blocks including Management Complex (MC, a command interface to manipulate DPAA2 objects), Wire Rate I/O processor (WRIOP, packets distribution, queuing, drop decisions), Queues and Buffers Manager (QBMan, Rx/Tx queues control, Rx buffer pools) and others. The Management Complex runs NXP-supplied firmware which provides DPAA2 objects as an abstraction layer over those blocks to simplify access to the underlying hardware.
Done
39d4094173f9 ("epair: add support for checksum offloading") revealed several issues in the DPAA2 drivers, sparked investigations conducted by tuexen@ and dsl@ and eventually led to the changes accumulated under the bug 292006:
-
HW checksum offloading was not properly enabled when the dpaa2_ni driver was attached despite being declared and enabled on the dpni interface (fixed in a731cb93a662)
-
dpni (DPAA2 network interface) did not properly announce TX checksum offloading (fixed in f31336b3e314)
-
Without a proper synchronization payload of the egress TCP segments can be corrupted as tuexen@ described in 292006#c31 (fixed in 5812415bee55)
Work in Progress
-
bz@ prepared code to extract information about calculated checksums from the hardware annotations of the ingress frames in D55320, but dsl@ asked to properly define structures needed for the frame annotations which led to dpaa2_frame.[h,c] introduced in D56315 and refined in D56383
-
bz@ significantly extended dpni sysctl(9) including new interface counters and link state information in D55321
Sponsor: Traverse Technologies (providing Ten64 HW for testing)
amd64 FRED support
Links:
Intel FRED specification before SDM URL: https://www.intel.com/content/www/us/en/content-details/819481/flexible-return-and-event-delivery-fred-specification.html
+ D55829 amd64: FRED
support URL: https://reviews.freebsd.org/D55829
Contact: Konstantin Belousov <kib@FreeBSD.org>
Support for FRED AKA Flexible Return and Event Delivery feature of the very modern amd64 platform was implemented. FRED is the complete revamp of the hardware interface to report exceptions, interrupts, and system calls to the operating system, and the way operating system returns control from the handler to the interrupted code. The goal for designing FRED was to get rid of the layers of compatibility features and bugs that accumulated in the existing way, let us call it IDT based event delivery.
FRED specification is now included into the Intel SDM revision 90. AMD seems to be committed to provide FRED on some future implementations.
As such, FRED support requires the new code path for event handlers. The nice structuring of the FRED allows to have minimal assembly trampolines there, moving most of the dispatch to the C code.
The implementation of the FRED handler was relatively simple, and required much less time than I initially thought. It shows how good and natural the proposed interface is.
The testing so far was only done on the Simics emulator. FRED should be supported by the newly released Intel Panther Lake CPUs, but I do not have access to the real hardware.
Sponsor: The FreeBSD Foundation
Support for the Allwinner H616 SOC Family
Contact: Tom Jones <thj@FreeBSD.org>
The Allwinner H616 family of devices (H616, H616 and H700) are a series of small, but powerful SOCs with powerful media support. These are found in a number of TV Boxes, handheld devices and single board computers.
FreeBSD now has support for most peripherals and has been tested with the Orange Pi 2. There is a yet unknown issue with the Ethernet controller, but this is under investigation. Graphics support requires drm and this has not yet been explored. The video device is not support on u-boot or Linux as a framebuffer console.
Sponsor: The FreeBSD Foundation
Cloud
Updating cloud-specific features and bringing in support for new cloud platforms.
FreeBSD on EC2
Contact: Colin Percival <cperciva@FreeBSD.org>
FreeBSD is available on both amd64 (Intel and AMD) and arm64 (Graviton) EC2 instances.
A list of EC2 AMIs for FreeBSD 15.0-RELEASE has been added to the FreeBSD website. This page includes javascript to allow the list to be filtered by region, architecture, flavour, and root filesystem.
A process is now in place for publishing updated EC2 AMIs in response to security advisories; we now have FreeBSD 15.0-RELEASE-p5 AMIs and anticipate typically having updated AMIs in place within a few hours of advisories being published. The AMI IDs for these are published via the SSM Parameter Store and the FreeBSD website. At present there is no mechanism in place for building updated AMIs for 14.x releases.
An issue causing the ena(4) driver’s I/O interrupts to all land on CPU 0 on arm64 systems has been fixed in main. The fix should be present in 15.1-RELEASE (June) and 14.5-RELEASE (September).
An issue causing the ena(4) driver to not attach when FreeBSD boots on r8i.96xlarge instances has been fixed in main. The fix is expected to be present in 15.1-RELEASE (June) and 14.5-RELEASE (September).
Sponsor: Amazon
Sponsor: https://www.patreon.com/cperciva
STACKIT Cloud Integration on FreeBSD
Links:
STACKIT URL: https://stackit.com/
STACKIT
CLI URL: https://github.com/stackitcloud/stackit-cli
Contact: Robert Gogolok <gogolok@gmail.com>
I am working to ensure FreeBSD is a first-class platform for managing resources on STACKIT, the sovereign European cloud. The goal is to provide the BSD community with native, reliable access to STACKIT’s IaaS and PaaS tools.
Native Binaries: In addition to the existing sysutils/stackit port, native FreeBSD binaries (amd64/arm64) are now included in every official upstream release.
Upstream Contributions:
Future Work:
-
Ensure the official Terraform Provider for STACKIT functions correctly on FreeBSD.
Containers and FreeBSD: Cloud Native Buildpacks
Links:
Cloud Native Buildpacks (CNBs)
URL: https://buildpacks.io/
GitHub Buildpacks
repository URL: https://github.com/buildpacks/pack
Contact: Robert Gogolok <gogolok@gmail.com>
Cloud Native Buildpacks (CNBs) transform application source code into container images. Those images can run on any cloud. With buildpacks, organizations can concentrate the knowledge of container build best practices within a specialized team, instead of having application developers across the organization individually maintain their own Dockerfiles.
Since the last report in 2025Q1, the project has transitioned from experimental support to official binary availability:
-
Both the primary CLI tool
packand the corelifecyclecomponent now ship FreeBSD binaries with every new upstream release. -
A new port for the CLI,
sysutils/pack, has been submitted (PR 292952). This will allow users to install the tool viapkg install packonce committed. -
The official buildpacks/samples repository now includes a Work-In-Progress pull request (PR #201) for FreeBSD.
The next steps focus on lowering the barrier to entry for developers and improving the automation of the FreeBSD build path:
-
Seek a FreeBSD ports committer to review and land the new port sysutils/pack into the ports tree.
-
Address a known issue in
pack builder createwhere the tool incorrectly attempts to use non-FreeBSD URLs for certain binary downloads. -
Investigate creating Paketo-style buildpacks specifically for FreeBSD. This would provide 'zero-config' builds for popular languages (e.g., Go) that produce FreeBSD-native binaries within containers.
Documentation
Noteworthy changes in the documentation tree, manual pages, or new external books/documents.
The FreeBSD Russian Documentation Project
Links:
The FreeBSD Official Website
in Russian URL: https://www.freebsd.org/ru/
FAQ URL:
https://docs.freebsd.org/ru/books/faq/
The
FreeBSD Russian Documentation Project site URL: https://github.com/freebsd-doc-ru/freebsd-doc/discussions
Contact: Andrey Zakhvatov <andy@FreeBSD.org>
Contact: Vladlen Popolitov <vladlen@FreeBSD.org>
The FreeBSD Russian Documentation Project’s current goal is to provide up-to-date Russian translations of the most important parts of the FreeBSD documentation (FAQ, Handbook, website content). It is essential to support Russian-speaking users with high-quality official technical materials and to increase the adoption of the operating system worldwide. We hope this initiative will gain support within the Russian-speaking FreeBSD community and lead to an increase in translated materials.
During the last quarter:
-
100% of the text in Weblate has been translated, including the new "FreeBSD Accessibility Handbook".
-
The article Implementing UFS Journaling on a Desktop PC has been rewritten and expanded with additional information, including updates on Soft Updates with journaling.
-
The Russian language section of www.FreeBSD.org/ru has been fully translated, with 100% of its pages now available in Russian.
-
For the FreeBSD 14.4 release, the complete set of release documentation (release notes, errata, etc.) has been translated into Russian in a timely manner alongside the English originals.
-
The project to translate FreeBSD man pages has been initiated and is in its very early stages. Preliminary examples can be found at GitHub.
Plan for the next quarter:
-
Continue the ongoing project to translate FreeBSD man pages.
Check the official translation guide if you would like to help.
We would appreciate your assistance with translating the following materials:
-
Web pages
-
Man pages
Ports
Changes affecting the Ports Collection, whether sweeping changes that touch most of the tree, or individual ports themselves.
KDE on FreeBSD
Links:
KDE/FreeBSD initiative URL:
https://freebsd.kde.org/
FreeBSD — KDE Community
Wiki URL: https://community.kde.org/FreeBSD
Contact: KDE on FreeBSD Mailing List <kde@FreeBSD.org>
The KDE on FreeBSD project packages CMake, Qt, and software from the KDE Community, for the FreeBSD ports tree. The software includes a full desktop environment called KDE Plasma (for both X11 and Wayland) and hundreds of applications that can be used on any FreeBSD machine. The KDE team is part of desktop@ and multimedia@ teams, building the software stack to make FreeBSD beautiful and usable as a daily driver graphical desktop workstation.
Infrastructure
Qt6, PyQt6, and PySide6 were updated to 6.10.2. The ports for Qt 6.11.0 are available for testing in the development branch.
KDE Stack
KDE Frameworks, Plasma, and Gear release happen very regularly. KDE team lands these updates shortly after their upstream release.
-
KDE Frameworks ports were updated to 6.24.
-
KDE Plasma Desktop was updated to 6.6.3.
-
KDE Gear was updated to 25.12.3.
The recent Plasma update has revealed a bug in the FreeBSD implementation of timerfd(2) which causes high CPU usage in plasmashell. The bug has been already fixed in FreeBSD-CURRENT and merged to affected stable branches.
GCC on FreeBSD
Links:
GCC Project URL: https://gcc.gnu.org/
GCC 13 release series
URL: https://gcc.gnu.org/gcc-13/
GCC 14 release series
URL: https://gcc.gnu.org/gcc-14/
GCC 15 release series
URL: https://gcc.gnu.org/gcc-15/
GCC 16 release series
URL: https://gcc.gnu.org/gcc-16/
Contact: Lorenzo Salvadore <salvadore@FreeBSD.org>
This quarter we have three main pieces of news.
In January we investigated why GCC 16 weekly snapshots stopped compiling since the last snapshot of November. It took many eyes to understand what happened, but eventually the problem was understood and a fix was committed upstream in February. The details can be found in the upstream bug report. Thanks to all people who helped, in particular to Mark Millard and Dimitry Andric.
At the moment lang/gcc16-devel does not build on arm64. Unfortunately I have not found the time to really look into this yet, but I hope to be able to do it soon. PR 294062 is the bug report that tracks the issue.
The process to get GCC_DEFAULT=15 has started. The GCC_DEFAULT=14 update is still recent and GCC 14 is actively supported, so there is no hurry to get this completed; but since those updates tend to be long I have already started it. Thus this is not my top priority at the moment: it is is where I put my energy when I have spare cycles, for now.
Valgrind: stabilization, FreeBSD 16 fixes and additions
Links:
Valgrind Home Page URL:
https://www.valgrind.org/
Valgrind
News URL: https://www.valgrind.org/docs/manual/dist.news.html
Contact: Paul Floyd <pjfloyd@wanadoo.fr>
When FreeBSD 14.4-RELEASE came out and all went smoothly I
thought that there would be little to say for this quarterly status
report. Then I started using a couple of 16.0-CURRENT machines that
are part of the GCC server farm. There I saw several issues. At
first there were many more failures than I would normally expect. A
bit later the servers were updated and Valgrind broke quite badly,
asserting early on in start up. Some of these issues were the usual
high maintenance expected with Valgrind. A new Helgrind suppression
was required for internal locks used by
pthread_create. The servers were built and installed
from source which affects the error callstacks occasionally. The
Valgrind regression tests are quite sensitive to that kind of
change and some extra filtering was required. The asserts were
caused by incorrect assumptions in Valgrind that are used when the
tool reads its own binary, mainly to enable it to print its own
callstack if there is a crash. The final problem was caused by a
change in the way that library split debug files files are
produced.
Overall, this is more of a stabilization release. There are relatively few new features.
Valgrind 3.27 is due out at the end of April 2026 and devel/valgrind will be updated shortly after that.
Here is a list of bugfixes since my last report, Q3 2025.
-
Internal cleanup of syscall arg handling.
-
More checking during client stack creation.
-
Some tweaks to the default suppressions.
-
Added syscall wrappers for
kexec_load,pdwait,renameat2 -
Syscall
pdrforkadded with flag "not implemented" (rfork-like syscalls are very difficult to implement in Valgrind).
Improve OpenJDK on FreeBSD
Links:
Project description URL: https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/
Project repository
URL: https://github.com/freebsd/openjdk
Upstream BSD port
repo URL: https://github.com/openjdk/bsd-port
Contact:
Harald Eilertsen <haraldei@FreeBSD.org>
FreeBSD Java mailing list <freebsd-java@lists.freebsd.org>
The goal of this project is to improve OpenJDK support for FreeBSD/amd64 and FreeBSD/arm64.
Java is an important runtime environment for many high performance, critical enterprise systems. Making sure Java based applications run correctly and efficiently on FreeBSD is important to ensure that FreeBSD will continue to be a viable and attractive platform for enterprises, as well as businesses and organizations of all sizes.
In this quarter the following issues/milestones were reached:
-
Updated OpenJDK 25 port to version 25.0.2.
-
Fixed an issue with building headless OpenJDK 25 variants when no xorg libs were present.
-
Reworked the way OpenJDK ports are bootstrapped on FreeBSD:
-
Fixed and improved Serviceability Agent for FreeBSD in mainline BSD port:
-
Undo breakage caused by upstream macOS port.
-
Fixed obtaining stack traces from threads in process being traced.
-
Fixed spurious issue where symbol lookup of native symbols from shared objects would sometimes fail.
-
Simplified function for reading arbitrary memory from traced process.
-
-
Enabled building/installing the Hotspot Disassembler (HSDIS) for FreeBSD. This is needed for some tests for Aarch64 to check that Hotspot generates the correct instruction sequences in various environments. Only supporting the llvm backend for now, though there is no reason to believe the others would not work.
-
Synced ThreadWXEnable implementation with macOS. This enables Hotspot to toggle Write/Execute access to memory segments so that it can generate code to later be executed on Aarch64. Just a minor tweak so we align with the API used by the macOS code, even though our implementation is different.
-
Backported BSD related changes from mainline to OpenJDK 25 and OpenJDK 26 ports.
-
Added new port for OpenJDK 26. Thanks to Greg Lewis and Kurt Miller for helping.
-
Merged first PR into upstream BSD port repo!
Other notes:
-
Started work on updating OpenJDK 25 to version 25.0.3, scheduled for mid April release.
-
I will be talking about the project and my experience working on it at the foss-north conference in Gothenburg, Sweden, on April 28.
Sponsor: The FreeBSD Foundation
Make openjdk21 the default JAVA_VERSION
Links: Issue 272855 URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272855 Sheet tracking Work in Progress URL: https://docs.google.com/spreadsheets/d/17hmRQ0ShY4SHHVEkQBVxqK2G88fPZLriTzO26zXdjC4/edit?usp=sharing
Contact: Ronald Klop <ronald@FreeBSD.org>
Having a vivid Java environment is useful for all kinds of applications of FreeBSD.
The default JAVA_VERSION in FreeBSD ports is changed from 8 to 21 on February 26th. This was a major step in versions. So quite some work was involved. This is all done now.
All ports known to break were fixed and no regressions have been reported since. The 2026Q2 ports branch will be the first stable ports branch having OpenJDK 21 as the default Java version.
-
A big thank you to all people involved
-
Work has been started to make 25 the new JAVA_DEFAULT in main during Q2
Make openjdk25 the default JAVA_VERSION
Contact: Ronald Klop <ronald@FreeBSD.org>
Java is an important environment for running some application on FreeBSD. The OpenJDK ports are actively maintained and up to date. Since October 2025 OpenJDK 25 LTS is available in the ports tree.
Building on the groundwork of moving ports to OpenJDK 21 the switch of JAVA_DEFAULT to 25 is a much smaller step. Most Java ports compile and run without changes. Only a handful of ports need some fixes, which is currently in progress.
The work is being tracked in PR 293559.
I think it is reasonable to have the ports in shape for the JAVA_VERSION=25 setting in the second quarter of 2026.
Plan: * An exp-run is requested * Check the last ports and create a PR or commit * Commit the PRs that are timing out on maintainer feedback * Maybe ask for another exp-run * If done, increase JAVA_VERSION
Wazuh on FreeBSD
Links:
Wazuh URL: https://wazuh.com
Contact: José Alonso Cárdenas Márquez <acm@FreeBSD.org>
Contact: Jesús Daniel Colmenares Oviedo <dtxdf@FreeBSD.org>
Wazuh is a free and open source platform used for threat prevention, detection, and response. It is capable of protecting workloads across on-premises, virtualized, containerized, and cloud-based environments.
Wazuh solution consists of an endpoint security agent, deployed to the monitored systems, and a management server, which collects and analyzes data gathered by the agents. Besides, Wazuh has been fully integrated with the Elastic Stack or OpenSearch Stack, providing a search engine and data visualization tool that allows users to navigate through their security alerts.
A lot has happened this quarter. Numerous improvements and bug fixes to enhance FreeBSD’s support with this excellent XDR/SIEM and security platform.
-
We have created a repository on GitHub to centralize the work and reduce patches in the manager and the agent. Links: Repository, b1f5298
-
Python bundle has been updated to 3.11.15. Link: c941e5b
-
An issue that prevented wazuh-manager from starting when the MYSQL option was enabled has been fixed. Link: c941e5b
-
A parsing issue in sysinfo’s
getPorts()function has been fixed. Link: 35fcd6a -
Support for FreeBSD has been added to asyncinotify library that prevents Wazuh API starting correctly. Link: 35fcd6a
-
Now Wazuh uses OpenSearch Dashboards 2.19.4. Link: b1f5298
-
sysinfo module can now obtain users and groups information. Link: e9cebac
-
An issue between the agent and the manager that prevented a successful active state for TCP connections has been fixed, and now this protocol is the default instead of UDP. Link: 055d5c9, 508a8c8
-
FreeBSD SCA, decoders and rules files were updated, fixing conflict issues. Links: 055d5c9, 508a8c8
-
A problem with Python scripts in the manager prevented their correct execution when the
CRYPTOGRAPHY_OPENSSL_NO_LEGACYenvironment variable is not set. Link: 8bd6c77 -
The sysinfo’s
getSerialNumber()function has been improved, so the manager and the agent can now use thekern.hostuuidsysctl to uniquely identify devices. Link: 284813e -
An issue in wazuh-modulesd has been fixed that caused a SIGSEGV while decompressing the vulnerability detection database and accesses to an unitialized structure. Link: d3c13b6
-
An issue in the agent has been fixed that caused a "permission error" due to an incorrect owner in the etc/clients.keys file. Link: c74ab75
-
security/wazuh-server switched from beats7 to beats8. Link: ce6831e
-
Fixed a segmentation fault in wazuh-modulesd when pkg(8) is not installed on the system and sysinfo’s
getPackages()function is trying to obtain information about installed packages. Now this function has been reimplemented to use SQLite. Link: ff95715, a4242bf -
Apply dos2unix(1) to Wazuh API’s api.yaml file. Link: a4242bf
-
An issue with wazuh-apid has been fixed that prevents it to start correctly, marking itself as DOWN, when
security.bsd.see_other_{u,g}idsis set to0. Link: c86d3fc -
A page has been created on the FreeBSD wiki to centralize the work we have done and what remains to be done. Link: Wiki
Makejails for Wazuh has been improved and now mimics the official Dockerfiles, so users familiar with it can easily deploy all Wazuh components using AppJail and Director:
This also adds cluster-mode infrastructure for Makejails.
Vulnerability detection is not yet implemented in FreeBSD, but Serpico has been developed to address this deficiency. Serpico is a security scanner for FreeBSD packages and releases that compares versions against a list of versions marked as vulnerable and displays vulnerability information in a compact JSON format for easy analysis with other security tools. The package includes rules for Wazuh and a dashboard that can be easily installed via the web-UI or the OpenSearch Dashboards API.
Current version: 4.14.3
FreeBSD HPC Modernization Initiative: Ecosystem Expansion and Upstream Integration
Links:
sysutils/slurm-wlm
URL: https://cgit.freebsd.org/ports/tree/sysutils/slurm-wlm/
net/pmix URL:
https://cgit.freebsd.org/ports/tree/net/pmix/
net/prrte URL:
https://cgit.freebsd.org/ports/tree/net/prrte/
net/openmpi
URL: https://cgit.freebsd.org/ports/tree/net/openmpi/
net/ucx
URL: https://cgit.freebsd.org/ports/tree/net/ucx/
benchmarks/py-reframe-hpc
URL: https://cgit.freebsd.org/ports/tree/benchmarks/py-reframe-hpc/
sysutils/mpifileutils
URL: https://cgit.freebsd.org/ports/tree/sysutils/mpifileutils/
Contact: Generic Rikka <rikka.goering@outlook.de>
This report continues the ongoing FreeBSD HPC Ports Modernization initiative, which aims to make FreeBSD a practical and maintainable platform for modern high-performance computing (HPC) software stacks.
Previous work focused on updating the core scheduler and runtime stack by modernizing sysutils/slurm-wlm and introducing standalone ports for net/pmix and net/prrte. During this quarter the focus shifted toward expanding the surrounding HPC ecosystem, improving integration between components, and upstreaming portability fixes discovered during the porting process.
The long-term goal is to provide a coherent HPC software environment in the FreeBSD Ports Collection that resembles what users expect on Linux-based HPC systems while remaining maintainable within the FreeBSD ecosystem.
Work completed
-
Continued tracking upstream releases of sysutils/slurm-wlm, keeping the FreeBSD port current with the latest upstream versions. Recent updates confirm that Slurm can successfully schedule and execute jobs on FreeBSD with only a minimal patchset.
-
Introduced net/ucx, providing the Unified Communication X framework used by modern MPI implementations for high-performance communication.
-
Added benchmarks/py-reframe-hpc, enabling regression testing and validation workflows commonly used on production HPC clusters.
-
Continued improving interoperability between net/openmpi, net/ucx, net/pmix, and net/prrte within the FreeBSD Ports Collection.
Work in progress
-
Porting sysutils/mpifileutils and its dependency stack (devel/libcircle, devel/lwgrp, devel/dtcmp) to provide MPI-parallel file utilities commonly used on large HPC filesystems.
-
Upstreaming portability fixes discovered during the porting process to projects such as UCX and mpifileutils, reducing the need for FreeBSD-specific patches.
-
Ongoing collaboration with SchedMD developers to upstream improvements discovered while maintaining Slurm on FreeBSD.
-
Coordination with the OpenMPI ports maintainer to improve integration between OpenMPI and modern networking frameworks such as UCX.
Future plans
-
Continue expanding the HPC software ecosystem available in the FreeBSD Ports Collection.
-
Further reduce local patchsets by contributing portability fixes upstream whenever possible.
-
Develop documentation describing how the Slurm + OpenMPI + PMIx + PRRTE + UCX stack can be deployed together on FreeBSD, lowering the barrier for users who want to experiment with HPC workloads on the platform.
-
Provide example configurations and integration guidance so that FreeBSD can serve as a realistic development and testing environment for HPC software.
Improve libvirt support for bhyve hypervisor
Contact: Roman Bogorodskiy <novel@FreeBSD.org>
Completed work
-
libvirt/bhyve driver:
-
arm64 support added.
-
virtio-scsidevice support added. -
vCPU pinning configuration support added.
-
NUMA domains configuration support added.
-
Assorted minor improvements and bugfixes.
-
Plans for the next quarter
-
Add support (targeted, but might roll over to next quarter) for:
-
Boot order configuration.
-
TPM devices.
-
Complete suspend/resume support.
-
virtio-consoledevices and Qemu Guest Agent.
-
-
Improve virt-manager support on FreeBSD.
-
Extend libvirt CI to test against FreeBSD-CURRENT snapshot VM images.
Sponsor: The FreeBSD Foundation
Last modified on: April 17, 2026 by Lorenzo Salvadore
