[FreeBSD-Announce] FreeBSD Quarterly Status Report - Third Quarter 2014
bjk at FreeBSD.org
Tue Oct 14 22:18:44 UTC 2014
-----BEGIN PGP SIGNED MESSAGE-----
FreeBSD Project Quarterly Status Report: July - September 2014
This report covers FreeBSD-related projects between July and September
2014. This is the third of four reports planned for 2014.
The third quarter of 2014 was another productive quarter for the
FreeBSD project. A lot of work has been done on various ARM platforms,
with the goal of bringing them to Tier 1 status in FreeBSD 11. The
various ports teams have also worked hard to improve the state of
FreeBSD as a desktop operating system. As usual, performance
improvements feature in several places in this report and many of these
can benefit from user benchmarking to validate our results.
Thanks to all the reporters for the excellent work!
The deadline for submissions covering the period from October to
December 2014 is January 7th, 2015.
FreeBSD Team Reports
* FreeBSD Cluster Administration Team
* FreeBSD Release Engineering Team
* Ports Collection
* The FreeBSD Core Team
* Address Space Layout Randomization (ASLR)
* amd64 Xen Paravirtualization
* Chelsio iSCSI Offload Support
* Debian GNU/kFreeBSD
* FreeBSD Preseed Installation (PXE)
* Jenkins Continuous Integration for FreeBSD
* New Automounter
* QEMU bsd-user-Enabled Ports Building
* VMWare VAAI and Microsoft ODX Acceleration in CTL
* Intel GPU Driver Update
* SDIO Driver
* UEFI Boot
* Updated vt(4) System Console
* Updating OpenCrypto
* FreeBSD on Newer ARM Boards
* LLDB Debugger Port
* LLVM Address Sanitizer (Asan)
* SSE Variants of libc Routines for amd64
* FreeBSD Python Ports
* KDE on FreeBSD
* The Graphics Stack on FreeBSD
* Handbook ezjail Section
* Michael Lucas Books
* ZFS Chapter of the Handbook
* The FreeBSD Foundation
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 worked on:
* Implemented a central, FreeBSD cluster-specific package building
node using ports-mgmt/poudriere-devel, providing a single
consistent set of third-party binary packages throughout the
FreeBSD cluster from a common, known-working configuration.
* Converted all machines running in the FreeBSD cluster from
individual (and sometimes different) userland and kernel
configurations to a single configuration for the base system. This
enabled the implementation of a FreeBSD.org-specific binary update
mechanism currently deployed throughout the cluster.
This project is sponsored by The FreeBSD Foundation .
FreeBSD Release Engineering Team
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
In mid-July, FreeBSD 9.3-RELEASE was released without delay in release
In late August, the FreeBSD 10.1-RELEASE cycle began, and as of this
writing, is expected to stay on schedule.
Work to produce virtual machine images as part of the release cycle has
continued, supporting various cloud services such as Microsoft Azure,
Amazon EC2, and Google Compute Engine.
This project is sponsored by The FreeBSD Foundation .
Contact: Frederic Culot <portmgr-secretary at FreeBSD.org>
Contact: Port Management Team <portmgr at FreeBSD.org>
As of the end of Q3, the ports tree holds a bit more than 24,000 ports,
and the PR count is below 1,400. Despite the summer holidays the tree
saw sustained activity with more than 9,000 commits and almost 2,000
ports PRs closed!
In Q3, five new developers were granted a ports commit bit. None were
taken in for safekeeping.
On the management side, tabthorpe@ decided to step down from his
portmgr duties in July. No other changes were made to the team during
This quarter also saw the release of the third quarterly branch, namely
On the QA side, 34 exp-runs were performed to validate sensitive
updates or cleanups.
Last, the 20th anniversary of the ports tree was commemorated during Q3
and a video was published for this event.
1. Tremendous work was done on the PR front in Q3 and we would be very
pleased to see committers dedicate themselves to closing as many as
possible in Q4 as well.
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.
The third quarter of this year was a relatively quiet time in terms of
Core Team activity. No major policy changes were decided, but the
criterea for awarding commit bits were reviewed and the existing
requirements were clarified and documented at
Other items dealt with by core during this period:
* Confirmed with Microsoft that it is permissible to include DCTCP in
* Promoted git-beta.freebsd.org out of beta-test to an official
service, consequently renaming it to git.freebsd.org.
* Mediated between groups of contributors and committers adopting
different positions on the on-going work to introduce ASLR and
* Worked with the FreeBSD Foundation to obtain a license for XenForo,
and with the forum administrators on plans to migrate the FreeBSD
forums onto the FreeBSD cluster and to switch to XenForo.
During this period, three commit bits were granted, and two commit bits
were taken in for safe keeping.
Address Space Layout Randomization (ASLR)
Contact: Shawn Webb <shawn.webb at hardenedbsd.org>
Contact: Oliver Pinter <oliver.pinter at hardenedbsd.org>
Address Space Layout Randomization (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
exploitable vulnerability lies in memory.
A lot has happened in the last few months. Shawn Webb gave
presentations at both BSDCan 2014 and EuroBSDCon 2014. The
presentations were met with a lot of support and backing. At the end of
EuroBSDCon Ilya Bakulin fixed the known bug with ASLR on ARM systems.
Shawn Webb and Oliver Pinter have submitted our patch to the
Phabricator code review system. Shawn Webb added an API for allowing a
debugger to disable ASLR to support deterministic debugging. Oliver
Pinter enhanced the performance of our ASLR implementation. A package
building exp-run was ran and came out favorably in terms of
performance. Shawn Webb bumped up the maximum number of bits allowed to
be randomized to 20 and set the default to 14.
Shawn Webb and Oliver Pinter founded The HardenedBSD project to serve
as a staging area for their work on security-related projects for
This project is sponsored by SoldierX.
1. Get more people testing and reviewing our patch
2. Run more performance tests
3. Figure out why the two ports failed in the EXP-RUN. Involve the
4. Test on different architectures (we need help with this)
amd64 Xen Paravirtualization
Contact: Cherry Mathew <cherry at FreeBSD.org>
This project aims to add support to the FreeBSD kernel for running in
Xen Paravirtualised mode on amd64 systems. This project has finally
reached a "Proof of Concept" stage on the branch projects/amd64_xen_pv.
Testing and bug reports on various configurations is encouraged! The
author is also seeking bounties to help complete the effort and assess
potential interest. Please send email if interested.
PV kernels are still supported by most cloud providers for a range of
configurations, although they are expected to be phased out in the
This project is sponsored by Spectralogic Corporation (2012-2013) .
1. Large page support
2. SMP support
3. Debug and cleanup
4. Security vetting
5. Performance tweaks
Contact: Peter Grehan <grehan at FreeBSD.org>
Contact: Neel Natu <neel at FreeBSD.org>
Contact: John Baldwin <jhb at FreeBSD.org>
Contact: Tycho Nightingale <tychon at FreeBSD.org>
Contact: Allan Jude <freebsd at allanjude.com>
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.
A significant amount of progress has been made since the last status
report. Most importantly, all of this work has been MFCed to the
10-STABLE branch and will be included in the 10.1 release.
Support for AMD processors is being developed in the bhyve_svm SVN
project branch. The branch is almost at feature-parity with mainline
Intel VT-x support, and will be committed into -CURRENT in the near
New features added this quarter:
* Guest support for recent Linux i386/x64, OpenBSD i386/amd64, and
* Force guest reset and poweroff with bhyvectl
* Allow the SMBIOS UUID to be set from the command line
* PCI MMIO extended config space access
* Improved AHCI error handling, legacy interrupt mode
* Additional instruction emulation required by a number of guests
* Legacy x86 task switching to support double-faults in FreeBSD/i386
* Legacy PCI interrupts, operation without an APIC (OpenBSD install)
* Guest memory not included by default in core dumps
* Allow guest vCPUs to be pinned to individual host CPUs
* Virtio RNG device emulation
* Chapter about bhyve added to FreeBSD Handbook
1. Improve documentation
2. CSM BIOS boot support for non UEFI-aware guests
3. Add support for virtio-scsi
4. Improve virtio-net, add offload features, support multiple queues
5. Implement Intel 82580 and e1000 NIC emulation
6. Netmap support
7. Flexible networking backend: wanproxy, vhost-net
8. Move to a single process model, instead of bhyveload and bhyve
9. Support running bhyve as non-root
10. Add filters for popular VM file formats (VMDK, VHD, QCOW2)
11. Implement an abstraction layer for video (no X11 or SDL in base
12. Support for VNC as a video output
13. Suspend/resume support
14. Live Migration
15. Nested VT-x support (bhyve in bhyve)
16. Support for other architectures (ARM, MIPS, PPC)
Chelsio iSCSI Offload Support
Contact: Sreenivasa Honnur <shonnur at chelsio.com>
Contact: Edward Tomasz Napierała <trasz at FreeBSD.org>
Building on the new in-kernel iSCSI target and initiator stack released
in FreeBSD 10.0, Chelsio Communications has begun developing an offload
interface to take advantage of the hardware offload capabilities of
Chelsio T4 and T5 10 and 40 gigabit Ethernet adapters.
The code implements hardware PDU offload for both target and initiator.
The iSCSI stack has been modified to provide a hardware-independent
offload API, allowing offload drivers to be loaded as kernel modules,
and to provide mechanisms for the system administrator to configure
this feature. The project is entering a testing phase. The code will be
released under the BSD license and is expected to be completed later in
the year and ship in FreeBSD 10.2-RELEASE.
This project is sponsored by Chelsio Communications , and The FreeBSD
1. Complete testing
Contact: Debian GNU/kFreeBSD Maintainers <debian-bsd at lists.debian.org>
Debian GNU/kFreeBSD is a software distribution produced by Debian,
based on the kernel of FreeBSD (instead of Linux) and GNU libc. Around
90% of Debian's software archive has now been ported to it, for amd64
and i386 architectures. It was first released with Debian "squeeze" as
a development preview in 2011, featured again in the "wheezy" release,
and hopes to be part of the official Debian "jessie" release in early
In 2003 there were several attempts to bootstrap a minimal Debian
system upon FreeBSD or NetBSD kernels, some also trying to use the
native BSD libc. The most successful and longest-lived of these was a
"GNU/FreeBSD" chroot bootstrapped by Robert Millan with the GNU libc
that most of Debian's core packages were designed to work with. The "k"
was later added to the name to reflect that it takes just the kernel
from FreeBSD, with most everything else from the Debian archive. We do
also package some FreeBSD utilities as needed to boot it and take
advantage of certain features.
FreeBSD support within GNU libc is now mostly maintained by Petr
Salinger, who recently converted it from an older threading
implementation based on LinuxThreads to NPTL, which is much more
compatible with the software we run. We have the GNU compiler toolchain
as well as Clang 3.4; Perl, Python and Ruby; and OpenJDK 7, based the
on work done in FreeBSD's own ports collection. We use linprocfs for
/proc because much of Debian GNU software expects this. The Linuxulator
is not needed at all, but could make for interesting future uses.
Porting work mostly focuses now on individual packages' build systems,
on preprocessor #ifdefs that do not clearly distinguish between kernel
and libc, or fixing testsuites' presumptions of Linux-specific
behaviour. In the course of this, we even found the odd FreeBSD kernel
bug, including EN-14:06 / CVE-2014-3880.
GNU/kFreeBSD has already seen production use, mostly on webservers,
email servers and file servers; one such machine has 475 days' uptime
receiving around 10,000 emails per day. It has become increasingly
practical for desktop/laptop uses thanks largely to new features coming
in from FreeBSD 10.1.
KMS graphics mean that 3D gaming and high-definition video playback
perform brilliantly. We have great support for Intel graphics chipsets,
but only an older nvidia Xorg driver. For radeonkms, Robert Millan was
able to add firmware-loading support so that non-free binary blobs can
be packaged separately, outside of Debian's main archive. Proprietary
drivers are not useful to us as they would need to be rebuilt from
source to port them.
vt(4) was necessary for KMS to not break VT switching. But it has also
improved the console's handling of non-ASCII character sets and we do
look forward to having console fonts for non-Latin scripts.
We have supported ZFS for some time, even as a root/boot filesystem
(using GRUB 2; Robert Millan added the ZFS support which now FreeBSD
itself is able to benefit from). Enhancements coming from OpenZFS,
especially LZ4 compression, in combination with better memory
management and GEOM improvements, mean that "jessie" should see a
noticeable performance boost.
debian-installer already allows for pre-seeded, unattended installs and
there are PXE-bootable install images available.
virtio drivers are new to the "jessie" release, enabling support for
some public clouds. We are now compiling Xen domU and PVHVM support
into our standard kernel builds.
We already have userland tools to configure the PF firewall. As an
experiment, we are compiling in IPSEC support by default for the
upcoming release, and would like to see it put to good use against
present-day privacy and security threats.
We try to support the use of Debian GNU/kFreeBSD inside a jail on a
FreeBSD host system, and hopefully vice-versa. Some of the jail
utilities are not yet packaged, but we have documentation on the Debian
Wiki on how to set up jails on "wheezy", which are fully functional.
The init system we currently use is a parallel System V-style init,
although Debian GNU/Linux will be switching away from that to systemd.
For the next release we may switch to OpenRC, which is mostly ported
Not having systemd or udev means that we will be unable to support
GNOME 3.14 in the upcoming release. We have very good support for XFCE,
also have KDE, LXDE and the recently-packaged MATE desktop environment.
The Debian software archive provides many alternative window managers
for Xorg such as IceWM, dozens of terminal emulators, and so on.
As we approach the freeze of the Debian "jessie" release, we would love
for anyone to test GNU/kFreeBSD, try to use it for whatever would be
useful to you, and let us know what issues you run into. Ask for help
on our project mailing list or IRC channel, and let us know of any bugs
you find. We still have time to fix problems before release, and we
would be happy to improve our documentation at any time.
FreeBSD Preseed Installation (PXE)
Contact: Kamil Czekirda <kczekirda at FreeBSD.org>
This is a Google Summer of code project to provide a noninteractive
FreeBSD installation process from the network. In the first part, an
implementation was added for scripted bsdinstall(8). It supports
variables such as KEYMAP, HOSTNAME, MIRROR, RELEASE, TIMEZONE, DAEMONS,
ROOTPWHASH, and USERS. Network configuration, ZFS options, and others
are also included.
The second part of the project is about booting the fai (Fully
Automatic Installer) from the network by PXE. An installer distro was
created based on mfsBSD. After boot, fai looks for the "bootfile-name"
parameter from the DHCP server. This parameter tells fai where the
bsdinstall script is located. fai supports MAC-based configuration, or
a default if a MAC-based configuration file does not exist.
This project is sponsored by Google Summer of Code 2014 .
1. Documentation, including a HOWTO and handbook
2. More tests in different configurations
3. Support for more than one network interface is planned
Jenkins Continuous Integration for FreeBSD
Contact: Craig Rodrigues <rodrigc at FreeBSD.org>
Contact: Jenkins Administrators <jenkins-admin at FreeBSD.org>
Contact: FreeBSD Testing <freebsd-testing at FreeBSD.org>
In May, Craig Rodrigues led a working group Continuous Integration and
Testing with Jenkins for FreeBSD at the FreeBSD Devsummit in Ottawa.
Craig Rodrigues also gave a Jenkins presentation at BSDCan.
At BSDCan, Craig Rodrigues had some discussions with Julio Merino about
how to better integrate FreeBSD testing efforts with Jenkins and kyua.
As a result of this discussion, Julio Merino enhanced the kyua testing
framework with a kyua report-junit command. This command takes kyua
test results and outputs a test report in JUnit XML format. Jenkins can
directly import JUnit XML test results and display them nicely.
In June, Craig Rodrigues was interviewed for episode 44 of BSD Now. The
interview covered Jenkins and Continuous Integration in the FreeBSD
In July, Craig Rodrigues gave a presentation to the Bay Area FreeBSD
Users Group (BAFUG), Libvirt and bhyve, based on experience he had with
those technologies when used with Jenkins.
Li-Wen Hsu set up a Jenkins job to run the LLVM scan-build tool to
perform static analysis of the FreeBSD code, and make the results
availalble at scan.freebsd.org.
Steve Wills modified the Jenkins job which builds pkg(8) to use the
kyua report-junit command to integrate pkg(8) test results in Jenkins.
Anthony Williams reported that the version of the Java Native Access
(JNA) library bundled with Jenkins has problems on FreeBSD. This causes
problems with Jenkins using libpam and other plugins that use JNA.
Craig filed JENKINS-24521 against Jenkins. Craig submitted patches to
Jenkins to update Jenkins to use JNA 4.1.0, which has fixes for
Craig Rodrigues worked on automatically running the tests in the
FreeBSD /usr/tests directory under Jenkins using the kyua test
framework. Craig Rodrigues provided feedback to Julio Merino about kyua
and Julio Merino incorporated some of the feedback as bugfixes and
feature enhancements to kyua. Craig Rodrigues committed some fixes to
FreeBSD to eliminate some test failures. One of the tests still results
in a crash in byacc. This is being tracked in PR 193499. Thomas E.
Dickey (byacc maintainer) submitted a patch to fix the problem, and
this has been committed to FreeBSD.
Craig Rodrigues analyzed the cause of some startup errors in Jenkins
when opening a multicast socket. He had some discussion with Bruce M.
Simpson captured in PR 193246. The Java JDK depends on functionality in
Solaris where it is possible to open an IPv4 multicast socket, but with
an IPv4 multicast address mapped to an IPv6 address. On Linux, there
are modifications to the JDK itself to work around this. Bruce M.
Simpson said that the work to make the FreeBSD IPv6 stack behave like
Solaris would require some work.
Craig Rodrigues started writing a Kyua Quickstart Guide. This guide is
meant to help new kyua users who want to write tests and run them under
kyua. Craig Rodrigues is seeking feedback to help improve this guide.
1. Upstream more fixes to Jenkins for FreeBSD, such as JNA fixes.
2. Automate the build of /usr/tests.
3. Set up more builds based on examples from the existing FreeBSD
4. Get feedback for improving the Kyua Quickstart Guide.
5. We need more people to join us on freebsd-testing at FreeBSD.org and
help out. We especially need people with devops and scripting
experience to help us set up more builds and tests. We would also
like to integrate with other parts of the project, such as
Contact: Edward Tomasz Napierała <trasz at FreeBSD.org>
Limitations of the current automounter, amd(8), are a recurring problem
reported by many FreeBSD users. A new automounter is being developed to
address these concerns.
The automounter is a cleanroom implementation of functionality
available in most other Unix systems, using proper kernel support
implemented via an autofs filesystem. The automounter supports a
standard map format, and will integrate with the Lightweight Directory
Access Protocol (LDAP) service.
The FreeBSD Foundation worked with enterprise and university users to
test the new automounter in existing LDAP-based environments, including
some with thousands of map entries.
The code is now ready to use. It has been committed to 11-CURRENT and
10-STABLE, and will ship as part of 10.1-RELEASE. There is ongoing work
on improving performance and fixing possible bugs.
This project is sponsored by The FreeBSD Foundation .
QEMU bsd-user-Enabled Ports Building
Contact: Sean Bruno <sbruno at FreeBSD.org>
Contact: Juergen Lock <nox at FreeBSD.org>
Contact: Stacey Son <sson at FreeBSD.org>
FreeBSD packages for the Tier-1 i386 and amd64 CPU architectures are
built by a single very high-performance machine. Other architectures
lack equivalent hardware, and we began experimenting with QEMU's
user-mode emulation to cross-build packages from an amd64 builder.
We have moved from just being able to produce packages to providing a
stable repo of packages for ARMv6.
ports-mgmt/poudriere-devel is still the current method for building
packages. See the previous status report for explanations and details
VMWare VAAI and Microsoft ODX Acceleration in CTL
Contact: Alexander Motin <mav at FreeBSD.org>
The CAM Target Layer (CTL), used as base for the kernel iSCSI server,
got support for VMWare VAAI and Microsoft ODX storage acceleration. It
permits avoiding network bottlenecks and improves storage efficiency on
sets of large operations, such as virtual machine (or large file)
creation, initialization to zeros, copy, delete, etc..
VMWare VAAI includes support for these primitives/SCSI commands: Atomic
Test and Set (ATS) -- COMPARE AND WRITE command; Extended Copy (Clone)
-- SPC-3 subset of XCOPY commands; Write Same (Zero) -- set of WRITE
SAME commands; and Dead Space Reclamation (Delete) -- UNMAP command.
Microsoft ODX includes support for these SCSI commands: POPULATE
TOKEN/WRITE USING TOKEN (SPC-4 extensions of XCOPY), WRITE SAME and
All XCOPY operations are currently limited to one storage host. ODX
operations are currently limited only to iSCSI disks. Accelerated
inter-host copying or copying to/from files on Samba shares is not
implemented and is handled by initiators in the legacy way.
The code is committed to FreeBSD head and stable/10 branches, and will
be present in FreeBSD 10.1 and FreeNAS 184.108.40.206 / 9.3 releases.
This project is sponsored by iXsystems, Inc. .
1. Full support for thin provisioning, including capacity usage
reporting and threshold notifications.
2. Inter-host XCOPY operations.
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 development work in Q3 focused heavily on the new build
infrastructure. This allows the ZFSguru project to release new system
images together with addon services at much higher frequency and with
much less manual intervention. This should free up a lot of development
time to be spent on the core of the project: the web interface.
Furthermore, a new website and forum is being worked on, replacing the
old-fashioned website that offers only limited functionality. The new
website will be linked to the server database, providing real-time
updates about the project.
In addition, a new platform for collaborated development is in the
works. A service addon has been created for the GitLab project, which
is a drop-in replacement of the popular GitHub website. The choice was
made to host our own solution and not rely on GitHub itself. In
retrospect this appears to have been a good decision. The recent
development where GitHub removed projects after DCMA-takedowns being
sent is incompatible with the philosophy of free-flow-of-information,
of which the ZFSguru project is a strong proponent. By hosting our own
solution, we have avoided any dependency on third party projects.
The next task will be to introduce a new remote database structure,
dubbed GuruDB. This will speed up the web-interface as well as
introduce Service Bulletins which address important notifications to
our users, as well as announce new releases.
After GuruDB, the Migration Manager is one of the last remaining
features still missing in the web-interface. This functionality
provides an easy way to upgrade the current system by performing a new
clean installation, but migrate all relevant configuration to the new
installation. It also allows users to 'backup' all system configuration
in a single file to be stored on a different machine should things go
A longer version of the 2014 development progress of the ZFSguru
project and information specific to the newly-released 10.1-002 system
image can be found in the Links section.
Intel GPU Driver Update
Contact: Konstantin Belousov <kib at FreeBSD.org>
The project to update the Intel graphics chipset driver (i915kms) to a
recent snapshot of the Linux upstream code continues. A patch with a
large chunk of updates has been made available to test for regressions
against current functionality, but is not yet expected to provide
working new functions. The GEM I/O ioctl code path has been modified to
more closely resemble the Linux code structure (easing future imports).
This project is sponsored by FreeBSD Foundation .
1. Fix any bugs reported against the latest versions of the patch.
2. Make Haswell graphics work with Mesa.
Contact: Ilya Bakulin <ilya at bakulin.de>
SDIO is an interface designed as an extension of the existing SD card
standard, allowing the connection of different peripherals to a host
with a standard SD controller. Peripherals currently sold in the
general market include WLAN/BT modules, cameras, fingerprint readers,
and barcode scanners. SDIO is also used to connect some peripherals in
products like Chromebooks and Wandboard.
The current main focus of the project is to reimplement the existing
MMC/SD stack using the CAM framework. This will allow utilizing the
well-tested CAM locking model and debug features.
The first version of the code was uploaded on Phabricator for review.
The new stack is able to attach to the SD card and bring it to an
operational state. The only supported SD controller driver is ti_sdhci
which is used by the BeagleBone Black. Modifying other SDHCI-compliant
drivers should not be a hard task.
1. At this point, feedback from kernel developers is really needed.
This may be done in the form of code review. If the chosen way of
implementing the CAM-aware MMC stack is considered correct, then
adding code for interacting with SD cards (for example, setting the
optimal transfer rates) will be the next task.
2. Write a CAM peripheral driver that implements an interface to the
FreeBSD disk(9). It will send MMC I/O commands using the MMC XPT
3. Extending camcontrol(8) to make it possible to send MMC-specific
commands directly to the MMC/SD card using pass(4) will greatly
assist in developing new features for the stack.
4. Modify the sdhci(4) driver to work with the new stack. This is
required to work on the new stack using PC hardware, not only the
Contact: Ed Maste <emaste at FreeBSD.org>
Contact: Nathan Whitehorn <nwhitehorn at FreeBSD.org>
The Unified Extensible Firmware Interface, or UEFI, provides boot- and
run-time services for x86 and other computers. For the x86 architecture
it replaces the legacy BIOS. This project will adapt the FreeBSD loader
and kernel boot process for compatibility with UEFI firmware, found on
contemporary servers, desktops, and laptops.
Over the last three months Ed and others refined the existing UEFI
support and merged it to the stable/10 branch for the upcoming FreeBSD
To avoid the risk of a regression, the standard FreeBSD 10.1 install
images continue to use the existing partitioning scheme and support
only legacy BIOS boot. Separate UEFI-enabled installer images will be
included with 10.1.
This project is sponsored by The FreeBSD Foundation.
1. Document manual installation, including dual-boot configurations.
2. Implement boot1.efi for ZFS file systems.
3. Add support for UEFI variables stored in non-volatile memory
4. Debug boot failures with certain UEFI firmware implementations.
5. Support secure boot.
Updated vt(4) System Console
Contact: Aleksandr Rybalko <ray at FreeBSD.org>
Contact: Ed Maste <emaste at FreeBSD.org>
Contact: Ed Schouten <ed at FreeBSD.org>
Contact: Jean-Sébastien Pédron <dumbbell at FreeBSD.org>
Contact: Warren Block <wblock at FreeBSD.org>
The vt(4) (aka Newcons) project provides a replacement for the legacy
syscons system console. It brings a number of improvements, including
better integration with graphics modes and broader character set
A large number of improvements were committed to vt(4) over the last
three months. Jean-Sébastien Pédron fixed significant performance
regressions observed with vt_vga, particularly noticeable on virtual
machines. Stefan Esser converted and cleaned up all of the keyboard map
files for use with vt(4).
The EFI framebuffer driver and the ofwfb driver now work with the
xf86-video-scfb X11 video driver, supporting native-resolution (albeit
The fixes and improvements have all been merged and will be available
in the upcoming FreeBSD 10.1 release.
1. Implement the remaining features supported by vidcontrol(1).
2. Write manual pages for vt(4) drivers and kernel interfaces.
3. Support direct handling of keyboards by the kbd device (without
4. CJK fonts. This is in progress.
5. Switch to vt(4) by default.
6. Implement compatibility mode to be able to use single-byte
charsets/key-codes in vt(4).
Contact: John-Mark Gurney <jmg at FreeBSD.org>
The project adds support for the AES-GCM and AES-CTR cryptography modes
to the OpenCrypto framework. Both software and AES-NI accelerated
versions are now functional and working. Ermal Luçi (eri@) is working
on adding support for these additional modes to IPsec.
This project is sponsored by The FreeBSD Foundation , and Netgate .
1. Create a test suite for the most common modes.
FreeBSD on Newer ARM Boards
Contact: Ganbold Tsagaankhuu <ganbold at FreeBSD.org>
Work on initial support of the IFC6410 board, which was stopped due to
a bricked bootloader, has been started again. This board has the
Qualcomm Snapdragon S4 SoC, featuring the Krait CPU. This CPU is
considered a "platform" for use in smartphones, tablets, and smartbook
devices. Krait has many similarities with the ARM Cortex-A15 CPU and is
also based on the ARMv7 instruction set. These peripherals are working:
* Qualcomm High Speed UART driver for MSM 7000/8000 series chips
(included in src tree)
* Krait Timer
1. Get the MMC driver working. May need more help from experts.
Contact: Andrew Turner <andrew at FreeBSD.org>
Until recently, all ARM CPU designs were 32-bit only. With the
introduction of the ARMv8 architecture, ARM has added a new 64-bit
mode. This new mode has been named AArch64. Arm64 is the name of the
in-progress port of FreeBSD to ARMv8 CPUs when in AArch64 mode.
Since the last status report, FreeBSD has started to execute userland
instructions. This includes implementing more of the needed kernel
functions to handle creation of processes. Using clang to compile
userland has found a few issues with the version in the base system.
These issues are expected to be resolved when clang 3.5 is imported.
Initial support for device drivers has been added. This includes the
start of the bus_space functions and interrupt handling. This allowed
the existing timer and interrupt controller drivers from armv6 to be
used as these devices are similar. The FDT data is now being passed
from the loader to the kernel using the standard mechanism.
The pmap implementation has been changed to be based on the amd64 code.
This fixes a number of issues with the old implementation.
1. Boot to multi-user mode
2. Get dynamic libraries working
3. Test on real hardware
LLDB Debugger Port
Contact: Ed Maste <emaste at FreeBSD.org>
LLDB is the debugger project associated with Clang/LLVM. It supports
the Mac OS X, Linux, and FreeBSD platforms, with Windows support under
development. It builds on existing components in the larger LLVM
project, for example using Clang's expression parser and LLVM's
Work over the last three months consisted mainly of maintenance,
ensuring that the upstream FreeBSD port continues to build and that
testsuite failures are promptly addressed.
I plan to import a new LLDB snapshot after the base system Clang is
updated to 3.5. Some upstream improvements that will be in that import
* Ability to specify a count to thread step-* operations.
* Ongoing AArch64 development.
* Significant progress on the lldb-gdbserver debug stub.
* I/O handling improvements.
* A much faster C++ name demangler for most symbols.
A proof-of-concept implementation of kernel debugging support for amd64
was completed as part of Google Summer of Code. It is not ready to be
committed, but will form the basis for upcoming kernel debugging
This project is sponsored by DARP/AFRL, SRI International, and
University of Cambridge.
1. Port remote debug stub (lldb-gdbserver) from Linux to FreeBSD.
2. Add support for local and core file kernel debugging.
3. Implement, fix or test support on all non-amd64 architectures.
4. Verify cross-debugging.
5. Investigate and fix test suite failures.
6. Package LLDB as a port.
7. Enable by default in the base system for working architectures.
LLVM Address Sanitizer (Asan)
Contact: Viktor Kuzutov <vkutuzov at accesssoftek.com>
The LLVM address sanitizer (Asan) is a fast memory error detector that
can detect use-after-free errors and buffer overflows. It has been
ported to FreeBSD. The mainline version of LLVM is known to pass all of
the tests in the LLVM and Asan test suites without unexpected failures
on FreeBSD 10.0.
A buildbot running sanitizer tests under FreeBSD stable/10 has been
established. See the Links section.
To make it possible to run programs with sanitizer checks enabled on
FreeBSD, a new sysctl named kern.proc_vmmap_skip_resident_count has
been added. See the Links section. Running the address sanitizer checks
on stable/10 requires this sysctl to be set to 1.
A similar work is in progress to add FreeBSD support to the thread
sanitizer (Tsan), which detects data races in parallel programs.
SSE Variants of libc Routines for amd64
Contact: John Baldwin <jhb at FreeBSD.org>
I have written SSE/AVX-optimized versions of a few libc routines for
amd64. So far the list includes memcpy, memset, and strlen. For each
routine I have written a simple regression test as well as performed
some simple microbenchmarks on various AMD and Intel CPUs.
The simplest routine is strlen which appears to be a general win in
microbenchmarks. memcpy and memset have proven trickier as different
variants can behave quite differently on different CPUs.
At present, I do not yet have a patch relative to libc. Once I do, this
will be suitable for more testing. I would like to see some real-world
benchmarks that show measurable improvement before pushing any of this
up into the tree.
1. Create a branch that holds a modified libc and is suitable for
FreeBSD Python Ports
Contact: FreeBSD Python Team <python at FreeBSD.org>
The FreeBSD Python team continued to improve the overall experience
with Python-based software on FreeBSD.
During the last quarter, the bsd.python.mk bits of the ports
infrastructure were converted to the more modern USES format. Several
options, such as support for easy_install, were deprecated or removed
to make the infrastructure easier to maintain and less complex for port
The Python ports were refactored and simplified to improve
maintainability and to get rid of long-standing issues due to the
previously complex and error-prone build process.
The Python 2 branch was updated to Python 2.7.8 and setuptools to
With the availability of pkg 1.3, installing Python packages and
modules for different Python versions is now supported in the package
management infrastructure. This allows us to remove the previously
required port duplicates for Python 2 and Python 3.
1. Retire the Python 3 specific port duplicates
2. Convert ports to the new USES syntax
3. More tasks can be found on the team's wiki page (see Links).
4. To get involved, interested people can say hello on IRC and let us
know their areas of interest!
Contact: FreeBSD GNOME Team <gnome at FreeBSD.org>
GNOME is a desktop environment and graphical user interface that runs
on top of a computer operating system. GNOME is part of the GNU Project
and can be used with various Unix-like operating systems, including
MATE is a fork of GNOME 2. The MATE ports were updated to the 1.8
Cairo, the vector graphics library used by GNOME, has been updated to
1.12. This allowed the merge of GNOME 3 to begin. We are currently
doing test builds to find ports broken by the update and pruning ports
that do not build any more because of incompatible updates.
Gustau Perez started preliminary work on the next development version
of GNOME in MC, to be ready for GNOME 3.15. We will skip 3.14 entirely.
1. Finish the GNOME 3.12 merge, and start tracking GNOME 3.15
KDE on FreeBSD
Contact: KDE on FreeBSD team <kde at FreeBSD.org>
The KDE on FreeBSD team focuses on packaging and making sure the
experience of KDE and Qt on FreeBSD is as good as possible.
First of all, we are happy to announce that Alonso Schaich, longtime
contributor to our experimental area51 repositories, has become a ports
committer, mentored by KDE on FreeBSD members Raphael Kubo da Costa
(rakuco@) and Max Brazhnikov (makc@).
During this quarter, the team has kept most of the KDE and Qt ports
up-to-date, working on the following releases:
* CMake 3.0.1 and 3.0.2
* PyQt 4.11.1, SIP 4.16.2, QScintilla 2.8.3
* DigiKam 4.2.0 (in area51)
* KDE 4.13.3, 4.14.0 and 4.14.1 (in area51)
* KDE Telepathy 0.8.0 (in area51)
Additionally, work on updating the Qt5 ports to the 5.3 series has
begun, and we intend to commit the updated ports in our experimental
area51 repository to the ports tree in Q4.
1. Updating out-of-date ports, see the Links Portscout entry for a
2. Committing all the updated ports we have been accumulating in our
experimental repositories into the ports tree.
The Graphics Stack on FreeBSD
Contact: FreeBSD Graphics team <x11 at FreeBSD.org>
The newest graphics stack (that is, the set of ports conditional on the
WITH_NEW_XORG knob) was enabled on all architectures. The only
regression is for users of Intel GPUs and FreeBSD 8.X or 9.0. Those
releases lack the required kernel driver and therefore xf86-video-intel
will not work (the last UMS-aware version does not work with xserver
1.12). Users can still use xf86-video-vesa if they cannot or do not
want to update their FreeBSD workstation. Owners of Radeon GPUs can use
xf86-video-ati-ums 6.14.6 with xserver 1.12 if the KMS driver is not
available (that is, before FreeBSD 9.3).
The old graphics stack will be removed with the next update to these
ports. See the announcement in the Links section.
Hardware context support was added to the i915 driver in both HEAD and
10.1-RELEASE. This will allow us to update libglapi, libGL, dri, libEGL
and libglesv2 ports to a newer version of Mesa. The latest version is
already available from our development ports tree (see the links
Cairo was updated to 1.12. This will allow the FreeBSD GNOME team to
upgrade pango and Gtk+ 3. Unfortunately, the update also revealed that
xf86-video-intel 2.7.1 was in a much worse state than previously
We will attend XDC 2014 (X.Org Developer's Conference) from October 8th
through 10th in Bordeaux, France. The goal is to reconnect with
graphics stack developers, who are mostly working with Linux these
days. We will give a presentation on the current state of this stack on
FreeBSD. See the XDC website in the Links section for the program and
1. See the "Graphics" wiki page for up-to-date information.
Contact: FreeBSD Xfce Team <xfce at FreeBSD.org>
Xfce is a free software desktop environment for Unix and Unix-like
platforms including FreeBSD. It aims to be fast and lightweight while
still being visually appealing and easy to use.
The Xfce team continues to keep each piece of the Xfce Desktop up to
date. That is why we are working on the next stable release (no date
scheduled). There were no major updates in the ports tree except for
cosmetic changes this quarter.
Major upcoming changes include:
* Switch to the USES framework
* Support both GTK2 and GTK3, with GTK2 being the default.
* A GNOME-like default icons theme
* Enhanced documentation (handbooks, FAQ)
Below is a list of current ports in the devel repository (see link).
* deskutils/xfce4-xkb-plugin 0.7.0
* devel/xfce4-dev-tools 4.11.0
* misc/xfce4-appfinder 4.11.0
* multimedia/xfce4-parole 0.6.1 and 0.7.0
* sysutils/garcon 0.3.0
* sysutils/xfce4-settings 4.11.3
* x11/libxfce4menu 4.11.1
* x11/libxfce4util 4.11.0
* x11-wm/xfce4-desktop 4.11.8
* x11-wm/xfce4-panel 4.11.1
* x11-wm/xfce4-session 4.11.0
There are also two new ports
* deskutils/xfce4-volumed-pulse 0.2.0
* x11/xfce4-dashboard 0.2.3 and 0.3.2
For more details, please see our wiki page in the Links section.
1. Finish patching the ACPI helper (xfce4-power-manager).
2. Continue to work on documentation, especially the Porter's
Handbook, and creata a FAQ).
Handbook ezjail Section
Contact: Warren Block <wblock at FreeBSD.org>
ezjail is a very popular jails management utility, but was only
mentioned in passing in the Handbook. This new section describes basic
setup and usage. An in-depth example shows how to create and configure
a jail. It also serves as an example of how to run a simple
caching-only BIND in a jail.
Michael Lucas Books
Contact: Michael Lucas <mwlucas at michaelwlucas.com>
Lucas is working on a series of small FreeBSD books. The first one,
FreeBSD Mastery: Storage Essentials, is underway, and covers GEOM,
gpart, MBR, UFS, GELI, GBDE, disk sector alignment, and more. You can
pre-order the book at a discount from his web site, or wait for it to
hit print and all major ebook retailers.
Get status updates on his blog, or check @mwlauthor on Twitter.
1. Lucas needs to write faster.
ZFS Chapter of the Handbook
Contact: Allan Jude <allanjude at FreeBSD.org>
Contact: Benedict Reuschling <bcr at FreeBSD.org>
Contact: Warren Block <wblock at FreeBSD.org>
ZFS is one of the premier features of FreeBSD, and the quality of the
documentation should match that of other important features. Much of
the original documentation from Sun and Oracle has disappeared, moved,
or is about the proprietary version of ZFS. The OpenZFS project does
not provide much documentation and instead provides users with a few
links, including the FreeBSD Handbook. New users have many questions
about ZFS and yet there exists a great deal more bad advice about ZFS
than proper documentation.
After over a year of work, a new ZFS chapter has been added to the
FreeBSD Handbook. Over 20,000 words describe the basics of creating,
managing, and maintaining a ZFS pool. Advanced features like
compression, deduplication, and delegation are covered. The chapter
also contains a glossary of terms, explaining a number of the concepts
unique to ZFS, and documents some of the many sysctl variables that can
be used for tuning.
The remaining work to be done is in the FAQ section, which aims to help
users address the most common questions or problems they might face
with ZFS. We would like to hear experiences, questions, misconceptions,
gotchas, stumbling blocks and suggestions for the FAQ section from
other users. A use cases section that highlights some of the cases
where ZFS provides advantages over traditional file systems is also
Please send suggestions to the docs mailing list.
This project is sponsored by ScaleEngine Inc..
1. Technical review by Matt Ahrens (co-creator of ZFS)
2. Improve the delegation section
3. Improve the tuning section, and cover recently added sysctls
4. Add a section on jails and the jailed property
5. Add an FAQ section
6. Add a Use Cases section
7. General editing and review
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. Most of the funding is used to support FreeBSD development
projects, conferences, and developer summits, purchase equipment to
grow and improve the FreeBSD infrastructure, and provide legal support
for the Project.
We published our fourth issue of the FreeBSD Journal. We have over 4500
subscriptions to date. Work continued on adding support for the Dynamic
Edition which will be available soon. The fifth issue is also due out
Foundation staff member Konstantin Belousov wrapped up the PostgreSQL
performance investigation project. Kostik reran the benchmarks as a
configuration error may have affected earlier results. Improvements
arising from the investigation are merged to the FreeBSD 10 development
branch and will be in the 10.1 release. Kostik also committed a variety
of virtual memory and file system bug fixes and improvements.
Over the quarter, Foundation staff member Edward Napierała refined the
new autofs-based automounter and incorporated feedback from testers in
enterprise and university contexts. The automounter is available in the
development branch of FreeBSD and will be included in FreeBSD 10.1.
Edward also supported engineers at Chelsio in preparing iSCSI offload
support for Chelsio's 10- and 40-gigabit per second Ethernet adapters.
Ed Maste, our project manager, tested and integrated UEFI system boot
and new vt(4) console work into the release branch for the upcoming
FreeBSD 10.1 release. He committed a number of small toolchain and
build infrastructure improvements. He also wrote an article on LLDB for
the FreeBSD Journal and presented the LLDB work at EuroBSDCon.
FreeBSD Foundation Systems Administrator and Release Engineer Glen
Barber continued work on finalizing the 9.3-RELEASE process, followed
by starting the 10.1-RELEASE process.
Work has continued on producing regularly-updated FreeBSD development
snapshot builds for the various supported architectures, which include
amd64, i386, ia64, powerpc, powerpc64, sparc64, and arm.
In addition, work has been committed to a project branch which allows
FreeBSD virtual machine disk images to be produced by default as part
of the release process.
A plan has been put together for the upcoming Secure Boot work.
More hardware has been purchased to support FreeBSD infrastructure at
NYI and Sentex.
We announced a collaboration between the Foundation and Cavium to
deliver a FreeBSD ARMv8 based implementation.
We signed a license agreement with Oracle to get access to the TCKs for
Java 7 and 8.
Robert Watson ran and organized the Cambridge Developer Summit. We
provided a travel grant to a Google Summer of Code student to attend
We provided a travel grant to a developer who organized and ran BSDDay
We were a Gold Sponsor for EuroBSDCon 2014 and sponsored the Developer
Summit. We provided 4 travel grants to assist FreeBSD contributors with
their travel expenses to attend the conference. We also had 6
board/staff members attend the conference and some gave talks,
tutorials, and chaired some sessions. We held our Fall Fundraising
campaign there and raised over $2,000 in donations from attendees.
We organized the Silicon Valley Vendor/Developer Summit that is
happening November 3 and 4.
Kirk McKusick, Robert Watson, and George Neville-Neil published the
second edition of "The Design and Implementation of the FreeBSD
Kirk McKusick presented a 2-day tutorial on the FreeBSD kernel and gave
a talk on the implementation of ZFS at EuroBSDCon.
Dru Lavigne attended Fossetcon: September 11-13 (fossetcon.org).
We created new recruiting fliers for upcoming events, including the
Grace Hopper conference.
We started sending out Foundation monthly update emails to keep the
FreeBSD community informed on some of the activities we did the
previous month to support FreeBSD.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
-----END PGP SIGNATURE-----
More information about the freebsd-announce