Date: Mon, 15 Nov 2021 16:23:32 GMT From: Daniel Ebdrup Jensen <debdrup@FreeBSD.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org Subject: git: 041d8d9742 - main - status: Add the third status report for 2021 Message-ID: <202111151623.1AFGNWND093212@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by debdrup: URL: https://cgit.FreeBSD.org/doc/commit/?id=041d8d9742984e81138b2bbf4295f809b12b5a2b commit 041d8d9742984e81138b2bbf4295f809b12b5a2b Author: Daniel Ebdrup Jensen <debdrup@FreeBSD.org> AuthorDate: 2021-11-15 16:17:38 +0000 Commit: Daniel Ebdrup Jensen <debdrup@FreeBSD.org> CommitDate: 2021-11-15 16:22:07 +0000 status: Add the third status report for 2021 As with previous reports, too many peolpe have contributed to this to list them all, and the log can still be found in the freebsd-quarterly repo of the freebsd organization on github. --- .../en/status/report-2021-07-2021-09/_index.adoc | 229 +++++++++++++++++++++ .../en/status/report-2021-07-2021-09/arm64.adoc | 53 +++++ .../en/status/report-2021-07-2021-09/azure.adoc | 35 ++++ .../report-2021-07-2021-09/boot-performance.adoc | 30 +++ .../en/status/report-2021-07-2021-09/ci.adoc | 57 +++++ .../status/report-2021-07-2021-09/clusteradm.adoc | 33 +++ .../report-2021-07-2021-09/copy_staging.adoc | 78 +++++++ .../en/status/report-2021-07-2021-09/cpe.adoc | 49 +++++ .../current-compilation-time-analysis.adoc | 99 +++++++++ .../en/status/report-2021-07-2021-09/doceng.adoc | 29 +++ .../en/status/report-2021-07-2021-09/ena.adoc | 30 +++ .../en/status/report-2021-07-2021-09/erlang.adoc | 50 +++++ .../report-2021-07-2021-09/freebsd-foundation.adoc | 183 ++++++++++++++++ .../en/status/report-2021-07-2021-09/git.adoc | 29 +++ .../en/status/report-2021-07-2021-09/gitlab.adoc | 11 + .../status/report-2021-07-2021-09/hellosystem.adoc | 25 +++ .../report-2021-07-2021-09/holepunching.adoc | 17 ++ .../en/status/report-2021-07-2021-09/intelnet.adoc | 19 ++ .../en/status/report-2021-07-2021-09/iwlwifi.adoc | 23 +++ .../en/status/report-2021-07-2021-09/kde.adoc | 36 ++++ .../status/report-2021-07-2021-09/linuxulator.adoc | 24 +++ .../en/status/report-2021-07-2021-09/lldb.adoc | 41 ++++ .../en/status/report-2021-07-2021-09/mgb.adoc | 25 +++ .../en/status/report-2021-07-2021-09/mixer.adoc | 25 +++ .../report-2021-07-2021-09/msdosfs_rename.adoc | 26 +++ .../en/status/report-2021-07-2021-09/ocf-wg.adoc | 35 ++++ .../status/report-2021-07-2021-09/opensearch.adoc | 15 ++ .../en/status/report-2021-07-2021-09/openssh.adoc | 33 +++ .../en/status/report-2021-07-2021-09/portmgr.adoc | 31 +++ .../en/status/report-2021-07-2021-09/pot.adoc | 31 +++ .../report-2021-07-2021-09/raidz-expansion.adoc | 29 +++ .../en/status/report-2021-07-2021-09/releng.adoc | 17 ++ .../en/status/report-2021-07-2021-09/rfc1191.adoc | 17 ++ .../en/status/report-2021-07-2021-09/rtw88.adoc | 19 ++ .../status/report-2021-07-2021-09/sdhci_acpi.adoc | 19 ++ .../en/status/report-2021-07-2021-09/stackgap.adoc | 25 +++ .../status/report-2021-07-2021-09/syzkaller.adoc | 29 +++ .../en/status/report-2021-07-2021-09/valgrind.adoc | 22 ++ .../en/status/report-2021-07-2021-09/vmd.adoc | 30 +++ .../en/status/report-2021-07-2021-09/wg.adoc | 19 ++ .../en/status/report-2021-07-2021-09/wine.adoc | 21 ++ .../en/status/report-2021-07-2021-09/www.adoc | 23 +++ .../en/status/report-2021-07-2021-09/ztop.adoc | 25 +++ 43 files changed, 1696 insertions(+) diff --git a/website/content/en/status/report-2021-07-2021-09/_index.adoc b/website/content/en/status/report-2021-07-2021-09/_index.adoc new file mode 100644 index 0000000000..ab2330c647 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/_index.adoc @@ -0,0 +1,229 @@ +--- +title: "FreeBSD Quarterly Status Report 3rd Quarter 2021" +sidenav: about +--- + += Introduction +:doctype: article +:toc: macro +:toclevels: 2 +:icons: font +:!sectnums: +:source-highlighter: rouge +:experimental: +:reports-path: content/en/status/report-2021-07-2021-09 + +This report covers FreeBSD related projects for the period between July and September, and is the third of four planned reports for 2021, and contains 42 entries. + +The third quarter of 2021 was quite active in lots of different areas, so the report covers a bunch of interesting work including but not limited to boot performance, compile-time analysis, hole-punching support, various drivers, ZFS raidz expansion, an update to the sound mixer, and many more. + +Regrettably, the status report got a bit delayed, but we hope that the aphorism better late than never can apply here. + +Yours, + +Daniel Ebdrup Jensen, with status hat on. + +''' + +toc::[] + +''' + +[[FreeBSD-Team-Reports]] +== FreeBSD Team Reports + +Entries from the various official and semi-official teams, as found in the link:../../administration/[Administration Page]. + +include::{reports-path}/freebsd-foundation.adoc[] + +''' + +include::{reports-path}/releng.adoc[] + +''' + +include::{reports-path}/clusteradm.adoc[] + +''' + +include::{reports-path}/ci.adoc[] + +''' + +include::{reports-path}/portmgr.adoc[] + +''' + +include::{reports-path}/doceng.adoc[] + +''' + +include::{reports-path}/www.adoc[] + +''' + +[[projects]] +== Projects + +Projects that span multiple categories, from the kernel and userspace to the Ports Collection or external projects. + +include::{reports-path}/boot-performance.adoc[] + +''' + +include::{reports-path}/git.adoc[] + +''' + +include::{reports-path}/lldb.adoc[] + +''' + +include::{reports-path}/linuxulator.adoc[] + +''' + +include::{reports-path}/mixer.adoc[] + +''' + +include::{reports-path}/openssh.adoc[] + +''' + +[[kernel]] +== Kernel + +Updates to kernel subsystems/features, driver support, filesystems, and more. + +include::{reports-path}/arm64.adoc[] + +''' + +include::{reports-path}/azure.adoc[] + +''' + +include::{reports-path}/copy_staging.adoc[] + +''' + +include::{reports-path}/ena.adoc[] + +''' + +include::{reports-path}/holepunching.adoc[] + +''' + +include::{reports-path}/intelnet.adoc[] + +''' + +include::{reports-path}/iwlwifi.adoc[] + +''' + +include::{reports-path}/mgb.adoc[] + +''' + +include::{reports-path}/msdosfs_rename.adoc[] + +''' + +include::{reports-path}/raidz-expansion.adoc[] + +''' + +include::{reports-path}/rfc1191.adoc[] + +''' + +include::{reports-path}/rtw88.adoc[] + +''' + +include::{reports-path}/sdhci_acpi.adoc[] + +''' + +include::{reports-path}/stackgap.adoc[] + +''' + +include::{reports-path}/syzkaller.adoc[] + +''' + +include::{reports-path}/ocf-wg.adoc[] + +''' + +include::{reports-path}/vmd.adoc[] + +''' + +[[ports]] +== Ports + +Changes affecting the Ports Collection, whether sweeping changes that touch most of the tree, or individual ports themselves. + +include::{reports-path}/cpe.adoc[] + +''' + +include::{reports-path}/erlang.adoc[] + +''' + +include::{reports-path}/kde.adoc[] + +''' + +include::{reports-path}/opensearch.adoc[] + +''' + +include::{reports-path}/valgrind.adoc[] + +''' + +include::{reports-path}/wine.adoc[] + +''' + +include::{reports-path}/ztop.adoc[] + +''' + +[[miscellaneous]] +== Miscellaneous + +Objects that defy categorization. + +include::{reports-path}/current-compilation-time-analysis.adoc[] + +''' + +[[third-Party-Projects]] +== Third-Party Projects + +Many projects build upon FreeBSD or incorporate components of FreeBSD into their project. +As these projects may be of interest to the broader FreeBSD community, we sometimes include brief updates submitted by these projects in our quarterly report. +The FreeBSD project makes no representation as to the accuracy or veracity of any claims in these submissions. + +include::{reports-path}/gitlab.adoc[] + +''' + +include::{reports-path}/hellosystem.adoc[] + +''' + +include::{reports-path}/pot.adoc[] + +''' + +include::{reports-path}/wg.adoc[] + +''' diff --git a/website/content/en/status/report-2021-07-2021-09/arm64.adoc b/website/content/en/status/report-2021-07-2021-09/arm64.adoc new file mode 100644 index 0000000000..3d3542dae6 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/arm64.adoc @@ -0,0 +1,53 @@ +=== Arm64 improvements + +Links: + +link:https://reviews.freebsd.org/D31261[Pointer Authentication Review] URL: link:https://reviews.freebsd.org/D31261[https://reviews.freebsd.org/D31261] + +Contact: Andrew Turner <andrew@FreeBSD.org> + +FreeBSD has been ported to the Arm Armv8-A Architecture Envelope Model (AEM), an +Armv8 architecture simulator. AEM is useful for Armv8 development and testing, +because it supports different configurations, including the ability to enable or +disable different extensions. As part of this work, the virtio legacy pci +driver was fixed and ACPI resource parsing code was updated to work with the +ACPI tables that the model provides. + +Libmd(4) has been updated to use the sha256 instructions when available. This +can lead to a large performance improvement when these instructions are +available. For example, on the Apple M1 under a hypervisor, the time to +calculate the sha256 of a 1GB file has decreased from a median of 3.46s to 0.5s. + +Using an ifunc (indirect function) in a static binary is now supported. This will allow +different implementations of a function to be used depending on which hardware +it is being run on. Using an ifunc in dynamic binaries was already +supported. + +The arm64 ID register definitions have been updated to match the Armv8.5 +specification and other special registers have been updated to the Armv8.7 spec. + +There have been numerous cleanups in decoding the arm64 ID registers in the +kernel to ensure we provide a consistent view of the hardware to userspace if it +reads the emulated ID register directly, or uses an ELF HWCAP value. + +There has been early work on supporting the Arm Reliability, Availability, and +Serviceability (RAS) extension. The external aborts it may use are now handled +in the kernel. + +Support for the Arm Pointer Authentication extension is under review. This +extension allows programs to use new instructions that add a hash to unused bits +in a code or data pointer. They can then later check the hash in a way that will +either, depending on the CPU, create an invalid pointer or raise an exception. +This can be used to protect the function return address from being overwritten, +making Return Oriented Programming (ROP) attacks difficult. The change supports +both userspace and kernel pointer authentication. It is waiting on debugger +changes to be sent upstream so lldb can clear the hash when needed, e.g., in a +stack trace. + +Work has started on supporting the Branch Target Identification extension. This +adds a flag to the page tables to disallow unintended targets from some branch +instructions. When a CPU branches to a new location from a register, the CPU +will check if the instruction is correct. This will protect, e.g., against a +function pointer being called when it points to the middle of a function. The +kernel has been built with this feature enabled and tested in the Arm AEM. + +Sponsor: The FreeBSD Foundation diff --git a/website/content/en/status/report-2021-07-2021-09/azure.adoc b/website/content/en/status/report-2021-07-2021-09/azure.adoc new file mode 100644 index 0000000000..e381ce3c21 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/azure.adoc @@ -0,0 +1,35 @@ +=== FreeBSD on Microsoft HyperV and Azure + +Links: + +link:https://wiki.freebsd.org/MicrosoftAzure[Microsoft Azure article on FreeBSD wiki] URL: link:https://wiki.freebsd.org/MicrosoftAzure[] + +link:https://wiki.freebsd.org/HyperV[Microsoft HyperV article on FreeBSD wiki] URL: link:https://wiki.freebsd.org/HyperV[] + +Contact: Microsoft FreeBSD Integration Services Team <bsdic@microsoft.com> + +Contact: link:https://lists.FreeBSD.org/mailman/listinfo/freebsd-cloud[freebsd-cloud Mailing List] + +Contact: The FreeBSD Azure Release Engineering Team <releng-azure@FreeBSD.org> + +Contact: Wei Hu <whu@FreeBSD.org> + +Contact: Li-Wen Hsu <lwhsu@FreeBSD.org> + + +The link:https://azuremarketplace.microsoft.com/marketplace/apps/thefreebsdfoundation.freebsd-13_0[13.0-RELEASE image on Azure Marketplace] has been link:https://lists.freebsd.org/pipermail/freebsd-announce/2021-September/002059.html[published]. + +The changes for building official images on Azure Marketplace, which fulfill the requirements of Azure and FreeBSD cloud images like disk layout and UEFI for Gen2 VM, along with some minor improvements like configurations to speed up booting, have been link:https://cgit.freebsd.org/src/commit/?id=fbece7609573bd51080e949df03fa3d803a637ae[imported]. + +Above tasks are sponsored by The FreeBSD Foundation, with resources provided by Microsoft. + +Microsoft Azure Network Adapter (MANA) is the new network adapter from Microsoft which will be available in the Azure public cloud. +It provides SR-IOV NIC as a Virtual Function (VF) to guest OS running on Hyper-V. +Wei link:https://reviews.freebsd.org/D31150[has been working] on its driver for a while and link:https://cgit.freebsd.org/src/commit/?id=ce110ea12fcea71ae437d0a1d0549d3d32055b0e[committed] in this quarter. + +This task is sponsored by Microsoft. + +Work in progress tasks: + +* Build and publish gen2 vm image to Azure Marketplace +* Build and publish ZFS-based image to Azure Marketplace +* Upstream link:https://github.com/Azure/WALinuxAgent/pull/1892[local modifications of Azure agent] +* Update link:https://www.freshports.org/sysutils/azure-agent[Azure agent port] to the latest version + +Open tasks: + +* Update FreeBSD related doc at link:https://docs.microsoft.com[] +* Support FreeBSD in link:https://azure.microsoft.com/services/devops/pipelines/[Azure Pipelines] diff --git a/website/content/en/status/report-2021-07-2021-09/boot-performance.adoc b/website/content/en/status/report-2021-07-2021-09/boot-performance.adoc new file mode 100644 index 0000000000..84f232382f --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/boot-performance.adoc @@ -0,0 +1,30 @@ +=== Boot Performance Improvements + +Links: + +link:https://wiki.freebsd.org/BootTime[Wiki page] URL: link:https://wiki.freebsd.org/BootTime[https://wiki.freebsd.org/BootTime] + +link:https://www.daemonology.net/blog/2021-08-12-EC2-boot-time-benchmarking.html[OS boot time comparison] URL: link:https://www.daemonology.net/blog/2021-08-12-EC2-boot-time-benchmarking.html[https://www.daemonology.net/blog/2021-08-12-EC2-boot-time-benchmarking.html] + +Contact: Colin Percival <cperciva@FreeBSD.org> + +Colin Percival is coordinating an effort to speed up the FreeBSD boot process. +For benchmarking purposes, he is using an EC2 c5.xlarge instance as a reference +platform and is measuring the time between when the virtual machine enters the +EC2 "running" state and when it is possible to SSH into the instance. + +This work started in 2017, leading to a conference presentation, "Profiling +the FreeBSD kernel boot", and quickly yielded roughly 4850 ms of improvements +(starting from a baseline of about 30 seconds). + +Since June, another roughly 9790 ms of time has been shaved off the boot +process, taking it down to approximately 15 seconds. There is still more work +to be done; in particular, while the loader and kernel have been profiled, the +TSLOG system Colin is using does not currently support userland profiling. + +Issues are listed on the wiki page as they are identified; the wiki page also +has instructions for performing profiling. Users are encouraged to profile +the boot process on their own systems, in case they experience delays which +don't show up on the system Colin is using for testing. + +This work is supported by Colin's FreeBSD/EC2 Patreon. + +Sponsor: https://www.patreon.com/cperciva diff --git a/website/content/en/status/report-2021-07-2021-09/ci.adoc b/website/content/en/status/report-2021-07-2021-09/ci.adoc new file mode 100644 index 0000000000..6101148ede --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/ci.adoc @@ -0,0 +1,57 @@ +=== Continuous Integration + +Links: + +link:https://ci.FreeBSD.org[FreeBSD Jenkins Instance] URL: link:https://ci.FreeBSD.org[https://ci.FreeBSD.org] + +link:https://artifact.ci.FreeBSD.org[FreeBSD CI artifact archive] URL: link:https://artifact.ci.FreeBSD.org[https://artifact.ci.FreeBSD.org] + +link:https://wiki.freebsd.org/Jenkins[FreeBSD Jenkins wiki] URL: link:https://wiki.freebsd.org/Jenkins[https://wiki.freebsd.org/Jenkins] + +link:https://wiki.freebsd.org/HostedCI[Hosted CI wiki] URL: link:https://wiki.freebsd.org/HostedCI[https://wiki.freebsd.org/HostedCI] + +link:https://wiki.freebsd.org/3rdPartySoftwareCI[3rd Party Software CI] URL: link:https://wiki.freebsd.org/3rdPartySoftwareCI[https://wiki.freebsd.org/3rdPartySoftwareCI] + +link:https://preview.tinyurl.com/y9maauwg[Tickets related to freebsd-testing@] URL: link:https://preview.tinyurl.com/y9maauwg[https://preview.tinyurl.com/y9maauwg] + +link:https://github.com/freebsd/freebsd-ci[FreeBSD CI Repository] URL: link:https://github.com/freebsd/freebsd-ci[https://github.com/freebsd/freebsd-ci]+ +link:https://lists.freebsd.org/subscription/dev-ci[dev-ci Mailing List] URL: link:https://lists.freebsd.org/subscription/dev-ci[https://lists.freebsd.org/subscription/dev-ci] + +Contact: Jenkins Admin <jenkins-admin@FreeBSD.org> + +Contact: Li-Wen Hsu <lwhsu@FreeBSD.org> + +Contact: link:https://lists.FreeBSD.org/mailman/listinfo/freebsd-testing[freebsd-testing Mailing List] + +Contact: IRC #freebsd-ci channel on EFNet + +The FreeBSD CI team maintains the continuous integration system of the FreeBSD project. +The CI system checks the committed changes can be successfully built, then performs various tests and analysis over the newly built results. +The artifacts from those builds are archived in the link:https://artifact.ci.FreeBSD.org[artifact server] for further testing and debugging needs. +The CI team members examine the failing builds and unstable tests and work with the experts in that area to fix the code or adjust test infrastructure. + +During the third quarter of 2021, we continued working with the contributors and developers in the project to fulfil their testing needs and also keep collaborating with external projects and companies to improve their products and FreeBSD. + +Important changes: + +* The results of link:https://ci.freebsd.org/job/FreeBSD-main-amd64-build[FreeBSD-main-amd64-build] and link:https://ci.freebsd.org/job/FreeBSD-main-amd64-test[FreeBSD-main-amd64-test] jobs are sent to the link:https://lists.freebsd.org/subscription/dev-ci[dev-ci mailing list] + +New jobs: + +* link:https://ci.freebsd.org/job/FreeBSD-main-amd64-KASAN_test[Run tests with KASAN enabled for main on amd64] +* link:https://ci.freebsd.org/job/FreeBSD-main-amd64-KMSAN_test[Run tests with KMSAN enabled for main on amd64] + +Retired jobs: + +* The jobs for stable/11 branch were removed after September 30th per link:https://lists.freebsd.org/pipermail/freebsd-announce/2021-September/002060.html[FreeBSD 11.4 end-of-life] + +Work in progress and open tasks: + +* Designing and implementing pre-commit CI building and testing (to support the link:https://gitlab.com/bsdimp/freebsd-workflow[workflow working group]) +* Designing and implementing use of CI cluster to build release artifacts as release engineering does +* Collecting and sorting CI tasks and ideas link:https://hackmd.io/@FreeBSD-CI/freebsd-ci-todo[here] +* Testing and merging pull requests in link:https://github.com/freebsd/freebsd-ci/pulls[the FreeBSD-ci repo] +* Reducing the procedures of CI/test environment setting up for contributors and developers +* Setting up the CI stage environment and putting the experimental jobs on it +* Setting up public network access for the VM guest running tests +* Implementing using bare metal hardware to run test suites +* Adding drm ports building tests against -CURRENT +* Planning to run ztest tests +* Adding more external toolchain related jobs +* Improving maturity of the hardware lab and adding more hardware under test +* Helping more software get FreeBSD support in its CI pipeline (Wiki pages: link:https://wiki.freebsd.org/3rdPartySoftwareCI[3rdPartySoftwareCI], link:https://wiki.freebsd.org/HostedCI[HostedCI]) +* Working with hosted CI providers to have better FreeBSD support + +Please see link:https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=__open__&email1=testing%40FreeBSD.org&emailassigned_to1=1&emailcc1=1&emailreporter1=1&emailtype1=substring&query_format=advanced[freebsd-testing@ related tickets] for more WIP information, and don't hesitate to join the effort! + +Sponsor: The FreeBSD Foundation diff --git a/website/content/en/status/report-2021-07-2021-09/clusteradm.adoc b/website/content/en/status/report-2021-07-2021-09/clusteradm.adoc new file mode 100644 index 0000000000..02fcf29dc6 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/clusteradm.adoc @@ -0,0 +1,33 @@ +=== Cluster Administration Team + +Links: + +link:https://www.freebsd.org/administration/#t-clusteradm[Cluster Administration Team members] URL: link:https://www.freebsd.org/administration/#t-clusteradm[https://www.freebsd.org/administration/#t-clusteradm] + +Contact: Cluster Administration Team <clusteradm@FreeBSD.org> + +FreeBSD Cluster Administration Team members are responsible for managing the machines the Project relies on to synchronise its distributed work and communications. +In this quarter, the team has worked on the following: + +- Fixed www.FreeBSD.org mirror sync source +- Improvements to GeoDNS for {download,ftp,pkg}.FreeBSD.org + - Added IPv6 support + - More optimal mirror selection in Asia +- Finished installing a new mirror site in Japan, sponsored by Broadband Tower, Inc. + - Full mirror site (ftp, pkg, git, doc, dns,...) + - The network and machine resources for this mirror are generously sponsored by the Cloud and SDN Laboratory at BroadBand Tower, Inc., one of the Internet data center service providers in Tokyo, Japan, with 300+ Gbps international IP transit bandwidth +- Improved the retention script used for the artifact server of CI cluster to offer a mix of the latest artifacts but also a selection of older artifacts for comparison, space permitting +- Ongoing day to day cluster administration + - Replacing failed disks + - Babysitting pkgsync + +Work in progress: + +- Move pkg-master.nyi to new hardware +- Improve the package building infrastructure +- Review the service jails and service administrators operation +- Setup powerpc pkgbuilder/ref/universal machines +- Search for more providers that can fit the requirements for a link:https://wiki.freebsd.org/Teams/clusteradm/generic-mirror-layout[generic mirrored layout] or a link:https://wiki.freebsd.org/Teams/clusteradm/tiny-mirror[tiny mirror] +- Upgrading public-facing cluster services from 12.2-STABLE to 13.0-STABLE +- Working with doceng@ to improve https://www.freebsd.org and https://docs.freebsd.org +- Improve the web service architecture +- Improve the cluster backup plan diff --git a/website/content/en/status/report-2021-07-2021-09/copy_staging.adoc b/website/content/en/status/report-2021-07-2021-09/copy_staging.adoc new file mode 100644 index 0000000000..134f73b7df --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/copy_staging.adoc @@ -0,0 +1,78 @@ +=== Improved amd64 UEFI boot + +Contact: Konstantin Belousov <kib@FreeBSD.org> + +UEFI BIOS on PC provides a much richer and more streamlined environment +for pre-OS programs, but also imposes some requirements on the +programs that are executed there, OS loaders in particular. One +such requirement is that the loader must coordinate its memory use with +the BIOS, only using memory that was allocated for it. Even after the loader +handoff to the operating system kernel, there are still some memory +regions that are reserved by the BIOS for different reasons. Examples +are runtime services code and data. + +On the other hand, legacy/CSM BIOS boot works with memory completely +differently; there are known memory regions that hold BIOS data and +must be avoided. Otherwise, the memory is considered free for loader +and OS to use. (Of course it is not that straightforward, the +definition of known regions is up to the vendor and there are a lot of +workarounds there.) + +The BIOS boot puts the kernel and preloaded data (like modules, memory +disk, CPU microcode update etc) at the contigous physical memory block +starting at 2M. This algorithm goes back to how the i386 kernel boots. + +Also, when preparing to pass control to the kernel, the loader +creates very special temporary mappings, where the low 1G of physical +address space is mapped 1:1 into virtual address space, and then +repeated for each 1G until the virtual memory end. The kernel knows about +its physical location and the temporary mapping, and constructs kernel +page tables assuming that the physical address of the text is at 2M. + +This mechanism of loader to kernel handoff was left unchanged when +the loader gained support for the UEFI environment. The loader prepares kernel and +auxiliary preload data in a so-called staging area while UEFI boot +services are active, and after EFI_BOOT_SERVICES.ExitBootServices(), +the temporary mapping is activated and the staging area is copied at 2M. + +An advantage at that time was that no changes to the kernel were +needed. But there are issues; the biggest is that memory at 2M might +be not free for reuse. For instance, BIOS runtime code or data might +be located there. Or there might be no memory at 2M at all. Or +trampoline page table or code, or even some parts of the staging area +overlapping with the 2M region where staging area is copied. The +outcome was a hard to diagnose boot time failure, typically a hard hang +when the loader started the kernel. + +Another limitation is the 1G transient mapping, which due to copying +means that the total size of preloaded data cannot exceed around 400M for +everything, including kernel, memory disks, and anything else. Also +the code to grow the staging area on demand was quite unflexible, only +able to grow the staging area in place. + +The work described in this report allows the UEFI loader on amd64 to start +the kernel from the staging area without copying. Kernel assumptions +about the hand-off were explicitly identified and documented. The kernel +only requires the staging area to be located below 4G together with +the trampoline page table (this is a consequence of CPU architecture +requiring 32bit protected mode to enter long mode), be 2M aligned and +the whole low 4G mapped 1:1 at hand-off. The kernel computes its physical +address and builds kernel page tables accordingly. + +Making the kernel boot with staging area in-place required identifying +all places where the amd64 kernel had a dependency on its physical +location. The most complicated part was application processors startup, +which required rewriting initialization code, which we were able to +streamline as result. In particular, when an AP enters paging mode, it +does so straight into the correct kernel page table, without loading +intermediate trampoline page table. + +The updated loader automatically detects if the loaded kernel can handle +in-place staging area ('non-copying mode'). If needed, this can be +overridden with the loader's copy_staging command. For instance, +'copy_staging enable' tells the loader to unconditionally copy the staging +area to 2M regardless of kernel capabilities (default is 'copy_staging auto'). +Also, the code to grow the staging area was made much more robust, +allowing it to grow without hand-tuning and recompiling the loader. + +Sponsor: The FreeBSD Foundation diff --git a/website/content/en/status/report-2021-07-2021-09/cpe.adoc b/website/content/en/status/report-2021-07-2021-09/cpe.adoc new file mode 100644 index 0000000000..69a43c419f --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/cpe.adoc @@ -0,0 +1,49 @@ +=== Improve CPE Data in the Ports Collection + +Links: + +link:https://github.com/decke/chkcpe[chkcpe] URL: link:https://github.com/decke/chkcpe[https://github.com/decke/chkcpe] + +link:https://wiki.freebsd.org/Ports/CPE[CPE on wiki.freebsd.org] URL: link:https://wiki.freebsd.org/Ports/CPE[https://wiki.freebsd.org/Ports/CPE] + +link:https://nvd.nist.gov/products/cpe[CPE Dictionary] URL: link:https://nvd.nist.gov/products/cpe[https://nvd.nist.gov/products/cpe] + + +Contact: Bernhard Froehlich <decke@FreeBSD.org> + +Common Platform Enumeration (CPE) is an open standard for naming +hardware and software components. Originally developed by MITRE, +it is now maintained by NIST under the aegis of the National +Vulnerability Database. +A CPE URI uniquely identifies a device or program by its vendor, +product name, version, revision, etc. NIST maintains the official +CPE dictionary which lists CPE names for all software versions +that have ever been mentioned in an advisory. + +In the FreeBSD Ports Collection it has been possible to annotate CPE data with +`USES=cpe` since 2014 but only around 1000 ports out of 30.000 did +use it. This is why a script called `chkcpe` was created to +validate existing CPE data and find new possible matches +automatically. + +=== Why do we need it? + +It allows comparing CPE URIs for installed packages against +published vulnerability data and will give us a much better and +more complete `pkg audit`. As a side effect we will also have a +better overview of vulnerable ports in the FreeBSD Ports Collection +that need to be patched or updated. + +=== How can I help? + +In this phase there is no easy possibility for port maintainers to +help. Creating separate PRs only to add CPE data does not make +sense because the overhead is very high. This is why I did spend +some time on chkcpe to improve the review and commit workflow. +Right now review and commit consumes around 3 minutes per port. + +If you are a Ports Committer and want to help please get in touch! + +=== Open Tasks + +* Review remaining reports (~1800) and update ports when appropriate +* Improve matching quality to find more possible matches +* Support using CPE data in `pkg audit` +* Scan for vulnerable ports in the Ports Collection + diff --git a/website/content/en/status/report-2021-07-2021-09/current-compilation-time-analysis.adoc b/website/content/en/status/report-2021-07-2021-09/current-compilation-time-analysis.adoc new file mode 100644 index 0000000000..fc8a4a8e3f --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/current-compilation-time-analysis.adoc @@ -0,0 +1,99 @@ +=== -CURRENT compilation time analysis + +Links: + +link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257141[Bug 257141] URL: link:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257141[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257141] + +link:https://lists.freebsd.org/archives/freebsd-current/2021-September/index.html#msg511[Discussion on freebsd-current] URL: link:https://lists.freebsd.org/archives/freebsd-current/2021-September/index.html#msg511[https://lists.freebsd.org/archives/freebsd-current/2021-September/index.html#msg511] + +link:https://people.freebsd.org/~wosch/build-time/buildworld/[Visual chart of buildworld by stages] URL: link:https://people.freebsd.org/~wosch/build-time/buildworld/[https://people.freebsd.org/~wosch/build-time/buildworld/] + +Contact: Wolfram Schneider <wosch@FreeBSD.org> + +Re-building FreeBSD from source takes a lot of CPU resources. +Depending on your machine it takes between 20min and several hours. +At the end of `make buildworld' we log the real time and which +parameters are used for parallel build. E.g. + +-------------------------------------------------------------- +time make -j $(sysctl -n hw.ncpu) buildworld > buildworld.log 2>&1 +tail buildworld.log +>>> World build completed on Sat Sep 4 20:58:00 UTC 2021 +>>> World built in 7235 seconds, ncpu: 3, make -j3 + 7235.61 real 20527.30 user 915.88 sys +-------------------------------------------------------------- + + +The build process runs in several steps. +It would be great to know which step takes most of the time, +and what are the effects of special build parameters. +With a small patch in Aug 2021 we get this information now: + + +-------------------------------------------------------------- +egrep '>>> stage| real ' buildworld.log +>>> stage 1.1: legacy release compatibility shims + 0.28 real 0.18 user 0.10 sys +>>> stage 1.2: bootstrap tools + 165.99 real 472.58 user 11.56 sys +>>> stage 2.1: cleaning up the object tree + 21.47 real 36.96 user 14.14 sys + 15.87 real 29.14 user 11.87 sys +>>> stage 2.3: build tools + 2.42 real 3.79 user 0.62 sys +>>> stage 3: cross tools + 9.92 real 18.49 user 1.75 sys +>>> stage 3.1: recording build metadata + 0.07 real 0.01 user 0.06 sys +>>> stage 4.1: building includes + 16.62 real 36.46 user 9.48 sys +>>> stage 4.2: building libraries + 5440.89 real 15724.60 user 482.58 sys +>>> stage 4.3: building lib32 shim libraries + 615.91 real 1654.77 user 164.58 sys +>>> stage 4.4: building everything + 937.23 real 2540.06 user 205.47 sys +-------------------------------------------------------------- + +In this example, we spent most of the time in "stage 4.2: building libraries", +77% of the CPU time and 75% of the real time. +Now running the buildworld with the parameter WITHOUT_TOOLCHAIN=yes +we get a 3.3x faster build. Instead of 2h it will be done in 36 minutes! + +-------------------------------------------------------------- +time make -j $(sysctl -n hw.ncpu) WITHOUT_TOOLCHAIN=yes buildworld > buildworld.log 2>&1 +>>> World build completed on Fri Sep 17 12:31:41 UTC 2021 +>>> World built in 2207 seconds, ncpu: 3, make -j3 + 2207.44 real 5710.83 user 676.16 sys +-------------------------------------------------------------- + +-------------------------------------------------------------- +egrep '>>> stage| real ' buildworld.log +>>> stage 1.1: legacy release compatibility shims + 0.35 real 0.20 user 0.16 sys +>>> stage 1.2: bootstrap tools + 20.47 real 51.98 user 5.12 sys +>>> stage 2.1: cleaning up the object tree + 20.92 real 34.45 user 13.57 sys + 16.33 real 28.59 user 12.33 sys +>>> stage 2.3: build tools + 2.59 real 3.90 user 0.86 sys +>>> stage 3: cross tools + 10.46 real 18.62 user 2.35 sys +>>> stage 3.1: recording build metadata + 0.07 real 0.03 user 0.05 sys + 0.08 real 0.03 user 0.05 sys +>>> stage 4.1: building includes + 15.50 real 33.03 user 9.29 sys +>>> stage 4.2: building libraries + 750.31 real 1962.43 user 218.60 sys +>>> stage 4.3: building lib32 shim libraries + 684.05 real 1780.35 user 213.22 sys +>>> stage 4.4: building everything + 677.87 real 1787.13 user 186.82 sys +-------------------------------------------------------------- + +Using WITHOUT_TOOLCHAIN=yes is fine as long as there +are no major LLVM compiler changes. + +If you dislike this feature or suspect it is causing +trouble you can disable it with the variable TIME_ENV="" + +Next task: get more detailed timing information for the long-running stages (4.2, 4.3, 4.4) diff --git a/website/content/en/status/report-2021-07-2021-09/doceng.adoc b/website/content/en/status/report-2021-07-2021-09/doceng.adoc new file mode 100644 index 0000000000..5d7bf707ad --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/doceng.adoc @@ -0,0 +1,29 @@ +//// +Quarter: 3rd quarter of 2021 +Prepared by: dbaio +Reviewed by: gjb, carlavilla +Last edit: $Date: 2021-10-03 05:34:14 -0300 (Sun, 03 Oct 2021) $ +Version: $Id: doceng-2021-3rd-quarter-status-report.adoc 185 2021-10-03 08:34:14Z carlavilla $ +//// + +=== Documentation Engineering Team + +Links: + +link:https://www.freebsd.org/docproj/[FreeBSD Documentation Project] URL: link:https://www.freebsd.org/docproj/[https://www.freebsd.org/docproj/] + +link:https://docs.freebsd.org/en/books/fdp-primer/[FreeBSD Documentation Project Primer for New Contributors] URL: https://docs.freebsd.org/en/books/fdp-primer/[link:https://docs.freebsd.org/en/books/fdp-primer/] + +link:https://www.freebsd.org/administration/#t-doceng[Documentation Engineering Team] URL: link:https://www.freebsd.org/administration/#t-doceng[https://www.freebsd.org/administration/#t-doceng] + +Contact: FreeBSD Doceng Team <doceng@FreeBSD.org> + +The doceng@ team is a body to handle some of the meta-project issues associated with the FreeBSD Documentation Project; for more information, see link:https://www.freebsd.org/internal/doceng/[FreeBSD Doceng Team Charter]. + +During the last quarter, Philip Paeps (philip@) and Li-Wen Hsu (lwhsu@), already src and ports committers, were granted documentation commit bits, both now have all commit bit types. +Ed Maste (emaste@) who is already a src committer was granted a documentation commit bit. +We also said goodbye to Murray Stokely (murray@), Gábor Kövesdán (gabor@), Warren Block (wblock@), and Sevan Janiyan (sevan@). +Gábor Kövesdán (gabor@) and Warren Block (wblock@) are now former members of the doceng@ team; we thank them for their years of service. + +Implicit (blanket) approvals were documented in the link:https://docs.freebsd.org/en/articles/committers-guide/#doc-blanket-approval[Committers Guide]. +That does not cover all cases, but doceng@ encourages any FreeBSD committer from ports and src to contribute to the doc tree. + +All ports/packages misc/freebsd-doc-* were updated. +They have the entire documentation set from the FreeBSD Documentation Project, like Handbook, FAQ, articles, and more. diff --git a/website/content/en/status/report-2021-07-2021-09/ena.adoc b/website/content/en/status/report-2021-07-2021-09/ena.adoc new file mode 100644 index 0000000000..3c62166936 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/ena.adoc @@ -0,0 +1,30 @@ +=== ENA FreeBSD Driver Update + +Links: + +link:https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README[ENA README] URL: link:https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README[https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README] + +Contact: Michal Krawczyk <mk@semihalf.com> + +Contact: Artur Rojek <ar@semihalf.com> + +Contact: Marcin Wojtas <mw@semihalf.com> + +ENA (Elastic Network Adapter) is the smart NIC available in the virtualized environment of Amazon Web Services (AWS). +The ENA driver supports multiple transmit and receive queues and can handle up to 100 Gb/s of network traffic, depending on the instance type on which it is used. + +Completed since the last update: + +* Update ENA driver to v2.4.1 +* Introduce full kernel RSS API support +* Allow reconfiguration of the RSS indirection table and hash key +* Support netmap on the c6gn/m6i AWS instance types +* Fix race between detach function and some of the procedural sysctl nodes +* Add new statistics counters +* Improve safety of the reset handling routine +* Avoid mbuf collapse on Tx path for the LLQ condition + +Work in progress: + +* Prototype the driver port to the iflib framework +* MFC the ENA v2.4.1 driver to the FreeBSD 11/12/13-STABLE branches +* Add IPv6 L4 checksum offload support to the driver + +Sponsor: Amazon.com Inc diff --git a/website/content/en/status/report-2021-07-2021-09/erlang.adoc b/website/content/en/status/report-2021-07-2021-09/erlang.adoc new file mode 100644 index 0000000000..c6e2ef415c --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/erlang.adoc @@ -0,0 +1,50 @@ +=== FreeBSD Erlang Ecosystem Ports update + +Links: + +link:https://wiki.freebsd.org/Erlang[FreeBSD Erlang wiki] URL: link:https://wiki.freebsd.org/Erlang[https://wiki.freebsd.org/Erlang] + +link:https://erlang.org/[Erlang/OTP language] URL: link:https://erlang.org/[https://erlang.org/] + +link:https://elixir-lang.org/[Elixir language] URL: link:https://elixir-lang.org/[https://elixir-lang.org/] + +link:https://gleam.run/[Gleam language] URL: link:https://gleam.run/[https://gleam.run/] + + +Contact: FreeBSD Erlang mailing list <erlang@FreeBSD.org> + +The Erlang runtime system, commonly known as the BEAM, provides a +runtime that is used by a number of programming languages and +applications in the FreeBSD ports collection. + +Earlier this year, both Elixir and Erlang runtimes were brought up to +date, but as separate ports, to enable porters and users to test +applications side by side. + +In Q3, the current runtimes have been brought across as defaults - this +means that `lang/elixir` and `lang/erlang` are running as the latest +releases of these superb programming languages and runtimes. + +Older releases of `lang/erlang-runtime{21,22,23}` are still available as +ports. The very old releases prior to OTP20 have been removed from the +ports tree, as they are no longer supported upstream either. + +Only newer OTP releases include the updated SSL application that will +correctly validate cross-signed certificates, as used in Let's Encrypt's +upcoming root certificate deprecations. + +Further details on these changes are well documented at +link:https://blog.voltone.net/post/29[Erlang/OTP impact of DST Root CA X3 expiration] +and link:https://blog.voltone.net/post/30[DST Root CA X3 expiration update] + +All of the NIF driver related ports that pull in other FreeBSD ports +tree dependencies have been updated to match the newer `lang/erlang` +release, and a number of ports that are not being updated in their +upstream community, have therefore been marked as broken. + +The Erlang team is planning to: + +* remove the deprecated OTP20 and OTP21 runtimes in 2021Q4 +* remove ports directly dependent on erlang- and elixir- languages, + where they are more commonly installed via `mix` and `rebar3` tools, + the standard community build tool chain. + +Additional testing and community contributions are welcome; please +reach out on the mailing list, especially if you are able to help +testing of specific port updates. + diff --git a/website/content/en/status/report-2021-07-2021-09/freebsd-foundation.adoc b/website/content/en/status/report-2021-07-2021-09/freebsd-foundation.adoc new file mode 100644 index 0000000000..3b09a58b27 --- /dev/null +++ b/website/content/en/status/report-2021-07-2021-09/freebsd-foundation.adoc @@ -0,0 +1,183 @@ +=== FreeBSD Foundation + +Links: + +link:https://www.FreeBSDfoundation.org[FreeBSD Foundation] URL: link:https://www.FreeBSDfoundation.org[https://www.FreeBSDfoundation.org] + +link:https://freebsdfoundation.org/blog/technology-roadmap/[Technology Roadmap] URL: link:https://freebsdfoundation.org/blog/technology-roadmap/[https://freebsdfoundation.org/blog/technology-roadmap/] + +link:https://www.FreeBSDfoundation.org/donate/[Donate] URL: link:https://www.FreeBSDfoundation.org/donate/[https://www.FreeBSDfoundation.org/donate/] + +link:https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program/[Foundation Partnership Program] URL: link:https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program[https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program] + +link:https://www.FreeBSDfoundation.org/journal/[FreeBSD Journal] URL: link:https://www.FreeBSDfoundation.org/journal/[https://www.FreeBSDfoundation.org/journal/] + +link:https://www.FreeBSDfoundation.org/news-and-events/[Foundation News and Events] URL: link:https://www.FreeBSDfoundation.org/news-and-events/[https://www.FreeBSDfoundation.org/news-and-events/] + + +Contact: Deb Goodkin <deb@FreeBSDFoundation.org> + +The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated to +supporting and promoting the FreeBSD Project and community worldwide. Donations +from individuals and corporations are used to fund and manage software +development projects, conferences, and developer summits. We also provide travel +grants to FreeBSD contributors, purchase and support hardware to improve and +maintain FreeBSD infrastructure, and provide resources to improve security, +quality assurance, and release engineering efforts. We publish marketing +material to promote, educate, and advocate for the FreeBSD Project, facilitate +collaboration between commercial vendors and FreeBSD developers, and finally, +represent 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 + +Fundraising last quarter wasn’t as spectacular as we were hoping. But, then +again, people tend to take vacations during the summer months, which makes it +that more difficult for our funding requests to go through the management chain +for approvals. + +So far this year we’ve raised $180,000 towards our $2,000,000 spending +budget. Why do we need so much money? Well, last year we decided to make more +significant software contributions to FreeBSD. In order to do that, we had to +grow our team. We developed +link:https://freebsdfoundation.org/blog/technology-roadmap/[a technology +roadmap] based on input we were receiving from commercial users as well as +market trends. Based on the roadmap, we identified positions we needed to fill. + +This year we've hired three full-time software developers, one full-time ARM +kernel developer, and one project manager. We also are funding wifi work +full-time and some other projects to help with FreeBSD on the desktop. You can +read about this effort to attract new users and contributors to the Project in +individual entries elsewhere in this status report. + +Our growth wasn’t just in our technology team, but in our advocacy team +too. Here we hired a marketing coordinator and technical writer to provide more +educational and informational content. You’ll see in the *Advocacy and +Education* section below all the work we did to promote FreeBSD, provide +community engagement, education opportunities, and informative content to +help pave the path to getting started with FreeBSD. + +You’ll find out how we used your donations here and in individual entries +throughout this status report. + +We’re passionate about supporting you, the FreeBSD community, but we can’t do it +without your financial support. + +Please consider making a donation to help us continue and increase our support +for FreeBSD in 2021: +link:https://www.FreeBSDfoundation.org/donate/[https://www.FreeBSDfoundation.org/donate/]. + +We also have the Partnership Program, to provide more benefits for our larger +commercial donors. Find out more information at +link:https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program/[https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program/] +and share with your companies! + +==== OS Improvements + +During the third quarter, Foundation staff and grant recipients committed 420 +src tree changes, 24 ports tree changes, and 11 doc tree changes. This +represents 38%, 48%, and 16% of src, port, and doc commits which identify a +sponsor. + *** 1028 LINES SKIPPED ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202111151623.1AFGNWND093212>