FreeBSD Quarterly Status Report - Second Quarter 2015
bjk at freebsd.org
Mon Jul 27 02:38:49 UTC 2015
-----BEGIN PGP SIGNED MESSAGE-----
FreeBSD Project Quarterly Status Report: April - June 2015
The second quarter of 2015, from April to June, was another period of
busy activity for FreeBSD. This report is the largest we have published
The cluster and release engineering teams continued to improve the
structures that support FreeBSD's build, maintenance, and installation.
Projects ran the gamut from security and speed improvements to
virtualization and storage appliances. New kernel drivers and
capabilities were added, while work to make FreeBSD run on various ARM
architectures continued at a rapid pace. The Ports Collection grew,
even while adding capabilities and fixing problems. Outside projects
like pkgsrc have become interested in adding support. Documentation was
a major focus, one that is often complimented by people new to FreeBSD.
BSDCan 2015 was a great success, turning many hours of sleep
deprivation into an even greater amount of inspiration.
As always, a great deal of this activity was directly sponsored by the
Foundation. The project's status as a first-class operating system owes
a great deal to the Foundation's past and ongoing work.
The number and detail of these reports really gives only a tiny glimpse
of all that is happening. A huge portion of FreeBSD development takes
place all the time, including bug fixes, feature improvements,
rewrites, and imports of new code. This ongoing work is difficult,
time-consuming, and, far too often, unrecognized. We should take a
moment to consider and thank not just the contributors listed here, but
also the end users, bug submitters, port maintainers, coders, security
analysts, infrastructure defenders, tinkerers, scientists, designers,
questioners, answerers, rule makers, testers, documenters, sysadmins,
dogmatists, iconoclasts, and crazed geniuses who make FreeBSD such an
effective and useful operating system. If you are reading this, you are
one of these people, too. Thank you.
This status report was compiled by Benjamin Kaduk and Warren Block.
Please submit status reports for the third quarter of 2015 (July to
September) by October 7, 2015.
FreeBSD Team Reports
* FreeBSD Cluster Administration Team
* FreeBSD Release Engineering Team
* The FreeBSD Core Team
* Address Space Layout Randomization (ASLR)
* Linux Binary Emulation Layer Upgrade
* Mellanox iSCSI Extensions For RDMA (iSER) Support
* Multipath TCP for FreeBSD
* Root Remount
* 1-Wire Kernel Driver Implementation
* Adding PCIe Hot-plug Support
* CloudABI: Capability-Based Runtime Environment
* Rewritten PCID Support
* Sleep States Enhancements on x86
* Warner's ARMv6 Hard Float Experiment
* FreeBSD on Cavium ThunderX (arm64)
* Cleanup on pw(8)
* KDE on FreeBSD
* Official Packages
* Ports Collection
* The Graphics Stack on FreeBSD
* Xfce on FreeBSD
* Documentation Working Group at BSDCan
* FreeBSD Mastery: ZFS Now Available
* Leap Seconds Article
* New Documentation Committers
* The FreeBSD German Documentation Project
Google Summer of Code
* GSoC 2015: libc Security Extensions
* Multiqueue Testing
* BSDCan 2015
* FreeBSD Support in pkgsrc
* The FreeBSD Foundation
* ZFS Support for UEFI Boot/Loader
FreeBSD Cluster Administration Team
Contact: FreeBSD Cluster Administration Team <clusteradm@>
The FreeBSD Cluster Administration Team consists of the people
responsible for administering the machines that the project relies on
for its distributed work and communications to be synchronised. In this
quarter, the team has been extremely busy with work both visible and
invisible from outside of the FreeBSD infrastructure.
* Migrated reference machines used by FreeBSD developers to the new
machines purchased by the FreeBSD Foundation at New York Internet
* Separated email services (and single-point-of-failure cases) from
the machine that has been handling this task for over 18 years, to
new, single-purpose service installations
* Reorganized the infrastructure, serving repositories hosted by
svn.freebsd.org to GeoDNS-backed mirrors, all with a single,
official SSL certificate
* Increased multi-site redundancy for public and non-public services
throughout, at present, eight world-wide geographic sites
While an enormous amount of this work was volunteer-driven, resources
(time and hardware) were generously provided by the FreeBSD Foundation.
This project is sponsored by The FreeBSD Foundation (time and
FreeBSD Release Engineering Team
FreeBSD 10.2-RELEASE schedule
FreeBSD development snapshots
FreeBSD development snapshots announcements list
Contact: FreeBSD Release Engineering Team <re at 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
The FreeBSD 10.2-RELEASE cycle began in mid-June, with the final
release expected to be available in late August, and as this quarterly
status update shows, FreeBSD 10.2-RELEASE is going to be a very
The FreeBSD Release Engineering Team has been extremely busy this
quarter, with much of the focus targeted at adding support for
additional hardware and integration with third-party hosting providers
(aka "cloud" hosting).
Following up on the work done by Andrew Turner to port FreeBSD to the
arm64 (aarch64) architecture, the Release Engineering build tools were
updated to produce FreeBSD/aarch64 memory stick images and virtual
machine images for use with Qemu (emulators/qemu-devel). At present,
the Qemu virtual machine images require an external EFI file to boot.
Details on how to boot FreeBSD/aarch64 virtual machine images are
available in the linked FreeBSD development snapshot announcement email
Last quarter, several parts of the build tools were rewritten to allow
greater extensibility and granularity, which has simplified the code
required for new virtual machine images.
In collaboration with several developers, the Release Engineering build
tools were updated to provide new support for several hosting
providers, as well as provide mechanisms to automatically upload (and
publish, where possible) FreeBSD virtual machine images.
This quarter, in addition to the existing support for the Microsoft
Azure platform, the build tools also natively support:
* Amazon EC2 (thanks to Colin Percival)
* Google Compute Engine (thanks to Steve Wills)
* Vagrant/Hashicorp Atlas (thanks to Brad Davis)
The FreeBSD Release Engineering Team would like to thank these
developers for all of the work that went into making this possible, and
would like to especially thank Marcel Moolenaar for all of his work on
the mkimg(1) utility, especially for adding support for the various
file formats requested.
In addition to the enhancements to the virtual machine build tools, a
significant amount of work went into refactoring the build code used to
produce FreeBSD/arm images.
With much of the logic resembling how the Crochet utility (written by
Tim Kientzle) works, and a significant amount of work, input, and
advice from Ian Lepore, Warner Losh, Andrew Turner, Luiz Otavio O Souza,
and a large number of contributors on the freebsd-arm at FreeBSD.org
mailing list, the FreeBSD Release Engineering tools now natively
support producing FreeBSD/arm images without external build tools.
At present, the build tools support building FreeBSD/arm images for:
* RPI2 (FreeBSD-CURRENT only)
The FreeBSD Release Engineering Team would like to thank each of these
people for their support and input, and would like to especially thank
Tim Kientzle for his work on Crochet. Without it, we might not have
been able to produce images for the various boards that we are able to
For more information on what else has changed in FreeBSD since
10.1-RELEASE, see the FreeBSD 10.1-STABLE release notes (which will
become the release notes for 10.2-RELEASE).
Additionally, Glen Barber would like to thank Jim Thompson for
providing a BeagleBone Black board (replacing one that no longer
worked), and Benjamin Perrault for providing a PandaBoard ES, both of
which are used for locally testing the images produced by the build
Last, and certainly not least, Glen Barber would also like to thank the
FreeBSD Foundation for their support, and for providing the resources
(time and hardware) required to make all of the items mentioned in this
status report possible.
This project is sponsored by The FreeBSD Foundation.
The FreeBSD Core Team
Contact: FreeBSD Core Team <core at FreeBSD.org>
The FreeBSD Core Team constitutes the project's "Board of Directors",
responsible for deciding the project's overall goals and direction as
well as managing specific areas of the FreeBSD project landscape.
In order to help attract fresh developer talent to FreeBSD, Core has a
general policy to make available an up-to-the-minute suite of developer
tools and services. Core has long been encouraging FreeBSD committers
to make full use of the project's Phabricator instance at
https://reviews.FreeBSD.org, and now has supported the Phabricator
admins in opening access to anyone interested enough to sign up for an
Further developments under consideration include setting up a
FreeBSD.org OAuth 2 provider and permitting OAuth-style Single Sign-On
access to most FreeBSD web-based services. Developers and members of
the public would additionally be able to use credentials from other
providers such as GitHub, Twitter, or Google to authenticate themselves
to FreeBSD web services.
Mark Murray raised a problem he has been having for some time with
getting adequate security review of his proposed changes to random(9).
This is an extremely security sensitive area of the kernel where errors
can have disastrous consequences. Core has been able to drum up a
number of reviewers and they have made significant progress in
simplifying the design, eliminating some difficult portions of code,
and reducing any potential attack surface. Work is still ongoing and
Core remains open to the idea of bringing in external reviewers with
specialist cryptographic knowledge.
Dag-Erling Smørgrav resigned as Security Officer towards the end of
May. Core was sorry to see him step down, but unanimously pleased to
welcome his nominee and former deputy, Xin Li, as his successor. Xin
has since appointed Gleb Smirnoff (who also happens to be a current
member of core) as his new deputy. Between them and Core they have some
fairly radical ideas under discussion about how to improve the
project's responsiveness to security issues.
In mid-June, a change to style(9) was proposed, and resulted in much
lively discussion. Warner Losh conducted an informal poll with
Phabricator and the change was approved and committed within a couple
of days. Unfortunately, complaints were raised about the timing and
voting methods and Core was called upon to arbitrate. The change was
backed out voluntarily, a new poll was held with more time to vote, and
the change was approved.
During this period we had two new commit bits awarded, and one taken in
for safekeeping. Welcome aboard to Chris Torek and Mariusz Zaborski,
and we were very sorry indeed to see Steve Kargl decide to call it a
Address Space Layout Randomization (ASLR)
True Stack Randomization
Announcing ASLR Completion
Call for Donations
Contact: Shawn Webb <shawn.webb at hardenedbsd.org>
Contact: Oliver Pinter <oliver.pinter at hardenedbsd.org>
Contact: HardenedBSD <core at hardenedbsd.org>
HardenedBSD is a downstream distribution of FreeBSD aimed at
implementing exploit mitigation and security technologies. The
HardenedBSD development team has focused on several key features, one
being Address Space Layout Randomization (ASLR). ASLR is a computer
security technique that aids in mitigating low-level vulnerabilities
such as buffer overflows. ASLR randomizes the memory layout of running
applications to prevent an attacker from knowing where a given
vulnerability lies in memory.
This last quarter, the HardenedBSD team has finalized the core
implementation of ASLR. We implemented true stack randomization along
with a random stack gap. This change allows us to apply 42 bits of
entropy to the stack, the highest of any operating system. We bumped
the hardening.pax.aslr.stack_len sysctl(8) to 42 by default on amd64.
We also now randomize the Virtual Dynamic Shared Object (VDSO). The
VDSO is one or more pages of memory shared between the kernel and the
userland. On amd64, it contains the signal trampoline and timing code
(gettimeofday(4), for example).
With these two changes, the ASLR implementation is now complete. There
are still tasks to work on, however. We need to update our
documentation and enhance a few pieces of code. Our ASLR implementation
is in use in production by HardenedBSD and is performing robustly.
Additionally, we are currently running a fundraiser to help us
establish a not-for-profit organization and for hardware updates. We
have received a lot of help from the community and we greatly
appreciate the help. We need further help to take the project to the
next level. We look forward to working with the FreeBSD project in
providing excellent security.
This project is sponsored by SoldierX.
1. Update the aslr(4) manpage and the wiki page.
2. Improve the Shared Object load order feature with Michael Zandi's
3. Re-port the ASLR work to vanilla FreeBSD. Include the custom work
requested by FreeBSD developers.
4. Close the existing review on Phabricator.
5. Open multiple smaller reviews for pieces of the ASLR patch that can
be split out logically.
6. Perform a special backport to HardenedBSD 10-STABLE for OPNSense to
7. golang segfaults in HardenedBSD. Help would be nice in debugging.
bhyve FAQ and talks
Contact: Peter Grehan <grehan at FreeBSD.org>
Contact: Neel Natu <neel at FreeBSD.org>
Contact: Tycho Nightingale <tychon at FreeBSD.org>
Contact: Allan Jude <freebsd at allanjude.com>
Contact: Alexander Motin <mav at FreeBSD.org>
Contact: Marcelo Araujo <araujo at FreeBSD.org>
bhyve is a hypervisor that runs on the FreeBSD/amd64 platform. At
present, it runs FreeBSD (8.x or later), Linux i386/x64, OpenBSD
i386/amd64, and NetBSD/amd64 guests. Current development is focused on
enabling additional guest operating systems and implementing features
found in other hypervisors.
bhyve BoF at BSDCan 2015
A bhyve BoF was held during lunch hour at BSDCan 2015. It was attended
by approximately 60 people.
Michael Dexter showed Windows Server 2012 running inside bhyve.
Common themes that came up during the discussion were: bhyve
configuration, libvirt and OpenStack integration, best practices, bhyve
with ZFS, additional guest support and live migration.
Google Summer of Code 2015
A number of bhyve-related proposals were submitted for GSoC 2015 and
these four were accepted:
* NE2000 device emulation
* Porting bhyve to ARM
* ptnetmap support in bhyve
* PXE boot support in bhyveload
A number of improvements were made to bhyve this quarter:
* GEOM storage backend now works properly with bhyve.
* Device model enhancements and new instruction emulations to support
* Improve virtio-net performance by disabling queue notifications
when not needed.
* The dtrace FBT provider now works properly with vmm.ko.
Marcelo Araujo and Allan Jude created a rough patch to make bhyve parse
a config file to replace the existing method of configuration by
command line invocation. The rapid pace of advancement in bhyve
resulted in requiring a much more complex config file. A new design for
the config file, with support for the plugin architecture that will
eventually be introduced into bhyve, is now being discussed.
1. Improve documentation.
2. bhyveucl is a script for starting bhyve instances based on a libUCL
config file. More information at
3. Add support for virtio-scsi.
4. Flexible networking backend: wanproxy, vhost-net
5. Support running bhyve as non-root.
6. Add filters for popular VM file formats (VMDK, VHD, QCOW2).
7. Implement an abstraction layer for video (no X11 or SDL in base
8. Suspend/resume support.
9. Live Migration.
10. Nested VT-x support (bhyve in bhyve).
11. Support for other architectures (ARM, MIPS, PPC).
Linux Binary Emulation Layer Upgrade
Emulation team on FreeBSD wiki
Contact: Allan Jude <AllanJude at FreeBSD.org>
Contact: Dmitry Chagin <dchagin at FreeBSD.org>
Contact: Ed Maste <emaste at FreeBSD.org>
Contact: Edward Tomasz Napierała <trasz at FreeBSD.org>
Contact: Johannes Meixner <xmj at FreeBSD.org>
Contact: FreeBSD Emulation Team <emulation at FreeBSD.org>
The FreeBSD emulation team has done extensive work on polishing
FreeBSD's Linux emulation layer. After more than a year and a half,
Dmitry Chagin's changes to the Linux binary emulation layer were merged
into FreeBSD 11.0-CURRENT. Before merging the more than 115 individual
changes into base/head, Ed Maste and Edward Tomasz Napierała were able
to help by reviewing and improving the code quality.
Work has begun on backporting these changes into FreeBSD 10-STABLE,
with the current 10.2 release cycle in mind. We hope to have that
backport ready before 10.2-PRERELEASE turns into 10.2-RELEASE.
In that same vein, Allan Jude was able to upload and improve a recent
Differential Revision that will eventually lead to our having both
32-bit and 64-bit ports for CentOS 6. Port review activity started
during the BSDCan conference's developer summit, and will be continued
extensively during the Cambridge Developer Summit.
We are currently expecting to have both Fedora 10, Centos 6 32-bit- and
CentOS 6 64-bit-compatible frameworks available by Q4/2015.
Call for Help: Contributing
People can contribute to the Emulation team's efforts by testing the
CentOS 64-bit changes on a FreeBSD 11.0-CURRENT system. Please use
Bugzilla to report any bugs or oddities encountered.
For the ambitious: we are planning to start working on a CentOS 7
framework. CentOS7 is 64-bit only, uses a newer kernel, and has
systemd, so this work is highly experimental. We hope to have a usable
port by Q2/2016.
This project is sponsored by Perceivon Hosting Inc., ScaleEngine Inc.,
and The FreeBSD Foundation.
1. Test 64-bit Linux emulation on 11.0-CURRENT
2. Backport 64-bit Linux emulation to 10-STABLE
3. Review 64-bit CentOS 6 ports and merge changes
4. Create/heavily update existing 64-bit CentOS 7 ports
5. Anyone who would like to get in touch should not hesitate to
contact any of the emulation@ team members. Similarly, a mail to
emulation at FreeBSD.org is always welcome.
Mellanox iSCSI Extensions For RDMA (iSER) Support
iser-freebsd on GitHub
Contact: Max Gurtovoy <maxg at mellanox.com>
Contact: Sagi Grimberg <sagig at mellanox.com>
Building on the new in-kernel iSCSI initiator stack released in FreeBSD
10.0 and the recently added iSCSI offload interface, Mellanox
Technologies has begun developing iSCSI extensions for RDMA (iSER)
initiator support to enable efficient data movement using the hardware
offload capabilities of Mellanox's 10, 40, 56 and 100 Gigabit
Remote Direct Memory Access (RDMA) has been shown to have a great value
for storage applications. RDMA infrastructure provides benefits such as
Zero-Copy, CPU offload, Reliable transport, Fabric consolidation, and
many more. The iSER protocol eliminates some of the bottlenecks in the
traditional iSCSI/TCP stack, provides low latency and high throughput,
and is well suited for latency aware workloads.
This work includes a new ICL module that implements the iSER initiator.
The iSCSI stack is slightly modified to support some extra features
such as asynchronous IO completions, unmapped data buffers, and
data-transfer offloads. The user will be able to choose iSER as the
iSCSI transport with iscsictl.
The project is in its beta phase. Recent additions include:
* Rebased on top of 11-CURRENT (r284921)
* Added discovery over iSER support
* HA and automatic session re-establishment support
* Split iSER from iSCSI module
In addition, the iser driver has been and continues to be thoroughly
tested. The test suite includes:
* FS tests
* compliance tests
* traffic failover/failback
* session recovery
* dynamic module load/unload
The code is ready for inclusion and will be released under the BSD
This project is sponsored by Mellanox Technologies.
Multipath TCP for FreeBSD
MPTCP Project Website
Contact: Nigel Williams <njwilliams at swin.edu.au>
Multipath TCP (MPTCP) is an extension to TCP that allows for the use of
multiple network interfaces on a standard TCP session. The addition of
new addresses and scheduling of data across these occurs transparently
from the perspective of the TCP application.
The goal of this project is to deliver an MPTCP kernel patch that
interoperates with the reference MPTCP implementation, along with
additional enhancements to aid network research.
The patch now supports the core mechanisms of the MPTCP protocol
(multi-address operation, data-level retransmission, etc).
Recent additions include improved socket-option handling and the
transfer of some logging output to DTRACE. The patch has been updated
to build against r285254 of HEAD.
A patch (v0.5) is currently being tested and will be made available to
the public shortly, with a plan to release further patches on a more
frequent basis following that.
This project is sponsored by FreeBSD Foundation.
1. Complete documentation and testing for release of the v0.5 patch.
2. Release Technical Report describing the implementation of v0.5.
OpenBSM: Open Source Basic Security Module (BSM) Audit Implementation
openbsm on GitHub
Contact: Robert Watson <rwatson at FreeBSD.org>
Contact: Christian Brueffer <brueffer at FreeBSD.org>
Contact: TrustedBSD audit mailing list
<trustedbsd-audit at TrustedBSD.org>
OpenBSM is a BSD-licensed implementation of Sun's Basic Security Module
(BSM) API and file format. It is the user space side of the CAPP Audit
implementations in FreeBSD and Mac OS X. Additionally, the audit trail
processing tools are expected to work on Linux.
After a period of dormancy, the project is slowly picking up steam
again. The OpenBSM source code repository was migrated from FreeBSD's
Perforce server to GitHub. We hope this will make the code more
accessible and stimulate outside contributions. In addition to the
repository migration, automated build testing using Travis CI has been
enabled, and initial steps towards a new test release have been made.
1. Test the code on GitHub on different releases of Mac OS X and
Linux. Especially testing on Mac OS X 10.9 (Mavericks) and newer
would be greatly appreciated.
OPNsense source code
Contact: Franco Fichtner <franco at opnsense.org>
Contact: Ad Schellevis <ad at opnsense.org>
Contact: Jos Schellevis <jos at opnsense.org>
OPNsense is a fork of pfSense that aims to follow FreeBSD's code base
and ecosystem quickly and closely while retaining the parent's powerful
firewall capabilities. The new 15.7 release includes efforts such as
firmware upgrades and packaging fully based on pkg, weekly security
updates, the replacement of ALTQ-based traffic shaping with
IPFW/dummynet, and production-ready LibreSSL integration as an
alternative to OpenSSL.
Contributors and testers are welcome as we work on redesigning plugin
support, rework the GUI according to modern coding standards (MVC) and
This project is sponsored by Deciso.
Contact: Edward Tomasz Napierała <trasz at FreeBSD.org>
One of the long missing features of FreeBSD was the ability to boot
with a temporary rootfs, configure the kernel to be able to access the
real rootfs, and then replace the temporary root with the real one. In
Linux, the functionality is known as pivot_root. The reroot project
aims to provide similar functionality in a different, slightly more
user-friendly way: rerooting. Simply put, from the user point of view
it looks like the system performs a partial shutdown, killing all
processes and unmounting the rootfs, and then partial bringup, mounting
the new rootfs, running init, and running the startup scripts as usual.
The project is in the late implementation phase. A working prototype
was written, and work is in process to rewrite it in an architecturally
This project is sponsored by The FreeBSD Foundation.
1. Complete debugging
Contact: Jason Edwards <sub.mesa at gmail.com>
ZFSguru is a multifunctional server appliance with a strong emphasis on
storage. ZFSguru began as simple web-interface frontend to ZFS, but has
since grown into a FreeBSD derivative with its own infrastructure. The
scope of the project has also grown with the inclusion of add-on
packages that add functionality beyond the traditional NAS
functionality found in similar product like FreeNAS and NAS4Free.
ZFSguru aims to be a true multifunctional server appliance that is
extremely easy to set up and can unite both novice and more experienced
users in a single user interface. The modular nature of the project
combats the danger of bloat, whilst still allowing extended
functionality to be easily deployed.
The ZFSguru project is nearing the release of version 0.3, a major
milestone for the project. In this new version, major work has been
done on fundamentals. An overview:
* New build infrastructure allows for frequent releases of system
images and services in a semi-automated way.
* New GuruDB database allows for a growing number of system images
and servers, and provides good caching to accelerate pages.
* Redesigned installation procedure, and addition of new
distributions Root-on-RAM and Root-on-Media aside from the already
* Both LiveCD and USB images will be provided. The USB image also has
UEFI boot support working alongside the regular MBR boot support so
both are available.
* Many overhauled libraries and additions to the web interface.
* Many improvements to services, such as the new Gnome 3 graphical
ZFSguru version 0.3 will be released on the first of August.
1-Wire Kernel Driver Implementation
1-Wire Stuff: Basics and Temperature
Contact: Warner Losh <imp at FreeBSD.org>
This is a kernel driver implemetation of the Dallas Semiconductor
1-Wire bus in a generic fashion. While temperature sensors are the only
devices initially supported, other devices should be easy to add.
Multiple devices on one bus are supported. Both normal and overdrive
modes are supported.
Multiple temperature sensors have been well tested, but there is a high
bit error rate. There are indications that this is due to bad bit-read
times. The code is written with enough resilience to cope with the
problem by retrying, and the error rate is low enough that a couple of
retries paper over many marginal issues.
1. Implement the overdrive device. Add overdrive capability to owc and
provide an own method to allow the presentation drivers to know
when it is safe to use the overdrive ROM commands.
2. Implement the Identification device. This device just has a class
of 1 and no registers.
3. Implement non-FDT gpiobus attachment.
4. Test overdrive timings.
5. Implement other attachments for things like serial port or
specialized 1-Wire controllers.
6. Use the system clock to implement more precise delays to improve
the error rate.
7. Use interrupt mode for GPIO pins to time the transitions of the
line to determine the bit values without busy waiting. Use
FreeBSD's fine-grained sleeping to do the same for write-one and
8. Review the code at the URL above.
9. Test the code on a device other than a RPi, RPi 2, or BeagleBone
10. Test the code on architectures besides armv6.
11. Implement streamlined temperature mode where the convert_t command
is broadcast and a callback reads the values for all the devices
detected on the bus.
12. Implement parasitic power mode.
Adding PCIe Hot-plug Support
PCIe Hot-plug P4 Branch
Commit adding bridge save/restore.
Github branch with patches
Contact: John-Mark Gurney <jmg at FreeBSD.org>
PCI Express (PCIe) hot-plug is used on both laptops and servers to
allow peripheral devices to be added or removed while the system is
running. Laptops commonly include hot-pluggable PCIe as either an
ExpressCard slot or a Thunderbolt interface. ExpressCard has built in
USB support that is already supported by FreeBSD, but ExpressCard PCIe
devices like Gigabit Ethernet adapters and eSATA cards are only
supported when they are present at boot, and removal may cause FreeBSD
The goal of this project is to allow these devices to be inserted and
removed while FreeBSD is running. The work will provide the basic
infrastructure to support adding and removing devices, though it is
expected that additional work will be needed to update individual
drivers to support hot-plug.
Current testing is focused on getting a simple UART device functional.
Basic hot swap is functional.
A set of the patches is now available on github.com.
This project is sponsored by The FreeBSD Foundation.
1. Get suspend/resume functional by save/restoring necessary
registers. This should be addressed by r281874.
2. Make sure that upon suspend, devices are removed so that any
hardware changes made while the machine is suspended are correctly
3. Improve how state transitions are handled, possibly by using a
proper state machine.
CloudABI: Capability-Based Runtime Environment
CloudABI on GitHub
FreeBSD patchset on GitHub
Contact: Ed Schouten <ed at FreeBSD.org>
CloudABI is a compact UNIX-like runtime environment that is purely
based on capability-based security (Capsicum). All features that are
incompatible with this model have been removed. Advantages of using a
pure capability-based environment include improved security,
testability, and reusability. CloudABI should make it possible to run
arbitrary third-party executables directly on top of FreeBSD without
any impact on system security, making it a good building block for a
cluster/cloud computing setup. See the project on GitHub for a more
Last month I added a number of packages for the FreeBSD Ports tree. We
now have a full C/C++ cross compiler that can be installed very easily
(devel/cloudabi-toolchain). I also imported a tool called cloudabi-run
that can be used to start programs safely, only granting access to
files and network sockets listed in the program's configuration file
I have also imported some kernelspace modifications into the FreeBSD
source tree for executing CloudABI programs. After all of these changes
have been imported, just loading a kernel module will allow executing
CloudABI programs. Right now, the "cloudabi" branch on GitHub is still
This project is sponsored by Nuxi, the Netherlands.
1. Polish up the kernelspace modifications and send them out for
2. Complete the Linux and NetBSD kernel patchsets and send those out
to the respective maintainers.
Rewritten PCID Support
Contact: Konstantin Belousov <kib at FreeBSD.org>
A Process-Context Identifier (PCID) is a performance-enhancing feature
of the Translation Lookaside Buffer (TLB) on Intel processors,
introduced with the Sandy Bridge micro-architecture. It allows the TLB
to simultaneously cache translation information for several address
spaces, and gives an opportunity for the operating system context
switch code to avoid flushing the TLB upon process switch. Each cached
translation is tagged with some context identifier, and at context
switch time, the operating system instructs the processor which context
is becoming active. The feature slightly reduces context switch time by
avoiding TLB flushes, and more importantly, reduces the warm-up period
for a thread after context switch.
FreeBSD already used PCID, but the existing implementation had several
shortcomings. The amd64 pmap (the machine-dependent portion of the
virtual memory subsystem) maintained a bitmap of all CPUs which ever
loaded a translation for the given address space, and avoided TLB flush
on the context switch. The bitmap was used to direct Inter-Processor
Interrupts to the marked CPU when the operating system needed to
perform TLB invalidation. The most significant deficiency of the old
implementation was the increase of TLB invalidation IPIs, since the
bitmap could only grow until a full TLB shootdown was performed. It
increased the TLB rate, which negated the positive effects of avoiding
TLB flushes on large machines. Secondarily, the bitmap maintenance in
both the pmap and the context code was quite complicated, leading to
bugs. These issues resulted in the PCID feature being disabled by
The new PCID implementation uses an algorithm described in the
U. Vahalia book "UNIX Internals: The New Frontiers". The algorithm is
already used, for example, by the MIPS pmap for assigning Address Space
Identifiers (ASIDs) to software-managed TLB entries. The pmap maintains
a per-CPU generation count, which is assigned to the next unused PCID
when the context is activated on CPU. TLB invalidation includes
resetting the generation count, which causes reallocation of the PCID
when a context switch is performed. As result, the new implementation
issues exactly the same amount of shootdown IPIs as a pmap which does
not utilize PCID.
Another change included with the PCID rewrite is a move of the address
space switching code from assembler to C source, making the algorithm
easier to understand and validate.
Measurements done with hwpmc(4) on a Haswell machine indicated that the
new implementation reduced the TLB miss rate by up to 10 times, without
an increase in TLB shootdown IPIs.
The rewrite was committed to HEAD at r282684.
Note: AMD processors do not have the PCID feature for host paging (AMD
provides ASIDs for SVM use). But it is likely that AMD processors do
cache TLB translations for different address spaces transparently, and
snoop writes to the page tables to invalidate the caches.
This project is sponsored by The FreeBSD Foundation.
Sleep States Enhancements on x86
Contact: Konstantin Belousov <kib at FreeBSD.org>
The ACPI specication defines CPU Cx states, which are idle states.
Methods to enter the state and miscellaneous information like the
state-leave latency are returned by the _CST ACPI method. To save
energy and reduce useless heating, the operating system enters a Cx
state when the CPU has no work to do. C0 is the non-idle state, while
C1, C2, and C3 (defined by ACPI) each represent an idle state with
sequentially more energy saving, but also with higher latency of leave
and possibly greater secondary costs. For example, C1 is entered by
executing the HLT instruction and has no architecturally visible side
effects, while entering C3 drops the CPU cache and usually requires
special chipset programming to correctly handle requests from I/O
devices to the CPU. Do not confuse Cx, Px and Sx: Cx states are only
meaningful when the system is in the fully operational state S0; Px
states are only meaningful when the system is not in the idle state,
Modern Intel CPUs enter Cx (x >= 1) states with the dedicated
instruction MWAIT, which enters a specified low-power state until a
specific write is observed by the CPU bus logic. There is a
complimentary MONITOR instruction to set the monitored bus address. The
legacy port I/O method of entering Cx state is emulated by CPU
microcode, which intercepts the port I/O and executes MWAIT internally.
Using MWAIT as the method of entering Cx requires following
processor-specific procedures, which are communicated to the operating
system by the vendor-specific extensions in _CST. The operating system
must indicate readiness to support MWAIT when calling _CST. Claimed
benefits of using MWAIT are reduced latencies of leaving the idle
state, and visibility of more deep states than defined by the common
ACPI specification. Still, modern Intel platforms report deep states as
C2 to avoid the not needed bus-mastering avoidance.
The new code asks ACPI for the Intel vendor-specific _CST extensions,
parses them, and uses MWAIT Cx entrance methods when available. The
change was committed as r282678 to HEAD.
For Linux, Intel provides a driver which does not depend on the ACPI
tables to use MWAIT for entering Cx states. For all Intel CPUs after
Core2, the driver contains the description of the Cx mode latencies and
quirks, eliminating dependency on correct BIOS information, since the
BIOS information is often incorrect. The approach of porting the Linux
driver was considered by several people, but all evaluators
independently concluded that the project cannot maintain such an
approach without direct involvement from Intel.
During the work, around 500 lines of identical code between the i386
and amd64 versions of idle handling were moved to a common location
x86/x86/cpu_machdep.c. Now the i386 and amd64 machdep.c files contain
only unique machine-dependent routines. This advance depended on John
Baldwin's elimination of the unmaintained Xen PVM i386 port.
This project is sponsored by The FreeBSD Foundation.
Warner's ARMv6 Hard Float Experiment
Moving armv6 from Soft Float to Hard Float
Contact: Warner Losh <imp at FreeBSD.org>
The plan for the transition to hard float on ARMv6 involved having a
new MACHINE_ARCH. That seemed expedient, but inelegant to me. The
kernel can easily run both soft and hard floating point binaries,
assuming that the proper libraries are available.
As an experiment, I have been investigating how hard it would be to
just start generating hard float binaries starting with FreeBSD 11.0
and what issues this causes. I am most interested in the source, the
effects on ports, and any binary/package upgrade issues from FreeBSD
10.X to 11.
If successful, this will allow the project to move more quickly away
from a soft-floating point default. Users upgrading from FreeBSD 10
will automatically be upgraded to hard float. All supported ARMv6 and
ARMv7 processors have hardware floating point, so this will not be a
problem for the vast majority of users. In addition, many of the build
scripts know about all values of MACHINE_ARCH, and not changing the
MACHINE_ARCH will allow those scripts to continue to function without
I am about three fourths of the way through investigating this
possibility and coding up solutions to the problems encountered so far.
The risks from this experiment are that it will encounter unforseen
dependencies. This could force us to go with the original plan for
migration to hard floating point.
The hope for this experiment is to pave the way for using the superior
hard floating point in FreeBSD 11 with minimal impact to our users and
their current build scripts and processes. Backwards compatibility will
be ensured with the libsoft tasks if users need to run FreeBSD 10.X
ARMv6 softfloat binaries on FreeBSD 11.0 with its new hardfloat
libraries. Packages should automatically update once the new hardfloat
packages are put into place.
1. Building seat belts into ld.so to not cross-thread libraries of
differing floating point implementations.
2. Clang should properly mark hard versus soft floating point .os.
This is a minor issue, since ld handles things correctly.
3. libsoft, the analog of lib32, needs to be completed.
4. Patches to flip the switch from soft to hard for builds for armv6.
Some additional code needed to build soft float may be needed for
the prior task.
FreeBSD on Cavium ThunderX (arm64)
FreeBSD Wiki: arm64 page
Video: FreeBSD on the 48-core ThunderX (ARMv8)
Contact: Dominik Ermel <der at semihalf.com>
Contact: Wojciech Macek <wma at semihalf.com>
Contact: Michal Stanek <mst at semihalf.com>
Contact: Zbigniew Bodek <zbb at semihalf.com>
Since the previous report, ThunderX gained SMP support and FreeBSD is
now running on 48 real-life ARMv8 CPU cores! The newly introduced
functionality was based on initial foundational work submitted by
Andrew Turner and Robin Randhawa, with emulation as the primary target.
Semihalf's efforts focused on hardware, and include:
* Multicore support for the newer Generic Interrupt Controller GICv3
* Numerous bug fixes for:
+ pmap(9) - memory attributes and TLB management
+ locore.S - secondary core initialization
+ IPI (inter-processor interrupts)
+ Per-CPU timers
+ Size of early UMA allocations
+ Cache maintenance
+ Exceptions handling
+ Stack issues
* ThunderX-specific changes and quirks
This support was introduced to the public at the FreeBSD 2015 Developer
Summit in Ottawa at a demo held by Semihalf and the FreeBSD Foundation.
Cavium's ThunderX server CRB (Customer Reference Board) is now capable
of booting SMP FreeBSD from both the hard disk and from an NFS root
using a PCIe networking card. The example setup is now available on the
FreeBSD test cluster hosted at Sentex Communications.
ThunderX support changes are currently being reviewed and integrated
into mainline FreeBSD.
This project is sponsored by The FreeBSD Foundation, ARM Ltd., Cavium,
1. Upstream ThunderX support to FreeBSD HEAD
2. Support for multi-socket configuration of ThunderX (96 CPUs
connected through coherent fabric)
3. Implement VNIC support (ThunderX networking controller)
FreeBSD arm64 wiki
Contact: Andrew Turner <andrew at FreeBSD.org>
Contact: Ed Maste <emaste at FreeBSD.org>
Contact: Ruslan Bukin <br at FreeBSD.org>
Since the last status report, support for building FreeBSD for AArch64
(arm64) has been committed to Subversion. This has initially been
targeting qemu, with more hardware support being added after review.
Support for ACPI, SMP, DTrace, and hwpmc has been added. ACPI is able
to enumerate devices and get to the mountroot prompt. Further work is
needed to get into userland. SMP has been tested on qemu with two
cores, and work is under way to support SMP on hardware. The hwpmc
driver includes support for the Cortex-A53, Cortex-A57, and Cortex-A72
cores from ARM.
Poudriere has been used with user-mode qemu to test building packages.
Over 14,000 ports were successfully built. A number of issues have been
found and fixed from this first run. These fixes should unblock about
5,000 additional ports.
This project is sponsored by The FreeBSD Foundation, ABT Systems Ltd,
and ARM Ltd.
1. Port to more SoCs
2. Test Poudriere on native hardware
Cleanup on pw(8)
Contact: Baptiste Daroussin <bapt at FreeBSD.org>
pw(8) is the utility to create, delete, and modify users. This tool has
remained mostly untouched since its creation, but needed updating.
Lots of cleanup has been done:
* Deduplication of code
* Reduction of complexity by splitting into smaller functions
* Reuse of existing code in base:
+ sbuf(9) for buffered string
+ stringlist(3) for string arrays
+ gr_utils (from libutil) instead of homemade group manipulation
+ strptime(3) to parse time strings
* Added validation on most input options, fixing some serious bugs
due to bad usage of atoi(3)
* many regression tests added to test for regressions due to all of
A new feature was added: pw -R rootdir cmd which allows cross
manipulation of users.
1. More cleanup.
2. More regression tests.
3. LDAP support?
KDE on FreeBSD
KDE on FreeBSD website
KDE ports staging area
KDE on FreeBSD wiki
KDE/FreeBSD mailing list
Development repository for integrating KDE 5
Contact: KDE on FreeBSD team <kde at FreeBSD.org>
The KDE on FreeBSD team focuses on packaging and making sure that the
experience of KDE and Qt on FreeBSD is as good as possible.
Brad Davis has been working on CMake, resulting in an update to version
3.2.3 being committed to ports.
Overall, we have updated the following ports in this quarter:
* CMake 3.2.3 (committed to ports)
* Qt 4.8.7 (committed to area51)
* Qt 5.4.1 (refinements committed to ports)
1. Put more effort into the Qt5-related ports: KDE Frameworks 5
(currently worked on by Tobias Berner) and PyQt 5.
Contact: Bryan Drewery <bdrewery at FreeBSD.org>
Contact: Ports Management Team <portmgr at FreeBSD.org>
Contact: Sean Bruno <sbruno at FreeBSD.org>
With the help of the FreeBSD Foundation providing more build servers,
we have increased the build frequency of packages from weekly to about
every other day. Packages are provided for all currently supported
releases and head on i386 and amd64 from the ports head branch, and
quarterly packages for FreeBSD 10.1 and 9.3 release branches.
We are using eight different systems for building packages. The build
process has been fully automated and is more fault tolerant now. More
details on this will be available in an upcoming FreeBSD Journal
article. About eleven servers are used for daily test builds. To make
it simpler for everyone to find the status and results of these builds,
pkg-status.FreeBSD.org has been developed by Bryan Drewery. Its intent
is to show all systems and builds in nearly real-time. It is currently
in a beta stage and will be improved over time. At the time of this
writing, it is temporarily down, but will be restored soon.
The FreeBSD Foundation purchased servers for the project to begin
building and providing ARM and MIPS packages. These packages are
currently built from x86 systems using QEMU. More details on this can
be found in the BSDCan 2015 Presentation. The work to do this has been
shepherded by Sean Bruno and has had help from many people including
but not limited to Juergen Lock, Stacey Son, Ed Maste, Peter Wemm,
Alexander Kabaev, Adrian Chadd, Baptiste Daroussin, Bryan Drewery,
Dimitry Andric, Andrew Turner, Warner Losh, Ian Lapore, and Brooks
We are currently targeting packages for head on mips, mips64 and armv6.
Each set takes one to two weeks to build on QEMU. They will be provided
on a best effort basis for now on the default repository of
This project is sponsored by FreeBSD Foundation (package building
1. Portmgr met at BSDCan and decided that the default package set
should be provided based on the Ports Quarterly branch. This will
provide more stable packages by default and allow users who wish to
have the bleeding edge to use the head packages. The Quarterly
branch is currently updated in full every three months from head
and otherwise receives security and critical fixes. Moving towards
this plan will also require a change to how we update the Quarterly
branch. More details will be provided later.
2. Performance and stability of QEMU continues to improve. Native
cross-building support in ports needs more work and testing to be
3. The package builds currently run from a crontab every other day.
Some of the builds take two hours (incremental), while others can
take up to 30 hours for a full build. An open task here is to
implement a better OS ABI check to see if incremental builds can be
done, or if a full rebuild is needed when an SA/EN comes out. The
plan for this is detailed at
Another open task is to implement a master queue coordinator to
start the next builds as soon as all others are done. This will
also allow improving the pkg-status site's view of everything.
The Ports Collection
Contributing to Ports
FreeBSD Ports Monitoring System
Ports Management Team
portmgr on Twitter
portmgr on Facebook
portmgr on Google+
Contact: Frederic Culot <portmgr-secretary at FreeBSD.org>
Contact: FreeBSD Ports Management Team <portmgr at FreeBSD.org>
As of the end of the second quarter, the ports tree holds nearly 25,000
ports and the PR count is about 1,800. Once again, the tree saw more
activity than during the previous quarter, with almost 8,000 commits
performed by 153 active committers. On the other hand, the number of
problem reports closed decreased slightly, with a bit less than 1,700
problem reports fixed.
In the second quarter, several commit bits were taken in for
safekeeping, following an inactivity period of more than 18 months
(clsung, dhn, obrien, tmseck), or on committer's request (sahil). Two
new developers were granted a ports commit bit (Michael Moll - mmoll@,
and Bernard Spil - brnrd@).
On the management side, pgollucci@ started his four-month term as
portmgr-lurker in June, and no changes were made to the portmgr team
during the second quarter.
This quarter also saw the release of the second quarterly branch,
namely 2015Q2. On this branch, 39 committers applied 305 patches, which
is more than twice as many updates as during the last quarter.
On the quality assurance side, 30 exp-runs were performed to validate
sensitive updates or cleanups. Amongst those noticeable changes are the
update to pkg 1.5.4, three new USES (waf, gnustep, jpeg), the Perl
default switch to 5.20, Ruby to 2.1.6, Firefox 38.0.6, and Chromium
1. As in the previous quarter, a tremendous amount of work was done on
the tree to update major ports and to close even more PRs than in
2015 Q1, but as always, any additional help is greatly appreciated!
The Graphics Stack on FreeBSD
Graphics stack roadmap and supported hardware matrix
Graphics stack team blog
Ports development tree on GitHub
Contact: FreeBSD Graphics Team <freebsd-x11 at FreeBSD.org>
The members of the graphics team were lacking spare time during this
quarter, and only few things could be improved.
Our ports development tree still holds an update to Mesa 10.6 along
with many cleanups and bug fixes. (It was 10.5 in the previous
quarterly report.) Initially, we planned to commit it in early July,
just after the FreeBSD 8.4-RELEASE end-of-life date, but the EOL was
delayed to the 31st of July. Therefore, we will send a Call For Testers
near the end of July, with the update to be committed in early August.
Of course, the update can still be obtained and tested directly from
the Ports development tree by using the mesa-next branch.
Several smaller updates to X.Org-related ports were committed to the
The work on the i915 kernel driver update made no progress during this
quarter due to the lack of free time. Fortunately, it can resume in Q3
with the hope to have something ready to test in September 2015.
The update to the DRM device-independent code was merged to stable/10.
This means it will be available in the upcoming FreeBSD 10.2-RELEASE.
Recently, the website hosting our blog has been down frequently. It is
again the case at the time of this writing. We exported the data the
last time it was up, so we will probably move to another system. Of
course, the URL will change as well.
1. See the Graphics wiki page for up-to-date information.
Wine on amd64 wiki
Contact: Gerald Pfeifer <gerald at FreeBSD.org>
Contact: David Naylor <dbn at FreeBSD.org>
This quarter has seen seven updates to the wine-devel port that closely
tracks upstream development as well as updates to its helper ports
(wine-gecko-devel and wine-mono-devel):
* Stable releases: 1.6.2 (1 port revision)
* Development releases: 1.7.40 through 1.7.46
The i386-wine-devel port has packages built for amd64 for FreeBSD 8.4,
9.1+, 10.1+ and CURRENT.
* Rename wine-compholio to wine-staging (to match upstream
Future development on Wine will focus on:
* Add the getdirentries(2) patch to the wine-devel port.
* Redevelop and upstream the getdirentries(2) patch.
* Redevelop and upstream the kernel32 Makefile patch.
* Add support to the i386-wine port for pkg 1.5 (library conflicts
currently prevent support).
* Add support for Windows 32-bit on Windows 64-bit (WoW64):
+ Reduce the i386-wine port to just the components required for
+ Rename the i386-wine port to wow64.
+ Make the wine ports depend on the wow64 ports when built on
+ Investigate and verify the interactions between Wine64 and
+ Investigate possible update approaches for the wow64 ports
(that have to be pre-compiled) and how updating with the wine
ports will work.
Maintaining and improving Wine is a major undertaking that directly
impacts end-users on FreeBSD (including many gamers). If you are
interested in helping please contact us. We will happily accept
patches, suggest areas of focus or have a chat.
1. Open Tasks and Known Problems (see the Wine wiki)
2. FreeBSD/amd64 integration (see the i386-Wine wiki)
3. Porting Windows 32-bit on Windows 64-bit (WoW64)
Xfce on FreeBSD
FreeBSD Xfce Project
FreeBSD Xfce Repository
Contact: FreeBSD Xfce Team <xfce at FreeBSD.org>
Xfce is a free software desktop environment for Unix and Unix-like
platforms, such as FreeBSD. It aims to be fast and lightweight, while
still being visually appealing and easy to use.
During this quarter, the team has kept these applications up-to-date:
* audio/xfce4-pulseaudio-plugin 0.2.3
* deskutils/orage 4.12.1
* deskutils/xfce4-notes-plugin 1.8.1
* misc/xfce4-weather-plugin 0.8.6
* science/xfce4-equake-plugin 1.3.7
* sysutils/xfburn 0.5.4
* sysutils/xfce4-power-manager 1.5.0 (committed to ports), 1.5.2
(committed to devel repository)
* x11/libexo 0.10.6
* x11/xfce4-dashboard 0.4.2
* x11-fm/thunar 1.6.10
* x11-wm/xfce4-desktop 4.12.2
* x11-wm/xfce4-wm 4.12.3
* www/midori 0.5.10
Mathieu Arnold (mat@) committed PR 197878, updating the Xfce section in
the Porter's Handbook.
We also follow the unstable releases (available in our experimental
* sysutils/garcon 0.5.0 (supports both GTK2 and GTK3 toolkits)
* x11/xfce4-dashboard 0.5.0
* x11/xfce4-hotcorner-plugin 0.0.2 (new plugin)
1. Create documentation for the usage of sysutils/xfce4-power-manager
(it needs some love, PR 199166).
Some hidden features were introduced in the 1.5.1 release, and as
we also support ConsoleKit2 (a fork of sysutils/consolekit), help
for users is required.
Documentation Working Group at BSDCan
FreeBSD Web Site
Annotator Backend Stores
Contact: FreeBSD Documentation Team <freebsd-doc at FreeBSD.org>
During the Developer Summit held in the two days before BSDCan, a
documentation working group meeting was held. We discussed some of the
biggest opportunities available to the documentation team.
Modernizing our translation system was, again, a major topic. Making it
easier for translators to do their work is vitally important.
Translations make FreeBSD much more accessible for non-English
speakers, and those people and the translators themselves often become
valuable technical contributors in other areas. Progress was made in
this area, and we hope to have more news soon.
Methods of making it easier for people to contribute to documentation
was another major topic. At present, we use DocBook XML for articles
and books, and mdoc(7) for man pages. These markup languages are not
very welcoming for new users. There are simpler documentation markup
languages like reStructured Text (RST), Markdown, and AsciiDoc that
take less time to learn and use. In fact, these markup systems are all
similar to each other. These systems tend to be more oriented towards
visual appearance rather than the semantic markup of our present
systems, although there might be ways to work around that.
Following the theme of making contributing easier, we also discussed
whether access to the FreeBSD Wiki can be more easily granted,
facilitating user contributions. After the wiki was set up, automated
account creation abuse forced access to be limited. It is tricky to
allow submissions yet keep the quality of submitted information
Due to the markup systems used, it is difficult to review documents for
allows adding notes to an existing web page. This would allow us to
hold content-only reviews of documentation web pages. Reviewers would
not see markup, so they could concentrate only on whether the
information was accurate and complete. To use this as desired, we need
some help with ports and testing.
1. Complete a port for the backend storage component of Annotator.
Preferably this would be the lowest overhead and most open-licensed
version available. Assistance from those familiar with Python and
FreeBSD Mastery: ZFS Now Available
FreeBSD Mastery: ZFS
Michael W. Lucas
Contact: Michael Lucas <mwlucas at michaelwlucas.com>
The first ZFS book is now available at your favorite bookstore. Find a
whole bunch of links at zfsbook.com.
Work is proceeding apace on "FreeBSD Mastery: Advanced ZFS" and
"FreeBSD Mastery: Specialty Filesystems." Lucas hopes to have FMAZ
complete and available before the next status report.
Leap Seconds Article
Leap Seconds Article
Contact: Warren Block <wblock at FreeBSD.org>
As the leap second scheduled for the end of June approached, Bartek
Rutkowski and others raised questions about how FreeBSD handled leap
seconds. Leap seconds have caused serious problems for other operating
systems in the last few years, and there was understandable concern.
It was reasonably pointed out that FreeBSD had encountered leap seconds
before, and would be fine this time also. Still, the absence of
reported problems is not really a substitute for a description of what
to expect and how to know if a system is prepared.
To address concerns and also provide a resource for future leap
seconds, several experts were pestered relentlessly, with the results
compiled into a short article. Beyond merely allaying fears about what
might happen, this article received positive responses on the web for
how it demonstrated FreeBSD's maturity and preparedness.
Great thanks for their patience and expertise are owed to Peter Jeremy,
Poul-Henning Kamp, Ian Lepore, Xin LI, Warner Losh, and George
1. Compile other short articles on things that FreeBSD does really
well. Of particular interest are features that make life easier for
sysadmins, or how problems on other systems are dealt with or even
made non-problems on FreeBSD.
New Documentation Committers
FreeBSD Porter's Handbook
FreeBSD Web Site
FreeBSD Foundation Web Site
Contact: FreeBSD Documentation Engineering Team <doceng at FreeBSD.org>
Two new documentation committers were added to the team in the second
quarter of 2015.
Mathieu Arnold is a member of the FreeBSD Ports Management Team. Over
the past year, he has worked on many large and complex updates to keep
the Porter's Handbook current, and continues to update this important
Anne Dickison is Marketing Director for the FreeBSD Foundation. She
will focus on updating and improving the FreeBSD main web site.
We welcome both new committers and look forward to their additional
The FreeBSD German Documentation Project
Main German Documentation Project page
How you can help with German translations
Contact: Björn Heidotting <bhd at FreeBSD.org>
Contact: Johann Kois <jkois at FreeBSD.org>
Contact: Benedict Reuschling <bcr at FreeBSD.org>
The FreeBSD German Documentation project maintains the German
translations of FreeBSD's documents such as the Handbook and the
In the second quarter of 2015, we managed to catch up with the
translation work of the Handbook. Two chapters are now back in sync
with their English reference chapters: filesystems and ZFS. The former
was mainly done by Björn Heidotting as part of his mentee process. The
latter was done by Benedict Reuschling, with valuable corrections by
Additionally, we updated many of our translation markers from pre-SVN
times. This will help us get an overview of the outstanding work in
each chapter. We are working on integrating this into our website using
a script, so people can see which chapters need the most work or are
Johann made efforts to update the FreeBSD Documentation Project Primer
as well, so that translators willing to help us can read the
information in German. He also made efforts to revive the Documentation
Project website, which was previously hosted elsewhere, but
disappeared. Now, it is tied into the German FreeBSD.org website again
and has the same look and feel.
Occasionally, people contact us and offer their help with the
translation effort. We are happy to help newcomers get to know
everything about the translation process and look forward to more
contributions. Even small updates make a big difference and if you are
considering helping, please contact us.
1. Continue translating the Handbook and website into German.
2. Integrate a script that shows outstanding work into the German
GSoC 2015: libc Security Extensions
Project Wiki Page
Code Review Differential
Contact: Pedro Giffuni <pfg at FreeBSD.org>
Contact: Oliver Pinter <op at FreeBSD.org>
As part of this year's Google Summer of Code, we have been adding
support for the _FORTIFY_SOURCE extension to libc. This extension uses
the GCC builtin_object_size information to prevent buffer overflows in
existing code. The compiler and the C library can effectively detect a
set of common programming mistakes.
A mixed version of the NetBSD and Android implementations has been
ported and is currently undergoing heavy testing. On FreeBSD, this code
has already found two small bugs. On the other hand, the FreeBSD
codebase is extremely useful to test the framework.
This project is sponsored by Google Summer of Code Program.
1. Code review and more buildworld testing with GCC.
2. Integration tests, especially on non-x86 platforms.
3. Documentation: the framework is relatively popular on GNU libc but
we still have to work on better documentation.
4. Testing and possibly integrating with ports.
5. We will have to re-schedule the GSoC project, as we were expecting
to spend less time on this.
Multiqueue Testing Project
Contact: Tiwei Bie <btw at FreeBSD.org>
Contact: Hiren Panchasara <hiren at FreeBSD.org>
The aim of this project is to design and implement an infrastructure to
validate that a number of the network stack's multiqueue behaviours are
It mainly consists of extending tap(4) to provide the same RSS
behaviours as the hardware multiqueue network cards, developing simple
test applications using multiqueue tap(4) and socket(2), adding hooks
in each layer of the network stack to collect the per-ring per-cpu
per-layer statistics, and extending netstat(1) to report these
At present, most parts of this project have been implemented. The focus
is on the code review, and API/KPI freeze.
This project is sponsored by Google Summer of Code 2015.
BSDCan 2015 Video Playlist
Contact: Dan Langille <dvl at FreeBSD.org>
BSDCan, a conference for people working on and with 4.4BSD-based
operating systems and related projects, was held in Ottawa, Ontario on
June 12 and 13. A two-day FreeBSD developer summit event preceded it on
June 10 and 11.
This was the largest BSDCan ever, with over 280 attendees, up by more
than 40 people over the 2014 event. There were a record number of
speakers and talks. An additional room and "track" was added to provide
even more choices for concurrent talks on both days of the conference.
Social media response to the whole conference has been very positive.
The keynote talk by Stephen Bourne was very popular. So popular, in
fact, that the main conference room could not hold all the attendees.
An overflow room with live video was set up to hold the extra people.
The video of the presentation has had over 6300 views in the first
Andrew Tanenbaum's talk on reimplementing NetBSD using a MicroKernel
was so well-attended it was standing room only.
There were many other excellent talks, and we recommend browsing
through the playlist in the links above.
Activity was not limited to the talks. Each night, the "Hacker Lounge"
was used by developers to cooperate and interact on projects. Embedded
projects were popular this year, as FreeBSD was installed directly on
The very successful and well-attended closing event, held at the
Lowerton Brewery, provided an elegant closure to the whole conference.
We would like to thank everyone who made BSDCan 2015 such a success,
and look forward to next year!
FreeBSD Support in pkgsrc
pkgsrc home page
BulkTracker: Track bulk build status
Blog posts on pkgsrc
Contact: Sevan Janiyan <venture37 at geeklan.co.uk>
pkgsrc is a fork of the FreeBSD Ports Collection by the NetBSD project
with a focus on portability and multi-platform support. At present,
pkgsrc supports building packages on 23 different platforms from a
single tree, including FreeBSD
While pkgsrc is not a replacement for ports in most use cases, it holds
a unique position in mixed-platform environments where software needs
to be the same version across all systems and built in a consistent
manner, saving the user from having to resort to manually building
programs or re-implementing a mechanism to do so.
With the recent 2015Q2 release earlier this month, it is now possible
to generate over 14000 packages on FreeBSD 10.1-RELEASE (up from 12800
Work is in progress to add pkg support to pkgsrc.
1. Improve platform support to skip libusb on FreeBSD where libusb is
bundled in base. This is causing the biggest breakage at the
2. Expand the effort to the -STABLE and -CURRENT branches and, if
possible, architectures other than amd64. Contributing shell access
to such machines would be helpful (an unprivileged account is
The FreeBSD Foundation
Contact: Deb Goodkin <deb at FreeBSDFoundation.org>
The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated
to supporting and promoting the FreeBSD Project and community
worldwide. Funding comes from individual and corporate donations and is
used to fund and manage development projects, conferences and developer
summits, and provide travel grants to FreeBSD developers. The
Foundation purchases hardware to improve and maintain FreeBSD
infrastructure and publishes FreeBSD white papers and marketing
material to promote, educate, and advocate for the FreeBSD Project. The
Foundation also represents the FreeBSD Project in executing contracts,
license agreements, and other legal arrangements that require a
recognized legal entity.
Here are some highlights of what we did to help FreeBSD during the last
* We were a Platinum Sponsor for BSDCan 2015 and the sponsor for the
Ottawa developer and vendor summits. We were pleased to provide 12
travel grants for FreeBSD contributors to attend the conference and
have opportunities to meet face-to-face with other FreeBSD
contributors. You can read some of their trip reports here.
In celebration of our 15th anniversary we provided a delicious
FreeBSD cake, which was happily devoured by conference attendees.
Various Foundation team members gave talks, attended talks,
participated in doc sprints, worked on efforts to improve FreeBSD,
worked at our booth, and spent time talking to our constituents
about areas where we can help with FreeBSD.
Foundation members gave these talks:
+ Anne Dickison: "FreeBSD Advocacy: How you can spread the word"
+ Kirk McKusick: "An Introduction to the Implementation of ZFS"
+ George Neville-Neil: "Measure Twice, Code Once" and "Cambridge
L41: Teaching Advanced Operating Systems with FreeBSD"
+ Ed Maste: "The LLDB Debugger in FreeBSD" and Ed Maste also ran
the Vendor Summit.
* We held our annual board meeting in Ottawa. We are pleased to
announce the addition of Benedict Reuschling to our board of
directors. Read his interview here. The current board of directors
and officers were all re-elected. You can find out who is on our
board here. We spent the day planning our 12-month goals, project
roadmapping, FreeBSD education offerings, fundraising, and advocacy
* Dru Lavigne promoted and gave a presentation on FreeBSD at
LinuxFest Northwest 2015.
* We have committed to sponsoring several upcoming conferences:
vBSDCon, womENcourage 2015, EuroBSDCon 2015, Grace Hopper
conference, BSDCon Brasil, Cambridge Developer Summit, and OpenZFS.
You'll also find us at OSCON, July 21-23, and the SNIA Storage
Developer Conference, Sept 21-24.
So far, we have raised $361,000 for 2015 from over 500 donors.
Juniper became a Gold level donor. We are actively approaching
commercial FreeBSD users for Silver-plus donations, and asking
large tech companies for separate women in tech funding, to help us
recruit more women to the FreeBSD Project. We are also asking
companies for funding to help with our FreeBSD education efforts.
* We had the pleasure of hosting Groff the BSD Goat here in Colorado
* Infrastructure Support
The Foundation funded almost $50,000 of equipment to support
FreeBSD infrastructure. Most of this went towards new and upgraded
servers at the NYI facility. We sent Glen Barber there to install
the new servers. You can read all about his trip.
* Advocacy Work
The FreeBSD Journal has over 9200 subscribers, with a 98% renewal
rate. Our marketing director, Anne Dickison, was busy providing
advocacy work for the Project. She helped provide more FreeBSD
marketing literature and material. This included the cool I Choose
FreeBSD sticker and very popular I Love FreeBSD temporary tattoos
that are available at conferences. We published April, May, and
June Foundation Newsletters to highlight the work being done by the
Foundation to support FreeBSD. These newsletters also include
company FreeBSD testimonials, upcoming events where FreeBSD will be
promoted, and the new From the Trenches articles from FreeBSD
contributor experiences working with FreeBSD.
* One of the Foundation's responsibilities is to protect FreeBSD
intellectual property (IP). This includes protecting the FreeBSD
trademarks. We granted trademark usage permission to various
companies who want to show their support for FreeBSD. To get
permission to use the trademarks, interested parties must agree to
our Trademark Usage Terms and Conditions.
* Project Development Work
George Neville-Neil signed up new universities to look at the
FreeBSD course including George Washington University, Johns
Hopkins, and UC Santa Cruz. He is working with Verisign on the
DevSummit that will be held at vBSDCon. He also worked with ARM to
set up meeting with 18 hardware and silicon vendors at the ARM
Partner Meeting in August.
Ed Maste continued managing the FreeBSD/arm64 porting project. He
also continued with updates to the ELF Toolchain tools in the
FreeBSD base system and incorporated a set of fixes from the
upstream project to fix issues with the strip tool. Ed investigated
and fixed a set of outstanding issues with the new vt(4) console in
the FreeBSD installer.
Staff member Edward Napierała committed a number of bug fix merges
to the stable/10 branch for inclusion in FreeBSD 10.2, and
continued investigation of a project to support runtime switching
of the root file system. He merged a large number of improvements
to the autofs automount daemon. He also supported FreeBSD developer
Dmitry Chagin's work on 64-bit Linux binary emulation support by
reviewing the extensive patch set. Those changes are now committed
to FreeBSD's Subversion tree, and will arrive in FreeBSD 11.0.
Staff member Konstantin Belousov continued development on the Intel
DMA remap (DMAR) and Process Context Identifier (PCID)
infrastructure projects. Kostik also contributed an extensive set
of changes to multiple aspects of FreeBSD: stability improvements
in the virtual memory subsystem, improved compatibility in options
handling in the runtime loader, thread library improvements, and
GDB debugger enhancements.
Glen Barber, who is a Foundation employee, is also a release
engineer for the Project. Here are some highlights of what he did
to help the Project:
+ Added support to the release build code in 11-CURRENT for
producing FreeBSD/aarch64 (arm64) memory stick images and
virtual machine disk images for use within Qemu.
+ Worked with Colin Percival and Brad Davis on testing and
refining the release build code to support building Amazon EC2
images, and Vagrant images for Hashicorp Atlas, respectively.
+ Reworked the FreeBSD/arm build code to provide a fully-native
build infrastructure for the existing images (BEAGLEBONE,
RPI-B, PANDABOARD, WANDBOARD), and add support for additional
images (GUMSTIX, CUBOX/HUMMINGBOARD).
+ Wrote several additional utilities to reduce human error in
several areas of Release Engineering, including producing the
filesystem hierarchy used by the FTP mirrors, enhancements to
the internal build scripts used by Release Engineering, and
support for automatically uploading and publishing virtual
+ While attending BSDCan 2015, Glen worked with several
developers and teams on various items, such as discussing
packaging the base system with pkg(8), migrating internal
FreeBSD servers to the new machines the Foundation purchased
for the NYI facility, and discussing further possible future
enhancements to the FreeBSD build infrastructure.
+ Started the 10.2-RELEASE cycle.
ZFS Support for UEFI Boot/Loader
Contact: Eric McCorkle <emc2 at metricspace.net>
UEFI-enabled boot1.efi and loader.efi have been modified to support
loading and booting from a ZFS filesystem. The patch currently works
with buildworld, and successfully boots on a test machine with a ZFS
partition. In addition, the ZFS-enabled loader.efi can be treated as a
chainloader using ZFS-enabled GRUB.
The work on boot1.efi also reorganizes the code somewhat, splitting out
the filesystem-specific parts into a modular framework.
1. More testing is needed for the following use cases: ZFS with
GRUB+loader.efi, ZFS with boot1+loader.efi, UFS with
boot1+loader.efi (to test the modularization of boot1.efi)
2. Have boot1.efi check partition type GUIDs before probing for
3. Get patch accepted upstream and committed.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-----END PGP SIGNATURE-----
More information about the freebsd-stable