FreeBSD Quarterly Status Report Second Quarter 2022
Here is the second quarterly report of 2022, with 26 reports included.
This quarter the quarterly team managed to publish the report much faster and, hopefully, with much fewer mistakes. If however you notice some errors, please report them so that we can correct them and also add some automatic checks in our tools to prevent them in the future and stay as efficient as possible in the publication process.
We would also like to remind you that if for any reason you need more time to submit a quarterly report, the team will wait for you, but please warn us so that we are aware that some report is still missing.
Many thanks to all those that have chosen to share their work with the FreeBSD community through the quarterly reports.
Lorenzo Salvadore, on behalf of the status report team.
- FreeBSD Team Reports
FreeBSD Team Reports
Entries from the various official and semi-official teams, as found in the Administration Page.
FreeBSD Core Team
Contact: FreeBSD Core Team <core@FreeBSD.org>
The FreeBSD Core Team is the governing body of FreeBSD.
The twelfth FreeBSD Core Team was elected by active developers. The core.12 members are:
Baptiste Daroussin (bapt, incumbent)
Benedict Reuschling (bcr)
Ed Maste (emaste, incumbent)
Greg Lehey (grog)
John Baldwin (jhb)
Li-Wen Hsu (lwhsu)
Emmanuel Vadot (manu)
Tobias C. Berner (tcberner)
Mateusz Piotrowski (0mp)
On June 10th the outgoing core.11 and incoming core.12 teams held a handover meeting, and the new Core Team was announced on Jun 18.
The current Core Team secretary, Muhammad Moinur Rahman (bofh), will step down after the appointment of a new Core Team secretary and handover tasks completes.
In this quarter, src commit bits of Kornel Dulęba (kd) and Dmitry Salychev (dsl) have been approved.
FreeBSD Foundation URL: https://www.FreeBSDFoundation.org
Technology Roadmap URL: https://FreeBSDFoundation.org/blog/technology-roadmap/
Donate URL: https://www.FreeBSDFoundation.org/donate/
Foundation Partnership Program URL: https://www.FreeBSDFoundation.org/FreeBSD-foundation-partnership-program
FreeBSD Journal URL: https://www.FreeBSDFoundation.org/journal/
Foundation News and Events URL: https://www.FreeBSDFoundation.org/news-and-events/
Contact: Deb Goodkin <deb@FreeBSDFoundation.org>
The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated to supporting and promoting the FreeBSD Project and community worldwide. Donations from individuals and corporations are used to fund and manage software development projects, conferences, and developer summits. We also provide travel grants to FreeBSD contributors, purchase and support hardware to improve and maintain FreeBSD infrastructure, and provide resources to improve security, quality assurance, and release engineering efforts. We publish marketing material to promote, educate, and advocate for the FreeBSD Project, facilitate collaboration between commercial vendors and FreeBSD developers, and finally, represent the FreeBSD Project in executing contracts, license agreements, and other legal arrangements that require a recognized legal entity.
First, I’d like to send a big thank you to everyone who gave a financial contribution to our efforts. We are 100% funded by your donations, so every contribution helps us continue to support FreeBSD in many ways, including some of the work funded and published in this status report.
Our goal this year is to raise at a minimum $1,400,000 towards a spending budget of around $2,000,000. As I write this report, we’ve brought in under $200,000 towards that goal. So, we obviously need to step up our effort of fundraising. It’s by far the hardest part of my job. I’d much prefer talking to folks in our community on how we can help you, help create content to recruit more users and contributors to the Project, and understand challenges and painpoints that individuals and organizations have in using FreeBSD, so we can help improve those areas. Asking for money is not on that list.
We support FreeBSD in five main areas. Software development is the largest area we fund with six software developers on staff who step in to implement new features, support tier 1 platforms, review patches, and fix issues. You can find out some of the work we did under OS Improvements in this report. FreeBSD Advocacy is another area that we support to spread the word about FreeBSD at conferences, in presentations online and in-person, tutorials and how-to guides. We purchase and support hardware for the FreeBSD infrastructure that supports the work going on in the Project. Virtual and in-person events are organized by the Foundation to help connect and engage community members to share their knowledge and collaborate on projects. Finally, we provide legal support to the Project when needed and protect the FreeBSD trademarks.
If you haven’t made a donation this year, please consider making one at https://freebsdfoundation.org/donate/.
We also have a Partnership Program for larger commercial donors. You can find out more at https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/
During the second quarter of 2022, 243 src, 62 ports, and 12 doc tree commits were made that identified The FreeBSD Foundation as a sponsor. This represents 10.6, 0.7, and 4.5% of the total number of commits to each repository.
You can read about some of the Foundation-sponsored work in individual quarterly report entries.
Base System OpenSSH Update
Ongoing work on LLDB multiprocess debugging support
ZFS support in makefs
Other ongoing sponsored work is described here.
FreeBSD Wireguard Improvements
The aim of the Wireguard project is to improve support for the FreeBSD Wireguard kernel module. The work by John Baldwin involved adapting the module to use FreeBSD’s OCF rather than Wireguard’s internal implementations. It also involved adding new ciphers and API support. The latest upstream release incorporates this work.
Openstack on FreeBSD
OpenStack is a cloud system for different types of resources like virtual machines. However, OpenStack only unofficially supports FreeBSD as a guest system. That means users can spawn FreeBSD instances on the open cloud platform, but it is not currently possible run OpenStack on FreeBSD hosts. The goal of this project is port OpenStack components so that FreeBSD can function as an OpenStack host.
Bhyve Issue Support
The Foundation recently signed a new contract for Bhyve support. This contract will allow John Baldwin to dedicate time to Bhyve as issues arise, especially security issues.
Handbook Improvement Exploration
Under sponsorship from the Foundation, Pau Amma wrapped up a mini-project to explore how the Handbook can be improved. A survey was sent out and the results will be shared soon.
Continuous Integration and Quality Assurance
The Foundation provides a full-time staff member and funds projects to improve continuous integration, automated testing, and overall quality assurance efforts for the FreeBSD project.
Supporting FreeBSD Infrastructure
The Foundation provides hardware and support for the Project. A new Australian mirror was brought online by the Cluster Administration team. If you are a FreeBSD user in Oceania or southeast Asia, please let us know if download speeds for installer images and packages has improved.
With your donations, the Foundation purchased new hardware to repair two PowerPC package builders, one for little endian packages (powerpc64le) and the second for big endian packages (powerpc64, powerpc). The new hardware just arrived at the data center and will be installed soon. Expect lots of PowerPC packages in the near future.
FreeBSD Advocacy and Education
Much of our effort is dedicated to Project advocacy. This may involve highlighting interesting FreeBSD work, producing literature and video tutorials, attending events, or giving presentations. The goal of the literature we produce is to teach people FreeBSD basics and help make their path to adoption or contribution easier. Other than attending and presenting at events, we encourage and help community members run their own FreeBSD events, give presentations, or staff FreeBSD tables.
The FreeBSD Foundation sponsors many conferences, events, and summits around the globe. These events can be BSD-related, open source, or technology events geared towards underrepresented groups. We support the FreeBSD-focused events to help provide a venue for sharing knowledge, working together on projects, and facilitating collaboration between developers and commercial users. This all helps provide a healthy ecosystem. We support the non-FreeBSD events to promote and raise awareness of FreeBSD, to increase the use of FreeBSD in different applications, and to recruit more contributors to the Project. We are continuing to attend virtual events and planning the June 2022 Developer Summit. In addition to attending and planning virtual events, we are continually working on new training initiatives and updating our selection of how-to guides to facilitate getting more folks to try out FreeBSD.
Check out some of the advocacy and education work we did last quarter:
Secured our booth and nonprofit sponsor status for All Things Open, October 30-November 2, 2022, Raleigh, NC.
Finalized our booth and workshop at Scale 19x in Los Angeles, CA on July 28-30. The FreeBSD workshop will be held Friday,Jul 29, 2022 and you can visit the Foundation at booth 502.
Confirmed our Silver Sponsorship of EuroBSDcon 2022, September 15-18, Vienna, Austria
Sponsored and helped organize the June 2022 FreeBSD Developer Summit, June 16-17, 2022. Videos are available on the FreeBSD Project YouTube channel.
Celebrated FreeBSD Day June 19, 2022 and throughout the following week.
Secured our Friends level sponsorship of COSCUP, July30-31, Taiwan
Published the FreeBSD Foundation Spring 2022 Update
New Blog Posts
New and Updated How-To and Quick Guides:
We help educate the world about FreeBSD by publishing the professionally produced FreeBSD Journal. As we mentioned previously, the FreeBSD Journal is now a free publication. Find out more and access the latest issues at https://www.FreeBSDfoundation.org/journal/.
You can find out more about events we attended and upcoming events at https://www.FreeBSDfoundation.org/news-and-events/.
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://www.FreeBSDFoundation.org to find more about how we support FreeBSD and how we can help you!
FreeBSD Release Engineering Team
FreeBSD 13.1-RELEASE schedule URL: https://www.freebsd.org/releases/13.1R/schedule/
FreeBSD 13.1-RELEASE announcement URL: https://www.freebsd.org/releases/13.1R/announce/
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.
During the second quarter of 2022, the Release Engineering Team completed work on the 13.1-RELEASE cycle. This is the second release from the stable/13 branch. Throughout the release cycle, three BETA builds and six RC (release candidate) builds have occurred, moving the final release date from April 21, 2022 to May 16, 2022, as some last-minute issues were identified.
We thank all FreeBSD developers and contributors for testing the 13.1-RELEASE, reporting problems, and being diligent with proposed changes as the cycle progressed.
Additionally throughout the quarter, several development snapshots builds were released for the main, stable/13, and stable/12 branches.
Sponsor: Rubicon Communications, LLC ("Netgate") Sponsor: The FreeBSD Foundation
Cluster Administration Team
Contact: Cluster Administration Team <clusteradm@FreeBSD.org>
FreeBSD Cluster Administration Team members are responsible for managing the machines the Project relies on to synchronise its distributed work and communications. In this quarter, the team has worked on the following:
Installed a new mirror in Sydney, Australia hosted by IX Australia
Fixed CI cluster hardware failure
Set up a new internal monitoring system
Regular cluster-wide software upgrades
Regular support for FreeBSD.org user accounts
Work in progress:
Work with the PowerPC team to improve the package builders, universal, and reference machines.
Plan Hardware refresh, and fixing misc failures in each sites
Improve the package building infrastructure
Review the service jails and service administrators operation
Improve the web service architecture
Improve the cluster backup plan
Improve the log analysis system
We are looking for an additional full mirror site (five servers) in Europe. See generic mirrored layout for our needs. Offers of additional single-server mirrors (see tiny mirror) are always welcome too, especially in Europe.
FreeBSD Jenkins Instance URL: https://ci.FreeBSD.org
FreeBSD CI artifact archive URL: https://artifact.ci.FreeBSD.org
FreeBSD Jenkins wiki URL: https://wiki.freebsd.org/Jenkins
Hosted CI wiki URL: https://wiki.freebsd.org/HostedCI
3rd Party Software CI URL: https://wiki.freebsd.org/3rdPartySoftwareCI
Tickets related to freebsd-testing@ URL: https://preview.tinyurl.com/y9maauwg
FreeBSD CI Repository URL: https://github.com/freebsd/freebsd-ci
dev-ci Mailing List URL: https://lists.freebsd.org/subscription/dev-ci
The FreeBSD CI team maintains the continuous integration system of the FreeBSD project. The CI system checks the committed changes can be successfully built, then performs various tests and analysis over the newly built results. The artifacts from those builds are archived in the artifact server for further testing and debugging needs. The CI team members examine the failing builds and unstable tests and work with the experts in that area to fix the code or adjust test infrastructure.
During the second quarter of 2022, we continued working with the contributors and developers in the project to fulfill their testing needs and also keep collaborating with external projects and companies to improve their products and FreeBSD.
Important completed tasks:
Fixed the hardware failure issue of the CI cluster
Work in progress tasks:
Designing and implementing pre-commit CI building and testing (to support the workflow working group)
Designing and implementing use of CI cluster to build release artifacts as release engineering does
Testing and merging pull requests in the FreeBSD-ci repo
Simplifying CI/test environment setting up for contributors and developers
Setting up the CI stage environment and putting the experimental jobs on it
Organizing the scripts in freebsd-ci repository to prepare for merging to src repository
Updating documents on wiki
Open or queued tasks:
Collecting and sorting CI tasks and ideas
Setting up public network access for the VM guest running tests
Implementing use of bare-metal hardware to run test suites
Adding drm ports building tests against -CURRENT
Planning to run ztest tests
Adding more external toolchain related jobs
Improving maturity of the hardware lab and adding more hardware for testing
Working with hosted CI providers to have better FreeBSD support
Please see freebsd-testing@ related tickets for more WIP information, and don’t hesitate to join the effort!
Sponsor: The FreeBSD Foundation
About FreeBSD Ports URL:https://www.FreeBSD.org/ports/
Contributing to Ports URL: https://docs.freebsd.org/en/articles/contributing/#ports-contributing
FreeBSD Ports Monitoring URL: http://portsmon.freebsd.org/
Ports Management Team URL: https://www.freebsd.org/portmgr/
Ports Tarball URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/
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.
The number of ports is slightly above 30,000. The last quarter saw 9,137 commits by 151 committers on the "main" and 589 commits by 61 committers on the "2022Q2" branch. At the time of writing, there are 2,700 open ports PRs of which 682 are unassigned. Compared to the previous quarter, there was a slight decrease in commit activity and a constant number of PRs. Note: Freshports appears to overcount substantially. This quarter’s ports count was derived differently and is not comparable with the previous quarter’s.
During the last quarter, portmgr welcomed back salvadore@ but also said goodbye to seven ports committers due to lack of activity.
In its bi-weekly meetings, portmgr discussed the following topics: * the future of ca_root_nss * feasibility of the base system providing certain .pc files * ways to deal with incompatibilities in kernel module ports on minor version upgrades of the base system
Following a discussion among developers, portmgr decided to grant all documentation and source committers approval to fix any documentation-related error in the Ports Tree which does not affect its functionality.
The following changes were made to the Ports Tree during 2022q2: * pkg got updated to version 1.18.3, Firefox to version 102.0 and Chromium to version 103.0.50060.53 * Default versions of GCC, Lazarus, Python and Ruby got updated to respectively 11 (powerpcspe keeps version 8), 2.2.2, 3.9, and 3.0. * Two new USES were added, gstreamer to support ports based on GStreamer plugins and pytest to help testing with pytest.
Projects that span multiple categories, from the kernel and userspace to the Ports Collection or external projects.
Linux compatibility layer update
The goal of this project is to improve FreeBSD’s ability to execute unmodified Linux binaries. Current support status of specific Linux applications is being tracked at the Linux app status Wiki page.
Implementation of the Y2k38 Linux project is mostly finished; all '*_time64()' system calls are committed.
The state of the arm64 Linux emulation layer was brought to the state of the amd64 Linux emulation layer: i.e., implemented the vDSO, machine dependent futexes, signals delivery.
The thread affinity system calls were modified to implement Linux semantics.
In total, over 50 bugs were fixed; glibc-2.35 tests suite reports less than 80 failed tests.
All changes in the Linux emulation layer are merged to the stable/13 branch.
Initial support for fancy Linux system call tracing has been added to libsysdecode and kdump. There is ongoing work to make tracing more syscalls work.
Sponsor: EPSRC (Edward’s work)
go on FreeBSD riscv64
golang Home Page URL: https://github.com/golang/go
FreeBSD riscv64 github repo URL: https://github.com/MikaelUrankar/go/tree/freebsd_riscv64
FreeBSD riscv64 golang issue URL: https://github.com/golang/go/issues/53466
Work has been done to port go on FreeBSD riscv64 which builds and passes all run.bash tests, including cgo (tested under QEMU and on Unmatched). A pull request is created upstream and the proposal has been added to the active column of the proposals project and will be reviewed at the weekly proposal review meetings.
FreeBSD on Microsoft HyperV and Azure
Contact: Microsoft FreeBSD Integration Services Team
Contact: freebsd-cloud Mailing List
Contact: The FreeBSD Azure Release Engineering Team <releng-azure@FreeBSD.org>
Contact: Wei Hu <whu@FreeBSD.org>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>
The 13.1-RELEASE image on Azure Marketplace has been published.
Work in progress tasks:
Automating the image building and publishing process
Building and publishing ZFS-based images to Azure Marketplace
Building and publishing Hyper-V gen2 VM images to Azure Marketplace
Blocked by https://bugs.freebsd.org/264267
The above tasks are sponsored by The FreeBSD Foundation, with resources provided by Microsoft.
Wei Hu and his colleagues in Microsoft are working on several tasks sponsored by Microsoft:
Fixing booting issue on Hyper-V gen2 VM in Azure
Porting Hyper-V guest support to aarch64
Sponsor: Microsoft for work by Wei Hu and others in Microsoft, and for resources for the rest Sponsor: The FreeBSD Foundation for everything else
Changes affecting the base system and programs in it.
Ongoing work on LLDB multiprocess debugging support
Moritz Systems Project Description URL: https://www.moritz.systems/blog/multiprocess-support-for-lldb/
Progress Report 1 URL: https://www.moritz.systems/blog/implementing-non-stop-protocol-compatibility-in-lldb/
Contact: Kamil Rytarowski <email@example.com>
Contact: Michał Górny <firstname.lastname@example.org>
According to the upstream description, "LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler."
FreeBSD includes LLDB in the base system. The previous sponsored projects improved LLDB, to make it a credible debugger for the base system, although it still has a few limitations compared to the contemporary versions of GNU GDB. This project started in April 2022. It aims to implement full support for debugging multiple processes simultaneously.
At the start of the project, LLDB featured very limited support
for multiprocess debugging. The client featured support for
debugging multiple independent processes simultaneously via
maintaining multiple connections to different server instances.
Thanks to our earlier work, the server was able to process
vfork(2) calls and either
detach the newly forked child and continue tracing the parent
process, or detach the parent and follow the child (equivalent to
Once the project is finished, LLDB will be able to trace an
arbitrary number of forked processes simultaneously (equivalent to
detach-on-fork off). Full support for the
multiprocess extension to the GDB Remote Serial Protocol will be
implemented, as well as partial support for the non-stop extension
that will enable multiple processes to be resumed and stopped
Sponsor: The FreeBSD Foundation
ZFS support in makefs(8)
Mailing list post URL: https://lists.freebsd.org/archives/freebsd-hackers/2022-May/001128.html
makefs(8) code review URL: link:https://reviews.freebsd.org/D35248 release(7) code review URL: link:https://reviews.freebsd.org/D34426
Contact: Mark Johnston <markj@FreeBSD.org>
makefs(8) is a utility, originating in NetBSD, that creates file system images entirely in userspace. It is a useful component of a toolchain to build virtual machine (VM) images since it does not require any special privileges, unlike the approach of formatting a character device, mounting the fresh file system, and copying files onto it. Moreover, makefs can create reproducible images and aims to minimize resource consumption. Currently, FreeBSD’s makefs can build UFS, cd9660, and msdos (FAT) file system images.
Recent work enables the creation of ZFS images by makefs. This makes it easier to build ZFS-based VM images. makefs' ZFS support includes the ability to create multiple datasets, with each mapped to a directory in the input file hierarchy. Many ZFS features are not supported however, as the implementation provides only what is needed to get reproducible root pools.
Follow-up work enables the creation of ZFS-based VM and cloud images by the release(7) framework, using this new makefs extension.
Sponsor: The FreeBSD Foundation
Base System OpenSSH Update
OpenSSH URL: https://www.openssh.com/
OpenSSH 8.9 release notes URL:https://www.openssh.com/txt/release-8.9[https://www.openssh.com/txt/release-8.9]
OpenSSH 9.0 release notes URL:https://www.openssh.com/txt/release-9.0[https://www.openssh.com/txt/release-9.0]
Contact: Ed Maste <email@example.com>
OpenSSH, a suite of remote login and file transfer tools, was updated from version 8.8p1 to 9.0p1 in the FreeBSD base system.
It has not yet been merged to the stable/13 and stable/12 branches. I anticipate doing so in July.
NOTE: OpenSSH 9.0p1 switches scp(1) from using
the legacy scp/rcp protocol to using the SFTP protocol by default.
-O flag is available to use the previous protocol
Sponsor: The FreeBSD Foundation
pf status update
pf recently grew support for filtering on Ethernet layer. See the 2021q2 pf_ethernet report.
Since then the Ethernet layer filtering has been extended with:
ability to look into the layer 3 header, for matching with source/destination IP(v4/v6) addresses
table support for IP address matching
direct dispatch to dummynet
pass Ethernet layer packets directly to dummynet, rather than tagging the packets and relying on layer 3 to handle dummynet
pf recently started being able to use dummynet for packet scheduling. This support has been extended and improved, and is now believed to be ready for production.
One notable fix is that reply-to/route-to’d traffic is now subject to dummynet scheduling as well.
Last match timestamp
pf now tracks when a rule was last matched. Similar to ipfw rule timestamps, these timestamps internally are uint32_t snaps of the system "wall time" clock in seconds. (See time(9).) The timestamp is CPU local and updated each time a rule or a state is matched.
Sponsor: Rubicon Communications, LLC ("Netgate")
Updates to kernel subsystems/features, driver support, filesystems, and more.
ENA FreeBSD Driver Update
ENA (Elastic Network Adapter) is the smart NIC available in the virtualized environment of Amazon Web Services (AWS). The ENA driver supports multiple transmit and receive queues and can handle up to 100 Gb/s of network traffic, depending on the instance type on which it is used.
Completed since the last update:
Upstream of the ENA driver v2.5.0, which included:
Improvement to the reset routine handling,
Extension of the timer service lifetime in order to be able to detect more hardware failures,
Fix logic for verifying the Tx request ID,
Fix IPv6 L4 checksum offload handling for the Tx,
Add NUMA awareness to the driver.
Internal review of the upcoming ENA driver release (v2.6.0), including:
Further reset handling improvements,
Code cleanup and style fixes,
Fix to the retrieval of the ENI metrics.
Work in progress:
Testing of the upcoming ENA driver release (v2.6.0).
Sponsor: Amazon.com Inc
New Bluetooth® configuration daemon: blued
The blued utility provides an IPC interface that lets an unprivileged user connect to and use Bluetooth devices in a user-friendly way and supports secure simple pairing (public-key cryptography and if the device allows it man-in-the-middle protection).
What is blued?
There are three parts to blued: a library, a daemon and a command line utility. The library abstracts away bluetooth details, the daemon manages Bluetooth devices and the command line utility lets users list or scan for Bluetooth devices, pair with a device, or unpair from one. The command line utility communicates with the daemon via a UNIX socket.
Unlike bthidd and hcsecd, blued supports secure simple pairing and provides an IPC. To get a HID device to work, bthidd is still needed. A script is provided to pair a Bluetooth device and appropriately configure bthidd so it just works and reconnects without user intervention.
Once pairing has proven stable and bugs have been ironed out, the plan is to integrate bthidd with/into blued in some way to have HID devices automatically start functioning when paired without the use of an external script. A long-term goal is to provide a graphical user interface that can list devices and provide a simple one-click setup to connect them.
Installing and using blued v0.1
You need the optional
src component installed in
To test blued, fetch the blued
v0.1 source code. Then compile it, patch your FreeBSD kernel
with the patches in kernel_patches,
and recompile the
hci module as explained in
I have primarily tested blued on FreeBSD 12.3, but my patches applied cleanly on 13.1 when I tested. I am not supplying a port at the moment, but it is possible to run the software straight from the build directory or run "make install" that will install all needed files. Both blued and bluecontrol use capsicum and blued can be configured to drop its root privileges.
For more information, refer to the
section of README.
I have only tried this software with my own mouse and realise that a sample size of one single bluetooth device is pretty small. I’m expecting issues and am greatly looking forward to feedback from others!
In case of trouble, output from /var/log/debug.log and /var/log/messages as well as a traffic dump from "hcidump -x" while trying to pair will help with troubleshooting.
If you want to get involved with the code and submit patches, you’re welcome to visit the repository on Lysator’s Git.
Contact: Kristof Provost <kp@FreeBSD.org>
OpenVPN DCO (or Data Channel Offload) moves OpenVPN data packet processing into the kernel.
Traditionally OpenVPN uses a tun(4) interface to transmit and receive packets. In this setup received packets are received by the kernel, passed to the OpenVPN application for decryption, then passed back into the kernel for network stack processing. This requires several transitions between kernel- and userspace, and naturally imposes a performance cost.
The new if_ovpn OpenVPN DCO offload driver performs the encryption/decryption entirely within the kernel, improving performance.
Initial performance testing shows throughput improved from around 660Mbit/s to around 2Gbit/s.
The userspace OpenVPN code also requires modification to use the new if_ovpn offload driver. This is expected to be part of a future 2.6.0 OpenVPN release.
Sponsor: Rubicon Communications, LLC ("Netgate")
Intel iwlwifi status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Iwlwifi Realtek rtw88 status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Rtw88 Realtek rtw89 status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Rtw89
Contact: Bjoern A. Zeeb <bz@FreeBSD.org>
The overall project aims to bring support for newer chipsets to FreeBSD currently using LinuxKPI compat code backed by native net80211 and kernel code. In addition the aim is to continue work towards supporting newer wireless standards. During the second quarter 40 commits went into FreeBSD CURRENT. With more users trying multiple drivers support time has also gone up.
An earlier version of the Intel iwlwifi-derived wireless driver shipped in 13.1-RELEASE bringing this work into a first FreeBSD release. The iwlwifi driver and firmware were since updated in CURRENT and stable/13 again as part of ongoing development. Changes in files shared with the upstream Intel Linux version of the driver are now less than 400 lines. Lately a longer-standing problem for older chipsets was (hopefully) solved allowing iwm(4)-supported cards to work with iwlwifi(4) again after almost three months. The main focus for the project until the end of the year will most exclusively be getting us to contemporary speeds.
On April 1st, using the same LinuxKPI infrastructure built mostly with the iwlwifi work, Realtek’s rtw88(4) driver got committed into CURRENT. Due to an issue with DMA the next weeks a workaround was developed and put into the tree so users no longer have to patch the kernel. The driver still needs a tunable set in loader.conf for machines with more than 4GB of physical memory. This tunable allowed the driver to be merged to stable/13 in June followed by further updates in CURRENT and stable/13. As the USB parts for rtw88 based chipsets are prepared to be included in Linux, work has started (needing more time) to prepare FreeBSD to be able to support the USB parts as well.
During the last months Realtek’s rtw89 has already been compiling and remains a work in progress to run stably and associate before it can be enabled in CURRENT.
Thanks to all the users for testing and reporting back, patiently waiting for the next update, bugfix, or just a reply from me. It is a great pleasure to work with you! Keep sending the bug reports to me, but remember that your thanks should go to the FreeBSD Foundation for making most of this possible.
For the latest state of the development, please follow the freebsd-wireless mailing list and check the wiki pages.
Sponsor: The FreeBSD Foundation
Shared page address randomization
The shared page is an R/X page that is mapped into each process by the image activator. It stores the signal trampoline, as well as other metadata e.g. information needed to implement user space timecounters. Previously it was mapped at the top of the process virtual address space. With the described changes its address will be randomized. We plan to turn the feature on by default for 64bit binaries, across all architectures. Currently the patches are under review and await approval.
Updating platform-specific features and bringing in support for the new hardware platform.
NXP DPAA2 support
Some of the NXP SoCs (LX2160A, LS1088A) are shipped with DPAA2, the second generation of the data path acceleration architecture. It allows to dynamically configure and wire packet processing "objects" (DPNI for a network interface, DPMAC for media access controller, etc.) together to form a network-on-a-chip.
During the last quarter the driver started working well enough to be used on SolidRun' Honeycomb LX2 (ACPI test platform) and Traverse Technologies has produced a FreeBSD preview for (their) Ten64 (used as FDT test platform).
The driver is still work-in-progress, but is getting close for a review to get the first version into the tree for everyone to benefit from it.
FDT MDIO support. FreeBSD currently lacks support for the SPF parts.
Driver resources de-allocation to unload dpaa2.ko properly.
Bug fixes and improvements.
CPU affinity for DPIOs and DPNIs.
Cached memory-backed software portals.
Further parts (DPSW, DCE, etc.) supported by the hardware.
Sponsor: Bare Enthusiasm :)
Sponsor: Traverse Technologies (providing Ten64 HW for testing)
Medium-sized superpages on arm64 and beyond
The 64-bit ARM architecture’s page table descriptor format contains a flag called the Contiguous bit. This tells the MMU that it can cache an aligned, physically contiguous group of 16 page table entries which have identical permissions and attributes using only 1 TLB entry.
The Contiguous bit, as well as the conceptually similar Svnapot extension to the RISC-V architecture, allows for the use of 64 KiB superpages. These medium-sized superpages can bring to smaller memory objects the address-translation speedup typically associated with more traditional 2 MiB superpages.
This project focuses on bringing support for medium-sized superpages to FreeBSD. So far, we have modified the arm64 pmap code to automatically utilize 64 KiB superpages by detecting physically contiguous page table entries and promoting them using the Contiguous bit. Now, we are working to adapt the kernel’s superpage reservation module to support 64 KiB reservations in addition to the current 2 MiB ones. Adding medium-sized reservations will allow the virtual memory system to explicitly allocate pieces of memory which fit the requirements for superpage promotion, rather than just hoping that they occur by chance.
Our goal is to accomplish this in a general way that makes it possible to specify multiple arbitrary power-of-two reservation sizes, making it easier to take advantage of hardware features on other architectures like Ryzen’s PTE Coalescing, which transparently merges groups of 4 KiB page table entries into medium-sized superpages.
Sponsor: Department of Computer Science, Rice University
Noteworthy changes in the documentation tree, manual pages, or new external books/documents.
Documentation Engineering Team
Contact: FreeBSD Doceng Team <doceng@FreeBSD.org>
The doceng@ team is a body to handle some of the meta-project issues associated with the FreeBSD Documentation Project; for more information, see FreeBSD Doceng Team Charter.
During the last quarter, Graham Perrin (grahamperrin@) and Pau Amma (pauamma@), were granted documentation commit bits.
Several items are pending and in discussion:
Mirroring the Website and Documentation portal with the GeoDNS infrastructure of the project.
How to handle Trademarks in the documentation.
Remove outdated translations from the Website and Documentation portal.
FreeBSD Translations on Weblate
Q2 2022 Status
152 registered users (9 new users)
Chinese (Simplified) (zh-cn)
Chinese (Traditional) (zh-tw)
We want to thank everyone that contributed, translating or reviewing documents.
And please, help promote this effort on your local user group, we always need more volunteers.
FreeBSD Website Revamp - WebApps working group
Contact: Sergio Carlavilla <carlavilla@FreeBSD.org>
Working group in charge of creating the new FreeBSD Documentation Portal and redesigning the FreeBSD main website and its components. FreeBSD developers can follow and join the working group on the FreeBSD Slack channel #wg-www21. The work will be divided into four phases:
Redesign of the Documentation Portal
Create a new design, responsive and with global search. (Complete)
Redesign of the Manual Pages on web
Scripts to generate the HTML pages using mandoc. (Work in progress)
Redesign of the Ports page on web
Ports scripts to create an applications portal. (Work in progress)
Redesign of the FreeBSD main website
New design, responsive and dark theme. (Not started)
Changes affecting the Ports Collection, whether sweeping changes that touch most of the tree, or individual ports themselves.
KDE on FreeBSD
Contact: Adriaan de Groot <kde@FreeBSD.org>
The KDE on FreeBSD project packages the software from the KDE Community, along with dependencies and related software, 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 (kde@) is part of desktop@ and x11@ as well, building the software stack to make FreeBSD beautiful and usable as a daily-driver graphics-based desktop machine. The notes below describe mostly ports for KDE, but also include items of import to the entire desktop stack.
KDE Gear releases happen each quarter, KDE Plasma updates once a month, and KDE Frameworks have a new release each month as well. These (large) updates land shortly after their upstream release and are not listed separately.
astro/kstars latest release 3.5.9.
deskutils/grantleetheme got an entry in UPDATING because of some unusual changes to the installed structure of the port.
deskutils/kalendar joined the KDE Gear releases.
devel/okteta updates to the binary (and octal and hexadecimal) data viewer and editor.
finance/kraft needed specific build-fixes for newer KDE Frameworks.
games/gcompris-qt expanded, new releases, and now supports more image formats (needed for some activities).
graphics/digikam no longer needs a SQL server during the build.
graphics/krita was updated to 5.0.5, likely the last 5.0 version.
math/labplot has a huge number of new features in recent releases, well worth looking at if you need any kind of data-plotting.
net-im/ruqola was updated. This is a Qt-styled Rocket chat application.
www/falkon joined the KDE Gear releases.
archivers/quazip was updated.
devel/py-qt5-pyqt updated so that the port now pulls in DBus as well. DBus is needed by nearly all desktop Qt applications, including those written in Python.
devel/qcoro had build issues on certain FreeBSD versions, resolved.
devel/qtcreator updated with each new release.
devel/qt5 had its infrastructure updated in ports so it does not produce strange error messages during de-installation.
graphics/ksnip and related libraries updated to recent releases.
Matrix clients Nheko (net-im/nheko) and Neochat (net-im/neochat) were updated following releases and library bumps.
x11/rsibreak updated; helps prevent injury while writing long quarterly reports.
devel/appstream update supports more application-information.
devel/cmake prefers generic python3 over versioned-python3, if users have multiple python3 ports and lang/python3 installed.
graphics/poppler updated several times.
graphics/ImageMagick (both 6 and 7) updated several times.
GCC: updating GCC_DEFAULT and other improvements
salvadore@ worked on the upgrade of GCC_DEFAULT in Mk/bsd.default-versions.mk from 10 to 11, opening bug reports based on antoine@'s exp-runs and fixing some: many thanks to all those that helped with this task. The GCC_DEFAULT update from GCC 10 to GCC 11 has now been committed by gerald@ and happened in time for the next quarterly branch. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=258378
pkubaj@ switched GCC bootstrapping to use Link Time Optimization for GCC itself for GCC 11 and newer by introducing a new option enabled by default. Building with LTO_BOOTSTRAP enabled requires significant amounts of memory and time. How much resources are actually needed depends on your configuration (e.g. are you building from ports or with poudriere? What is your architecture?). To give an idea, a user reported needing 5 GiB of tmpfs, while in PR 265254 a need of about 130 GB of memory is estimated due to an excessive amount of processes spawning (see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106328). Consider disabling LTO_BOOTSTRAP in favor of STANDARD_BOOTSTRAP (or disabling BOOTSTRAP altogether) in case that is a problem.
pkubaj@ also added lang/gcc12 and lang/gcc13-devel ports and updated lang/gcc9 to 9.5.
Help is still needed with these three changes to work through with upstream GCC (requires src expertise, not ports):
Valgrind - Numerous bugfixes and updates for 13.1 / 14.0
Contact: Paul Floyd <firstname.lastname@example.org>
A quite significant number of bug fixes have been made to Valgrind on FreeBSD over the past few months. In particular, the i386 version has largely 'caught up' with its bigger brother amd64.
The devel/valgrind-devel port has been bumped up to 3.20.0.g20220612,1 which includes all of the following changes. If you use Valgrind regularly please switch to valgrind-devel.
Here is a list of changes since the release of Valgrind 3.19.0 (which is the version available with the devel/valgrind port).
incorrect signal resumption if a signal arrives when Valgrind is saving the carry flag for a syscall
fixed reading DWARF debuginfo from PT_LOADs generated by lld post version 9, which splits the RW segment into two parts, this affects mainly shared libraries (.so files)
on i386 implement correctly the management of thread GDTs which was limiting applications to only ever creating 8192 threads
make the first page of the 'brk' invalid for addressing
analysis and cleanup of the regression test suite and in particular tweak the i386 leak tests to not detect possible leaks due to left over pointers in ECX.
make coredumps readable by lldb
improve the setting of errno by C allocating functions
fix building of Valgrind with llvm-devel (15.0.0)
For FreeBSD 13.1 / 14.0 there are
syscall wrappers for funlinkat, copy_file_range, swapoff, shm_open2
add K_INFO handling to fcntl
add handling for new auxv entries
added some default suppressions for DRD and Helgrind
There is now an initial version of vgdb invoker support - this allows vgdb to use ptrace to force valgrind to poll for gdb commands. This is not yet available in the ports versions.
That does not leave much in the way of outstanding issues. I expect that 14.0 and newer versions of llvm will keep on requiring support. Apart from that there is
some small problems with error messages getting the correct source information
better core dumps (low priority)
TLS (thread local storage) handling for Helgrind (difficult if not impossible)
Pantheon desktop on FreeBSD
Contact: Olivier Duchateau <email@example.com>
The Pantheon desktop environment is designed for elementary OS. It builds on GNOME technologies (such as Mutter, GNOME Shell, GTK 3 and 4) and it is written in Vala.
The goal is to have a new desktop for users. Some features are not well supported, but we can have full session.
The repository contains Mk/Uses framework
elementary.mk, official applications, and curated
ports which depend of
x11-toolkits/granite (total of
56 new ports).
I have submitted several patches, especially:
Add support of user settings (it is very Ubuntu-centric)
Finish porting wingpanel-indicator-power (power management)
Feature Complete Port of Intel’s igt-gpu-tools
FreeBSD Wiki Project Page URL: https://wiki.freebsd.org/SummerOfCode2022Projects/ImprovingTheLinuxKPICompatibilityLayerForTheFreeBSDGraphicsStack
Status Reports URL: https://cdaemon.com/tags/gsoc2022
Contact: Jake Freeland <firstname.lastname@example.org>
Intel’s igt-gpu-tools serves as a generic testing suite for drm drivers on Linux. The igt-gpu-tools suite is separated into tests and tools that target kms, memory management, and command submission. The utility provides low-level reporting for transparent tracking of kernel changes and efficient debugging of modern drm drivers.
Porting the project to FreeBSD could introduce greater stability in future releases of FreeBSD’s LinuxKPI-driven drm drivers. A proper kms-driven testing suite could also increase code output and bring the FreeBSD desktop experience up to speed with the Linux codebase.
The project officially started under FreeBSD’s Google Summer of Code program on June 13, 2022. My adapted code can compile with non-FreeBSD compatible snippets removed. The plan is to reimplement these stripped components in a POSIX compliant fashion.
Notable incompatible code includes: debugfs, libkmod, libprocps, Linux performance events, and Linux userfaultfd. If you would like to assist in the porting of libkmod or libprocps into the ports tree, don’t hesitate to contact me.
When the FreeBSD compatible code is complete, I will run the modified igt tests using a host of graphics processors on FreeBSD 14.0-CURRENT. If all is well, the project’s diff will be submitted into the ports tree.
Sponsor: FreeBSD Google Summer of Code
Last modified on: August 2, 2022 by Lorenzo Salvadore