Introduction

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 so far.

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.

—Warren Block

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.

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

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 was sponsored by The FreeBSD Foundation (time and hardware).

Contact: FreeBSD Release Engineering Team <re@FreeBSD.org>

The FreeBSD Release Engineering Team is responsible for setting and publishing release schedules for official project releases of FreeBSD, announcing code freezes, and maintaining the respective branches, among other things.

The 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 exciting release.

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 archives.

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@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:

BEAGLEBONE

CUBOX/HUMMINGBOARD

GUMSTIX

RPI-B

RPI2 (FreeBSD-CURRENT only)

(FreeBSD-CURRENT only) PANDABOARD

WANDBOARD

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 now.

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 tools.

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 was sponsored by The FreeBSD Foundation.

Contact: FreeBSD Core Team <core@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 account.

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 day.

Contact: Shawn Webb <shawn.webb@hardenedbsd.org>

Contact: Oliver Pinter <oliver.pinter@hardenedbsd.org>

Contact: HardenedBSD <core@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 was sponsored by SoldierX.

Open tasks:

Update the aslr(4) manpage and the wiki page. Improve the Shared Object load order feature with Michael Zandi's improvements. Re-port the ASLR work to vanilla FreeBSD. Include the custom work requested by FreeBSD developers. Close the existing review on Phabricator. Open multiple smaller reviews for pieces of the ASLR patch that can be split out logically. Perform a special backport to HardenedBSD 10-STABLE for OPNSense to pull in. golang segfaults in HardenedBSD. Help would be nice in debugging.

Contact: Peter Grehan <grehan@FreeBSD.org>

Contact: Neel Natu <neel@FreeBSD.org>

Contact: Tycho Nightingale <tychon@FreeBSD.org>

Contact: Allan Jude <freebsd@allanjude.com>

Contact: Alexander Motin <mav@FreeBSD.org>

Contact: Marcelo Araujo <araujo@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:

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 Windows guests.

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.

Open tasks:

Improve documentation. bhyveucl is a script for starting bhyve instances based on a libUCL config file. More information at https://github.com/allanjude/bhyveucl. Add support for virtio-scsi . Flexible networking backend: wanproxy , vhost-net Support running bhyve as non-root. Add filters for popular VM file formats (VMDK, VHD, QCOW2). Implement an abstraction layer for video (no X11 or SDL in base system). Suspend/resume support. Live Migration. Nested VT-x support ( bhyve in bhyve ). Support for other architectures (ARM, MIPS, PPC).

Contact: Allan Jude <AllanJude@FreeBSD.org>

Contact: Dmitry Chagin <dchagin@FreeBSD.org>

Contact: Ed Maste <emaste@FreeBSD.org>

Contact: Edward Tomasz Napierała <trasz@FreeBSD.org>

Contact: Johannes Meixner <xmj@FreeBSD.org>

Contact: FreeBSD Emulation Team <emulation@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 was sponsored by Perceivon Hosting Inc., ScaleEngine Inc., and The FreeBSD Foundation.

Open tasks:

Test 64-bit Linux emulation on 11.0-CURRENT Backport 64-bit Linux emulation to 10-STABLE Review 64-bit CentOS 6 ports and merge changes Create/heavily update existing 64-bit CentOS 7 ports Anyone who would like to get in touch should not hesitate to contact any of the emulation@ team members. Similarly, a mail to emulation@FreeBSD.org is always welcome.

Contact: Max Gurtovoy <maxg@mellanox.com>

Contact: Sagi Grimberg <sagig@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 IB/Ethernet adapters.

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:

traffic

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 license.

This project was sponsored by Mellanox Technologies.

Contact: Nigel Williams <njwilliams@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 was sponsored by FreeBSD Foundation.

Open tasks:

Complete documentation and testing for release of the v0.5 patch. Release Technical Report describing the implementation of v0.5.

Contact: Robert Watson <rwatson@FreeBSD.org>

Contact: Christian Brueffer <brueffer@FreeBSD.org>

Contact: TrustedBSD audit mailing list <trustedbsd-audit@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.

Open tasks:

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.

Contact: Franco Fichtner <franco@opnsense.org>

Contact: Ad Schellevis <ad@opnsense.org>

Contact: Jos Schellevis <jos@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 privilege separation.

This project was sponsored by Deciso.

