[FreeBSD-Announce] FreeBSD Errata Notice FreeBSD-EN-20:11.ena
FreeBSD Errata Notices
errata-notices at freebsd.org
Tue Jun 9 16:58:25 UTC 2020
-----BEGIN PGP SIGNED MESSAGE-----
FreeBSD-EN-20:11.ena Errata Notice
The FreeBSD Project
Topic: Stability issues in ena(4) driver
Credits: Colin Percival
Affects: FreeBSD 12.1
Corrected: 2020-05-12 18:44:41 UTC (stable/12, 12.1-STABLE)
2020-06-09 16:10:57 UTC (releng/12.1, 12.1-RELEASE-p6)
For general information regarding FreeBSD Errata Notices and Security
Advisories, including descriptions of the fields above, security
branches, and the following sections, please visit
The ena(4) driver is used to access the Elastic Network Adapter network
interface on recent Amazon Elastic Compute Cloud (EC2) instances. It is
designed to make full use of the EC2 network, operating at up to 100 Gbps.
II. Problem Description
The ena(4) driver attempts to allocate a large number of 16 kB mbuf clusters
to use as buffers for received packets. Under low memory conditions, the
process of attempting to allocate these buffers may take a long time.
On FreeBSD 12.x, these allocations are attempted from an interrupt thread
running at high priority, and can subsequently starve other parts of the
system of CPU time.
It appears that systems using the ZFS filesystem may be more likely to
experience this issue, possibly due to the memory pressure created by the
allocation of memory to the ZFS ARC.
The system may become unresponsive, appearing to "lock up" for periods of
several seconds. The ena(4) driver may log errors such as
The number of lost tx completion is above the threshold (129 > 128).
and reset the device; the nvme(4) driver may also experience timeouts
resulting in a range of errors being reported and the device being reset,
and in some cases causing kernel panics.
No workaround is available. Systems which are not part of the Amazon
Elastic Compute Cloud (EC2) are not affected; nor are older EC2 instance
types, which lack the Elastic Network Adapter hardware.
Upgrade your system to a supported FreeBSD stable or release / security
branch (releng) dated after the correction date, and reboot.
Perform one of the following:
1) To update your system via a binary patch:
Systems running a RELEASE version of FreeBSD on the i386 or amd64
platforms can be updated via the freebsd-update(8) utility:
# freebsd-update fetch
# freebsd-update install
# shutdown -r +10min "Rebooting for errata update"
2) To update your system via a source code patch:
The following patches have been verified to apply to the applicable
FreeBSD release branches.
a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.
# fetch https://security.FreeBSD.org/patches/EN-20:11/ena.patch
# fetch https://security.FreeBSD.org/patches/EN-20:11/ena.patch.asc
# gpg --verify ena.patch.asc
b) Apply the patch. Execute the following commands as root:
# cd /usr/src
# patch < /path/to/patch
c) Recompile your kernel as described in
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
NOTE: This patch can have a small (~2%) impact on the throughput of the
ena(4) device. The original performance can be restored -- at the expense
of latency spikes and system instability under memory pressure -- by adding
the following to /boot/loader.conf:
VI. Correction details
The following list contains the correction revision numbers for each
To see which files were modified by a particular revision, run the
following command, replacing NNNNNN with the revision number, on a
machine with Subversion installed:
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
Or visit the following URL, replacing NNNNNN with the revision number:
The latest revision of this advisory is available at
-----BEGIN PGP SIGNATURE-----
-----END PGP SIGNATURE-----
More information about the freebsd-announce