From 16c6b370d2029618cd2e7d5bb7cd5e2de1c971be Mon Sep 17 00:00:00 2001
From: Warren Block
The third quarter of 2016 was another productive quarter for - the &os; project and community. [...]
+ the &os; project and community. [...]Thanks to all the reporters for the excellent work!
@@ -110,19 +110,18 @@Currently, &os; is well proven as a base for routers (pfSense, OPNSense, BSDRP) and NAS (FreeNAS, - zfsGuru, NAS4Free). However, - &os;-based solutions are almost completely absent in the - virtualization area, and ClonOS is one of the - attempts to change that. -
+ zfsGuru, NAS4Free). + However, &os;-based solutions are almost completely absent in + the virtualization area, and ClonOS is one of + the attempts to change that. -ClonOS is a new free open-source &os;-based platform for virtual - environment creation and management. In the core platform are: -
+ClonOS is a new free open-source &os;-based platform for + virtual environment creation and management. In the core + platform are:
As in all previous editions of the Google Summer of Code, &os; - was an accepted organization, and we had the chance to mentor 15 - projects. Huge thanks to all our mentors for keeping the high - quality standards that make our community shine.
+As in all previous editions of the Google Summer of Code, + &os; was an accepted organization, and we had the chance to + mentor 15 projects. Huge thanks to all our mentors for + keeping the high quality standards that make our community + shine.
This year was rather unique in that we accepted for the first time well-known members of the community that are not src committers to co-mentor. We also accepted projects that have - a different upstream than &os;. Both are clear signs that &os; is - growing and adapting to the wider community.
+ a different upstream than &os;. Both are clear signs that + &os; is growing and adapting to the wider community.This year we are also had administrative issues with Perforce - and have accepted officially the use of external repositories, in - particular github, as requested by students.
+ and have accepted officially the use of external repositories, + in particular github, as requested by students.12 of 15 projects were successful, which we think is an excellent result for a Google Summer of Code.
@@ -208,17 +208,19 @@CloudABI is a compact UNIX-like runtime environment inspired by - &os;'s Capsicum security framework. It allows you to safely - run potentially untrusted programs directly on top of &os;, - Linux and macOS, without requiring the use of virtualisation, - jails, etc. This makes it a useful building block for - cluster/cloud computing.
+CloudABI is a compact UNIX-like runtime environment inspired + by &os;'s Capsicum security framework. It allows you to + safely run potentially untrusted programs directly on top of + &os;, Linux and macOS, without requiring the use of + virtualisation, jails, etc. This makes it a useful building + block for cluster/cloud computing.
Over the last couple of months, several new libraries and applications have been ported over to CloudABI, the most - important addition being Python 3.6. This means that you can now - write strongly sandboxed apps in Python!
+ important addition being Python 3.6. This means that you can + now write strongly sandboxed apps in Python! -Support for different hardware platforms has also improved. In - addition to amd64 and arm64, we now support i686 and armv6. +
Support for different hardware platforms has also improved. + In addition to amd64 and arm64, we now support i686 and armv6. The release of LLVM 3.9 was important to us, as it has - integrated all the necessary changes to support the first three - platforms. Full armv6 support is still blocked on some issues - with LLVM's linker, LLD.
+ integrated all the necessary changes to support the first + three platforms. Full armv6 support is still blocked on some + issues with LLVM's linker, LLD.This quarter, the Hyper-V storage driver was greatly improved: - its performance was increased by a factor of 1.2-2 by applying - BUS_DMA and UNMAP_IO, enlarging the request queue, and selecting the - outgoing channel with the LUN considered; TRIM/UNMAP was enabled; - and some critical bugs (PRs 209443, 211000, 212998) were fixed so - that disk hot add/remove and VHDX online resizing should work - now.
+This quarter, the Hyper-V storage driver was greatly + improved: its performance was increased by a factor of 1.2-2 + by applying BUS_DMA and UNMAP_IO, enlarging the request queue, + and selecting the outgoing channel with the LUN considered; + TRIM/UNMAP was enabled; and some critical bugs (PRs 209443, + 211000, 212998) were fixed so that disk hot add/remove and + VHDX online resizing should work now.
-The VMBus driver also received attention, with enhancements made for - the handling of device hot add/remove.
+The VMBus driver also received attention, with enhancements + made for the handling of device hot add/remove.
-In the Hyper-V network driver, configurable RSS key and dynamic - MTU change are now supported.
+In the Hyper-V network driver, configurable RSS key and + dynamic MTU change are now supported.
&os; images on Azure continue to be updated — after - publishing the &os; 10.3 VM image on the global Microsoft Azure in - June, Microsoft also published the VM image on the Microsoft Azure - operated by 21Vianet in China in September.
+ publishing the &os; 10.3 VM image on the global Microsoft + Azure in June, Microsoft also published the VM image on the + Microsoft Azure operated by 21Vianet in China in + September. -Patches have been developed to support PCIe pass-through (also - known as Discrete Device Assignment); this feature allows physical - PCIe devices to be passed through to &os; VMs running on Hyper-V - (Windows Server 2016), giving them near-native performance with low - CPU utilization. The patch to enable the feature will be posted for - review soon.
+Patches have been developed to support PCIe pass-through + (also known as Discrete Device Assignment); this feature + allows physical PCIe devices to be passed through to &os; VMs + running on Hyper-V (Windows Server 2016), giving them + near-native performance with low CPU utilization. The patch + to enable the feature will be posted for review soon.
This project provides:
The ptnet device and driver has been introduced to - overcome the performance limitations of TCP/IP networking between - bhyve VMs. Prior to this work, the most performant solution for - VM-to-VM intra-host TCP communication provided less than 2 Gbps TCP - throughput. With ptnet, in the same VM-to-VM TCP - communication scenario, it is possible to obtain up to 20 Gbps.
+ overcome the performance limitations of TCP/IP networking + between bhyve VMs. Prior to this work, the most performant + solution for VM-to-VM intra-host TCP communication provided + less than 2 Gbps TCP throughput. With ptnet, in the + same VM-to-VM TCP communication scenario, it is possible to + obtain up to 20 Gbps.The porting of the 0.11 branch is now complete, with new ports - (compared to the previous release). See our wiki page for a - complete list of applications.
+The porting of the 0.11 branch is now complete, with new + ports (compared to the previous release). See our wiki page + for a complete list of applications.
We also have updates for:
@@ -551,9 +557,9 @@Currently, the unstable releases work fine with our Gtk3 ports - available in the ports tree, but in the future, support for 3.18 - will be removed in preference of 3.20.x.
+Currently, the unstable releases work fine with our Gtk3 + ports available in the ports tree, but in the future, support + for 3.18 will be removed in preference of 3.20.x.
The ZFS code base in &os; regularly gets merges of new code, - staying in sync with latest OpenZFS/Illumos sources. Among other - things, the latest merge included the following improvements:
+ staying in sync with latest OpenZFS/Illumos sources. Among + other things, the latest merge included the following + improvements:&os; includes support for the Marvell Armada38x platform, which - has been tested and improved in order to gain production quality. - Most of this effort has been invested in development and - benchmarking of the on-chip Gigabit Ethernet (NETA) functionality. - Numerous bug fixes and some new features have been - introduced.
+&os; includes support for the Marvell Armada38x platform, + which has been tested and improved in order to gain production + quality. Most of this effort has been invested in development + and benchmarking of the on-chip Gigabit Ethernet (NETA) + functionality. Numerous bug fixes and some new features have + been introduced.
Work completed this quarter includes:
@@ -763,8 +776,8 @@Along with support for new boards (SolidRun ClearFog and @@ -820,15 +834,16 @@
-The Elastic Network Adapter (ENA) is a 25G SmartNIC developed by - Annapurna Labs based on a custom ARMv8 chip. This is a - high-performance networking card that is available to AWS virtual - machines. It introduces enhancements in network utilization - scalability on EC2 machines running various operating systems, in - particular &os;.
+The Elastic Network Adapter (ENA) is a 25G SmartNIC developed + by Annapurna Labs based on a custom ARMv8 chip. This is a + high-performance networking card that is available to AWS + virtual machines. It introduces enhancements in network + utilization scalability on EC2 machines running various + operating systems, in particular &os;.
-The goal of &os; enablement is to provide top performance and a - wide range of monitoring and management features such as:
+The goal of &os; enablement is to provide top performance and + a wide range of monitoring and management features such + as:
The current state offers stable driver operation with good - performance on machines running &os; directly on the hardware.
+ performance on machines running &os; directly on the + hardware.Alpine is a family of Platform-on-Chip devices, including - multi-core 32-bit (first-gen Alpine) and 64-bit (Alpine V2) ARM - CPUs, developed by Annapurna Labs.
+ multi-core 32-bit (first-gen Alpine) and 64-bit (Alpine V2) + ARM CPUs, developed by Annapurna Labs.The primary focus areas of the Alpine platform are - high-performance networking, storage and embedded applications. The - network subsystem features 10-, 25-, and 50-Gbit Ethernet - controllers with support for virtualization, load-balancing, - hardware offload and other advanced features.
+ high-performance networking, storage and embedded + applications. The network subsystem features 10-, 25-, and + 50-Gbit Ethernet controllers with support for virtualization, + load-balancing, hardware offload and other advanced + features. -A basic patch set has already been committed to HEAD including:
+A basic patch set has already been committed to HEAD + including:
Additional work, such as an MSI-X driver and full Ethernet - support, is currently undergoing community review on Phabricator.
+ support, is currently undergoing community review on + Phabricator. -The multi-user SMP system is stable and fully working, along with - the 1G and 10G Ethernet links.
+The multi-user SMP system is stable and fully working, along + with the 1G and 10G Ethernet links.
-The interrupt management code has been adjusted to work with the - new INTRNG framework on both ARM32 and ARM64.
+The interrupt management code has been adjusted to work with + the new INTRNG framework on both ARM32 and ARM64.
For EuroBSDcon, I began looking into inconsistencies within - components inside our family of operating systems. My workflow - consisted of reading the documentation for a given utility and - checking the history in the revision control system for missing - fixes or functionality in the trees of NetBSD, &os;, OpenBSD, and - DragonFly BSD.
+ components inside our family of operating systems. My + workflow consisted of reading the documentation for a given + utility and checking the history in the revision control + system for missing fixes or functionality in the trees of + NetBSD, &os;, OpenBSD, and DragonFly BSD.One thing which became obvious very quickly was the - inconsistency between operating systems about where and/or which - version a utility originated in, despite our common heritage.
+ inconsistency between operating systems about where and/or + which version a utility originated in, despite our common + heritage. -I began with working through the man pages in &os;, verifying the - details in pages which already had a history section and making - patches for those which did not.
+I began with working through the man pages in &os;, verifying + the details in pages which already had a history section and + making patches for those which did not.
-From there, changes were propogated out to NetBSD, OpenBSD, and - Dragonfly BSD where applicable (not all utilities originated from - the same source or implementation, for example).
+From there, changes were propogated out to NetBSD, OpenBSD, + and Dragonfly BSD where applicable (not all utilities + originated from the same source or implementation, for + example).
This was a good exercise in:
@@ -981,28 +1003,29 @@&os; provides an API for guest operating systems to access shared folders on - the host so that the kernel driver can expose them to the - guest's userland. This project aims to add such functionality to - the VirtualBox Guest Additions driver.
+&os; provides an API for guest operating systems to access + shared folders on the host so that the kernel driver can + expose them to the guest's userland. This project aims to add + such functionality to the VirtualBox Guest Additions + driver.
Good progress was made over last few months. Developers were able to mount a filesystem in read-only mode and, with some - limitations, in read-write mode. The implementation still lacks - some critical pieces, but the roadmap is clear.
+ limitations, in read-write mode. The implementation still + lacks some critical pieces, but the roadmap is clear.evdev is a portable, API-compatible implementation of - the Linux /dev/input/eventX interface. It covers a wide - variety of input devices like keyboards, mice, and touchscreens - (with multitouch support), and support for it is implemented in a - lot of existing userland components like Qt, libinput, and - tslib.
+evdev is a portable, API-compatible implementation + of the Linux /dev/input/eventX interface. It covers + a wide variety of input devices like keyboards, mice, and + touchscreens (with multitouch support), and support for it is + implemented in a lot of existing userland components like Qt, + libinput, and tslib.
-evdev support was started by Jakub Klama as a Google SoC - 2014 project, and later picked up and finished by Vladimir +
evdev support was started by Jakub Klama as a Google + SoC 2014 project, and later picked up and finished by Vladimir Kondratiev. General API and evdev support bits for - ukbd and ums were committed to HEAD. Support was - also added for TI's AM33xx touchstreen controller (the popular - BeagleBone is based on the AM33xx) and the official touschreen for - the Raspberry Pi. Multitouch support for the Raspberry Pi was - successfully demonstarted using the latest Qt development branch.
- + ukbd and ums were committed to HEAD. + Support was also added for TI's AM33xx touchstreen controller + (the popular BeagleBone is based on the AM33xx) and the + official touschreen for the Raspberry Pi. Multitouch support + for the Raspberry Pi was successfully demonstarted using the + latest Qt development branch. +Transparent superpage support has been added. This allows - &os; to create 2MiB blocks with a single pagetable and TLB entry. - This shows a small but significant improvement in the + &os; to create 2MiB blocks with a single pagetable and TLB + entry. This shows a small but significant improvement in the buildworld time on ThunderX machines. Superpages have been - enabled in head and merged to stable/11, but they are - disabled by default on stable/11 due to a lack of testing - there.
+ enabled in head and merged to stable/11, but they are disabled + by default on stable/11 due to a lack of testing there.Support for the pre-INTRNG interrupt framework has been removed. This means that arm64 requires INTRNG to even build. - This has allowed various cleanups within the arm64 drivers that - interact with the interrupt controller.
+ This has allowed various cleanups within the arm64 drivers + that interact with the interrupt controller. -The cortex Strings library from Linaro has been imported. The - parts of this that have been shown to be improvements over the - previous C code were attached to the libc build.
+The cortex Strings library from Linaro has been imported. + The parts of this that have been shown to be improvements over + the previous C code were attached to the libc build.
There is ongoing work to add ACPI support to the kernel. On - ThunderX, &os; can get to the mountroot prompt, however, due to - incomplete ACPI tables the external PCIe support needed to support - the netboot setup in the test cluster is not functional.
+ ThunderX, &os; can get to the mountroot prompt, however, due + to incomplete ACPI tables the external PCIe support needed to + support the netboot setup in the test cluster is not + functional.Pine64 support has been committed to head. &os; can now boot - to multiuser with SMP enabled. This includes support for clocks, - the secure ID controller, USB Host controller, GPIOs, non-maskable - interrupts, the AXP81x power management unit, cpu freqency and - voltage scaling, MMC, UART, gigabit networking, the watchdog, and - the thermal sensors.
+ to multiuser with SMP enabled. This includes support for + clocks, the secure ID controller, USB Host controller, GPIOs, + non-maskable interrupts, the AXP81x power management unit, cpu + freqency and voltage scaling, MMC, UART, gigabit networking, + the watchdog, and the thermal sensors.The KDE on &os; team focuses on packaging the KDE software and - making sure that the experience of KDE and Qt on &os; is as good as - possible.
+The KDE on &os; team focuses on packaging the KDE software + and making sure that the experience of KDE and Qt on &os; is + as good as possible.
The following big updates were landed in the ports tree this quarter:
@@ -1212,15 +1237,16 @@The third quarter started with the handover to the ninth Core team as it took office. With four members returning from the - previous core (Baptiste Daroussin, Ed Maste, George Neville-Neil - and Hiroki Sato), one returning member after a term away (John - Baldwin), and four members new to core (Allan Jude, Kris Moore, - Benedict Reuschling and Benno Rice), the new core team represents - just about the ideal balance between experience and fresh - blood.
+ previous core (Baptiste Daroussin, Ed Maste, George + Neville-Neil and Hiroki Sato), one returning member after a + term away (John Baldwin), and four members new to core (Allan + Jude, Kris Moore, Benedict Reuschling and Benno Rice), the new + core team represents just about the ideal balance between + experience and fresh blood.Beyond handing over all of the ongoing business, reviewing everything on Core's agenda, and other routine changeover - activities, the first action of the new core was to respond to a - query from Craig Rodrigues concerning how hardware supplied to the - project through donations to the &os; Foundation was being - used.
+ activities, the first action of the new core was to respond to + a query from Craig Rodrigues concerning how hardware supplied + to the project through donations to the &os; Foundation was + being used.The Foundation does keep records of what hardware has been - supplied over time and has some idea of the original purpose that - hardware was provisioned for, but does not track the current usage - of the project's hardware assets. Cluster administration keeps - their own configuration database, but this is not suitable for - general publication and covers much more than Foundation supplied - equipment. After some discussion it was decided that updated - information about the current disposition of Foundation supplied - equipment should be incorporated in the Foundation's annual - report.
+ supplied over time and has some idea of the original purpose + that hardware was provisioned for, but does not track the + current usage of the project's hardware assets. Cluster + administration keeps their own configuration database, but + this is not suitable for general publication and covers much + more than Foundation supplied equipment. After some + discussion it was decided that updated information about the + current disposition of Foundation supplied equipment should be + incorporated in the Foundation's annual report. -Ensuring that all of the &os; code base is supplied under open - and unencumbered licensing terms and that we do not infringe on - patent terms or otherwise act counter to any legal requirements - are some of Core's primary concerns. During this quarter, there - were three items of this nature.
+Ensuring that all of the &os; code base is supplied under + open and unencumbered licensing terms and that we do not + infringe on patent terms or otherwise act counter to any legal + requirements are some of Core's primary concerns. During this + quarter, there were three items of this nature.
Work on LLVM has thrown up problems with the presence of - certain pre-compiled binary-only drivers as part of the GENERIC - kernel. Core has adopted the policy that such binary-only code - should be moved to loadable modules and that the GENERIC kernel - must be compiled entirely from original sources.
+ certain pre-compiled binary-only drivers as part of the + GENERIC kernel. Core has adopted the policy that such + binary-only code should be moved to loadable modules and that + the GENERIC kernel must be compiled entirely from original + sources.The item that has absorbed the largest portion of Core's - attention this quarter concerns the project's handling of security - vulnerabilities in bspatch(1), libarchive(3), FreeBSD-update(8) - and portsnap(8). A partial fix was applied in - &os;-SA-16:25.bspatch but this lacks fixes to libarchive code - that were not yet available from upstream.
+ attention this quarter concerns the project's handling of + security vulnerabilities in bspatch(1), libarchive(3), + FreeBSD-update(8) and portsnap(8). A partial fix was applied + in &os;-SA-16:25.bspatch but this lacks fixes to libarchive + code that were not yet available from upstream.SecTeam receives privileged early reports of many vulnerabilities and consequently has a strict policy of not commenting publicly until an advisory and patches have been - published. Early access to information about vulnerabilities is - contingent on their ability to avoid premature disclosure, and - without such, they could not have security advisories and + published. Early access to information about vulnerabilities + is contingent on their ability to avoid premature disclosure, + and without such, they could not have security advisories and patches ready to go immediately when the vulnerability is published.
-However, in this case, vulnerabilities were already public and - the lack of any official response from the &os; project was - leading to concern amongst users and some critical press coverage. - Core stepped in and published a statement clarifying the situation - and the particular difficulties involved in securely modifying the - mechanisms used to deliver security patches. Core believes that - prompt notification and discussion of the implications and - possible workarounds to any public vulnerability should not wait - on the availability of formal OS patches.
+However, in this case, vulnerabilities were already public + and the lack of any official response from the &os; project + was leading to concern amongst users and some critical press + coverage. Core stepped in and published a statement + clarifying the situation and the particular difficulties + involved in securely modifying the mechanisms used to deliver + security patches. Core believes that prompt notification and + discussion of the implications and possible workarounds to any + public vulnerability should not wait on the + availability of formal OS patches.
-The OpenSSH project has deprecated DSA keys upstream. &os; had - kept DSA keys enabled in the later 10.x releases for compatibility - reasons, but with the release of 11.0 the time has come to - synchronize again with upstream. Since there are numerous DSA - keys in use in the &os; cluster, this necessitated an - exercise to get replacement keys installed. Core would like to - thank David Wolfskill and the accounts team for handling the surge - in key changes with a great deal of aplomb.
+The OpenSSH project has deprecated DSA keys upstream. &os; + had kept DSA keys enabled in the later 10.x releases for + compatibility reasons, but with the release of 11.0 the time + has come to synchronize again with upstream. Since there are + numerous DSA keys in use in the &os; cluster, this + necessitated an exercise to get replacement keys installed. + Core would like to thank David Wolfskill and the accounts team + for handling the surge in key changes with a great deal of + aplomb.
During this quarter we welcomed Michael Zhilin, Imre Vadasz, - Steve Kiernan and Toomas Soome as new source committers. Over the - same period, we said farewell to Martin Wilke and Erwin Lansing - who have handed in their commit bits. We wish them well in their - future endeavours and hope to see them return as soon as they - can.
+ Steve Kiernan and Toomas Soome as new source committers. Over + the same period, we said farewell to Martin Wilke and Erwin + Lansing who have handed in their commit bits. We wish them + well in their future endeavours and hope to see them return as + soon as they can. @@ -1373,46 +1404,49 @@Work was done to properly lock the time-keeping code. The - existing code correctly interoperated with readers, both kernel- - and user-space, giving them lock-less access to the actual data - ('timehands') needed to derive the time of day from the - timecounter hardware in the presence of updaters. But updates - of the timehands, which are performed by periodic clock - interrupts, the ntpd-driven sys_ntp_adjtime(2) syscall, the - settimeofday(2) syscall, pps sync, and possibly other sources, - were not coordinated. Moreso, the NTP code was locked by Giant, - which did not really serve any purpose.
- -As a result of the work, locking was applied to ensure that any - timehands adjustments are performed by a single mutator. An - interesting case is the parallel modification of the timehands - from the top of the kernel, for instance the settimeoday(2) - syscall, and a simultaneous clock tick event, where the syscall - has already acquired the resources. In this case, it is highly - desirable to not block (spin) in the tick handler, and the - required adjustments are performed by the already executing call - from the top half. There, the typical trylock operation is desired, - which was surprisingly lacking in our spinlock implementation. - mtx_trylock_spin(9) was implemented and is used for this + existing code correctly interoperated with readers, both + kernel- and user-space, giving them lock-less access to the + actual data ('timehands') needed to derive the time of day + from the timecounter hardware in the presence of updaters. + But updates of the timehands, which are performed by periodic + clock interrupts, the ntpd-driven sys_ntp_adjtime(2) + syscall, the settimeofday(2) syscall, pps sync, and + possibly other sources, were not coordinated. Moreso, the NTP + code was locked by Giant, which did not really serve any purpose.
-The userspace getttimeofday(2) implementation was enhanced to - allow syscall-less operation on machines that use HPET hardwire - for timecounters. The HPET algorithm coexists with older - RDTSC-based code, allowing dynamic switching of timecounters. - HPET registers a page that is mmap(2)-ed readonly by libc into - userland application programs' address space as needed. - Measurements demonstrated modest improvements in gettimeofday(2) - performance, but, not unexpectedly, even the syscall-less HPET - timecounter is slower than invoking a syscall for RDTSC.
+As a result of the work, locking was applied to ensure that + any timehands adjustments are performed by a single mutator. + An interesting case is the parallel modification of the + timehands from the top of the kernel, for instance the + settimeoday(2) syscall, and a simultaneous clock tick + event, where the syscall has already acquired the resources. + In this case, it is highly desirable to not block (spin) in + the tick handler, and the required adjustments are performed + by the already executing call from the top half. There, the + typical trylock operation is desired, which was surprisingly + lacking in our spinlock implementation. + mtx_trylock_spin(9) was implemented and is used for + this purpose.
+ +The userspace getttimeofday(2) implementation was + enhanced to allow syscall-less operation on machines that use + HPET hardwire for timecounters. The HPET algorithm coexists + with older RDTSC-based code, allowing dynamic switching of + timecounters. HPET registers a page that is + mmap(2)-ed readonly by libc into userland application + programs' address space as needed. Measurements demonstrated + modest improvements in gettimeofday(2) performance, + but, not unexpectedly, even the syscall-less HPET timecounter + is slower than invoking a syscall for RDTSC.
Some not strictly interwined but related code is the time-bound sleep implementation. Handling of races between callouts and the top-half code that sets and processes the timeouts depended on the many fine details of the - callout_stop(9) KPI (kernel programming interface). In - particular, races or unpunctual KPI changes usually result in - the "catch-all" unkillable thread state with the + callout_stop(9) KPI (kernel programming interface). + In particular, races or unpunctual KPI changes usually result + in the "catch-all" unkillable thread state with the "-" waitchain bug. The sleepqueue timeout code was rewritten to stop depending on the KPI details, which removed the source of recurring bugs, and also surprisingly simplified @@ -1439,26 +1473,27 @@
UEFI (Unified Extensible Firmware Interface) specifies two - kinds of services for use by operating systems. Boot Services are - designed for OS loaders to load and initialize kernels, - while Runtime Services are meant to be used by kernels - during regular system operations. The boot and runtime phases are + kinds of services for use by operating systems. Boot Services + are designed for OS loaders to load and initialize kernels, + while Runtime Services are meant to be used by kernels during + regular system operations. The boot and runtime phases are explicitly separated. During boot, when loaders are executed, - the machine configuration is owned by UEFI. During runtime, the - kernel manages the configuration, but needs to inform the firmware - about any changes that are made.
+ the machine configuration is owned by UEFI. During runtime, + the kernel manages the configuration, but needs to inform the + firmware about any changes that are made. -The model of split boot/runtime configuration makes assumptions - about the OS architecture that do not quite apply to the existing - &os; codebase. For instance, the firmware notification of the - future runtime configuration must be done while the loader is - effectively still in control. In technical terms, the - SetVirtualAddressMap() call must be made with the 1:1 - physical:virtual mapping on amd64 systems, which for &os; means - that the call can be only issued by the loader. But the loader - needs to know intimate details of the kernel address map to - provide the requested information. This creates a new, - unfortunate, coupling between loader and kernel.
+The model of split boot/runtime configuration makes + assumptions about the OS architecture that do not quite apply + to the existing &os; codebase. For instance, the firmware + notification of the future runtime configuration must be done + while the loader is effectively still in control. In + technical terms, the SetVirtualAddressMap() call must + be made with the 1:1 physical:virtual mapping on amd64 + systems, which for &os; means that the call can be only issued + by the loader. But the loader needs to know intimate details + of the kernel address map to provide the requested + information. This creates a new, unfortunate, coupling + between loader and kernel.
Reading the publicly available information about the MS Windows boot process explained the UEFI control transfer @@ -1474,50 +1509,52 @@ centered around utilizing the direct address map (DMAP) on amd64, which currently always exists and linearly maps at least the lower 4G of physical addresses at some KVA location. - It was supposed that the kernel would export the DMAP details like - linear base and guaranteed size for loader from its ELF image, - and provide the needed overflow map if the DMAP cannot + It was supposed that the kernel would export the DMAP details + like linear base and guaranteed size for loader from its ELF + image, and provide the needed overflow map if the DMAP cannot completely serve. Unfortunately, two show-stopper bugs were discovered with this approach.
First, EDK-based firmware apparently requires that the runtime mapping exists simultaneously with the physical - mapping for the SetVirtualAddressMap() call. Second, there - were references from other open-source projects mentioning - that some firmware required the presence of the physical - mapping during the runtime call. Effectively, this forces both - kernel and loader to provide both mappings for all runtime - calls.
+ mapping for the SetVirtualAddressMap() call. Second, + there were references from other open-source projects + mentioning that some firmware required the presence of the + physical mapping during the runtime call. Effectively, this + forces both kernel and loader to provide both mappings for all + runtime calls.With such restrictions, informing the firmware about the details of the kernel address space only adds useless work. We could just as easily establish the 1:1 physical mapping - during runtime and get rid of SetVirtualAddressMap() entirely. - This approach was coded and the kernel interface to access - runtime services is based on it.
+ during runtime and get rid of + SetVirtualAddressMap() entirely. This approach was + coded and the kernel interface to access runtime services is + based on it.During the development, particularly when trying to make the loader modifications, it was quickly realized that there - were no fault-reporting facilities in loader.efi. Machine - exceptions resulted in a silent hang. Curiosly, in such a - situation the Intel firmware outputs the error code over the - serial port on 115200/8/1 settings, regardless of UEFI console - configuration, which was discovered by accident. + were no fault-reporting facilities in loader.efi. + Machine exceptions resulted in a silent hang. Curiosly, in + such a situation the Intel firmware outputs the error code + over the serial port on 115200/8/1 settings, regardless of + UEFI console configuration, which was discovered by accident. Unfortunately, the error code alone is not enough to diagnose most problems.
-A primitive fault reporter was written for loader.efi on - amd64, which intercepts exceptions from the firmware IDT and - dumps the machine state to the loader console. Due to the - complexity of the interception and possible bugs which might - do more harm than good there, the dumper is only activated with - explicit administrator action.
+A primitive fault reporter was written for + loader.efi on amd64, which intercepts exceptions from + the firmware IDT and dumps the machine state to the loader + console. Due to the complexity of the interception and + possible bugs which might do more harm than good there, the + dumper is only activated with explicit administrator + action.
Note that the described work only provides the kernel interfaces to make calling the EFI runtime services as easy as calling a regular C function. User-visible feature development making use of the new interfaces is being - performed right now.
+ performed right now.The &os; Release Engineering Team continued the 11.0-RELEASE cycle which was planned to be released in September, but as a - result of several last-minute issues, - the final release announcement was delayed.
+ result of several last-minute issues, the final release + announcement was delayed.DRM from Linux 4.8 was ported to the drm-next branch. This branch should be used for radeon and - amdgpu cards. The drm-next-4.7 branch should be used - for i915 cards due to instabilities in - the intel driver in drm-next branch.
+ amdgpu cards. The drm-next-4.7 branch + should be used for i915 cards due to instabilities + in the intel driver in drm-next branch.Johannes Lundberg has been working on getting the Wayland environment running on &os;. The Wayland ports are in @@ -1664,8 +1701,8 @@ and publishes &os; white papers and marketing material to promote, educate, and advocate for the &os; Project. The Foundation also represents the &os; Project in executing - contracts, license agreements, and other legal arrangements that - require a recognized legal entity.
+ contracts, license agreements, and other legal arrangements + that require a recognized legal entity.Here are some highlights of what we did to help &os; last quarter:
@@ -1676,8 +1713,8 @@ budget for 2016 is $1,250,000 and we have raised $271,500 so far. Our Q1-Q3 financial reports will be posted in early November. As you can see, we need your donations to - continue supporting &os; at our current level. Please consider - making a donation at https://www.FreeBSDfoundation.org/donate/.OS Improvements
@@ -1687,24 +1724,26 @@ our internal software developer staff members. Two Foundation-funded projects continued last quarter: one project is to port NetBSD's blacklistd daemon and related - elements to &os;, and the second is phase two of the &os;/arm64 - port. + elements to &os;, and the second is phase two of the + &os;/arm64 port.Foundation staff members were responsible for many changes over the quarter. Kostik Belousov accomplished this work last quarter:
Release Engineering
Foundation staff member Glen Barber worked with the Release - Engineering team to continue finalizing the 11.0-RELEASE cycle, - which was delayed to address several last-minute issues.
+ Engineering team to continue finalizing the 11.0-RELEASE + cycle, which was delayed to address several last-minute + issues.As part of the Cluster Administration team, Glen worked with - the amazing on-site staff at NYI to rack and install two Cavium - ThunderX machines, one of which is used for native package - builds for the &os;/aarch64 architecture, and the other of which - is targeted to be used as a reference machine in the &os; - infrastructure.
+ the amazing on-site staff at NYI to rack and install two + Cavium ThunderX machines, one of which is used for native + package builds for the &os;/aarch64 architecture, and the + other of which is targeted to be used as a reference machine + in the &os; infrastructure.Getting Started with &os; Project
We hired a summer intern, with no experience on &os;, Linux, or any command-line operating system, to figure out on his own how to install and use &os;. He wrote easy-to-follow how-to - guides to help make the new-user experience straightforward and - positive. He submitted bug reports and reported issues through - the appropriate channels, and worked with Glen Barber and Brad - Davis to improve the new user information on FreeBSD.org to make - it easier for new people to get started with &os;. You can find - his how-to guides at https://www.FreeBSDfoundation.org/FreeBSD/how-to-guides/ and check out his interview on BSDNow at http://www.bsdnow.tv/episodes/2016_08_24-the_fresh_bsd_experience.
@@ -1793,12 +1834,12 @@&os; Advocacy and Education
A large part of our efforts are dedicated to advocating for - the Project. This includes promoting work being done by others - using &os;, producing advocacy literature to teach people about - &os; and ease the path to starting out with &os;, contributing - to the Project, and attending and getting other &os; - contributors to volunteer to run &os; events, staff &os; tables, - and give &os; presentations.
+ the Project. This includes promoting work being done by + others using &os;, producing advocacy literature to teach + people about &os; and ease the path to starting out with &os;, + contributing to the Project, and attending and getting other + &os; contributors to volunteer to run &os; events, staff &os; + tables, and give &os; presentations.We created new handouts to promote TeachBSD.org (https://www.FreeBSDfoundation.org/wp-content/uploads/2016/08/TeachBSD_half_final.pdf) @@ -1809,27 +1850,29 @@ href="https://www.FreeBSDfoundation.org/past-issues/FreeBSD-and-rtems/">https://www.FreeBSDfoundation.org/past-issues/FreeBSD-and-rtems/.
We also published monthly newsletters to highlight work being - done to support &os;, tell you about upcoming events, and other - information to keep you in the loop of what we’re doing to - support the &os; Project and community https://www.FreeBSDfoundation.org/news-and-events/newsletter/.
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.
+ summits around the globe. These events can be BSD-related, + open source, or technology events geared towards + underrepresented groups.We support the &os;-focused events to help provide a venue for sharing knowledge, to work together on projects, and facilitate collaboration between developers and commercial - users. This all helps provide a healthy ecosystem. We support - the non-&os; events to promote and raise awareness about &os;, - to increase the use of &os; in different applications, and to - recruit more contributors to the Project.
+ users. This all helps provide a healthy ecosystem. We + support the non-&os; events to promote and raise awareness + about &os;, to increase the use of &os; in different + applications, and to recruit more contributors to the + Project. -This quarter, we sponsored and/or attended the following events:
+This quarter, we sponsored and/or attended the following + events:
We sponsored three &os; contributors to attend EuroBSDCon.
+We sponsored three &os; contributors to attend + EuroBSDCon.
Legal/&os; IP
The Foundation owns the &os; trademarks, and it is our - responsibility to protect them. We continued to review requests - and grant permission to use the trademarks.
+ responsibility to protect them. We continued to review + requests and grant permission to use the trademarks.&os; Community Engagement
@@ -1911,7 +1957,8 @@Other Stuff We Did
We welcomed Kylie Liang and Philip Paeps to the Board of - Directors. More information and interviews can be found at: https://www.FreeBSDfoundation.org/blog/FreeBSD-foundation-welcomes-new-board-members/.
George attended the ARM Partner Meeting in Cambridge.
@@ -1969,9 +2016,9 @@Several developers have undertaken a recent effort to - sandbox additional applications in the base system. - This work is proceeding nicely and one of the goals is to target - basic utilities used in security sensitive applications, like + sandbox additional applications in the base system. This work + is proceeding nicely and one of the goals is to target basic + utilities used in security sensitive applications, like freebsd-update and portsnap.
This work higlighted two longstanding challenges in @@ -2096,7 +2143,7 @@ It is a high-performance linker that supports the ELF, COFF, and Mach-O object formats. Where possible, lld maintains command-line and functional compatibility with the - existing GNU BFD ld and gold linkers. However, the authors of + existing GNU BFD ld and gold linkers. However, the authors of lld are not constrained by strict compatibility where it would hamper performance or desired functionality.
@@ -2169,8 +2216,7 @@In the last quarter, four commits bits were taken in for safe - keeping: erwin, miwi, and sem left by their own request and jase - was inactive for more than 18 months. We welcomed two new - committers: Tobias Berner (tcberner) and Joseph Mingrone + keeping: erwin, miwi, and sem left by their own request and + jase was inactive for more than 18 months. We welcomed two + new committers: Tobias Berner (tcberner) and Joseph Mingrone (jrm).
On the management side, erwin and miwi left portmgr. bapt @@ -2202,18 +2248,19 @@
Some major user-visible ports were updated: Firefox to 49.0 and Firefox Extended Service Release to 45.4.0; Chromium to - 52.0.2743.116; the default version of gcc to 4.8.5; and - pkg itself to 1.8.7.
+ 52.0.2743.116; the default version of gcc to 4.8.5; + and pkg itself to 1.8.7. -Behind the scenes, antoine ran 24 exp-runs to validate various - package updates, framework changes, and changes to the base - system. bdrewery added two new package building machines, - supervised the package builds for 11.0-RELEASE, and added support - for building arm64 packages.
+Behind the scenes, antoine ran 24 exp-runs to validate + various package updates, framework changes, and changes to the + base system. bdrewery added two new package building + machines, supervised the package builds for 11.0-RELEASE, and + added support for building arm64 packages.
At EuroBSDCon, rene visited a presentation by Landry Breuil - <landry@openbsd.org> explaining how packages are built in - the OpenBSD world and explaining various design decisions.
+ <landry@openbsd.org> explaining how packages are built + in the OpenBSD world and explaining various design + decisions.