Contact: Edward Tomasz Napierała <trasz@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 nicer way.

This project was sponsored by The FreeBSD Foundation.

Open tasks:

Complete debugging

Contact: Jason Edwards <sub.mesa@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 supported Root-on-ZFS.

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 environment.

ZFSguru version 0.3 will be released on the first of August.

Contact: Warner Losh <imp@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.

Open tasks:

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. Implement the Identification device. This device just has a class of 1 and no registers. Implement non-FDT gpiobus attachment. Test overdrive timings. Implement other attachments for things like serial port or specialized 1-Wire controllers. Use the system clock to implement more precise delays to improve the error rate. 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 write-zero routines. Review the code at the URL above. Test the code on a device other than a RPi, RPi 2, or BeagleBone Black. Test the code on architectures besides armv6 . 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. Implement parasitic power mode.

Contact: John-Mark Gurney <jmg@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 to crash.

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 was sponsored by The FreeBSD Foundation.

Open tasks:

Get suspend/resume functional by save/restoring necessary registers. This should be addressed by r281874. Make sure that upon suspend, devices are removed so that any hardware changes made while the machine is suspended are correctly handled. Improve how state transitions are handled, possibly by using a proper state machine.

Contact: Ed Schouten <ed@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 detailed explanation.

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 (sysutils/cloudabi-utils).

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 required.

This project was sponsored by Nuxi, the Netherlands.

Open tasks:

Polish up the kernelspace modifications and send them out for review. Complete the Linux and NetBSD kernel patchsets and send those out to the respective maintainers.

Contact: Konstantin Belousov <kib@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 default.

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 was sponsored by The FreeBSD Foundation.

Contact: Konstantin Belousov <kib@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, C0.

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 was sponsored by The FreeBSD Foundation.

Contact: Warner Losh <imp@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 additional changes.

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.

Open tasks:

Building seat belts into ld.so to not cross-thread libraries of differing floating point implementations. Clang should properly mark hard versus soft floating point .o s. This is a minor issue, since ld handles things correctly. libsoft , the analog of lib32 , needs to be completed. 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.

Contact: Dominik Ermel <der@semihalf.com>

Contact: Wojciech Macek <wma@semihalf.com>

Contact: Michal Stanek <mst@semihalf.com>

Contact: Zbigniew Bodek <zbb@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 was sponsored by The FreeBSD Foundation, ARM Ltd., Cavium, and Semihalf.

Open tasks:

Upstream ThunderX support to FreeBSD HEAD Support for multi-socket configuration of ThunderX (96 CPUs connected through coherent fabric) Implement VNIC support (ThunderX networking controller)

Contact: Andrew Turner <andrew@FreeBSD.org>

Contact: Ed Maste <emaste@FreeBSD.org>

Contact: Ruslan Bukin <br@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 was sponsored by The FreeBSD Foundation, ABT Systems Ltd, and ARM Ltd.

Open tasks:

Port to more SoCs Test Poudriere on native hardware

Contact: Baptiste Daroussin <bapt@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 these changes

A new feature was added: pw -R rootdir cmd which allows cross manipulation of users.

Open tasks:

More cleanup. More regression tests. LDAP support?

Contact: KDE on FreeBSD team <kde@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)

Open tasks:

Put more effort into the Qt5-related ports: KDE Frameworks 5 (currently worked on by Tobias Berner) and PyQt 5.

Contact: Bryan Drewery <bdrewery@FreeBSD.org>

Contact: Ports Management Team <portmgr@FreeBSD.org>

Contact: Sean Bruno <sbruno@FreeBSD.org>

x86 Packages

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.

ARM/MIPS Packages

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 Davis.

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 pkg.FreeBSD.org .

This project was sponsored by FreeBSD Foundation (package building hardware).

Open tasks:

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. Performance and stability of QEMU continues to improve. Native cross-building support in ports needs more work and testing to be viable. 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 https://lists.freebsd.org/pipermail/freebsd-arch/2015-April/017025.html. 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.

Contact: Frederic Culot <portmgr-secretary@FreeBSD.org>

Contact: FreeBSD Ports Management Team <portmgr@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 43.0.2357.130.

Open tasks:

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!

Contact: FreeBSD Graphics Team <freebsd-x11@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 Ports tree.

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.

Open tasks:

See the Graphics wiki page for up-to-date information.

