[FreeBSD-Announce] FreeBSD Quarterly Status Report - First Quarter 2016
Warren Block
wblock at wonkity.com
Mon May 2 00:47:20 UTC 2016
Introduction
The first quarter of 2016 showed that FreeBSD retains a strong sense of
ipseity. Improvements were pervasive, lending credence to the concept
of meliorism.
Panegyrics are relatively scarce, but not for lack of need. Perhaps
this missive might serve that function in some infinitesimal way.
There was propagation, reformation, randomization, accumulation,
emulation, transmogrification, debuggenation, and metaphrasal during
this quarter.
In the financioartistic arena, pork snout futures narrowly edged out
pointilism, while parietal art remained fixed.
In all, a discomfiture of abundance. View the rubrics below, and marvel
at their profusion and magnitude! Marvel!
--Warren Block
__________________________________________________________________
Please submit status reports for the second quarter of 2016 by July 7.
A thesaurus will be provided for submitters who do not have one of
their own. We will need them back afterwards, preferably with no new
teeth marks on the covers. Thank you!
__________________________________________________________________
FreeBSD Team Reports
* Cluster Admin
* The FreeBSD Core Team
Projects
* Address Space Layout Randomization
* Ceph on FreeBSD
* Process-Shared Locks for libthr
* RCTL Disk IO Limits
* The Graphics Stack on FreeBSD
Kernel
* ARM Allwinner SoC Support
* CAM I/O Scheduler
* FDT Overlay Support in UBLDR
* Filemon Performance/Stability Improvements
* FreeBSD Integration Services (BIS)
* Infiniband
* MMC Stack Under CAM Framework
* NFS Server
* Static Analysis of the FreeBSD Kernel with PVS Studio
Architectures
* AmigaOne X5000 Support
* FreeBSD on Cavium ThunderX (arm64)
* powerpcspe Target
Userland Programs
* ELF Tool Chain Tools
* Native PCI-express HotPlug
* Updates to GDB
* Using lld, the LLVM Linker, to Link FreeBSD
Ports
* GitLab Port
* GNOME on FreeBSD
* KDE on FreeBSD
* Obsoleting Rails 3
* Ports Collection
Documentation
* New FreeBSD Mastery Books
* Spanish FAQ and Chinese Porter's Handbook Translations
Miscellaneous
* FreeBSD Build
* Qt 5.6 on Raspberry Pi
* The FreeBSD Foundation
__________________________________________________________________
FreeBSD Team Reports
Cluster Admin
Contact: <clusteradm at FreeBSD.org>
This quarter, we:
* migrated services out of the hosting space in ISC (peter, sbruno)
* began migration of services into the RootBSD hosting space (peter,
sbruno)
* collaborated with the phabricator admin team to migrate to a new
and improved host in NYI. (allanjude, peter, sbruno)
* installed a new and beefier Jenkins machine (gnn, lwshu, sbruno)
* are still looking for more Asian mirrors for pkg, svn, and ftp
(Japan, India). (sbruno)
* completed the migration of the Taiwanese mirror to its new
location. (lwshu)
* started hosting a clang/llvm buildbbot in the FreeBSD cluster at
NYI (sbruno, emaste)
* resolved a UK mirror outage with Bytemark (gavin, peter)
__________________________________________________________________
The FreeBSD Core Team
Contact: FreeBSD Core Team <core at FreeBSD.org>
During the first quarter of 2016, the most important business of the
FreeBSD Core Team has been to respond to the harassment incident last
year. Core's actions were to assemble a timeline of the events and in
the light of that to review Core's actions at the time; and to make
recommendations about how better to handle such cases in future. During
this process, draft reports were reviewed by people concerned in the
case and in addition a number of interested members of the FreeBSD
community. Core would like to thank everyone involved for their
contributions.
The report was published to the FreeBSD developer community in
mid-February, and contained six recommendations for the community to
consider.
Core is also coordinating with the committee headed by Anne Dickison
who are reviewing the Code of Conduct. A corpus of case studies is
being assembled, which will be re-examined to see what impact changes
to the Code of Conduct would have had.
Core, together with John Baldwin, are working on a plan to create a
separate repository containing GPLv3 toolchain components. This will
allow modernization of code within base beyond what the existing GPLv2
toolchain can handle, and permit support of certain new architectures
where a copyfree licensed alternative (i.e., LLVM) is not yet
available. A position paper will soon be circulated to developers for
comment.
During this quarter three new commit bits were issued, and one was
returned for safekeeping. Please welcome Wojciech Macek, Jared McNeil
and Stanislav Galabov, and bid farewell to Davide Italiano, who
although too busy to work on FreeBSD directly, will still be
contributing through his work upstream on lld and other parts of the
toolchain.
__________________________________________________________________
Projects
Address Space Layout Randomization
Links
Patch Home URL: https://kib.kiev.ua/kib/aslr
paxtest.log URL: https://www.kib.kiev.ua/kib/aslr/paxtest.log
fedora.log URL: https://www.kib.kiev.ua/kib/aslr/fedora.log
Contact: Konstantin Belousov <kib at FreeBSD.org>
Contact: Ed Maste <emaste at FreeBSD.org>
I wrote a small and straightforward yet feature-packed patch to
implement ASLR for FreeBSD which is now available for broader testing.
With this change, randomization is applied to all non-fixed mappings.
By randomization, I mean that the base address for the mapping is
selected with a guaranteed amount of entropy (bits). If the mapping was
requested to be superpage aligned, the randomization honors the
superpage attributes.
The randomization is done on a best-effort basis. That is, the
allocator falls back to a first fit strategy if fragmentation prevents
entropy injection. It is trivial to implement a strong mode where
failure to guarantee the requested amount of entropy results in failure
of the mapping request failure, but I do not consider that to be
usable.
I have not fine-tuned the amount of entropy injected right now, but
that is only a quantitive change that will not change the
implementation. The current amount is controlled by aslr_pages_rnd.
To not spoil coalescing optimizations, to reduce the page table
fragmentation inherent to ASLR, and to retain transient superpage
promotion for malloced memory, locality is implemented for anonymous
private mappings, which are automatically grouped until fragmentation
kicks in. The initial location for the anon group range is, of course,
randomized. After some additional tuning, the measures appeared to be
quite effective. In particular, a very address-space-hungry build of
PyPy 5.0 on i386 successfully finished with the most aggressive
functionality of the patch activated.
The default mode keeps the sbrk area unpopulated by other mappings, but
this can be turned off, which gives much more breathing room on the
small address-space architectures (it is funny that 32 bits is now
considered small). This is tied with the question of following an
application's hint about the mmap(2) base address. Testing shows that
ignoring the hint does not affect the function of common applications,
but I would expect that more demanding code could break. By default
sbrk is preserved and mmap hints are satisfied, which can be changed by
using the kern.elf{32,64}.aslr_care_sbrk sysctls (currently enabled by
default for wider testing).
Stack gap, W^X, shared page randomization, KASLR and other techniques
are explicitly out of scope for this work.
The paxtest results for the run with the previous version 5 of the
patch applied and aggressively tuned can be seen at paxtest.log. For
comparison, a run on Fedora 23 on the same machine is at fedora.log.
ASLR is enabled on a per-ABI basis, and currently is only enabled on
native i386 and amd64 (including compat 32-bit) and ARMv6 ABIs. I
expect to test and enable ASLR for arm64 as well, later.
A procctl(2) control for ASLR is implemented, but I have not provided a
userspace wrapper around the syscall. In fact, the most reasonable
control needed is per-image and not per-process, but we have no
tradition to put the kernel-read attributes into the extattrs of a
binary, so I am still pondering that part and this also explains the
non-written tool.
Thanks to Oliver Pinter and Shawn Webb of the HardenedBSD project for
pursuing ASLR for FreeBSD. Although this work is not based on theirs,
it was inspired by their efforts.
Thanks to Ed Maste, Robert Watson, John Baldwin, and Alan Cox for some
discussions about the patch, and for The FreeBSD Foundation for
directing me.
Bartek Rutkowski tested PyPy builds on i386, and David Naylor helped
with the port which was at the point of turbulence and upgrade during
the work.
This project was sponsored by The FreeBSD Foundation.
__________________________________________________________________
Ceph on FreeBSD
Links
Ceph Main Site URL: http://ceph.com
Main Repository URL: https://github.com/ceph/ceph
My Fork URL: https://github.com/wjwithagen/ceph
The git pull with All Changes URL: https://github.com/ceph/ceph/pull/7573
Contact: Willem Jan Withagen <wjw at digiware.nl>
Ceph is a distributed object store and file system designed to provide
excellent performance, reliability and scalability.
* Object Storage
Ceph provides seamless access to objects using native language
bindings or radosgw, a REST interface that is compatible with
applications written for S3 and Swift.
* Block Storage
Ceph's RADOS Block Device (RBD) provides access to block device
images that are striped and replicated across the entire storage
cluster.
* File System
Ceph provides a POSIX-compliant network file system that aims for
high performance, large data storage, and maximum compatibility
with legacy applications.
I started looking into Ceph, because the HAST solution with CARP and
ggate did not really do what I wanted. But I am aiming for running a
Ceph storage cluster of storage nodes that are running ZFS. The end
station would be running bhyve on RBD disk that are stored in Ceph.
The FreeBSD build will build most of the tools in Ceph. Note that the
RBD-dependent items will not work since FreeBSD does not have RBD yet.
Compiling and building Ceph is tested on 11-CURRENT. It uses the Clang
toolset that is available, which needs to be at least 3.7. Clang 3.4
(on 10.2-STABLE) does not have all the required capabilities to compile
everything.
This setup will get things running for FreeBSD:
* Install bash and link it in /bin (requires root privileges):
sudo pkg install bash
sudo ln -s /usr/local/bin/bash /bin/bash
* Building Ceph
git clone https://github.com/wjwithagen/ceph.git
cd ceph
git checkout wip-wjw-freebsd-tests
./do_freebsd.sh
Parts Not Yet Included:
* RBD
Rados Block Devices is implemented in the Linux kernel. It seems
that there used to be a userspace implementation first. And perhaps
ggated could be used as a template since it does some of the same
functions, other than just between two disks. And it has a
userspace counterpart.
* BlueStore
FreeBSD and Linux have a different AIO API, and that needs to be
made compatible. Next to that is the discussion in FreeBSD about
aio_cancel not working for all device types.
* CephFS
Cython tries to access an internal field in dirent which does not
compile.
Tests that verify the correct working of the above are also excluded
from the test set.
Tests Not Yet Included:
* ceph-detect-init/run-tox.sh
Because the current implementation does not know anything about
FreeBSD's rc/init.
* Tests that make use of nosestests
Calling these does not really work since nosetests is not in
/usr/bin, and calling through /usr/bin/env nosetests does not work
on FreeBSD.
* test/pybind/test_ceph_argparse.py
* test/pybind/test_ceph_daemon.py
Things To Investigate:
* ceph-{osd,mon} need two signals before they actually terminate.
* ceph_erasure_code --debug-osd 20 --plugin_exists jerasure crashes
due to SIGSEGV. This is a pointer reference that gets modified
outside the regular programflow. Probably due to a programming
error but perhaps wrong mixing and matching of many libraries.
Open tasks:
1. The current and foremost task is to get the test set to complete
without errors. This includes fixing several coredumps.
Run integration tests to see if the FreeBSD daemons will work with
a Linux Ceph platform.
2. Get the Python tests that are currently excluded to work, and test
OKE.
3. Compile and test the user space RBD (Rados Block Device).
Investigate and see if an in-kernel RBD device could be developed
akin to ggate.
4. Integrate the FreeBSD /etc/rc.d init scripts in the Ceph stack for
testing and running Ceph on production machines.
__________________________________________________________________
Process-Shared Locks for libthr
Contact: Konstantin Belousov <kib at FreeBSD.org>
POSIX specifies several kinds of pthread locks. For this report, the
private and process-shared variants are considered. Private locks can
be used only by the threads of the same process, which share a single
common address space. Process-shared locks can be used by threads from
any process, assuming the process can map the lock memory into its
address space.
Our libthr, the library implementing the POSIX threads and locking
operations, uses a pointer as the internal representation behind a
lock. The pointer contains the address of the actual structure carrying
the lock. This has unfortunate consequences for implementing the
PTHREAD_PROCESS_SHARED attribute for locks, since really only the
pointer is shared when a lock is mapped into distinct address spaces.
A common opinion was that we have no choice but to break the libthr
Application Binary Interface (ABI) by changing the lock types to be the
actual lock structures (and padding for future ABI extension). This is
very painful for users, as our previous experience with non-versioned
libc and libc_r has shown.
Instead, I proposed and implemented a scheme where process-shared locks
can be implemented without breaking the ABI. The lock memory is used as
a key into a system-global hash of shared memory objects (off-pages),
which contain the actual lock structures.
New umtx operations to create or look up a shared object by memory key
were added. libthr is modified to look up the object and use it for
shared locks, instead of using malloc() as for private locks.
The pointer value in the user-visible lock type contains a canary for
shared locks. libthr detects the canary and switches into the
shared-lock mode.
The proposal of inlining the lock structures, besides the drawbacks of
breaking ABI, has its merits. Most important, the inlining avoids the
need for indirection. Another important advantage over the off-page
approach is that no off-page object needs to be maintained, and the
lifecycle of the shared lock naturally finishes with the destruction of
the shared memory, without need for explicit cleanup. Right now,
off-pages hook into vm object termination to avoid leakage, but
long-livedness of the vnode vm object prolongs the off-page's
existence for shared locks backed by files, however unlikely they may
be.
libthr with inlined locks became informally known as the libthr2
project, since it is better to change the library name than just
bumping the library version. rtld should ensure that libthr and libthr2
are not simultaneously loaded into a single address space.
This project was sponsored by The FreeBSD Foundation.
Open tasks:
1. Implement robust mutexes.
2. Evaluate and implement libthr2.
__________________________________________________________________
RCTL Disk IO Limits
Contact: Edward Tomasz Napierała <trasz at FreeBSD.org>
An important missing piece of the RCTL resource limits framework was
the ability to limit file system throughput. This project aims to fill
that hole by making it possible to add RCTL rules for read bytes per
second (BPS), write BPS, read I/O operations per second (IOPS), and
write IOPS, and adding a new throttling mechanism to slow down
offending processes when a limit gets hit.
The code has been committed and will ship with FreeBSD 11.0-RELEASE.
This project was sponsored by The FreeBSD Foundation.
Open tasks:
1. Additional testing
2. Simplify locking, getting rid of rctl_lock altogether
3. Improve statistics gathering by making it possible for rctl -u to
retrieve usage counters at a fixed point in time
4. Use the new throttling mechanism for %CPU limits
__________________________________________________________________
The Graphics Stack on FreeBSD
Links
Graphics Stack Roadmap and Supported Hardware Matrix URL: https://wiki.freebsd.org/Graphics
Ports Development Tree on GitHub URL: https://github.com/freebsd/freebsd-ports-graphics
FreeBSD Graphics Team at FOSDEM 2016 URL: https://fosdem.org/2016/schedule/event/freebsd_graphic_stack/
GSoC 2016: link /dev Entries to sysctl Nodes URL: https://wiki.freebsd.org/SummerOfCodeIdeas#Devices_management:_link_.2Fdev_entries_to_sysctl_nodes
GSoC 2016: Redesign libdevq URL: https://wiki.freebsd.org/SummerOfCodeIdeas#Devices_management:_redesign_and_rewrite_libdevq
Graphics Team Blog URL: http://planet.freebsd.org/graphics/
Contact: FreeBSD Graphics team <freebsd-x11 at FreeBSD.org>
The major news for this quarter is the update of the i915 driver in the
kernel! The driver now matches Linux 3.8.13, so it includes initial
Haswell support. Linux 3.8 is already three years old, but work
continues to upgrade DRM further. In particular, work commenced to move
to using the linuxkpi compatibility.
In the Ports tree, Mesa was updated to 11.1.2. The next minor release,
11.2.0, is ready for testing in our development tree. We also updated
libclc to 0.2.0.20151006, a library used by Mesa to provide OpenCL
support. Upstream patches were added to beignet so all these ports now
use the same LLVM version.
We attended FOSDEM 2016 in Brussels. Jean-Sébastien Pédron gave a talk
to explain the work of the graphics team and show how people can
contribute. It was well received and the presentation was followed by
interesting discussions. FOSDEM was also a nice occasion to meet and
talk again to the nice upstream developers of the graphics stack.
For the first year, we added two ideas for GSoC 2016: one for a kernel
task, one to redesign libdevq. Six students submitted proposals for
those ideas; that was unexpected! We now need to decide which one we
want to mentor and the choice is difficult.
Our blog has moved to a new location (linked above).
Open tasks:
1. See the "Graphics" wiki page for up-to-date information.
__________________________________________________________________
Kernel
ARM Allwinner SoC Support
Links
Allwinner FreeBSD Wiki URL: https://wiki.freebsd.org/FreeBSD/arm/Allwinner
Contact: Jared McNeill <jmcneill at FreeBSD.org>
Contact: Emmanuel Vadot <manu at bidouilliste.com>
Allwinner SoCs are used in multiple hobbyist devboards and single-board
computers. Recently, support for these SoCs has received a lot of
updates
Task done during first quarter:
* I2C
* HDMI output
* Basic AXP209 support (Power Management Unit)
* Switch to upstream DTS for most boards
* Basic Support for A31/A31S SoC
* RTC
* Proper Pinmux/GPIO support
* Audio Codec / Audio HDMI
* A10/A20 DMA support
* A20 now uses the GIC (General Interrupt Controller)
* A20 now uses the ARM Generic Timer
Ongoing tasks:
* Switch to a new clock framework (In review)
* Convert the A10 interrupt controller to INTRNG (In review)
* OHCI support (In review)
* Generic ALLWINNER kernel config file (In review)
* A20/A31 NMI support (In review)
* USB OTG
* Finish the switch to using upstream DTS files
* A83T SoC Support
* H3 SoC Support
Open tasks:
1. SPI driver
2. LCD Support
3. Any unsupported hardware device that might be of interest.
__________________________________________________________________
CAM I/O Scheduler
Links
I/O Scheduling in FreeBSD's CAM Subsystem (PDF) URL:
https://people.freebsd.org/~imp/bsdcan2015/iosched-v3.pdf
The BSDCan 2015 Talk URL: https://www.youtube.com/watch?v=3WqOLolj5EU
Contact: Warner Losh <wlosh at netflix.com>
An enhanced CAM I/O scheduler has been committed to the tree. By
default, this scheduler implements the old behavior. In addition, an
advanced adaptive scheduler is available. Along with the scheduler,
SATA disks can now use Queued Trims with devices that support them.
Details about the new scheduler are available in the I/O Scheduling in
FreeBSD's CAM Subsystem article (PDF) or from the BSDCan 2015 talk.
The adaptive I/O scheduler is disabled by default, but can be enabled
with options CAM_ADAPTIVE_IOSCHED in the kernel config file. This
scheduler allows favoring reads over writes (or vice versa),
controlling the IOPs, bandwidth, or concurrent operations (read, write,
trim), and permits the selection of static or dynamic control of these
operations. In addition, a number of statistics are collected for drive
operations that are published via sysctl. One advanced use for the
adaptive I/O scheduler is to compensate for deficiencies in some
consumer-grade SSDs. These SSDs exhibit a performance cliff if too much
data is written to them too quickly due to internal garbage collection.
Without the I/O scheduler, read and write performance drop
substantially once garbage collection kicks in. The adaptive I/O
scheduler can be configured to monitor read latency. As read latency
climbs, the I/O scheduler reduces the allowed write throughput, within
limits, to attempt to maximize read performance. A simple use of the
adaptive I/O scheduler would be to limit write bandwidth, IOPs or
concurrent operations statically.
Future work on the I/O scheduler will be coupled with improvements to
the upper layers. The upper layers will be enhanced to communicate how
urgent I/O requests are. The I/O scheduler will inform the upper layers
of how full the I/O queues are, so less urgent I/O can be submitted to
the lower layers as quickly as possible without overwhelming the lower
layers or starving other devices of requests.
This project was sponsored by Netflix.
__________________________________________________________________
FDT Overlay Support in UBLDR
Links
ubldr Patch URL: https://reviews.freebsd.org/D3180
Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>
A flattened device tree is a way to keep the hardware description
separated from code. During the boot process, the loader passes a
pointer to the device-tree blob to the kernel and the kernel
instantiates and attaches drivers according to the information in the
blob.
This approach does not work when the hardware is expandable. For
example, the Raspberry Pi and Beaglebone Black have the concept of
capes or shields: snap-on PCBs that are connected to IO headers on the
main board and provide additional functionality like an LCD screen or
GPS receiver. These shields can be described by their own device trees
and these trees can be overlaid on the base tree by the boot loader,
thus providing an accurate description to the kernel.
The proposed patch adds this functionality to ubldr. The user can
specify a comma-separated list of overlays to U-Boot or the loader
fdt_overlays variable and ubldr will load them from the /boot/dtb/
directory and do the overlaying.
__________________________________________________________________
Filemon Performance/Stability Improvements
Contact: Bryan Drewery <bdrewery at FreeBSD.org>
Contact: Mateusz Guzik <mjg at FreeBSD.org>
Filemon is a kernel module for tracing which files a command creates,
reads, writes, or executes. It allows tracking build dependencies in
combination with bmake's meta mode. bmake stores filemon's output in a
.meta file along with the build command and later uses this to trigger
a rebuild of the target if any of the files referenced are missing or
modified, or if the build command changes. It provides the same
functionality as the compiler's -MF flag, but for everything. It will
be critical for buildworld's WITH_META_MODE (which is the normal
buildworld but only using filemon) to provide a reliable incremental
build without even the need for .depend files or compiler -MF flags.
This allows -DNO_CLEAN to work all of the time.
Filemon on -HEAD was improved for stability and performance over this
quarter. It no longer causes every syscall it hooks into to loop over
processes looking for a matching filemon struct. It now just attaches
directly to the struct proc with its own pointer. This improves
performance by reducing lock contention during a build. Much other work
went into improving error handling and other stability issues in the
module as well.
All of this work was done by Bryan Drewery, sponsored by EMC, but much
help and identification of bugs was provided by Mateusz Guzik.
This project was sponsored by EMC / Isilon Storage Division.
Open tasks:
1. Improve credential handling.
2. Improve EVENTHANDLER performance.
3. Possibly provide a framework for syscallenter/syscallret hooking to
avoid the need to hook syscalls as Filemon does.
__________________________________________________________________
FreeBSD Integration Services (BIS)
Links
FreeBSD Virtual Machines on Microsoft Hyper-V URL:
https://wiki.FreeBSD.org/HyperV
Supported Linux and FreeBSD Virtual Machines for Hyper-V on Windows
URL: https://technet.microsoft.com/en-us/library/dn531030.aspx
Contact: Sepherosa Ziehau <sepherosa at gmail.com>
Contact: Howard Su <howard0su at gmail.com>
Contact: Hongjiang Zhang <honzhan at microsoft.com>
Contact: Dexuan Cui <decui at microsoft.com>
When FreeBSD virtual machines (VMs) run on Hyper-V, using Hyper-V
synthetic devices is recommended to get the best network and storage
performance and make full use of all the benefits that Hyper-V
provides. The collection of drivers that are required to use Hyper-V
synthetic devices in FreeBSD are known as FreeBSD Integration Services
(BIS). Some of the BIS drivers (like network and storage drivers) have
existed in FreeBSD 9.x and 10.x for years, but there are still some
performance and stability issues and bugs. Compared with Windows and
Linux VMs, the current BIS lacks some useful features, e.g., live
virtual machine backup, TRIM/Unmap, the support for UEFI VMs (boot from
UEFI), etc.
During the past quarter, we made a great progress on the performance
tuning for Hyper-V network driver. We also refactored and cleaned up
the VMBus driver, and fixed some important bugs. All the work makes
FreeBSD VMs run even better on Hyper-V and the Hyper-V based cloud
platform Azure!
Our work during 2016Q1 is documented below:
Optimizing the performance of Hyper-V network driver:
* We added LRO (Large Receive Offloading) support to the driver and
properly handle ACK packets. This effectively reduces the CPU
cycles used in the TCP/IP stack and dramatically boosts network
performance!
* We enabled vRSS (virtual Receive Side Scaling) support for the
driver. This greatly improved the network performance for SMP
virtual machines.
* We used a separate Tx kernel thread to relieve the Rx thread of
transmitting packets (the Rx thread tried to transmit packets after
receiving ACKs), so the Rx thread can receive packets and send ACKs
faster.
* Now we can reach a VM-to-VM throughput of 9.1Gbps on a host with a
10Gbps physical NIC, and over 20Gbps on a host with a 40Gbps NIC,
all the while with plenty of CPU cycles left for applications.
* We also enabled IP header checksum offloading, and Rx checksum
offloading for UDP.
* Further performance tuning is working in progress.
Refactoring and cleaning up the VMBus driver code:
* Instead of using swi threads directly, we now use per-CPU
taskqueue_create_fast() threads for event and message handling,
making the code more conventional for FreeBSD.
* We did a lot of cleanup to the hv_utils code (HeartBeat, TimeSync
and Shutdown) and we are further cleaning up the KVP code.
* We used a new message/interrupt slot for the Hyper-V timer, so the
handling of timer and non-timer messages can be distinguished,
fixing a potential issue.
* Instead of finding an available IDT vector by hacking, we are
changing to use the normal method, lapic_ipi_alloc().
* We are modularizing the Hyper-V modules:
1. they will be loaded in the loader;
2. we are going to enhance devd(8) to improve the hot plug case.
Bug Fixing:
* Fixed the "spurious multiple disks" issue (PR 206630 -- FreeBSD
10.2 on Windows 10 and 2016 server may not boot due to multiple
invalid disks) in the Hyper-V storage driver and now FreeBSD VMs
can reliably boot on Win10 and 2016 hosts.
* Fixed the OACTIVE issue (PR 207297 -- [Hyper-V] FreeBSD 10.2 on
hyperv lost network under heavy load for OACTIVE).
* Fixed a TSC calibration issue (PR 208238 -- [Hyper-V] TSC frequency
is not correctly detected: "calcru: runtime went backwards") and we
will not see the "runtime went backwards" messages any more!
* Fixed the "very slow terminal" issue of 11-CURRENT by enabling text
mode when we are running on hypervisors.
* Fixed the "unknown dhcp option value 0xf5" issue in dhclient(8) by
asking dhclient(8) to ignore the option, and FreeBSD VMs on Azure
can now reliably get IP addresses.
* Found a workaround for PR 20824 ([Hyper-V] VM network may not work
over virtual switch based on wireless NIC): add
"net.link.ether.inet.max_age=60" in /etc/sysctl.conf.
We plan to add support for live virtual machine backup, TRIM/Unmap, and
UEFI VMs (Hyper-V Generation-2 VMs).
We published errata (FreeBSD-EN-16:04.hyperv,
FreeBSD-EN-16:05.hv_netvsc) with the Release Engineering team, so 10.1
and 10.2 users can easily get the fixes for KVP and TCP checksums by
upgrading the system.
We published BIS test cases for Hyper-V on github:
https://github.com/FreeBSDonHyper-V/Test-BIS and we are going to
publish the test cases for Azure soon.
This project was sponsored by Microsoft.
__________________________________________________________________
Infiniband
Links
Call for Testing URL: https://lists.freebsd.org/pipermail/freebsd-infiniband/2016-March/000190.html
Contact: Hans Petter Selasky <hselasky at FreeBSD.org>
Mellanox is working on a big infiniband update towards Mellanox OFED
v3.2 of the infiniband stack in FreeBSD. The updates include both
userland and kernel components. Infiniband patches for FreeBSD are
available in the link above which can be downloaded and applied to a
recent FreeBSD-head checkout.
This project was sponsored by Mellanox Technologies.
__________________________________________________________________
MMC Stack Under CAM Framework
Links
Project Information URL: https://bakulin.de/freebsd/mmccam.html
Source Code URL: https://github.com/kibab/FreeBSD/tree/mmccam
Patch for Review URL: https://reviews.FreeBSD.org/D4761
Contact: Ilya Bakulin <ilya at bakulin.de>
The goal of this project is to reimplement the existing MMC/SD stack
using the CAM framework. This will permit utilizing the well-tested CAM
locking model and debugging features. It will also be possible to
process interrupts generated by the inserted card, which is a
prerequisite for implementing the SDIO interface. SDIO support is
necessary for communicating with the WiFi/BT modules found on many
development boards, like Wan Raspberry Pi 3.
Another feature that the new stack will have is support for sending SD
commands from userland applications using cam(3). This will allow for
building device drivers in userland and make debugging much easier.
The first version of the code was uploaded to Phabricator for review.
The new stack is able to attach to the SD card and bring it to an
operational state so it is possible to read and write to the card.
Support for the imx_sdhci SD Host Controller (used on iMX-based boards,
for example Wandboard) was added in 2016Q1, along with ti_sdhci, which
is used on the BeagleBone Black. Modifying other SDHCI-compliant
drivers should not be difficult.
Open tasks:
1. Modify the SDHCI driver on at least one x86 platform. This will
make development and collaboration easier.
2. Begin implementing SDIO-specific bits.
__________________________________________________________________
NFS Server
Contact: Rick Macklem <rmacklem at FreeBSD.org>
A new -manage-gids option was added to the nfsuserd daemon. This option
tells the NFS server to use the list of groups for a uid on the server
and not the list of groups in the NFS RPC request. Use of this option
avoids the 16 group limit for NFS RPCs using AUTH_SYS (the default).
Work is ongoing with respect to development of pNFS support for the NFS
server using GlusterFS as a back end. This will be a long-term project
with the eventual goal of allowing the NFS server to scale beyond a
single server system. Hopefully it will be available for testing in
late Spring 2016. pNFS allows an NFSv4.1 client to do reads/writes
directly to a data server and not the NFS server.
Open tasks:
1. The pNFS server will be in need of testing during development or it
will never progress to a near-production status. I hope to have
code available in FreeBSD's Subversion project branch for testing
in late spring 2016.
__________________________________________________________________
Static Analysis of the FreeBSD Kernel with PVS Studio
Links
PVS-Studio Delved into the FreeBSD Kernel URL: http://www.viva64.com/en/b/0377/
PVS Static Analysis Phabricator Review URL: https://reviews.freebsd.org/D5245
Contact: Warren Block <wblock at FreeBSD.org>
In February, Program Verification Systems used their PVS-Studio tool to
run a static analysis of the FreeBSD kernel. A Phabricator review was
created to allow developers to share comments on the results. A number
of bugs ranging from trivial typos to redundant code to important logic
errors were found and fixed. Some results were false positives. Several
of these were addressed by changing code that misled the static
analyzer and could also mislead a human reader.
The cooperation that Program Verification Systems offers to open-source
projects like FreeBSD benefits everyone. We thank them for sharing this
analysis and their insights with us.
__________________________________________________________________
Architectures
AmigaOne X5000 Support
Links
URL: http://www.amigaos.net/hardware/133/amigaone-x5000
Contact: Justin Hibbits <jhibbits at FreeBSD.org>
This project is a continuation of the Book-E QorIQ support enhancements
by Semihalf dating back to 2012.
The AmigaOne X5000 series of AmigaOS-compatible systems uses the
Freescale QorIQ series of SoCs for a desktop-class form factor. The
work here entails adding support for the e5500 core itself, in addition
to support for the SoC peripherals.
Currently, most of the code to enable basic support is checked in:
dTSEC (ethernet), core support (e500mc, e5500). As part of this, rman,
the kernel resource manager, was enhanced to use uintmax_t for
resources. This allows devices to be physically above the 4GB boundary
on 32-bit systems. With a statically compiled device tree, it boots to
multiuser mode with nfsroot, and can be used as normal (serial and SSH
logins once configured).
This project was sponsored by Alex Perez (Inertial Computing).
Open tasks:
1. eSDHC driver: Work has been started on this, hijacking the
imx_sdhc.c from Ian Lepore, but there are still bugs: missing DMA
from the iMX driver, and odd timeouts after the system starts up.
2. SATA support: There is a WIP driver for the SATA controller, but it
is currently very slow, about 11MB/s on a SATA 2 link. It currently
relies on a 10ms delay on every SATA transaction for it to be even
somewhat stable. Without this delay, the disk scan never works and
I have not yet figured out why.
3. Local console (VGA) support: It currently boots with a serial
console. vgapci0 is seen if there is a PCIe graphics card, but
vt(4) does not attach to it yet.
4. 64-bit support: The CPU on the board is a P5020, a 64-bit e5500
dual-core SoC. Currently, booke support in FreeBSD is 32-bit only.
5. SMP: SMP support on Book-E hardware is currently broken.
6. U-boot support: Currently this uses a compiled-in device tree, but
it would be preferable to use the device tree provided by u-boot,
or at least the Linux-compatible device tree.
7. More work is needed on the DPAA front (Datapath Acceleration
Architecture) to improve the Ethernet driver and utilize the SEC
engine for crypto, random(4), and IPSec.
__________________________________________________________________
FreeBSD on Cavium ThunderX (arm64)
Contact: Dominik Ermel <der at semihalf.com>
Contact: Wojciech Macek <wma at semihalf.com>
Contact: Zbigniew Bodek <zbb at semihalf.com>
Since the last report, FreeBSD support for ThunderX has been
significantly improved and stabilized. Semihalf contributions include
the following items:
* Support for the newest ThunderX chip revisions (Pass 2.0) and
current Cavium firmware. Backward compatibility is maintained.
* Moved to using pci_host_generic.c as a main driver for the internal
PCIe bridge. This involved a significant rework of PCIe code to
support both generic and ThunderX based platforms.
* Serious networking performance boost and bug fixes:
* Fixed race condition on Rx path causing a very rare "use after
free" issue
* Hardware L3 and L4 checksums support
* Hardware assisted TCP Segmentation Offloading (TSO)
* Support for software Large Receive Offload (LRO)
* Various improvements to Tx and Rx paths and configuration
The driver supports all available Ethernet connections (1, 10, 30 Gbps)
and the system can saturate a 10 Gbps link (on Tx) using 4 CPU cores.
* Significantly improved overall I/O performance:
* Complete rework of copyin/copyout and bzero functionalities
Other improvements:
* Support for interrupt to CPU binding (including GICv3/ITS backends)
This work is integrated to FreeBSD HEAD on an on-going basis.
This project was sponsored by Cavium, and Semihalf.
Open tasks:
1. Add support for multi-Queue Set operation in VNIC.
__________________________________________________________________
powerpcspe Target
Links
Source Tree URL: https://svnweb.freebsd.org/base/projects/powerpcspe/
Contact: Justin Hibbits <jhibbits at FreeBSD.org>
This project aims to enable the use of the Signal Processing Engine
found in the NXP/Freescale e500v2 SoC. The SPE uses opcodes overlapping
with those of Altivec, so they are mutually exclusive. Additionally,
the e500v2 does not have a traditional FPU, and instead uses the SPE
for all floating point operations (or emulation, as is currently done).
Combined with the fact that the SPE ABI is incompatible with the
traditional ABI, a new MACHINE_ARCH has been created to address these
incompatibilities.
A project branch has been created for the work. A powerpcspe kernel
boots on the RouterBoard RB800, and the base utilities run properly.
Open tasks:
1. Potentially optimizing setjmp/longjmp to not use SPE unless it has
already been enabled. This would save the kernel switch for
processes that do not otherwise use the SPE. This is a low priority
task which may not be completed.
__________________________________________________________________
Userland Programs
ELF Tool Chain Tools
Links
ELF Tool Chain Web Site URL: http://elftoolchain.sourceforge.net
Contact: Ed Maste <emaste at FreeBSD.org>
The ELF Tool Chain project provides BSD-licensed implementations of
compilation tools and libraries for building and analyzing ELF objects.
The project began as part of FreeBSD but later became an independent
project to encourage wider participation from others in the open-source
developer community.
The ELF Tool Chain project released version 0.7.1 in February. We have
been tracking snapshots of the upstream repository in FreeBSD. Having
an official release brings the benefit of broader testing and
visibility within other open source projects, even if we do not require
it in order to update FreeBSD.
In the first quarter of 2016, the ELF Tool Chain tools were updated to
a snapshot of upstream Subversion revision 3400, which is close to the
0.7.1 release. Additional bug fixes were committed to FreeBSD and
subsequently merged into the upstream repository.
ELF Tool Chain's elfcopy(1) is now installed as objcopy(1) by default,
as it is a viable replacement for the base system and ports tree.
Significant improvements were made to the elfcopy(1), readelf(1), and
elfdump(1) tools, including better MIPS, RISC-V, and AArch64 support.
This project was sponsored by The FreeBSD Foundation.
Open tasks:
1. Fix issues found by fuzzing inputs to the tools.
2. Add automatic support for separate debug files.
3. Investigate replacement objdump, ld and as implementations.
__________________________________________________________________
Native PCI-express HotPlug
Links
Native PCI-express HotPlug Support URL: https://github.com/bsdjhb/freebsd/tree/pci_hp
Contact: John Baldwin <jhb at FreeBSD.org>
A new implementation of support for native PCI-express hotplug is
present at the URL above. Much of the new code lives in the PCI-PCI
bridge driver to handle hotplug events and manage the PCI-express slot
registers. Additional changes in the branch include adding new rescan
and delete commands to devctl(8), as well as support for rescanning PCI
busses.
The current implementation has been tested on systems with ExpressCard
slots but could use additional testing, especially on systems with
other PCI-express HotPlug features such as mechanical latches,
attention buttons, indicators, and so on.
Open tasks:
1. Split the branch into separate logical changes as commit
candidates.
2. Additional testing.
__________________________________________________________________
Updates to GDB
Contact: John Baldwin <jhb at FreeBSD.org>
The new thread target that directly uses ptrace(2) was committed
upstream and included in GDB 7.11. The port was also updated to GDB
7.11.
Open tasks:
1. Figure out why the powerpc kgdb targets are not able to unwind the
stack past the initial frame.
2. Add support for more platforms (arm, mips, aarch64) to upstream gdb
for both userland and kgdb.
3. Add support for debugging powerpc vector registers.
4. Add support for catching system calls.
5. Add support for $_siginfo.
6. Add support for ELF auxv data via info auxv.
7. Implement info os commands.
8. Implement gdbserver for FreeBSD.
__________________________________________________________________
Using lld, the LLVM Linker, to Link FreeBSD
Links
FreeBSD lld Wiki Page URL: https://wiki.freebsd.org/LLD
Status Report on Linking FreeBSD/amd64 with lld URL: http://lists.llvm.org/pipermail/llvm-dev/2016-March/096449.html
Contact: Rafael Espíndola <rafael.espindola at gmail.com>
Contact: Davide Italiano <davide at FreeBSD.org>
Contact: Ed Maste <emaste at FreeBSD.org>
lld is the linker in the LLVM family of projects. It is intended to be
a high-performance linker and supports the ELF, COFF and Mach-O object
formats. Where possible, lld maintains command-line and functional
compatibility with existing linkers (GNU BFD ld and gold), but lld's
authors are not constrained by strict compatibility where it would
hamper performance or desired functionality.
The upstream lld project made significant progress in adding new
functionality to lld's ELF support over the first quarter of 2016. The
lld ELF linker is capable of self-hosting on FreeBSD/amd64 and is
capable of linking many test applications.
Highlights of upstream development over the quarter include:
* lld gained Link Time Optimization (LTO) support and is able to link
Clang with LTO
* The relocation code has been overhauled for better maintainability
* Improvements to linker script support, including better diagnostics
* Many bug fixes in x86_64, AArch64, and MIPS support
lld currently lacks comprehensive linker script expression evaluation
support, and therefore cannot yet be used to link the FreeBSD kernel.
It also lacks versioned symbol support, and does not implement some
options used in the FreeBSD boot loader components.
Ed has been running experimental world builds of FreeBSD/amd64 with lld
installed in place of ld.bfd as the linker. With workarounds for the
current gaps in functionality (using the WITHOUT_SYMVER option to
disable symbol versioning use, and linking the loader components with
GNU ld), lld is now able to link a working FreeBSD userland.
This project was sponsored in part by The FreeBSD Foundation.
Open tasks:
1. Enable the lld option by default in the llvm-devel (and later llvm)
ports for testing.
2. Develop symbol version support and linker script expression
improvements in the upstream lld project.
3. Add or improve support for the remaining FreeBSD architectures.
4. Import a newer lld snapshot into the vendor area, add build
infrastructure and connect it to the world build, installed as
ld.lld.
5. Request a ports exp-run with /usr/bin/ld a symlink to ld.lld.
6. Extensive testing.
__________________________________________________________________
Ports
GitLab Port
Contact: Torsten Zühlsdorff <ports at toco-domains.de>
After nearly a year of work on this project, GitLab 8.5.5 was committed
into the ports tree. A big thanks to the enormous number of people
involved! Since GitLab is a fast-moving project, there is also ongoing
work to stay in sync with upstream. Have fun!
__________________________________________________________________
GNOME on FreeBSD
Links
FreeBSD GNOME Website URL: http://www.FreeBSD.org/gnome
Development Repository URL: https://github.com/FreeBSD/freebsd-ports-gnome
Upstream Build Bot URL: https://wiki.gnome.org/Projects/Jhbuild/FreeBSD
USE_GNOME Porter's Handbook Chapter URL: https://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/using-gnome.html
Contact: FreeBSD GNOME Team <freebsd-gnome at FreeBSD.org>
The FreeBSD GNOME Team maintains the GNOME, MATE, and CINNAMON desktop
environments and graphical user interfaces for FreeBSD. GNOME 3 is part
of the GNU Project. MATE is a fork of the GNOME 2 desktop. CINNAMON is
a desktop environment using GNOME 3 technologies but with a GNOME 2
look and feel.
This quarter, GNOME 3.18 and MATE 1.12 were committed to the ports
tree.
The bsd.gnome.mk and bsd.mate.mk frameworks were replaced by the
simpler Uses/gnome.mk and Uses/mate.mk style.
Open tasks:
1. Tracking MATE 1.13, the development version that will become MATE
1.14.
2. Work started on porting GNOME 3.20.
3. We have Cinnamon 2.8 in our development tree, but we do not have
the time to properly test and fix the issues before this Cinnamon
can be committed to ports. Interested in helping or taking
maintainership of Cinnamon? Please let us know.
__________________________________________________________________
KDE on FreeBSD
Links
KDE on FreeBSD Website URL: https://freebsd.kde.org/
Experimental KDE Ports Staging Area URL: https://freebsd.kde.org/area51.php
KDE on FreeBSD Wiki URL: https://wiki.FreeBSD.org/KDE
KDE/FreeBSD Mailing List URL: https://mail.kde.org/mailman/listinfo/kde-freebsd
Development Repository for Integrating KDE Frameworks 5 and Plasma 5 URL: http://src.mouf.net/area51/log/branches/plasma5
Contact: KDE on FreeBSD team <kde at FreeBSD.org>
The KDE on FreeBSD team focuses on packaging and making sure that the
experience of KDE and Qt on FreeBSD is as good as possible.
While the list of updates is shorter than that for the previous
quarter, the team remained busy and work on KDE Frameworks 5 and Plasma
5 continues.
Tobias Berner, who has been driving our KDE Frameworks 5 and Plasma 5
efforts from the beginning, received a KDE commit bit, and has been
putting it to good use by upstreaming FreeBSD across several KDE
repositories. Another team highlight in the beginning of this year is
the (re)addition of another committer to our experimental repository:
Adriaan de Groot, a longtime KDE contributor who also used to work on
KDE and FreeBSD almost a decade ago when our team was first formed.
Welcome back, Ade!
The following big updates were landed in the ports tree this quarter.
In many cases, we have also contributed patches to the upstream
projects.
* CMake 3.4.2 and 3.5.0
* Calligra 2.9.11, the latest release of the integrated work
applications suite. We have managed to keep in sync with the
upstream releases since 2.9.10.
* KDE Telepathy was updated to 0.9.0 and Telepathy-Qt4 was updated to
0.9.6.1, the latest upstream releases.
* The Qt 5 ports were finally updated to 5.5.1, which were the latest
stable version at the time.
* The first commit preparing the groundwork for KDE Frameworks 5 and
Plasma 5 was landed to the ports tree.
Work on Qt 5.6.0 is under way in our experimental repositories. At the
time of this writing, it also contains KDE Frameworks 5.20.0, Plasma
5.6.1, and KDE Applications 16.03.80.
Users interested in testing those ports are encouraged to follow the
instructions in our website and report their results to our mailing
list. Qt5 5.6.0 is in our qt-5.6 branch, and Plasma 5 and the rest is
in the plasma5 branch.
Open tasks:
1. Land the KDE Frameworks 5 and Plasma 5 ports to the tree.
2. Commit the DigiKam 4.14.0 update currently being worked on in our
experimental repository.
__________________________________________________________________
Obsoleting Rails 3
Contact: Torsten Zühlsdorff <ports at toco-domains.de>
Ruby on Rails is the base for most of the rubygems in the Ports
Collection. Currently, versions 3.2 and 4.2 coexist, but since Rails
3.2 is running out of support, the time has come to switch.
There is an ongoing progress to remove Rails 3.2 from the ports tree.
While many gems already work with the new version, there are some
exceptions. For example, www/redmine needs a big update (which is
currently being tested) because it depends on gems that depends on
Rails 3.2.
If you want to help with porting or testing, feel free to contact me or
the mailinglist ruby at FreeBSD.org.
__________________________________________________________________
Ports Collection
Links
URL: http://www.FreeBSD.org/ports/
URL: http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing-ports/
URL: http://portsmon.freebsd.org/index.html
URL: http://www.freebsd.org/portmgr/index.html
URL: http://www.facebook.com/portmgr
Contact: Frederic Culot <portmgr-secretary at FreeBSD.org>
Contact: FreeBSD Ports Management Team <portmgr at FreeBSD.org>
As of the end of Q1, the ports tree holds a bit more than 25,000 ports,
and the PR count is below 1,900. The activity on the ports tree remains
steady, with almost 7,000 commits performed by around 120 active
committers.
On the problem reports front, the encouraging trend observed during the
previous quarter is confirmed, with again a significant increase in the
number of PRs fixed during Q1. Indeed, almost 2,400 reports were fixed,
which allows us to go below the threshold value of 2,000 open PRs.
In Q1, three commit bits were taken in for safekeeping, following an
inactivity period of more than 18 months (milki, brian), or on
committer's request (mmoll). We had one returning committer (fluffy)
who had his commit bit reinstated. Two new developers were granted a
ports commit bit (Olivier Cochard-Labbe and Christoph Moench-Tegeder).
On the management side, we had the pleasure to welcome miwi back to the
portmgr team.
On the QA side, 39 exp-runs were performed to validate sensitive
updates or cleanups. The most noticeable change might be the removal of
the now unneeded ${PORTSDIR} when specifying dependencies in Makefiles
(see the /usr/ports/CHANGES entry dated 20160402). Amongst other
noticeable changes are the update to ruby 2.3, ruby-gems to 2.5.1,
CMake to 3.5.0, clang to 3.8.0-r258968, Qt5 to 5.5.1, Gnome to 3.18,
boost to 1.60.0, the update of libc++ in base to 3.8.0 release, and the
enabling of LLVM libunwind by default on x86. The CentOS ports were
also updated. Some infrastructure changes included the switch from
bsd.gnome.mk and bsd.mate.mk to the simpler Uses/gnome.mk and
Uses/mate.mk. Some work was also done to improve poudriere builds by
reducing dependency calculation and general overheads.
Open tasks:
1. We would like to remind everyone that the ports tree is built and
run by volunteers, and any help is greatly appreciated. A great
amount of effort was spent on the ports front in Q1, which allowed
us to decrease the number of pending problem reports significantly,
as well as on the ports infrastructure. Many thanks to all who
contributed!
__________________________________________________________________
Documentation
New FreeBSD Mastery Books
Links
FreeBSD Mastery: Specialty Filesystems URL: https://www.michaelwlucas.com/nonfiction/fmsf
FreeBSD Mastery: Advanced ZFS URL: https://www.michaelwlucas.com/nonfiction/fmaz
Tilted Windmill Press URL: https://www.tiltedwindmillpress.com/
Contact: Michael Lucas <mwlucas at michaelwlucas.com>
Contact: Allan Jude <allanjude at FreeBSD.org>
Two new FreeBSD Mastery books are out:
FreeBSD Mastery: Specialty Filesystems by Michael W. Lucas, and the
long-awaited FreeBSD Mastery: Advanced ZFS by Lucas and Allan Jude.
Both books are available in print and ebook formats now.
A bundle containing all the FreeBSD Mastery books is available at a
discount from tiltedwindmillpress.com.
Open tasks:
1. Write more books!
__________________________________________________________________
Spanish FAQ and Chinese Porter's Handbook Translations
Links
Preguntas Frecuentes para FreeBSD 9.X y 10.X URL: https://www.freebsd.org/doc/es_ES.ISO8859-1/books/faq/
FreeBSD Porter 手冊 URL: https://www.freebsd.org/doc/zh_TW.UTF-8/books/porters-handbook/
FreeBSD Translators Mailing List URL: https://lists.freebsd.org/pipermail/freebsd-translators/
PO Translations URL: https://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/po-translations.html
FreeBSD Documentation Project Primer for New Contributors URL: https://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/
Contact: Federico Caminiti <demian.fc at gmail.com>
Contact: Carlos J Puga Medina <cpm at fbsd.es>
Contact: Ruey-Cherng Yu <raycherng at gmail.com>
Contact: Warren Block <wblock at FreeBSD.org>
Federico Caminiti created an entirely new Spanish translation of the
31,000-word FAQ with editorial help from Carlos J Puga Medina.
This landmark accomplishment marks the first use of the new PO
translation system to translate an entire book!
Ruey-Cherng Yu has begun an ambitious Traditional Chinese (zh_TW)
translation of the 64,000-word Porter's Handbook. About half of the
strings in the book have been translated so far.
Open tasks:
1. Help add and improve translations of FreeBSD documents into
Spanish: start of freebsd-translators thread.
2. Help add and improve translations of FreeBSD documents into Chinese
or other languages.
__________________________________________________________________
Miscellaneous
FreeBSD Build
Contact: Bryan Drewery <bdrewery at FreeBSD.org>
Build improvements for buildworld on FreeBSD head continue. Some
highlights include:
* WITH_FAST_DEPEND was made the default in r296668, and later made
the only option in r297434. The new depend code avoids a make
depend tree walk and generates .depend files during the build as a
side-effect of compilation. This is done by using the -MF flags of
the compiler. This speeds up the build by 15-35%.
* PR 196193: WITHOUT_CROSS_COMPILER was fixed to properly use
--sysroot which allows the option to work in more cases. It is
still unsafe when major compiler upgrades occur. Further work is
planned to improve that still.
* WITHOUT_TOOLCHAIN now properly builds.
This project was sponsored by EMC / Isilon Storage Division.
Open tasks:
1. Opportunistically skipping the bootstrap compiler phase of
buildworld.
2. Skipping the make obj tree walk.
3. Enabling WITH_META_MODE in buildworld to provide a reliable
incremental build using filemon(4) and bmake's .MAKE.MODE=meta.
This should not be confused with WITH_DIRDEPS_BUILD which
previously was named WITH_META_MODE and is a drastically different
build system presented at BSDCan 2014 by Simon Gerraty.
__________________________________________________________________
Qt 5.6 on Raspberry Pi
Links
Qt 5.6 on FreeBSD/Pi URL: http://kernelnomicon.org/?p=598
Contact: Oleksandr Tymoshenko <gonzo at FreeBSD.org>
Qt 5.6 is a great framework for building embedded GUI applications, so
when Qt 5.6 was released it was natural to bring it up on the Raspberry
Pi. The current Qt support in ports is very Xorg-centric, so as a proof
of concept I created an experimental qt56-base and qt56-multimedia.
qt56-base can be configured for a generic ARM device with the scfb
video driver, and specifically for Raspberry Pi in which case it
supports EGLFS mode with hardware OpenGL acceleration.
Open tasks:
1. Check how embedded use cases can be fit into the current bsd.qt.mk
or whether a new port should be introduced.
__________________________________________________________________
The FreeBSD Foundation
Links
FreeBSD Foundation Site URL: https://www.freebsdfoundation.org/
Donors URL: https://www.freebsdfoundation.org/donors/
Education and Advocacy Materials URL: https://www.freebsdfoundation.org/what-we-do/education-advocacy/
Faces of FreeBSD: Scott Long URL: https://www.freebsdfoundation.org/blog/faces-of-freebsd-2016-scott-long/
Faces of FreeBSD: Sean Bruno URL: https://www.freebsdfoundation.org/blog/faces-of-freebsd-2016-sean-bruno/
The Longstanding Relationship Between FreeBSD and ZFS URL: https://www.freebsdfoundation.org/blog/freebsd-and-zfs/
FreeBSD RISC-V Work URL: https://www.freebsdfoundation.org/blog/initial-freebsd-risc-v-architecture-port-committed/
Mellanox's Work with NetFlix URL: http://www.mellanox.com/page/press_release_item?id=1688
FreeBSD - The Power to Serve a Community URL: https://chemnitzer.linux-tage.de/2016/de/programm/beitrag/194
The FreeBSD Foundation's New Look URL: https://www.freebsdfoundation.org/blog/introducing-a-new-look-for-the-foundation/
Contact: Deb Goodkin <deb at FreeBSDFoundation.org>
The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated
to supporting and promoting the FreeBSD Project and community
worldwide. Funding comes from individual and corporate donations and is
used to fund and manage development projects, conferences and developer
summits, and provide travel grants to FreeBSD developers. The
Foundation purchases hardware to improve and maintain FreeBSD
infrastructure and publishes FreeBSD white papers and marketing
material to promote, educate, and advocate for the FreeBSD Project. The
Foundation also represents the FreeBSD Project in executing contracts,
license agreements, and other legal arrangements that require a
recognized legal entity.
Here are some highlights of what we did to help FreeBSD last quarter:
Fundraising Efforts
We raised $204,000 last quarter from individual and corporate donors.
Thank you to everyone who made a donation this year! The list of donors
is available.
OS Improvements
The Foundation improves FreeBSD by funding software development
projects approved through our proposal submission process, and our
three software developer staff members. Two Foundation-funded projects
were started last quarter, the first to improve the stability of the
vnet network stack virtualization infrastructure, and the second for
phase two of the FreeBSD/arm64 port project.
Foundation staff members were responsible for many changes over the
quarter. Some notable items include process-shared pthread locks,
address mapping randomization, disk I/O bandwidth limits, porting
libunwind to FreeBSD/arm, bug fixes in the autofs automount daemon, an
updated version of the ELF Tool Chain, investigation of the lld linker,
improved x86 hardware support, and VM subsystem stability improvements.
Several of these projects are described elsewhere in this quarterly
report.
Release Engineering
Foundation employee and release engineer Glen Barber worked on
packaging the base system with pkg(8), separating debug files from the
default base system so they can be selected or deselected during an
install, supporting preparations, testing for the on-time release of
FreeBSD 10.3, and producing 11-CURRENT and 10-STABLE snapshot builds.
FreeBSD Advocacy
Anne Dickison, our Marketing Director, focused on creating and updating
marketing material to promote and teach people about FreeBSD. This
material is available for FreeBSD advocates to hand out at conferences
and events to promote FreeBSD. She also worked on promoting FreeBSD
work being done over social media, blog posts, and articles.
Last quarter, we continued our Faces of FreeBSD series by publishing
stories about Scott Long and Sean Bruno. This is an opportunity to put
a face to a name in the FreeBSD community and get to know more about
the people who contribute to FreeBSD.
Work began on updating the FreeBSD 10.X brochure to include the new
10.3 features.
We love getting stories from companies who are successfully using
FreeBSD. Testimonials were received last quarter from Chelsio and
Acceleration Systems.
ZFS was making some headlines, so we wrote a blog entry on the
longstanding relationship between FreeBSD and ZFS.
We helped promote the FreeBSD RISC-V work being done.
Assistance was provided to Mellanox for their press release
highlighting their work with NetFlix.
Conferences and Events
The FreeBSD Foundation sponsors many conferences, events, and summits
around the globe. These events can be BSD-related, open source, or
technology events geared towards underrepresented groups. We provide
financial support to the major BSD conferences like BSDCan, AsiaBSDCon,
and EuroBSDCon, and give financial and/or other support for smaller
events like BSDDays, FreeBSD Summits, and FreeBSD workshops, camps, and
hackathons. For open source conferences, we will attend when we can get
a free non-profit booth.
The year kicked off with sending Ed Maste, Benedict Reuschling, and
George Neville-Neil to promote and give talks on FreeBSD at FOSDEM, the
largest open source conference in Europe. Ed, our Project Development
Director, had a chance to talk to developers from other projects based
on FreeBSD, and various people about reproducible builds in FreeBSD.
Dru Lavigne and Deb Goodkin promoted FreeBSD at SCALE in Pasadena,
California. Dru gave a presentation called "Doc Like an Egyptian." We
were a Gold Sponsor for AsiaBSDCon in Tokyo, and five Foundation
members attended. Kirk McKusick taught a two-day FreeBSD Kernel
tutorial and gave a talk on the history of the BSD filesystem. Dru
Lavigne and Benedict Reuschling gave a documentation tutorial. Board
members Hiroki Sato and George Neville-Neil helped organize the
conference. BSDnow.tv interviewed Benedict at AsiaBSDCon about his role
as a new Foundation board member and the Foundation's work.
We planned and organized our first-ever FreeBSD Storage Summit in
association with the USENIX FAST Conference. Led by our President and
Founder, Justin Gibbs, we had over 50 attendees participating and
working together on technically focused topics. Benedict was busy
promoting FreeBSD in Europe, where he also attended Linuxtage in
Chemnitz, Germany to give a talk on FreeBSD (in German): FreeBSD -- The
Power to Serve a Community.
The Foundation committed to being a Gold Sponsor for BSDCan and the
upcoming Hackathon/DevSummit in Essen, Germany in April.
Legal/FreeBSD IP
The Foundation owns the FreeBSD trademarks, and it is our
responsibility to protect them. We continued to review requests for
permission to use the trademarks.
FreeBSD Community Engagement
Code of Conduct -- Anne Dickison, our Marketing Director, has been
overseeing the efforts to rewrite the Project's Code of Conduct to help
make this a safe, inclusive, and welcoming community.
We have been reaching out to other open source communities to get help
with our efforts in making this a diverse community and help us achieve
our goals mentioned above of making the FreeBSD community safe,
inclusive, and welcoming.
Continuing with our diversity efforts, we have been connecting with
women in technology groups to work on how we can recruit more women to
FreeBSD and offer Intro to FreeBSD workshops.
Meetings were held with a number of commercial vendors to help
facilitate collaboration with the Project. This included presenting how
the Project is organized, and how companies can get help, contribute
back to the Project, promote their use of FreeBSD, and for us to get
their feedback on the work we are doing to help with our fundraising
efforts.
The new Foundation website and logo was launched, signaling the ongoing
evolution of the Foundation identity and ability to better serve the
FreeBSD Project and community. Find our more about our new look.
__________________________________________________________________
More information about the freebsd-announce
mailing list