Contact: Gerald Pfeifer <gerald@FreeBSD.org>

Contact: David Naylor <dbn@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.

Accomplishments include:

Rename wine-compholio to wine-staging (to match upstream developments).

Future development on Wine will focus on:

Add the getdirentries(2) patch to the wine-devel port.

patch to the port. Redevelop and upstream the getdirentries(2) patch.

patch. Redevelop and upstream the kernel32 Makefile patch.

patch. Add support to the i386-wine port for pkg 1.5 (library conflicts currently prevent support).

port for 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 WoW64. Rename the i386-wine port to wow64 . Make the wine ports depend on the wow64 ports when built on amd64. Investigate and verify the interactions between Wine64 and WoW64. 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.

Open tasks:

Open Tasks and Known Problems (see the Wine wiki) FreeBSD/amd64 integration (see the i386-Wine wiki) Porting Windows 32-bit on Windows 64-bit (WoW64)

Contact: FreeBSD Xfce Team <xfce@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

0.2.3 deskutils/orage 4.12.1

4.12.1 deskutils/xfce4-notes-plugin 1.8.1

1.8.1 misc/xfce4-weather-plugin 0.8.6

0.8.6 science/xfce4-equake-plugin 1.3.7

1.3.7 sysutils/xfburn 0.5.4

0.5.4 sysutils/xfce4-power-manager 1.5.0 (committed to ports), 1.5.2 (committed to devel repository)

1.5.0 (committed to ports), 1.5.2 (committed to devel repository) x11/libexo 0.10.6

0.10.6 x11/xfce4-dashboard 0.4.2

0.4.2 x11-fm/thunar 1.6.10

1.6.10 x11-wm/xfce4-desktop 4.12.2

4.12.2 x11-wm/xfce4-wm 4.12.3

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 repository) of:

sysutils/garcon 0.5.0 (supports both GTK2 and GTK3 toolkits)

0.5.0 (supports both GTK2 and GTK3 toolkits) x11/xfce4-dashboard 0.5.0

0.5.0 x11/xfce4-hotcorner-plugin 0.0.2 (new plugin)

Open tasks:

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.

Contact: FreeBSD Documentation Team <freebsd-doc@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 usefully high.

Due to the markup systems used, it is difficult to review documents for the quality of their information. Annotator is a Javascript system that 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.

Open tasks:

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 Javascript web development is welcome.

Contact: Michael Lucas <mwlucas@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.

Contact: Warren Block <wblock@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 Neville-Neil.

Open tasks:

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.

Contact: FreeBSD Documentation Engineering Team <doceng@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 document.

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 contributions!

Contact: Björn Heidotting <bhd@FreeBSD.org>

Contact: Johann Kois <jkois@FreeBSD.org>

Contact: Benedict Reuschling <bcr@FreeBSD.org>

The FreeBSD German Documentation project maintains the German translations of FreeBSD's documents such as the Handbook and the website.

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 Björn.

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 most up-to-date.

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.

Open tasks:

Continue translating the Handbook and website into German. Integrate a script that shows outstanding work into the German documentation webpages.

Contact: Pedro Giffuni <pfg@FreeBSD.org>

Contact: Oliver Pinter <op@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 was sponsored by Google Summer of Code Program.

Open tasks:

Code review and more buildworld testing with GCC. Integration tests, especially on non-x86 platforms. Documentation: the framework is relatively popular on GNU libc but we still have to work on better documentation. Testing and possibly integrating with ports. We will have to re-schedule the GSoC project, as we were expecting to spend less time on this.

Contact: Tiwei Bie <btw@FreeBSD.org>

Contact: Hiren Panchasara <hiren@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 as expected.

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 statistics.

At present, most parts of this project have been implemented. The focus is on the code review, and API/KPI freeze.

This project was sponsored by Google Summer of Code 2015.

Contact: Dan Langille <dvl@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 twelve days.

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 wireless routers.

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!

Contact: Sevan Janiyan <venture37@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 last quarter).

Work is in progress to add pkg support to pkgsrc.

Open tasks:

Improve platform support to skip libusb on FreeBSD where libusb is bundled in base. This is causing the biggest breakage at the moment. 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 sufficient).

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. 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 quarter:

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 efforts.

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.

Fundraising 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 in April.

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 machine images. 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.



Contact: Eric McCorkle <emc2@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.

Open tasks: