FreeBSD git weekly: 2026-08-31 to 2026-09-06

Introduction

This is a display of mostly-automatically-classified git commits from 2026-08-31 to 2026-09-06.

DEBUG: This version of the report is primarily for checking the classifiers, and therefore contains extra information (in this colour).

Table of contents and commits per category:

(6) Highlighted commits (these are copies, not in stats)
7 3.6% Userland programs
9 4.7% Documentation
55 28.5% Hardware support
12 6.2% Networking
39 20.2% System administration
8 4.1% Libraries
2 1.0% Filesystems
30 15.5% Kernel
7 3.6% Build system
2 1.0% Internal organizational stuff
12 6.2% Testing
4 2.1% Style, typos, and comments
6 3.1% Contrib code
0 0.0% Reverted commits
0 0.0% Unclassified commits
193 100% total
Technical notes about this page

debug: info about the automatic classification

num % num changed stage
4 2.1% 0 01-style
17 8.8% 0 02-filenames_wildcards
9 4.7% 0 02b-filenames_wildcards2
98 50.8% 0 03-filenames_plain1
53 27.5% 0 04-filenames_plain2
5 2.6% 0 05-summary-prefix
7 3.6% 0 Manually-classified commits
0 0.0% 0 Unclassified commits

debug: more stats

num % stage
0 0.0% Misclassified commits
186 96.4% Classified commits, no corrections

debug: groups

0 0.0% num in revert
3 1.6% num in fixes
29 15.0% num in consecutive
32 16.6% Commits in groups

Highlighted commits

For extra visibility, these are copies of commits found in other sections. Most (if not all) come from the commit message containing "Relnotes:", or commits modifying UPDATING.

rtwn: add support for the RTL8723BU
Pushed using the RTL8723BU.

Reviewed by:    ziaee, avos, adrian
Relnotes:       yes
Differential Revision:  https://reviews.freebsd.org/D59205
551b7c5e12bfea623a47edf97ad5689732a1233f Ahmad Khalifa 2026-09-01 21:07:59

debug: classified in 04-filenames_plain2 by 'sys/'

rc: add a backlight service to save/restore backlight levels
The default on my laptop is annoyingly bright, and this is a useful
feature to mitigate that.  The backlight script is largely a copy of the
mixer service which provides the same value for mixers, but this one is
specifically dependant on kld to allow DRM drivers a chance to attach.

Note that it's off by default to avoid interference with DEs, and
document the capability in backlight(8).  Set backlight_enable=YES in
rc.conf(5) to enable save/restore.

Relnotes:       maybe
Reviewed by:    bapt, ivy, manu, ziaee
Differential Revision:  https://reviews.freebsd.org/D59296
c45bdb39fe985b43afc63b7cbd989fe7a61673b7 Kyle Evans 2026-09-02 03:51:41

debug: classified in 03-filenames_plain1 by '['etc/', 'libexec/']'

sys/conf/options: Add WITNESS_LOCK_CHILDCOUNT
Make the witness LOCK_CHILDCOUNT a configurable kernel option.
On machines with a very high core count the default value is too
low, leading to witness exhaustion after boot.

Relnotes:       yes
Reviewed by:    kib, ziaee
Signed-off-by:  Kajetan Puchalski <kajetan.puchalski@arm.com>
Closes:         https://github.com/freebsd/freebsd-src/pull/2398
792c94293e217d77d9eb8871ce3b53898ece0f9a Kajetan Puchalski 2026-08-27 14:37:14

debug: classified in 04-filenames_plain2 by 'sys/'

iflib: Plumb per-packet RX hardware timestamps to mbufs
Add iri_rcv_tstmp to if_rxd_info so an isc_rxd_pkt_get() driver can
report a hardware RX timestamp.  Copy it into m_pkthdr.rcv_tstmp,
reusing the generic mbuf timestamp path.

Widen iri_flags from uint8_t to uint32_t and define the flags drivers
may supply.  Mask the flags before copying them into the mbuf so no
other mbuf state can leak through the driver callback.

Place the timestamp next to iri_frags to avoid an alignment hole, and
document its nanoseconds-since-boot representation and validity flags.
Bump __FreeBSD_version because changing if_rxd_info breaks KBI.

Reviewed by:    gallatin
Signed-off-by:  Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Differential Revision:  https://reviews.freebsd.org/D58638
3c928ccadbb5d7baa3ce18d33d09d9a1d2770397 Sumit Saxena 2026-09-02 19:36:43

debug: classified in 04-filenames_plain2 by 'sys/'

ifconfig: Add SR-IOV VF status output
Add NIC-specific VF status to the existing ifconfig -v output.  Fetch
the data through libifconfig using a separate native route Netlink
query.

Group optional identity, initialization, resources, VLAN policy,
administrator policy, protocol, traffic-permission, and
fault containment fields.  Omitted fields remain distinct from false or
zero.

Refer users to iovctl -L for device-neutral PCI attachment and
passthrough state.

This is a Netlink-native evolution of the original interface by Eric
Joyner.

Relnotes:       yes
Sponsored by:   Intel Corporation (initial version)
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D58778

Co-authored-by: Eric Joyner <erj@FreeBSD.org>
41418a7cd00c4a20eb72bc8c315c0e364d4e4ad2 Kevin Bowling 2026-08-10 22:30:22

debug: classified in 03-filenames_plain1 by 'sbin/'

Introduce nfsdtop(8)
Display top-like NFS server I/O using dtrace(1).
Also supports JSON output for time-series.

Relnotes:       yes

Reviewed by:    ziaee, bcr, adrian
Differential Revision:  https://reviews.freebsd.org/D59438
60c7313074b93adf4ea70ff44b78b3b4fc15c29f Devin Teske 2026-09-06 22:34:34

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

Userland programs

Commits about commands found in man section 1 (other than networking).

cat: add -A, -E and -T flags
Support cat -A, -E and -T, which are commonly used by Linux shell
scripts.  -E prints a "$" at the end of each line, -T renders tabs
as ^I, and -A is equivalent to -vET.

MFC After:      1 week
Discussed with: jrtc27
Reviewed by:    jrtc27, ziaee
Differential Revision:  https://reviews.freebsd.org/D59250
d2cfdf4c12a76db3612c83575403150811f5aa9a Baptiste Daroussin 2026-08-21 14:41:54

debug: classified in 03-filenames_plain1 by 'bin/'

vmstat: Drop vm_cnt compat hack
Prior to FreeBSD 11, vm_cnt was named cnt.  When it was renamed, vmstat
was modified to fall back to the old name if the new name was not found.
It's time we dropped this.

Reviewed by:    kib, jhb, emaste
Differential Revision:  https://reviews.freebsd.org/D59255
b5ecbcd26cc3a80831c7ff38433dc5f9c3ced575 Dag-Erling Smørgrav 2026-09-01 12:49:57

debug: classified in 04-filenames_plain2 by 'usr.bin/'

truss: add -t to select which system calls are reported
truss reports every system call a process makes, which for anything
larger than a toy program buries the calls of interest.  Add -t, taking
a comma-separated expression naming the system calls to report.

A term is the name of a system call, which may contain the fnmatch(3)
wildcards; a system call number in decimal; or "@group" naming a group
of related system calls.  A term prefixed with '!' excludes what that
one term matches rather than including it, and applies to no other
term.  An expression whose terms are all negated subtracts from the set
of every system call; any other expression selects from an empty one.
Terms apply in order and the last one to match a system call decides
whether it is reported.  Repeating -t appends, so "-t a -t b" and
"-t a,b" are equivalent.  An empty term is ignored, so an empty
expression filters nothing and a stray comma is not an error.

    truss -t @file,@net fetch https://www.freebsd.org/
    truss -t '!@memory' make buildworld
    truss -t '@desc,!@read,!@write' -p 34
    truss -c -t 'readlink*' /bin/ls
    truss -t 3,4 cat file

A number selects the system call with that number in the ABI of the
traced process, so "-t 3" selects read(2) from a native process but
close() from a Linux one.

Thirteen groups are provided to start with: @all, @creds, @desc, @file,
@ipc, @memory, @net, @none, @proc, @read, @signal, @time and @write.
These were derived by working through sys/kern/syscalls.master; the
audit event in that file is too sparse to drive the grouping by itself
(316 distinct events over 509 live system calls, 111 of them AUE_NULL),
so the groups are curated, but they are curated as patterns rather than
as name lists.  A family sharing a naming convention is written as one
pattern -- "extattr_*_file", "__acl_*_fd", "sctp_*" -- so system calls
added later join the right group without further change here.

A group's member list is an expression in exactly the form -t accepts,
so a group can say anything a user can say on the command line: a
member may be a pattern, a number or another group, and may be negated.
@desc is built from @read and @write without repeating them, and @none
is the single member "!*".  Keeping the two languages identical means a
group defined from a -t expression supplied elsewhere needs no
translation to become a member list.  Adding a group is a member list
plus one entry in syscall_groups[].

"truss -t" with no expression prints the groups and exits.

Matching is done against the name truss displays and against that name
with any compatibility or ABI prefix removed, so @file selects
compat11.stat, freebsd32_stat and linux_newstat as well as stat.

A name or pattern matching no system call of any ABI truss understands
is reported with a warning, since it is almost always a typo, but it is
kept and simply never matches.  sysdecode(3) is the oracle: it names
every system call of every such ABI whether or not that ABI's module is
loaded, and names them exactly as truss reports them.  Numbers are not
checked this way.  A process may issue any number the kernel can hold,
whether or not a system call is implemented behind it; one that is not
returns ENOSYS, which truss reports like any other result.  Only a
number too large to be one at all is rejected.

A system call excluded by -t is not decoded, so the filter also removes
the cost of formatting arguments that would never be printed, and it is
left out of the -c summary.

The option letter is the one truss on System V Release 4 and SunOS uses
for this feature, "-t [!]syscall,...", and which truss(1) already names
as its model.  The syntax is deliberately not bug-compatible with it:
there '!' is sticky for the remainder of a list, and a second -t
discards the first when the first began with '!'.

usr.bin/truss/tests is new, so etc/mtree/BSD.tests.dist gains an entry.

Without -t the behaviour is unchanged.

MFC after:      2 weeks
Reviewed by:    fuz
Differential Revision:  https://reviews.freebsd.org/D59275
af25f24762307bf606690c0aca6a3205a0515914 Devin Teske 2026-09-01 21:28:05

debug: Commit manually moved from "unknown" to "userland".

mkimg: Restore offset support for the SIZE partition form
Commit 50c1240ebfaf moved the offset parsing into the PART_KIND_FILE case of
the switch, leaving PART_KIND_SIZE with no offset handling.
The offset was then silently ignored, so "-p efi::$size:$start" as used by
release/${ARCH}/mkisoimages.sh packed the ESP immediately after the preceding
partition.

Parse the offset outside the switch so both forms honour it.

Add tests covering absolute and relative offsets in both forms.

Reviewed by:    jrtc27, bsdimp, jlduran
Approved by:    jlduran, bsdimp
Sponsored by:   Netflix
Assisted-by:    Claude Code (Opus 5)
61c27edf3e00ead2bde9669c5917cb1fb32e19db Olivier Cochard 2026-09-04 15:24:33

debug: classified in 04-filenames_plain2 by 'usr.bin/'

freebsd-tips: documentation inside the bugs
Reviewed by:  ziaee
Event:          Berlin Hackathon 202609
9aff62dee28239f84b4aa4a3429cf26dbbf770cc Robert Clausecker 2026-09-04 20:43:08

debug: classified in 04-filenames_plain2 by 'usr.bin/'

look(1): Capsicumise
Reviewed by:  fuz, oshogbo
Approved by:    fuz (mentor)
Pull Request:   https://github.com/freebsd/freebsd-src/pull/1489
f66c8680e804c282af66c93b13766801c6f85e7f Faraz Vahedi 2024-11-01 11:05:15

debug: classified in 04-filenames_plain2 by 'usr.bin/'

whereis(1): Respect PORTSDIR variable
Respect PORTSDIR variable for those who have the ports collection in a different
place than /usr/ports. PORTSDIR is a very common variable used in the ports
framework and in /etc/make.conf among other places.

While here, remove and old reference to CVS.

Reviewed by:    delphij@, ngie@
Approved by:    ngie@
Differential Revision:  https://reviews.freebsd.org/D42156
fc002631af3e25c65d74ca6869c13b59f1af8689 Fernando Apesteguía 2026-09-04 18:27:34

debug: classified in 04-filenames_plain2 by 'usr.bin/'

Documentation

Man pages, release notes, etc.

RELNOTES: Add an entry for the NFS over RDMA "glue" commits
9bec8a959bd6206cceb1afd583b47822bc8ccd16 Rick Macklem 2026-08-31 02:00:45

debug: classified in 03-filenames_plain1 by 'RELNOTES'

fortune: Fix tag width in fortune.6 man-page
Reported by: ziaee

Reviewed by:    ziaee
Differential Revision:  https://reviews.freebsd.org/D59242
5a223ae08e736d3aabfd43dbb5c89cd86b3e1739 Devin Teske 2026-08-31 16:40:07

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

loader.kboot.8: Use right headers
Uggg, copied this instead of using the new style.

Sponsored by:           Netflix
68a4a53e82afb51dedda7893673d119e172bf520 Warner Losh 2026-09-01 16:26:26

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

ports.7: Document test target
While here, document WITHOUT_DEBUG_PORTS.

Approved by: dch (mentor)
Approved by: kevans
Approved by: ziaee
Closes:      https://github.com/freebsd/freebsd-src/pull/2387
e2cf718062ccabb20601f8051848f3ab5f28ba2b Pat Maddox 2026-08-25 08:12:49

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

manpages: Fix author e-mail address formatting
 - consistently use Mt request within Aq.  This makes author
   e-mail addresses clickable in many frontends.
 - @freebsd.org -> @FreeBSD.org
 - (user@host.tld) -> Aq Mt user@host.tld

Event:          Berlin Hackathon 202609
MFC after:      3 days
Reviewed by:    ziaee
Differential Revision:  https://reviews.freebsd.org/D59410
d1c07141dccf8c719067bd3c30c402e4db9a77b3 Robert Clausecker 2026-09-04 18:01:18

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

tws.4: Canonicalize SYNOPSIS + nits
+ wrap some long lines
+ escape some ? wildcards
+ no macros in width specifiers
+ mention the speed in HARDWARE (bumps date)
+ use the hyperlink macro for... the defunct LSI website...
+ write out a symbol heavy error message format string in mdoc

MFC after:      3 days
Event:          Berlin Hackathon 202609
ef3239cd4a3f591434daa72747c49adc1263eb04 Alexander Ziaee 2026-09-04 14:42:37

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

tun.4: Canonicalize SYNOPSIS and AUTHORS
While here, s/PR#2411/NetBSD PR#2411/ in the comments for clarity.
I had to go to netbsd sources to get this information.

MFC after:      3 days
Event:          Berlin Hackathon 202609
555972c6c94721bffbff1ecb51d916977b5c85f7 Alexander Ziaee 2026-09-04 17:42:39

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

find.1: fix rendering of find -s example
The period here is part of the literal string in the example.  Adding a
space caused the example to be quoted wrongly.  Instead, a trailing
zero-width space keeps the linter mandoc -T happy.

Reviewed by:    ziaee
Differential Revision:  https://reviews.freebsd.org/D59353
3581b6db62b1a2146014b3196f18bde3fc33010d Ryan Libby 2026-09-05 22:44:34

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

recv(2): update description of MSG_WAITALL
Remove a note about "data of a different type".  This was a bug that was
fixed in FreeBSD 15.  Instead put an exact quote from SUS that lists
allowed cases of a short read with MSG_WAITALL.  See discussion in D57511.
e5bcf988398924568015202bf853b3a9abd3845e Gleb Smirnoff 2026-09-06 15:59:48

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

Hardware support

Hardware drivers and architecture-specific code.

e1000: Rework Wake-on-LAN policy and programming
The driver used the NVM APME default as both the hardware-support
decision and the mutable filter mask.  Consequently, an NVM-disabled
but capable port did not advertise wake support, disabling a wake mode
once could keep it disabled across later suspends, and directed-unicast
wake could never be selected.

Require the PCI power management capability to report D3hot PME support
before advertising or arming wake.  A PM capability alone does not mean
the function can signal PME from the state used during system sleep.

Separate the board and port capability matrix from the NVM-selected
magic packet default.  Read the proper per function NVM word on igb
controllers, cover the newer PCH generations, and retain the documented
legacy, multi-port, and OEM restrictions.  Decode the distinct APM
Enable locations used by 82544, 82541EI/82547EI, and the later 8254x
parts.  Do not advertise wake on the 82541ER, whose power-management
logic cannot assert PME for wake events.  For I210/I211 internal iNVM,
use the hardware-loaded WUC.APME state; the shared reader does not
expose the optional Initialization Control 3 word.

Build WUFC from the enabled ifnet capabilities for each suspend.
Reconstruct RAR0, the multicast table, and the receive filter after the
stop-time reset so unicast and multicast wake use the current interface
state.  Fill the MTA on legacy PCI/PCI-X controllers and 82575 through
82580 when the address list overflows; their multicast wake matchers
require the indexed MTA bit and do not use RCTL.MPE as a substitute.

Do not access PF-only wake CSRs from the igb VF suspend and resume
paths.

Use the shared BM page access helpers and propagate every PHY receive
address and wake-register programming failure.  On resume, perform the
required LCD reset before clearing host PHY-wake ownership, report the
saved PHY or MAC wake cause, and clear PCI PME after removing the device
wake source.  Preserve management engine wake ownership throughout.
Keep WUC.APME set only when early 82545EM/82546EB manageability needs
its D3 clock-tree workaround; ordinary host wake uses PCI PME.

Keep the link powered while host wake is armed.  With no host wake,
evaluate management pass-through at each suspend.  Leave a
management-owned link untouched and keep PCI PME enabled.  Otherwise,
use the Intel shared code PHY power-down hook, or its matching SerDes
shutdown hook on igb fiber and SerDes devices.  Track that state and
restore the link without another PHY reset before hardware
initialization.  Ordinary ifconfig down behavior is unchanged.

Apply and undo the PCH Sx workarounds across their full supported range.
Use controller-specific CTRL and laser semantics, and restore RCTL when
wake setup fails.  Always run the pending PCIe-transaction drain and
bus-master-disable sequence before D3.  Suspend reports a
wake programming failure rather than sleeping without wake, shutdown
logs it and continues through the fencing sequence.

Do not apply the ICH/PCH IGP3 D3 power-down workaround to igb
controllers.  The merged driver inherited an unconditional call from the
em-only driver.  On 82575 and 82576 it asserted CTRL.PHY_RST after the
wake filters were armed, preventing the link from receiving wake
traffic.

The implementation was checked against the Intel controller data
sheets, the Intel Linux e1000, e1000e, and igb lifecycle code, DPDK,
and the Intel FreeBSD em-7.7.8 and igb-2.5.31 drivers.  The 8254x audit
also covered the PCI/PCI-X Software Developer's Manual, the 82541/82547
NVM guide, and the 82544, 82545, and 82546 specification updates.  The
out of tree drivers carry the family-specific power down and reset block
hooks but do not call them from suspend.  DPDK supplies the stop/start
pairing.

On PCH controllers including an 82579LM, I217-LM, and various I219s,
device-only D3 tests observed PME and BM_WUS.MAG for a magic packet, no
PME with every host filter disabled, and BM_WUS.EX with only
directed-unicast wake enabled.  With dev.em.0.wake enabled, ACPI S3
slept until a delayed magic packet and resumed with the interface
operational.  After wake traffic stopped and resume completed, a second
cycle again waited for a newly delayed magic packet.  Traffic restored
after both host and firmware wake were enabled.

An 82574L woke from S3 after one magic packet, reported MAC wakeup
status, and returned with link and traffic operational.

On 82571EB and 82573L adapters, device-only D3 tests observed WUS.MAG
and PCI PME status after a magic packet, then returned to D0 with link
and traffic operational.  Full S3 did not wake either add-in card.
The positive device tests and negative S3 isolate the remaining failure
outside the MAC filter programming and my cards may lack aux power
wiring because the link was off in S3.

On 82575EB and 82576 adapters, pre-fix device only D3 tests left PMCSR
at 0x2103 despite ten verified magic packets, and the handoff showed
CTRL.PHY_RST asserted.  With the em-family gate, identical tests changed
PMCSR from 0x2103 to 0xa103, resume reported WUS.MAG, and both links
returned operational.  S3 testing on these separated controller from
board behavior.  An Intel 82576 card retained link in S3 and woke the
system from a delayed magic packet, reported WUS.MAG, and returned with
interface operational.  The tested 82575 add-in card lost its
link LED in S3 and retained no WUS cause after manual resume, although
its identical D3hot test passed.   That points the 82575 S3 result to
card aux power wiring as well.

D3 tests were performed on I210 and I350 but S3 has not yet been
attempted on them.

lem(4) testing has not been attempted yet.

Community reports of success and failure are welcome.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=232708, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238411, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=295443, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296675
MFC after:      2 weeks
Sponsored by:   BBOX.io
46cf612d98e99967204185829fe829350cfa51a1 Kevin Bowling 2026-08-30 06:06:02

debug: classified in 03-filenames_plain1 by 'sys/dev/'

e1000: Configure PCH low-power link modes for suspend
The PCH suspend path kept a wake link fully powered and did not restore
the negotiated EEE modes after its stop-time reset.  Intel provides the
ULP entry and exit machinery in the shared code, but FreeBSD did not
invoke its Sx policy.

Enter ULP on LPT and newer PCH controllers when wake is armed without
directed-unicast, multicast, or broadcast filters, which ULP cannot
preserve.  For a link retained by host wake or management, restore the
100BASE-TX and 1000BASE-T LPI controls selected by the local
advertisement and the cached link-partner ability.

Keep these power reductions best-effort: wake filters and PME are
already configured independently, and a ULP or EEE failure is logged
without converting an optional power optimization into a suspend
failure.  The existing PCH resume workaround forcibly exits ULP and
clears automatic Sx LPI state before normal initialization.

Validated on a ThinkPad T440p with an I217-LM.  FBT confirmed that the
helper received the magic-wake mask during device suspend.  The shared
ULP helper returned its documented no-op for the initial I217 device ID.
A full S3 cycle resumed cleanly.

On a ThinkPad P51 with an I219, full S3 waited for a magic packet and
then resumed with the 1-Gbps link and traffic restored.

MFC after:      2 weeks
Sponsored by:   BBOX.io
52fbff96549904933898908644f3a99e5cd4cdca Kevin Bowling 2026-08-30 08:25:09

debug: classified in 03-filenames_plain1 by 'sys/dev/'

igbv: Fence DMA while sanitizing retained queues
The 82576 and I350 retain VF queue enable and DMA address state
across VFLR.  iflib enables PCI bus mastering before driver attach, so
stale state left by a previous owner can otherwise issue DMA before
igbvf has completed its first reset and queue sanitization.

Disable PCI bus mastering immediately after mapping the VF BAR.  Keep
it disabled until reset and queue sanitization succeed, verify both
disable and enable through PCI command-register readback, and wait for
pending transactions before treating the fence as complete.
Resanitize on stop before iflib releases queue mappings.

The sanitizer and recovery were exercised on I350 and 82576 VFs.  Forced
queue-disable failure left the VF down, and a later administrative
down/up recovered it; successful I350 VFs passed bidirectional traffic
with no errors or drops.

Sponsored by:   BBOX.io
037d45a0526f452d96f44059e88f735298a9063d Kevin Bowling 2026-08-26 09:21:56

debug: classified in 03-filenames_plain1 by 'sys/dev/'

bxe(4): don't feed a zero page size to ilog2 during ILT init
FreeBSD's bxe hardwires CNIC_SUPPORT() to 0, so bxe_ilt_set_info()
never enters the block that initializes the SRC and TM ILT clients.
Those two clients are left zeroed (page_size 0, flags 0), yet
ecore_ilt_init_page_size() calls ecore_ilt_init_client_psz() for all
four clients unconditionally. For SRC and TM that evaluates
ILOG2(page_size >> 12), i.e. ilog2(0). On an INVARIANTS kernel ilog2()
asserts "ilog argument must be nonzero" and panics the machine the
first time the interface is brought up (bxe_init -> bxe_nic_load ->
bxe_init_hw -> ecore_ilt_init_page_size). On a non-INVARIANTS kernel
it silently programs a bogus page-size register instead.

Restore the else branch that upstream Linux bnx2x carries: when CNIC
is not supported, mark the SRC and TM clients with ILT_CLIENT_SKIP_INIT
and ILT_CLIENT_SKIP_MEM so ecore_ilt_init_client_psz() skips them.

Root-caused from a crash dump on a BCM57810 (device 0x168e): the ILT
clients showed CDU and QM populated and SRC and TM zeroed with no skip
flag set.

Reviewed by:    adrian
Approved by:    adrian (mentor)
Differential Revision:  https://reviews.freebsd.org/D58587
Signed-off-by: Nick Price <nprice@FreeBSD.org>
742c5498aca9a9a31a68eb9d5888edf36b7034dd Nick Price 2026-08-31 23:16:12

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Fixed some clocks divide width.
clk_cpll_div_333m_div, clk_cpll_div_125m_div, clk_cpll_div_50m_div,
clk_cpll_div_25m_div, clk_cpll_div_100m_div, clk_osc0_div_750k_div
did not respond Rockchip RK3568 TRM Part1 V1.1-20210301.pdf
documentation page 79. I changed them correctly.

Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/2287
d6756628767ea82daa70c3cd1e0eca911e3539d8 priittrees 2026-06-19 13:51:28

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Commit group #0: tpm
tpm: Correct the TPM 1.2 suspend transaction

The legacy driver wrote TPM_ORD_SaveState directly to the command
FIFO, but used ordinal 156 instead of the TPM 1.2 ordinal 152 and
never completed the transaction through the transport start and end
methods.  On a TIS device this omitted TPM_STS_GO, and the response
read used the header length as flags instead of requesting the complete
parameter size.  The legacy Atmel reader would also dereference the
null byte-count pointer.

Send the header-only command through the normal transport lifecycle,
validate the response header and TPM result, and retry TPM_WARN_RETRY
for a bounded five seconds.  Fail suspend rather than enter S3 after
an unsuccessful state save.

This follows the TPM 1.2 SaveState command definition and the bounded
retry policy used by other TPM 1.2 implementations.

The stock driver failed to resume a ThinkPad T440p with its STMicro
TPM 1.2 Security Chip enabled; disabling the chip made S3 reliable.
With this change and the following TIS resume restoration, the enabled
TPM completed two consecutive S3 cycles.  PCR 0 was readable with the
same value before and after each cycle, and no TPM errors were logged.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291067
Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59192
c0356f4cd02255419a4d4309f393998185c8de2d Kevin Bowling 2026-08-26 10:32:34

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm: Restore TPM 1.2 TIS state after resume

Firmware restores the state saved by TPM_ORD_SaveState, but the TIS
interrupt, locality, and command FIFO state are not guaranteed to
survive S3.  The legacy driver previously treated resume as a no-op.

Revalidate the interface and device identity, disable and acknowledge
stale interrupts, restore the configured interrupt vector, reacquire
locality zero, and return the FIFO to command-ready state.  Also disable
TIS interrupts during initial setup when the device uses polling so
firmware settings cannot leave an unhandled interrupt enabled.

TIS 1.3 Table 22 makes the interrupt control registers locality
protected.  Acquire locality before disabling or programming them during
initial setup and resume rather than relying on probe retaining
locality.

Keep TPM self-test outside the resume critical path.  It can take
minutes on some TPM 1.2 devices and is not required to restore the
transport state.

The two-commit suspend and resume series completed two consecutive S3
cycles on a ThinkPad T440p with its STMicro TPM 1.2 Security Chip
enabled.  PCR 0 was readable with the same value before and after each
cycle, and no SaveState or TIS restoration errors were logged.

The locality ordering completed another two consecutive S3 cycles on a
ThinkPad T430 with the same STMicro TPM in polling mode.  PCR 0 again
remained stable, and TPM access recovered without errors after each
resume.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291067
Reviewed by:    kevans
Sponsored by:   BBOX.io
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D59193
96ed6005082fc63d633408ba3ad697e8757e80f9 Kevin Bowling 2026-08-26 10:33:38

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm: Remove Giant from the TPM 1.2 driver

Serialize TPM 1.2 commands, character-device methods, and power
transitions with an sx lock, following the command ownership model used
by the TPM 2.0 driver.  Reject new operations once detach starts and
drain the character device before releasing transport resources.

Giant also closed the interrupt race between the final TIS status check
and tsleep.  Replace that implicit dependency with a mutex and condition
variable, use an absolute deadline across unrelated wakeups, and make
the interrupt handler MPSAFE.

Create the device node atomically with its softc and finish failed write
transactions so every command path releases its transport state.

The polling path was validated on ThinkPad T430 and T440p systems with
their STMicro TPM 1.2 devices enabled.  Exclusive-open behavior, 100
consecutive PCR reads, and module unload and reload completed without
errors on both systems.  Two consecutive S3 cycles on each system
preserved PCR values and command access, including another 100 PCR reads
after resume, without lock or TPM diagnostics.

Reviewed by:    kevans, seuros
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59211
799e14aa60d81aa9eed1985e4683e12f6851ecfd Kevin Bowling 2026-08-27 11:51:10

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm: Bound TPM 1.2 locality ownership

A TIS locality must remain active while a command is in flight, but
should be relinquished once the command completes or is abandoned.  The
driver retained locality zero after probe, initialization, and resume,
and several transaction error paths returned without releasing it.
Closing the device after writing a command without reading its response
had the same effect.

Track locality ownership and whether a command is awaiting its response.
Release locality after probe, initialization, and resume; retain it only
across a successful command write and its matching response read.  Abort
and release on errors, replacement commands, close, and detach.

Wait for locality during ISA probe instead of assuming an immediate
grant, release locality acquired by the probe, and stop treating the
command-style TPM_ACCESS register as restorable state.

On a ThinkPad T440p with an STMicro TPM 1.2, the old driver left
TPM_ACCESS at 0xa1 immediately after attach.  The new driver left it at
0x81 after attach, completed PCR reads, and closing with an unread
response.  PCR reads also survived an unload and reload without TPM or
locking diagnostics.

Reviewed by:    kevants
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59237
4e0f283fb97a7b0903adc7bc3ef2f6e07167c73e Kevin Bowling 2026-08-27 13:42:49

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm: Move user copies outside the TPM 1.2 lock

The character-device paths held the transaction and lifecycle lock while
uiomove() accessed user memory.  A user page fault could therefore delay
suspend or detach, and a copyout failure occurred while the TPM response
was still active.

Copy commands into the bounded stack buffer before taking the lock.  For
reads, validate the response header, buffer the complete response while
the lock is held, finish the TPM transaction, and copy it to userspace
after unlocking.  Use a non-blocking allocation so memory pressure
cannot turn response buffering into another lifecycle wait.

NetBSD uses the same separation but limits responses to its fixed 1 KiB
buffer.  Allocate the TPM-advertised response length to preserve the
existing FreeBSD support for larger streamed responses.

On a ThinkPad T440p with an STMicro TPM 1.2, a PCR read into a 4 KiB
userspace buffer returned the expected 30-byte response.  A deliberately
short five-byte read failed cleanly, relinquished locality zero, and the
next PCR read succeeded.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59238
5319035afacceaa267792ec193eb03fa51c972f7 Kevin Bowling 2026-08-27 14:01:51

debug: classified in 03-filenames_plain1 by 'sys/dev/'

powerpc/radix: take the pmap lock in mmu_radix_sync_icache()
mmu_radix_sync_icache() walked the page tables with an unlocked
pmap_extract() and passed the result straight to PHYS_TO_DMAP(),
checking only that it was non-zero.  Nothing keeps the mapping - or the
page table page holding it - alive across that window: if another thread
of the same process tears a mapping down concurrently, the page table
page can be freed and reused, so pmap_extract() reads arbitrary memory
and returns a bogus physical address.  __syncicache() then dereferences
an unmapped direct map address and the kernel takes a data storage
interrupt:

  fatal kernel trap:
     exception       = 0x300 (data storage interrupt)
     virtual address = 0xc003317ca6022a00
     dsisr           = 0x40000000
     srr0            = 0xc000000000f59460 (__syncicache)
     lr              = 0xc000000000f23588 (mmu_radix_sync_icache)
            pid = 23878, comm = skyframe-evaluator-
  panic: data storage interrupt trap

The faulting addresses decode to physical addresses far beyond installed
memory (~140 TB and ~900 TB on a 256 GB machine), i.e. translations that
never existed.

The hash MMU implementation of the same method, moea64_sync_icache(),
already holds PMAP_LOCK() across the loop; do the same here.
mmu_radix_extract() does not acquire the pmap lock itself, so this
introduces no recursion.

JIT workloads reach this path constantly: ppc_instr_emulate() calls
pmap_sync_icache() on the faulting address for the SIGILL "second
chance" retry, so a multithreaded JVM executing freshly written code
races against its own threads' mmap/munmap.  Every panic observed here
was in a JVM thread.

Tested on POWER9 (radix MMU) with a bazel/JVM build loop that previously
panicked the machine twice within ten minutes: afterwards 13 consecutive
builds and more than 10 hours of uptime with no panic, on both
15.1-RELEASE and 16.0-CURRENT.

MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59311
Reviewed by:    jhibbits, adrian
1574ca1955f55151c4c76b978c8a772ac3abfa9f Piotr Kubaj 2026-09-01 06:52:06

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

Commit group #1: ufshci
ufshci: fix the Snapdragon X Elite reference clock

The driver's ACPI table set bRefClkFreq to 19.2 MHz. The
Snapdragon X Elite feeds the device 38.4 MHz from its CXO. The
firmware has no property for it. The device ran its PLL from
the wrong base. Every HS mode failed. PWM still worked. The
attribute is persistent. The wrong value survived reboots.

Set 38.4 MHz in the table. Read the attribute first. Write it
only when the value differs or the read fails. Log a changed
value and a failed read. Verified on the Galaxy Book 4 Edge.

Reviewed by:            imp (mentor)
Sponsored by:           Samsung Electronics
Differential Revision:  https://reviews.freebsd.org/D59297
973783515e7db6e19550c57c8f9d94d907e3bd0e Jaeyoon Choi 2026-09-02 01:47:18

debug: classified in 03-filenames_plain1 by 'sys/dev/'


ufshci: set HS series per platform and adapt type per gear

The driver always asked for Rate-B. It never set the adaptation
type. The Snapdragon X Elite firmware tunes the PHY for Rate-A.
A Rate-B link dies at every gear there. HS-G4 and above need
initial adaptation. This is a UniPro rule. It applies to
every host.

Add an hs_series field to the device tables. Use Rate-A on the
Snapdragon X Elite. Keep Rate-B on the PCI hosts. A table entry
without an HS series fails to attach. Set PA_TxHsAdaptType to
initial adaptation at HS-G4 and above. Leave it alone below
that. Hosts before UniPro 1.8 do not have it. The Galaxy Book
4 Edge now links at HS-G5 Rate-A.

fio results (128k sequential, 4k random, posixaio):

QD  | SEQ_R(MiB/s) | SEQ_W(MiB/s) | RND_R(kIOPS) | RND_W(kIOPS)
----+--------------+--------------+--------------+-------------
1   |         1357 |         1221 |         12.1 |         27.2
4   |         3103 |         3234 |         46.5 |         92.9
32  |         3508 |         3238 |        176.4 |        125.0

Sequential writes land in the WriteBooster buffer. Sustained
writes drop to 556 MiB/s once the buffer runs out.

Reviewed by:            imp (mentor)
Sponsored by:           Samsung Electronics
Differential Revision:  https://reviews.freebsd.org/D59298
c09daa33d6ffbbd1956bfe4dcd9ca746192d6940 Jaeyoon Choi 2026-09-02 01:50:09

debug: classified in 03-filenames_plain1 by 'sys/dev/'


ufshci: skip the reinit when the new link works

UFSHCI_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH always rebuilt the
link after the gear switch. It threw away a working HS link and
ended up in PWM. The reinit is only needed for a dead link.
There the local side reports HS and the peer never answers. A
local readback cannot tell the two apart. Peer traffic can.

Probe the peer with DME_PEER_GET after the switch. Skip the
reinit when the probe succeeds. Log it when the probe fails.

Reviewed by:            imp (mentor)
Sponsored by:           Samsung Electronics
Differential Revision:  https://reviews.freebsd.org/D59299
9930150214d1ca4ad21561d2e0afce9ebf2cdf6c Jaeyoon Choi 2026-09-02 01:52:48

debug: classified in 03-filenames_plain1 by 'sys/dev/'

snd_uaudio: drop the default monitor level to 10%
As noted in the comment, some headsets with a hardware sidetone are
incredibly sensitive and emit immediate feedback upon attach with the
current system-wide default of 75%.  Drop it down just for snd_uaudio(4)
to avoid incredibly unpleasant surprises.

MFC after:      3 days
Reviewed by:    christos
Differential Revision:  https://reviews.freebsd.org/D59199
c3c6a6c7825ccc744afddba692820296f72ea53f Kyle Evans 2026-08-26 14:34:47

debug: classified in 03-filenames_plain1 by 'sys/dev/'

hwpmc(4): stop overwalking past _start on amd64 user callchains
pmc_save_user_callchain() emits the pc it just loaded before checking
whether fp is the ABI's zero frame-chain terminator. At the bottom of
a well-formed chain under _start, fp comes back 0 as expected, but the
paired pc is stale rtld data left on the stack -- a legal userspace VA
that still passes PMC_IN_USERSPACE(), so it gets emitted as a bogus
extra frame. This shows up in flame graphs as a spurious hex-valued
root frame below _start.

Check fp == 0 alongside the existing checks before emitting, matching
how arm/arm64/powerpc already load the next fp before their check.

Measured via 1kHz hwpmc sampling on an OCA: stacks with any unresolved
hex frame drop from 23.9% to 1.3%, and stacks with hex at the root drop
from 5.5% to 0.3%.

Reviewed by:    mhorne, Ali Mashtizadeh <ali@mashtizadeh.com>, gallatin
MFC after:      3 days
Sponsored by:   Netflix
Differential Revision:  https://reviews.freebsd.org/D59229
1db0c9fa7a32255c452c2536d657e63b55e30e03 Nick Banks 2026-09-02 14:28:54

debug: classified in 03-filenames_plain1 by 'sys/dev/'

libc: Add PRIb*, PRIB*, and SCNb* macros as per C23
Reviewed by:  fuz
Approved by:    fuz (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D59293
ab420c44bc7c45bf344cb03b289e60109f57aaee Faraz Vahedi 2026-09-02 14:56:58

debug: classified in 03-filenames_plain1 by '['sys/arm/', 'sys/arm64/', 'sys/powerpc/', 'sys/riscv/', 'sys/x86/']'

enic: Route resets through iflib lifecycle
Mark the driver stopped after attach so its first IFDI_STOP() call
does not repeat hardware shutdown.

Defer error interrupt recovery through iflib instead of calling
driver stop and init methods from interrupt context.  Let iflib own
the stop and restart around MTU changes as well, avoiding duplicate
lifecycle operations.

MFC after:      2 weeks
Sponsored by:   BBOX.io
58f985559ee689e50233b9113df4f37375b48c2d Kevin Bowling 2026-08-26 09:21:55

debug: classified in 03-filenames_plain1 by 'sys/dev/'

axgbe: Wire iflib power management methods
Register the standard iflib device methods for shutdown, suspend, and
resume.  This gives axgbe the framework managed reinitialization used by
other iflib drivers after a power transition.

MFC after:      2 weeks
Sponsored by:   BBOX.io
2397b18ceb5d69d4d4e3bd0b3ca07dcd077bf843 Kevin Bowling 2026-09-03 03:32:14

debug: classified in 03-filenames_plain1 by 'sys/dev/'

iavf: Wire iflib suspend and resume methods
Register the iflib device suspend and resume methods so the existing
driver callbacks run during system power transitions.  This stops
mailbox retry work before suspend and lets iflib reinitialize the
datapath after resume.

MFC after:      2 weeks
Sponsored by:   BBOX.io
b8fe6d7055b3a274cd646d0a6b5d3928f2fd7d7a Kevin Bowling 2026-09-03 03:32:14

debug: classified in 03-filenames_plain1 by 'sys/dev/'

ixv: Wire iflib suspend and resume methods
Register the standard iflib device suspend and resume methods so the
framework reinitializes the VF datapath after a system power
transition.

MFC after:      2 weeks
Sponsored by:   BBOX.io
10d09e6e8a7ff141b5dc39e6ddca5b7c2cb0b66b Kevin Bowling 2026-09-03 03:32:14

debug: classified in 03-filenames_plain1 by 'sys/dev/'

ixl: Route suspend and resume through iflib
Register the iflib device suspend and resume methods.  Remove the
direct initialization from the driver resume callback because
iflib_device_resume() performs the datapath restart after the callback
returns.

MFC after:      2 weeks
Sponsored by:   BBOX.io
d5aa8022da56c5188e9f2c7068d95009ff2019be Kevin Bowling 2026-09-03 03:32:14

debug: classified in 03-filenames_plain1 by 'sys/dev/'

tpm20: Validate suspend and resume commands
The internal TPM2_Shutdown and TPM2_Startup paths ignored both transport
failures and the TPM response.  Suspend could therefore enter S3 without
saved TPM state, while resume could restart entropy harvesting after a
failed state restoration.

Build both commands through one helper, validate their response framing
and TPM return codes, and propagate failures.  Retry the standard RETRY
and TESTING responses with bounded exponential backoff.  Accept
TPM_RC_INITIALIZE from Startup because firmware may already have started
the TPM during resume.

Do not enter S3 after an unsuccessful state save, and do not restart the
entropy task when TPM state restoration failed.  If Shutdown fails after
the entropy task was drained, requeue it before returning so an aborted
suspend does not permanently stop harvesting.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59195
726f096f905c8e2ad2ac0035355fc2b4ed2718fe Kevin Bowling 2026-08-26 10:49:48

debug: classified in 03-filenames_plain1 by 'sys/dev/'

tpm20: Initialize common state before testing TIS interrupts
The TIS attach path tested its interrupt by transmitting GetRandom
before tpm20_init() allocated the internal command buffer.  A TPM2 FIFO
device with a usable IRQ could therefore dereference a null
internal_priv.

Initialize the common TPM2 state before running the interrupt test.
Make common cleanup safe for partially initialized devices and leave
cleanup to the attachment after tpm20_init() fails, avoiding duplicate
release of the lock, command buffer, and random-source state.

Clear the IRQ resource pointer after releasing it when interrupt handler
setup fails so the later polling-mode detach does not release it twice.

Free the internal command allocation through its object pointer rather
than relying on its embedded buffer being the first structure member.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59196
a0da653aaeae313479f2ab37d0faca483f530fa6 Kevin Bowling 2026-08-26 10:51:58

debug: classified in 03-filenames_plain1 by 'sys/dev/'

tpm_tis: Restore validated interrupts after resume
TIS interrupt routing and enable registers may lose their state across
S3, while the driver retains its software indication that interrupts
work.  A subsequent locality or command wait can then sleep for an
interrupt that cannot arrive.

Remember whether interrupts worked before suspend and restore the
vector, pending status, and enable mask before TPM2_Startup.  Put the
transport in polling mode first; the interrupt handler promotes it back
to interrupt waits only after observing an interrupt from the restored
configuration.  If register restoration fails, Startup and subsequent
commands continue using polling.

Preserve the initial interrupt-enable mask, including the firmware's
trigger and polarity selection proven by the attach time interrupt test,
and restore that exact mask rather than accepting post-S3 defaults.

Program the same safe baseline for polling devices during attach and
resume.  Acquire locality, disable global interrupt delivery, and
acknowledge pending status so firmware cannot leave interrupts armed
without a handler.

Use the same register programming helper during attach and resume, and
stop trying to configure interrupts after a locality acquisition
failure.

Three consecutive device suspend and resume cycles completed on a Lenovo
TPM2 FIFO device without an IRQ resource.  GetRandom succeeded after
each resume, and module detach completed without errors.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59197
a229432d3ed05282f7cf1510a06d6d93d554c1df Kevin Bowling 2026-08-26 10:54:59

debug: classified in 03-filenames_plain1 by 'sys/dev/'

tpm20: Harden the common device lifecycle
Mark the device as dying before teardown and destroy the character
device before freeing its private state or lock.  This prevents cdev
methods from entering with a freed internal buffer or a destroyed sx.

Check the teardown state in command paths, honor failures from the cdev
private data interface, and publish teardown before waiting for the
lifecycle lock.  Keep that lock across TPM retry delays so commands
cannot interpose and private state remains pinned, but abort before the
next retry once teardown begins.

Block new cdev operations after a successful Shutdown(STATE).  Keep the
suspend gate and the TPM command under the same lock so a userspace
command cannot invalidate the saved state before S3 entry.  Clear the
gate only after Startup(STATE) succeeds.

Keep entropy harvesting scheduled after a transient command or suspend
failure, but stop it while suspended or once teardown begins.  Queue the
next timeout while holding the lifecycle lock so release cannot miss a
concurrent requeue.

Validated on two TPM 2.0 FIFO systems.  Each completed five device
suspend/resume cycles, rejected both new and already-open cdev
operations with EBUSY while suspended, completed 200 concurrent PCR
reads, and detached cleanly while four PCR readers were active.  A
ThinkPad P51 also completed a full S3 cycle with PCR 0 unchanged and
50 successful reads after resume.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59240
a3daa1e8f5988045e8042fb3fe376384a43b85ee Kevin Bowling 2026-08-27 12:42:28

debug: classified in 03-filenames_plain1 by 'sys/dev/'

tpm_tis: Close interrupt wait races
The TIS interrupt handler can acknowledge and signal an event after
the waiter checks the device status but before it enters tsleep().
Since the handler is MPSAFE, the command lock does not close this
window.  A lost wakeup can delay a completed command for its full
timeout, up to 40 seconds for long TPM 2.0 operations.

Publish the expected event under an interrupt mutex and use a generation
counter to record matching interrupts.  Recheck the device predicate
without the mutex because register access may sleep on a SPI transport,
then compare the generation before atomically waiting on a condition
variable.  This closes the check-to-sleep race without placing sleeping
bus operations under a mutex.

Use an absolute deadline while retrying the predicate after wakeups.
Apply the same scheme to locality acquisition, which had an equivalent
race.  Leave the expected event published while polling so the
attach-time test can still prove that an advertised interrupt arrived.

Regression-tested the polling fallback on two TPM 2.0 FIFO systems with
200 concurrent PCR reads per system and repeated device suspend/resume.
Neither ACPI device exposes an IRQ, so the interrupt-mode path remains
hardware unvalidated.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59241
add771d5e62ae12f2494fb30a93cd5f1067ac34d Kevin Bowling 2026-08-27 12:46:19

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Commit group #2: tpm20
tpm20: Release transport state after command failures

Once a transport acquires locality, several TIS and CRB error paths
return without relinquishing it.  They can also leave a partial FIFO
transaction or an active CRB command for the next operation to inherit.

Route post-locality exits through common cleanup.  Reset the TIS command
state on every attempt.  For CRB, cancel an active failed command when
necessary, request the idle state, and relinquish locality even when the
state transition itself fails.

Successful command handling is unchanged apart from sharing the same
cleanup path.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59243
2fe8510b0a06ad577789ece7be8c9319c8ce3d06 Kevin Bowling 2026-08-27 12:48:05

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm20: Correct 32-bit register helpers

OR4() reads only the low byte before writing the complete 32-bit
register.  Preserve all register bits by using a matching 32-bit read.

Make BIT() produce an unsigned value so masks containing bit 31 do not
rely on a signed left shift into the sign bit.  OpenBSD carries the
same change.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59244
f613a43c366600e8c388c3200f74c6dd27f8a7a2 Kevin Bowling 2026-08-27 12:48:30

debug: classified in 03-filenames_plain1 by 'sys/dev/'


tpm20: Move user copies outside the lifecycle lock

The TPM 2.0 character-device methods held the global device lock
while uiomove() accessed user memory.  User page faults could therefore
delay suspend or detach even though the read response was already
buffered.

Add a per-open sleepable lock to serialize operations on each response
buffer.  Stage commands under that lock before acquiring the device
lock, and copy them into the response buffer only after the lifecycle
checks succeed.  This preserves an unread response when suspend or
detach rejects a write.  Release the device lock before copying buffered
responses out.  Also advance the response offset by the bytes actually
copied when uiomove() returns after a partial transfer.

Validated on an Intel TPM 2.0 TIS device.  PCR reads and GetRandom
passed under 16-process mixed command load.  A response was consumed
correctly in 5-byte, 7-byte, and remainder reads.  Module unload/reload
recreated the device and entropy source without lock diagnostics.
Source inspection confirmed rejected writes preserve unread responses.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59245
74c539fd1cefdbc993411274c613434c3f23b4b1 Kevin Bowling 2026-08-27 14:06:55

debug: classified in 03-filenames_plain1 by 'sys/dev/'

sys/arm: Fix DTrace trap hook
Move the dtrace_trap hook at the start of the abort handler to exit
early when a trap is handled by DTrace.

Fix the type argument to be the actual fault type instead of the value
of the FAR. The latter will need to be added to the trapframe, until
then DTrace will report unmapped addresses as the null address.

Correct the comment of the PUSHFRAMEINSVC assembler macro to reflect
that coming from SVC32 mode is expected for DTrace traps.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298064
MFC after:      1 month
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59279
3e6bc5c3b5632ac9f55633b7d4e2e1a42b96a78b Benjamin Jacobs 2026-09-03 13:52:19

debug: classified in 03-filenames_plain1 by 'sys/arm/'

nvme: complete requests when payload DMA mapping fails
bus_dmamap_load_mem() reports most mapping failures, including EFBIG,
only through its callback and then returns zero. nvme_payload_map()
logged the error without telling the submission path, so the tracker
stayed on the outstanding list with no command submitted and no
timeout armed, stalling all later I/O on the queue behind it.

Approved by: ngie (co-mentor)
MFC after:      1 week

Reviewed by:    ngie, imp
Differential Revision:  https://reviews.freebsd.org/D59151
b90c2b13e975c803e426a6e6f080a6089d08e6ab Abdelkader Boudih 2026-09-03 15:33:49

debug: classified in 03-filenames_plain1 by 'sys/dev/'

nvme: limit namespace character-device I/O size
The namespace character device does not initialize si_iosize_max, so
physio falls back to DFLTPHYS and can produce a bio larger than the
qpair payload DMA tag on a controller whose maximum transfer size is
below 64KB. Such a bio fails DMA mapping and is never submitted.

Approved by: ngie (co-mentor)
MFC after:      1 week

Reviewed by:    ngie, imp
Differential Revision:  https://reviews.freebsd.org/D59152
125ec0e30785bb0cbca7aa6c0b1a34b75e53078d Abdelkader Boudih 2026-09-03 15:34:11

debug: classified in 03-filenames_plain1 by 'sys/dev/'

pmc: Add support for AMD UMC counters
This change adds support for AMD's UMC performance counters.  It is a
bit more complicated than existing counters because the enable bit has
moved.  This supports Zen 4 through most Zen 6 chips as UMC counters are
per-node, where a node does not necessarily translate to a NUMA domain.
A few follow up changes to PMC will address this limitation.

Reviewed by:    mhorne
Sponsored by:   Netflix
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2368
f19f44634afd859e445c7b13bbdf715a493b499b Ali Mashtizadeh 2026-08-13 23:08:20

debug: classified in 03-filenames_plain1 by '['lib/libpmc/', 'sys/dev/']'

ixl: Reset VSI statistics after initial sampling
The initial statistics update runs before the PF VSI has obtained its
firmware-assigned statistics counter index.  Discard that provisional
VSI baseline so the first update after initialization records the
correct hardware counter.

Without this reset, subtracting a larger provisional value from a newly
selected counter can be mistaken for a 32-bit wrap and report nearly
UINT32_MAX receive drops immediately after boot.

Reported by:    Daniel Braniss <danny@cs.huji.ac.il>
Tested by:      Daniel Braniss <danny@cs.huji.ac.il>
Obtained from:  Intel ixl 1.14.2
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59336
429cb537015ea11808de23dac8c1cc7ade3a4552 Kevin Bowling 2026-09-03 10:55:36

debug: classified in 03-filenames_plain1 by 'sys/dev/'

arm64 pmap: correct the condition for flushing the icache
Whenever we create a user-space mapping, we always set ATTR_S1_PXN in
the PTE, which blocks execution of user-space code while running in
kernel mode.  However, when seeking to determine whether we need to
perform an icache flush before installing the new PTE, we test whether
sometimes the old PTE or other times the new PTE has ATTR_S1_XN set.
The trouble is that ATTR_S1_XN is defined as the bitwise OR of
ATTR_S1_PXN and ATTR_S1_UXN, and so the test for whether ATTR_S1_XN is
set is satisfied if either of its constituent bits is set, i.e., we
write (l3e & ATTR_S1_XN) != 0.  Consequently, the test is always true.

In practice, I believe that the ill effects of this bug are limited:
In pmap_enter(), in rare circumstances, e.g., wiring a code page, an
unnecessary icache flush will be performed.  In pmap_enter_l2() and
pmap_enter_l3c(), no icache flush will be performed.  However,
typically an icache flush would have already been performed on each of
the constituent base pages.

Reviewed by:    kib, markj
MFC after:      3 weeks
Differential Revision:  https://reviews.freebsd.org/D59265
57407179be431dbe567de083aab5ce152163f4d3 Alan Cox 2026-08-29 07:08:01

debug: classified in 03-filenames_plain1 by 'sys/arm64/'

ixgbe: Correct Wake-on-LAN configuration
Wake-on-LAN capability was inferred from NVM bits on every MAC even
though 82599 support is board and sometimes port specific.  Private
sysctls formed a second policy interface, and the driver neither
coordinated the controller wake source with PCI PME nor reliably
rebuilt address filters erased by the stop-time reset.

Use the standard ifconfig wake capabilities.  Derive support from the
82599 board and port matrix or the X540-and-newer NVM capability.
Require D3hot PME support, and use the NVM APME bit only to select the
initial magic-packet policy after initializing the LAN function number.

Snapshot requested filters before the terminal stop so shared reset and
PHY code sees the active wake policy.  After reset, restore RAR0, the
multicast table, receive filtering, and the optical laser before arming
WUFC, WUC, and PCI PME.  Remove device wake sources before clearing PCI
PME on detach, resume, and when wake is disabled.  Clear autonomous APM
so ifconfig remains authoritative.

Treat X550EM low-power-link-up failure as best effort and allow shutdown
to continue after a wake-programming error.

The 82599, X540, X550, and E610 datasheets document the standard ACPI
wake filters used here; the E610 ACPI path includes magic-packet wake.

Validated on a dual-port E610.  Both ports completed three direct-D3
cycles covering wake disabled and magic-packet wake armed.  A system S3
cycle woke through ix0 with WUS 0x00000002 (magic packet).  Link and
traffic recovered after each transition.

Note that many add-in cards in this family do not support WoL; LOM and
OCP cards are more likely.  The E610 as tested does.

MFC after:      2 weeks
Sponsored by:   Dirk-Willem van Gulik from Web Weaving (E610 hardware)
Sponsored by:   BBOX.io
c004384343bece0b984cfe3520ec077ef2483e1f Kevin Bowling 2026-08-10 16:01:13

debug: classified in 03-filenames_plain1 by 'sys/dev/'

ntsync(4): do not double-free the alert event when a dup was detected for WAIT_ALL
Reported by:  Andrew Griffiths <andrew@calif.io>
Reported by:    Chris Jarrett-Davies <chrisjd@openai.com>
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
c0c7b56d3039a75a01315d610e386a5e9eda704c Konstantin Belousov 2026-09-04 14:40:50

debug: classified in 03-filenames_plain1 by 'sys/dev/'

powerpc/watchdog: Make e500 watchdog action tunable
There are 4 options for e500 watchdog timeout, which may be core- or
even SoC- specific.  Add support to tune the behavior via a tunable
(machdep.watchdog_mode).  The tunable value is an integer 0-3.
42f9049ab8d69900b395381d72101ab703b9fe87 Justin Hibbits 2026-09-05 04:09:07

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

powerpc/booke: Use a dedicated critical exception stack
A critical exception, such as a watchdog, can trigger at any time,
including the middle of a standard exception prologue or epilogue, so
GPRs, including %r1 (the stack pointer) cannot be trusted at all.
Instead, use a private stack pointer for critical interrupts.  Each CPU
now has its own critical exception stack, with the boot stack in the
bss.
564fe16c972dc039fc7b01b38dd913fe13eb1278 Justin Hibbits 2026-09-04 02:48:35

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

powerpc/booke: Reorganize FRAME_LEAVE
There's a small window between when the SRR* registers are restore and
the exception returns, in which a TLB miss exception may be triggered.
Since there are not special SRR* registers for TLB miss exceptions, the
registers from the frame will be ovwritten, and the FRAME_LEAVE block
will effectively be re-entered on exit, leading to a very hard to
diagnose panic or wedge.

Minimize this chance by pushing the SRR* restore to the last possible
moments, caching them in a PCPU save area instead until the end.  This
matches what the AIM side already does.
68ecb918a5313150be660322c6686ae6292b4aac Justin Hibbits 2026-09-04 03:40:12

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

powerpc/pmap(booke): Rework TID reuse
If a pmap is freed and its memory is reused before its TID reference is
taken, then arbitrary memory will be clobbered.  Avoid this by never
dereferencing the pmap pointer in the tidbusy array, and instead using
it as a compare sentinel.
eef260752633fca72be1d03d58472f4890e00e1e Justin Hibbits 2026-09-05 04:11:34

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

powerpc/pmap(booke): Allocate 64-bit roots from DMAP
When a TLB miss exception occurs the exception handler must walk the
page table from the root.  When the root is allocated from KVA the TLB
miss exception may take another exception if the root page(s) aren't in
the TLB.

The 64-bit page table is modeled after the AIM radix page table, with a
64kB root "page", so 16 pages.  This makes regular use of UMA
allocations unable to refer back to the DMAP, which itself is mapped in
TLB1.  Now we take another page from the radix pmap driver and grab
contiguous pages from the VM system, so that we can simply refer
directly to DMAP and avoid more nested TLB misses.  We can still take a
nested miss, though, because the pmap itself may be in KVA, but this
reduces the nesting.
d8f9d3388f5dfed0b426d11a1b985397c12010e8 Justin Hibbits 2026-09-04 20:44:39

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

powerpc/ddb: Dump more state in `show pcpu`
Add a new CPU-family `show pcpu` handler, cpu_db_show_mdpcpu() to dump
CPU-specific PCPU data.  Only Book-E is populated for now, but AIM may
be populated later.

These new field prints: save areas, TLB miss nesting, the new critical
stack pointer.  All of them have been very useful for debugging very
esoteric bugs, so make them easier to see from DDB, instead of having to
rummage through hex dumps.
5aeedaf7204a97b88f04d6a1890dfd1ff02d6101 Justin Hibbits 2026-09-05 04:03:11

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

amd64: initialize IPI scoreboard earlier
The initializer just needs working malloc(9) and two constants that
are set at hammer_time().

Fixes:  https://cgit.freebsd.org/src/commit/?id=648fa3558c161a1d8564626d21047710c3fbfdf6

Reviewed by:            avg, markj
Differential Revision:  https://reviews.freebsd.org/D58714
f1fa2f7db12149b05ff1ec8342c521050a509f34 Gleb Smirnoff 2026-09-05 18:11:00

debug: classified in 03-filenames_plain1 by 'sys/amd64/'

dpaa2: Make software portal holdoff time a sysctl tunable
When debugging the D59463 review, it is very handy to be able
to change the software portal holdoff time without recompiling
the kernel. This commit makes the holdoff time a sysctl tunable,
so it can be changed at runtime.

Tested by:              dsl
Obtained from:          flo_purplekraken.com
MFC after:              3 weeks
Differential Revision:  https://reviews.freebsd.org/D59461
Event:                  Berlin Hackathon 202609
7e34176e03265a959de290f8f719b0d0183c1877 Dmitry Salychev 2026-09-06 13:09:07

debug: classified in 03-filenames_plain1 by 'sys/dev/'

igb: Report SR-IOV VF status
Expose cached per-VF configuration through the iflib VF status method.
Report mailbox handshake state, MAC address, access or trunk VLAN mode,
hardware transmit and receive queue counts, administrator policy, and
fault-containment state.

The query does not issue mailbox requests or read hardware registers.

Sponsored by:   BBOX.io
8d14fc8ba7f55c873e866f392c17113d514acce9 Kevin Bowling 2026-08-10 22:29:37

debug: classified in 03-filenames_plain1 by 'sys/dev/'

ixgbe: Report SR-IOV VF status
Expose cached VF configuration, policy, and runtime state through the
iflib VF status method.  Include access or trunk VLAN mode, transmit and
receive queue counts selected by the current virtualization mode,
negotiated mailbox API, PF traffic permission, fault containment, and
quarantine state.

Initialize every cached API version before VF enumeration so an
unconfigured slot cannot be mistaken for API 1.0.

The query does not issue mailbox requests or read hardware registers.

Sponsored by:   BBOX.io
049331b20657cf0e7723c071efb75fda53a655fd Kevin Bowling 2026-08-10 22:29:37

debug: classified in 03-filenames_plain1 by 'sys/dev/'

ixl: Report SR-IOV VF status
Expose cached per-VF configuration through the iflib VF status method.
Report mailbox initialization and the negotiated virtual-channel API, MAC
address, access or trunk VLAN mode, queue resources, administrator policy,
PF traffic permission, and fault containment.

Expose per-VF malicious-driver isolation and cumulative transmit and
receive event counts through a versioned driver.ixl extension.

Track successful PCI IOV attachment separately from hardware capability.
This lets a successfully attached but unconfigured PF return an empty
snapshot without claiming support when PCI IOV registration was
unavailable.

The query uses driver-cached state and does not issue AdminQ requests or
read device registers.

Sponsored by:   BBOX.io
477e31110ab84b941e95d95d62d8339e822719bc Kevin Bowling 2026-08-10 22:29:37

debug: classified in 03-filenames_plain1 by 'sys/dev/'

asmc: add sleep indicator LED control via sysctl
Add dev.asmc.0.sil sysctl to control the SIL LED via SMC keys
MSLD (duty/brightness) and MSLS (state latch, must be set
before re-enabling).

MFC After: 1 week

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58865
c6db719a548ff6d49564c68ef52c2cbe02b7db15 Abdelkader Boudih 2026-09-06 17:53:34

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Commit group #3: apple_bce
apple_bce: kick USB explore thread after VHCI attach

Call usb_needs_explore() after attach so the hub explore thread
enumerates all initially connected ports instead of only the first.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58870
ac5440ec248f9fa72646519743c89c3e61c07d5f Abdelkader Boudih 2026-09-06 17:54:18

debug: classified in 03-filenames_plain1 by 'sys/dev/'


apple_bce: fix cold boot panic in mailbox send

Poll mailbox reply registers with DELAY() when the system is still
cold, falling back to the interrupt-driven
sema_timedwait path once timers are available.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58871
ba28690cc6e0ce6f418122d3db0b1eddec3d93a9 Abdelkader Boudih 2026-09-06 17:55:02

debug: classified in 03-filenames_plain1 by 'sys/dev/'


apple_bce: ignore duplicate TRANSFER_REQUEST in STATUS state

Since the host initiates IN data transfers, the
firmware's own TRANSFER_REQUEST for the same phase arrives after
we've already moved to STATUS state. Ignoring  instead of failing
the transfer with USB_ERR_IOERROR.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58873
13e9b4e5e21d2969f22bc5adff734503f03c053c Abdelkader Boudih 2026-09-06 19:15:51

debug: classified in 03-filenames_plain1 by 'sys/dev/'


apple_bce: fix C_CONNECT_STATUS during port reset

Only set the port change bit when the corresponding status bit
actually transitioned, instead of unconditionally flagging
C_CONNECT_STATUS on every port change event. Also clear any
flaky C_CONNECT_STATUS that the port change taskqueue may have
set while the bus lock was dropped during a successful port reset.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58875
c0ec1e0e60caf513e4cfa42b995631f19d376a26 Abdelkader Boudih 2026-09-06 19:16:33

debug: classified in 03-filenames_plain1 by 'sys/dev/'


apple_bce: initiate IN data phase for control transfers

For IN control transfers, the firmware does
not send TRANSFER_REQUEST for the data phase
the host must send BCE_VHCI_CMD_TRANSFER_REQUEST
with an IN DMA buffer once the setup phase completes.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58872
e8018942942e212ba5a664f0265f1101e6c48930 Abdelkader Boudih 2026-09-06 19:47:34

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Networking

Network-related commands, library, and kernel.

tcp md5: improve handling of tcps_sig_err_sigopt counter
For non listening TCP endpoints, increment the tcps_sig_err_sigopt
counter when TCP MD5 is not enabled in the TCP connection, but a
segment containing a TCP MD5 option is received.
Also increment the counter when using the RACK or BBR stack.

Reported by:            Hannes Elfert
Reviewed by:            rrs
MFC after:              1 week
MFC to:                 stable/14
MFC to:                 stable/15
Differential Revision:  https://reviews.freebsd.org/D59249
c6ae11c1b0d96fd2ed0b55c655ff58a46b26ddcb Michael Tuexen 2026-08-31 13:12:54

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

iflib: don't update the admin status in if_media_status()
When _task_fn_admin() is active, it will regularly call
IFDI_UPDATE_ADMIN_STATUS(). So there is no need to do it in
iflib_media_status. This can be fairly expensive on some drivers (long
DELAY busywait loops waiting for a NIC command), and there is no need
to pause a userspace app in this DELAY() if it is happening
asynchronously anyway.

Note the logic to detect if _task_fn_admin() is regularly calling
IFDI_UPDATE_ADMIN_STATUS() was copied from that function.

Reviewed by: erj, kbowling
Sponsored by: Netflix
Differential Revision:  https://reviews.freebsd.org/D54096
ebb93ce6d86e6c6abd9d9fada21a3b107099db8f Andrew Gallatin 2026-08-31 21:13:47

debug: classified in 03-filenames_plain1 by 'sys/net/'

ng_bridge: do not move hosts from learnMac=0 hooks
ng_bridge(4) says the node does not learn MAC addresses on uplink
hooks. However, learnMac was only checked when inserting a new
host. A host already known on a link hook was still moved if a
packet with that source address arrived on an uplink hook.

The nature of this is that inbound unicast to that host then
never arrives (the destination is known on the incoming hook).
Unknown unicast after timeout is still sent only to uplink, so
the host is not re-learned. The interface stays up and outbound
may still work. This can last minutes or weeks until reboot or
NGM_BRIDGE_MOVE_HOST.

Connecting ng_ether(4) lower to an uplink hook is enough: the
host's own transmit can appear on the uplink and the table entry
moves.

Use the same learnMac test for data-path move as for insert.
NGM_BRIDGE_MOVE_HOST from userland is unchanged.

MFC after:      1 week
Reviewed by:    jlduran
Differential Revision:  https://reviews.freebsd.org/D58902
4690891af6320e358e4a2beb3054cd37d065d8d2 Devin Teske 2026-09-02 01:43:21

debug: classified in 03-filenames_plain1 by 'sys/netgraph/'

iflib: Require sustained demand for TX watchdog
The restored watchdog arms when the outstanding descriptor count
grows, but then continues counting based only on the queue remaining
frozen.  A single growth sample can therefore leave a quiet, nearly
empty queue armed until the watchdog resets the interface.  Lockless
sampling of the queue counters can also manufacture the initial growth
sample.

This matches watchdog reports from I354 queues with 979 or 980 of
1022 usable descriptors still available.  Neither queue was under
transmit backpressure when the reset flapped its link.

Keep the watchdog armed only while the outstanding count continues
to grow, the software ring is stalled, or the hardware ring is at
iflib's backpressure threshold.  The last condition preserves hang
detection with simple-TX, which bypasses the software ring.  A busy hang
still reaches the verdict while a frozen but quiet tail disarms.  Retain
the final driver completion peek so a missed completion interrupt
schedules the queue task instead of resetting it.

Validated on an 82580 with one and four queue sets in the default
mp_ring and simple-TX modes.  Sustained traffic and repeated burst/idle
cycles produced no false resets.  Sixteen-flow runs exercised all four
queues in both modes.  Clearing TCTL.EN under load in each configuration
filled the rings; the reset counter advanced once per injection, reset
restored TCTL and the link, and traffic recovered.

Tested by:      glebius
Reviewed by:    iflib (gallatin), manpages (ziaee)
Fixes:          https://cgit.freebsd.org/src/commit/?id=69c3e0de01c1 ("iflib: restore TX watchdog functionality")
MFC after:      6 days (after 69c3e0de01c1)
Sponsored by:   BBOX.io
a550e8280b9881c8c207b842f51065f155b84951 Kevin Bowling 2026-08-27 02:00:34

debug: classified in 03-filenames_plain1 by 'sys/net/'

iflib: Do not hold the ifnet lock across registration
iflib_device_register() acquired IFNET_WLOCK to preserve lock order
when ether_ifattach() was called with the context lock held.  The context
lock is now released around ether_ifattach(), making registration-wide
ifnet serialization unnecessary.

Keeping IFNET_WLOCK across driver attachment also allows synchronous
interface event handlers to recurse on it.  The rtnetlink interface-group
dump does so through if_foreach_group() while handling the interface
attachment event.

Remove the outer lock and the corresponding failure-path unlock and
relock transitions.  Continue to drop the context lock around
ether_ifattach() and taskqueue drains, and preserve context-lock coverage
for driver attach and detach.

Validated under WITNESS on 82576 and I226 controllers.  Multiple VF
attach and detach cycles, netmap control operations, and every iflib
registration failure injection point completed without lock or cleanup
errors.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298121
Reported by:    glebius, netchild, Yuichiro NAITO <naito.yuichiro@gmail.com>
Reviewed by:    gallatin, glebius
Fixes:          https://cgit.freebsd.org/src/commit/?id=e0e12405285b ("netmap: fix LOR in iflib_netmap_register")
Fixes:          https://cgit.freebsd.org/src/commit/?id=2f8f892ca344 ("rtnetlink: Add FreeBSD-specific IFLAF_GROUP support")
Fixes:          https://cgit.freebsd.org/src/commit/?id=90e7dbe5e2ca ("iflib: Add registration failure injection points")
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59294
9d59ca793f7097575351d6de2fd61431233b5ed9 Kevin Bowling 2026-08-31 23:24:49

debug: classified in 03-filenames_plain1 by 'sys/net/'

iflib: update rs_pending based on descriptors consumed by isc_txd_encap
The new watchdog code triggers spurious watchdog resets on
NICs doing KTLS offload.  Fix this by using the actual segments
consumed by the NIC driver's isc_txd_encap.

The issue is that rs_pending is updated using an estimate of
the  descriptors that will be used for the current packet,
based on what bus_dma produced. However, NICs which support
ktls offload may do extra  DMAs (and consume extra
descriptors) to derive crypto state when re-transmitting
TLS segments.  This is the reason for allowing drivers to control
ift_pad.  When this happens, the estimated rs_pending may undercount.
This may also happen if NIC drivers consume extra descriptors for
other reasons. (eg, hw errata handling on e1000)

Reviewed by: kbowling
Differential Revision:  https://reviews.freebsd.org/D59321
Sponsored-by: Netflix
a5bb0fde672271f7a4c5a460ed0cd0282a18ca66 Andrew Gallatin 2026-09-02 17:41:32

debug: classified in 03-filenames_plain1 by 'sys/net/'

tcp md5: fix accounting for SYN segments with unexpected signature
When receiving a SYN segment with an MD5 option on a listening socket,
which has not enabled TCP MD5 support, increment the counter for
unexpected signatures (tcps_sig_err_sigopt).

Reviewed by:            rscheff
MFC after:              1 week
MFC to:                 stable/14
MFC to:                 stable/15
Differential Revision:  https://reviews.freebsd.org/D59303
5d3e31df7c4fc0e53168bac717bed5f94dab7068 Michael Tuexen 2026-09-04 07:18:10

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

tcp md5: fix accounting of ACK with bad signatures
When processing the ACK of the initial TCP handshake using the
SYN cookie, don't increment the counter for unexpected
signatures (tcps_sig_err_sigopt). The correct
counter (tcps_sig_rcvbadsig) for bad signatures is already
incremented in TCPMD5_INPUT().

Reported by:            Hannes Elfert
Reviewed by:            rscheff
MFC after:              1 week
MFC to:                 stable/14
MFC to:                 stable/15
Differential Revision:  https://reviews.freebsd.org/D59302
2fb53436cd05f65164d166ef3ab33660fe451470 Michael Tuexen 2026-09-04 07:24:40

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

tcp md5: improve consistency
All other usages of SCF_SIGNATURE are protected by IPSEC_SUPPORT
or TCP_SIGNATURE.
No functional change intended.

Reported by:    Hannes Elfert
MFC after:      1 week
MFC to:         stable/14
MFC to:         stable/15
74d330943b572a6f17f45b7c9c2035bde2956380 Michael Tuexen 2026-09-04 07:37:45

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

pf: Fix uninitialised action when dropping bad TTL ND packets
Approved by:  kp
Sponsored by:   InnoGames GmbH
Differential Revision:  https://reviews.freebsd.org/D58755
e3767e149b6d8674d9637999bc4153e6fe1a82b7 Kajetan Staszkiewicz 2026-09-04 09:18:26

debug: classified in 03-filenames_plain1 by 'sys/netpfil/'

rtnetlink: Add native SR-IOV VF status
Add a transport neutral kernel snapshot for NIC-specific SR-IOV VF
status and an optional iflib provider method.  Providers gather state
under driver defined synchronization.

Honor RTEXT_FILTER_VF on RTM_GETLINK requests and encode the status as
native typed route Netlink attributes.  Represent VFs, driver
namespaces, and namespace fields as directly repeated nested attributes.
Presence masks in consumers can distinguish omission from false or zero.

Drivers may add custom status under stable, versioned namespaces.  The
named, typed representation lets generic transports and consumers carry
or display fields without knowing their driver-specific schemas, while
the driver retains ownership of their names and meanings.

Document the ABI and add parser and RTM_GETLINK coverage.

Reviewed by:    melifaro, iflib (gallatin), kgalazka (previous version)
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D58776
2019f3d86f783711e9969d72cc423b26a4ce2f5a Kevin Bowling 2026-08-10 22:29:23

debug: classified in 03-filenames_plain1 by '['sys/net/', 'sys/netlink/']'

tcp: remove redundant assignments
Since the struct inpcb in embedded in the struct tcpcb, the
relationship can't change. So there is no need to reassign the tp
anymore.
No functional change intended.

Reported by:            Hannes Elfert
Reviewed by:            glebius
MFC after:              1 week
MFC to:                 stable/15
Differential Revision:  https://reviews.freebsd.org/D59384
6d3e3afbf96e921554b5f97bb52b557adcd01098 Michael Tuexen 2026-09-06 14:01:21

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

System administration

Stuff in man section 8 (other than networking).

inetd: only declare and use the mapped-address netconfig under INET6
In a WITHOUT_INET6 build the only assignment to netid2 is compiled out and
the non-INET6 arm returns early, so netid2 is unconditionally NULL and the
rpcb_set() call guarded by it is dead code. clang does not prove it dead
and reports nbuf2 as uninitialized where it is passed as a const pointer,

No functional change.

MFC after:      1 week
Reported by:    clang (-Wuninitialized-const-pointer)
Suggested by:   dim
Approved by: ngie (co-mentor)

Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D59277
4dcb33ebc80d83dfe231ea840d5c861a5ea41c98 Abdelkader Boudih 2026-08-31 18:15:45

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

gstat: Set errno = 0 before strtoul
The strtoul function sets errno on error, but does not clear it on
success; when using strtoul and checking errno (as one should) for
ERANGE / EINVAL afterwards, it's important to zero errno first.

While here, remove a dead store.

Reviewed by:    phk
Fixes:  https://cgit.freebsd.org/src/commit/?id=4fe8c1b67be0 ("Add error and range checking ... ")
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59270
6ddb10cf6b7f870d749e96d2ae55976b18896f54 Colin Percival 2026-08-29 20:22:15

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

nanobsd: Remove pandaboard.cfg
Pandaboard (sys/arm/ti/omap4) is removed due to lack of HW.
Remove the pandaboard config file for nanobsd aswell.

Approved by: imp, jlduran, manu(mentor)
Diffrential revision: https://reviews.freebsd.org/D54319
533918ced28ccd3b6ce22c93e0b64deac40377a1 Oskar Holmlund 2026-08-31 22:27:05

debug: classified in 05-summary-prefix by 'nanobsd:'

kboot: Fix file2str() buffer under-read
Signed-off-by: Aryan Arora <aryanarora.w1@gmail.com>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/2359
bfa36136a56cdcec73ee5771c4c0a117469ff020 Aryan Arora 2026-08-07 13:37:17

debug: classified in 03-filenames_plain1 by 'stand/'

bluetooth/ath3kfw: Whitelist "Dell Wireless 1802 Bluetooth 4.0 LE"
"Qualcomm Atheros Communications Dell Wireless 1802 Bluetooth 4.0 LE"
(0cf3:e006) is a wifi-bluetooth combo. The bluetooth chip is confirmed
to be AR3012 compatible. That's what the Linux ath3k driver loads as
well. It has been tested with the firmware files from the
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
repository as the comms/ath3k-firmware port appears to be discontinued.

Signed-off-by: Robin Haberkorn <rhaberkorn@fmsbw.de>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/2280
b7400b0c758afbfbba9e90b3c25518c119b2bd0a Robin Haberkorn 2026-06-14 08:16:44

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

rc: add a backlight service to save/restore backlight levels
The default on my laptop is annoyingly bright, and this is a useful
feature to mitigate that.  The backlight script is largely a copy of the
mixer service which provides the same value for mixers, but this one is
specifically dependant on kld to allow DRM drivers a chance to attach.

Note that it's off by default to avoid interference with DEs, and
document the capability in backlight(8).  Set backlight_enable=YES in
rc.conf(5) to enable save/restore.

Relnotes:       maybe
Reviewed by:    bapt, ivy, manu, ziaee
Differential Revision:  https://reviews.freebsd.org/D59296
c45bdb39fe985b43afc63b7cbd989fe7a61673b7 Kyle Evans 2026-09-02 03:51:41

debug: classified in 03-filenames_plain1 by '['etc/', 'libexec/']'

syslogd: reap pipe children on config reload
On SIGHUP reload, closelogfiles() frees each F_PIPE filed even when its
pipe process is still running.  close_filed() sets f_type to F_UNUSED
before the check, so the condition f_type != F_PIPE is always true and
the filed is freed while its process descriptor is still on the dead
queue and registered in the kqueue.  When the child later exits, the
NOTE_EXIT handler dereferences the freed filed (use-after-free) and
never closes the process descriptor, leaving the pipe child as a
persistent zombie.

Capture whether the filed is a pipe with an active process descriptor
before calling close_filed(), and defer the free in that case so the
NOTE_EXIT handler can reap the child and free the filed.

Reviewed by:    markj
Fixes:  https://cgit.freebsd.org/src/commit/?id=95381c0139d6 (syslogd: Use process descriptors)
Differential Revision:  https://reviews.freebsd.org/D59319
1a669b66ddb4748c24116e32dcb51eabaf4859ed Baptiste Daroussin 2026-09-02 08:51:42

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

syslogd: Pipes need the CAP_PDGETPID right as well
While here, use caph_rights_limit(), as syslogd already uses
caph_enter().

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298104
Reported by:    mi
Fixes:          https://cgit.freebsd.org/src/commit/?id=24816abb8740 ("syslogd: Limit rights on procdescs")
MFC after:      3 days
87cfe4a62078bc8ff14671fde3af347e7c7e3a26 Mark Johnston 2026-09-02 14:41:02

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

fsck_msdosfs: fix status accounting for lost cluster chains
checklost() scans for lost cluster chains and attempts to
repair each one, first by reconnecting it to LOST.DIR,
and falling back to clearing it if reconnection fails.
However, checklost() incorrectly updates the modification
status flags (mod), which checkfilesys() relies on to
determine whether to write back changes and what exit
status to return.

The current code have three issues:

1. A reconnect() failure immediately sets FSERROR in mod
   via "mod |= ret = reconnect(...)".  If reconnect() failed
   (e.g., because LOST.DIR is missing, or full) but the
   fallback clear operation succeeds, clearchain() frees the
   chain and sets FSFATMOD.  However, the leftover FSERROR
   remains in mod: checkfilesys() skips marking the file system
   clean and exits with status 8, even though the file system was
   fully repaired and a subsequent run finds nothing left to do.
   This can happen with "fsck_msdosfs -y" on a volume without
   LOST.DIR.

2. The same assignment overwrites checkchain()'s return value
   before it can be recorded in mod.  When checkchain()
   truncates a chain (e.g., one whose tail points to a free
   cluster), its FSFATMOD status is lost, causing checkfilesys()
   to skip updating the FAT and discard the truncation.
   With LOST.DIR present so that reconnect() succeeds,
   "fsck_msdosfs -y" reports "Truncate? yes" and "FILE SYSTEM WAS
   MODIFIED", exits 0, but leaves the identical damage on disk
   to be found again on every subsequent run.  Similarly, an
   FSFATAL return value from checkchain() is dropped, defeating
   the "if (mod & FSFATAL) break" guard that follows.

3. When checkchain() returns FSERROR and clearing the chain is
   declined, no error status is recorded in mod, causing fsck_msdosfs
   to report a clean exit despite leaving un-repaired damage.

Fix these issues by:

 - Merge checkchain()'s status into mod before calling reconnect(),
   and skip reconnect() if checkchain() returned a fatal error.
 - Defer recording FSERROR from a failed reconnect() until after the
   Clear fallback attempt, setting FSERROR only if the chain remains
   unhandled.

MFC after:      1 week
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2251
6cf0d6c3b5777e053074200ff99dc4b750e62b96 Jie Li 2026-09-02 06:15:05

debug: classified in 03-filenames_plain1 by 'sbin/'

fsck_msdosfs: add tests for lost cluster chain repair accounting
Add an ATF test suite covering Phase 3 ("Checking for Lost Files")
error accounting.  Test images are created using newfs_msdos(8),
and lost cluster chains are injected directly into FAT copies at
offsets derived from the BPB.  The LOST.DIR directory required by
reconnect() is constructed similarly: a root directory entry with
ATTR_DIRECTORY set and its first cluster pointing to a zero-filled
cluster containing "." and ".." entries.

The lost_chain_cleared and corrupted_lost_chain_reconnected test
cases provide regression coverage for the preceding commit:
 - lost_chain_cleared verifies that clearing a lost chain (the fallback
   taken when LOST.DIR is absent) exits with status 0 rather than 8
   (unrecovered error).
 - corrupted_lost_chain_reconnected verifies that FAT modifications
   from a chain truncated by checkchain() prior to reconnection are
   written back to disk, requiring "Update FATs? yes" and ensuring a
   clean second pass.

Additionally, lost_chain_left_alone, lost_chain_preen, and
corrupted_lost_chain_left_alone cover scenarios that must continue to
report unrecovered errors: read-only mode (-n), which performs no
repairs and leaves the image byte-for-byte unchanged, and preen mode
(-p), which attempts reconnection but does not clear lost chains.

MFC after:      1 week
bbaf254293f7e19fa7b0f9ed1da21c7a43126d79 Xin LI 2026-09-03 02:15:05

debug: classified in 03-filenames_plain1 by '['etc/', 'sbin/']'

fsck_msdosfs: fix memory leaks in checkfilesys()
Invoke releasefat(fat) in checkfilesys() prior to free(fat) on exit paths
so that fatbuf, headbitmap.map, and fat32_cache entries are properly freed.

MFC after:      1 week
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2351
6d49b0c0e7b8b77d8043593356e712307e894743 Chris Suter 2026-08-04 05:58:25

debug: classified in 03-filenames_plain1 by 'sbin/'

examples/jails: Encode ifnames used as derive_mac counters
derive_mac keeps a per-parent branch index in a global named from the
parent interface so the N nibble can increment when the same PHY is
presented more than once. That name must be a POSIX identifier; a
vlan-style parent (em0.20) is not.

Encode the ifname first (alnum unchanged, every other byte as _HH) so
the lookup stays a symbol-table hit and em0.20 does not collide with
em0_20. Same change in jib (9.2) and jng (9.4).

In jng, also address netgraph by node name. ngctl(8) treats `.' and
`:' as control characters, so ng_ether(4) names its node after the
sanitized ifname (vtnet0.20 becomes vtnet0_20). Sanitize the parent
ifname where it enters and use that for every ngctl call; ifconfig(8)
and derive_mac keep the real name. Previously jng failed outright on
such parents where jib did not.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291143
Reported by:    Victor <tschetter.victor@gmail.com>
MFC after:      1 week
Reviewed by:    jlduran
Differential Revision:  https://reviews.freebsd.org/D59326
19b0b1f648d8f114f77e82495618587b1729c4cc Devin Teske 2026-09-03 06:17:52

debug: Commit manually moved from "unknown" to "admin".

fsck_msdosfs: avoid signed integer overflow in readboot()
readboot() decoded the 32-bit little-endian BIOS Parameter Block and
FSInfo fields by shifting the individual bytes of a u_char array into
place.  The u_char operands are promoted to signed int, so shifting a
most significant byte of 0x80 or greater left by 24 overflows int, which
is undefined behavior.  Use le32dec() from <sys/endian.h> instead, which
is both well defined and easier to read.

No functional change intended.

MFC after:      1 week
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2350
18094609d301540526d3d57e92705bc989d29986 Chris Suter 2026-09-03 05:23:46

debug: classified in 03-filenames_plain1 by 'sbin/'

fsck_msdosfs: fix 32-bit overflow computing the LOST.DIR offset
reconnect() computed the byte offset of the LOST.DIR cluster in 32-bit
arithmetic and widened the result only on assignment:

        lfoff = (lfcl - CLUST_FIRST) * boot->ClusterSize
            + boot->FirstCluster * boot->bpbBytesPerSec;

cl_t is u_int32_t and ClusterSize is u_int, so both products wrap modulo
2**32.  Once LOST.DIR's cluster lies past the 4 GiB mark, lfoff aliases
the offset exactly 4 GiB below it, which on such a volume is ordinary
file data.

That offset is used for both the read and the write: reconnect() reads a
cluster of file data, scans it in 32-byte steps for a leading SLOT_EMPTY
or SLOT_DELETED byte, which arbitrary data readily provides, stores the
new directory entry in that slot, and writes the cluster back to the
same wrong place.  Thirty-two bytes of an unrelated file are silently
replaced by a directory entry, and since that entry never reaches the
real LOST.DIR the chain stays lost, so the next run damages another
slot.

Cast to off_t before multiplying.  This was the only cluster-to-offset
conversion multiplying a cluster number by the cluster size; the others
in dir.c and fat.c compute a 32-bit sector number first and widen that,
which cannot overflow because the sector count is itself 32-bit.

The bug was observed in the field on a FAT32 stick where LOST.DIR had
been created after a multi-gigabyte file was copied onto it, corrupting
that file every time the volume was checked.

MFC after:      1 week
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2347
d3c5464fee7b178a39c189363e48806a11fd3da4 CooperCao 2026-09-03 07:10:12

debug: classified in 03-filenames_plain1 by 'sbin/'

hastd: Fix crash on empty message
A HAST message can be empty, in which case ebuf_add_tail() does nothing
and ebuf_data() returns NULL because the size of the ebuf is zero, but
hast_proto_recv_hdr() asserts that the return value is not NULL,
resulting in an immediate crash if hastctl or hastd receive an empty
message.  This is trivially reproducable by running `hastctl status` or
`hastctl role init` (as the rc script does prior to stopping hastd).

To avoid this, don't try to grow the ebuf or receive additional data
if the header size is zero.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298085
MFC after:      3 days
Reviewed by:    kevans, gjb
Differential Revision:  https://reviews.freebsd.org/D59306
8646d65b45339642d4aab1de35a2bc79fc45f09e Glen Barber 2026-09-03 07:51:28

debug: classified in 03-filenames_plain1 by 'sbin/'

Commit group #4: hastd: Clean up the ebuf code
hastd: Clean up the ebuf code

Rename the members of struct ebuf to match their function, replace
bcopy() with memcpy(), add comments explaining what each function does.

Reviewed by:    kevans, emaste
Differential Revision:  https://reviews.freebsd.org/D59310
48c0fc0171a166c161a47602da94ef98021c3161 Dag-Erling Smørgrav 2026-09-03 07:51:32

debug: classified in 03-filenames_plain1 by 'sbin/'


hastd: Clean up the ebuf code

Missed an instance of bcopy().

Fixes:          https://cgit.freebsd.org/src/commit/?id=48c0fc0171a1 ("hastd: Clean up the ebuf code")
0abd71f39a5c296bf5bf41a0d98cfe849967d8f9 Dag-Erling Smørgrav 2026-09-03 13:34:16

debug: classified in 03-filenames_plain1 by 'sbin/'

gzoned: Introduce Zoned Storage emulator
gzoned(8) is a new GEOM class that exposes a host-managed zoned device
(similar to ZAC/ZBC drives) on top of regular, non-zoned providers.

The created medium is sliced into equally sized zones, by default
sequential-write-required.  Such zones can be turned into conventional
zones if desired.  The zoned drive's state and configuration is
persistent through metadata at the tail of the backing provider, meaning
the zoned device gets recreated at the provider retaste.  Zone state
changes only mark the table dirty with BIO_FLUSH committing it,
mirroring drives whose zone state is volatile until a cache flush.

The new class tries to emulate real zoned drives by incorporating
per-zone write pointers and support for BIO_ZONE management commands.
Fault emulation through zone conditions (RWP recommended, offline, R/O),
URSWRZ bit toggling and concurrent open zone limits are additional
features useful for testing.

While at it, fix zonectl's report of write pointer LBAs for zones that
should have none, remove its forced debug flags and allow the geom(8)
shared subroutines to detect host-managed drives.

ATF-sh tests for gzoned(8) and zonectl(8) (dogfooded by gzoned(8)) are
included, featuring helpers (see zoned_subr.sh) for testing zoned
storage support in other components or GEOM classes.

Reviewed by:    asomers, fuz, ken
Sponsored by:   Google Summer of Code 2026
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2326
48efb6c4eb9febc1c8c50d13a794e9165af71930 voidanix 2026-06-13 15:57:21

debug: Commit manually moved from "unknown" to "admin".

pw: use _PWDASH pseudo-fd for "-" in pw_checkfd
pw_checkfd() returned the character "-" (45) for the "-" argument,
which was ambiguous with a real file descriptor.

MFC After:      1 week
92e8a76b87862aa2ee7e6c3f637034e60ffbc2e6 Baptiste Daroussin 2026-09-04 10:17:02

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

pw: check -M, -V and -R input to avoid dereferencing argv[2]
MFC After: 1 week
2350f75acb0da0271ccff1fb22381f7e8c5948f8 Baptiste Daroussin 2026-09-04 10:40:52

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

Commit group #5: pw
pw: cleanup

No functional change intended.

MFC After:      1 week
5f5a1657a921c3f7a84ef326c2116d986409e161 Baptiste Daroussin 2026-09-04 11:43:22

debug: classified in 04-filenames_plain2 by 'usr.sbin/'


pw: fix at job removal when deleting a user

rmat() used stat() with a path relative to the current working
directory, so it never found the job files in /var/at/jobs and the
at(1) jobs of a deleted user were never removed.

ef7d0eb9489f also broke it by introducing a typo: /usr/sbin/atrm instead
of /usr/bin/artm.

Use fstatat() with the directory fd to stat the job files relative to
the at jobs directory, and unlinkat() them directly instead of spawning
atrm.

Those changes allow us to make it works with pw -R.

MFC After:      1 week
6b6aa45f9a1a35acb7fef68824c1a5eb08503909 Baptiste Daroussin 2026-09-04 12:12:03

debug: classified in 04-filenames_plain2 by 'usr.sbin/'


pw: remove crontab with unlinkat instead of spawning crontab

crontab -r only unlinks the crontab file, so spawn it directly with
unlinkat() relative to conf.rootfd.  This also makes the crontab
removal work with pw -R.

MFC After:      1 week
ba391775e8acb7a539c18f1231a396a7d0d763e9 Baptiste Daroussin 2026-09-04 12:56:37

debug: classified in 04-filenames_plain2 by 'usr.sbin/'


pw: remove mail file with unlinkat instead of building a path

This is consistent with how at jobs and crontabs are removed.

MFC After:      1 week
1ccf8075eaa84088ad4acb65aabb1e59c3fddd3f Baptiste Daroussin 2026-09-04 14:00:07

debug: classified in 04-filenames_plain2 by 'usr.sbin/'


pw: fix error message in grp_set_passwd to use correct fd

MFC After:      1 week
cd575d557bc090cc9fff41b085bd0aee40a42c38 Baptiste Daroussin 2026-09-04 14:03:00

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

iuserboot: bump the interface to v6, add an accept_interpreter callback
If an explicit loader wasn't requested, then bhyveload(8) maintains a
/boot handle that it can use for swapping to a different flavor.  This
means that we expose all of the host /boot to the sandbox for the
duration of script execution.

Add a callback to ack that we're OK with the interpreter so that
bhyveload(8) can release the bootfd.  This is worth doing because it's
prior to guest script execution, so we're still running a reasonably
untainted process.

Reviewed by:    imp, jhb
Differential Revision:  https://reviews.freebsd.org/D58771
619d09217720cb82f562b51e98576438dc11c830 Kyle Evans 2026-09-04 15:26:35

debug: Commit manually moved from "unknown" to "admin".

pw: simplify group lookup in usermod
MFC After:    1 week
885b0483fe2e1afc45caaf1294b4b755d1c7abae Baptiste Daroussin 2026-09-04 17:53:26

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

Commit group #6: hastd
hastd: Ensure nvpair padding is initialized

The proto-libnv implementation embedded in hastd pads names and values
out to the nearest multiple of eight bytes, but leaves the padding
uninitialized, leaking up to 14 bytes of recycled heap per pair in a
message.

While here, switch from bcopy() to memcpy().

MFC after:      3 days
Reviewed by:    kevans, emaste
Differential Revision:  https://reviews.freebsd.org/D59343
911bda7cffbf358c4e83ea05cfe980d429aff61c Dag-Erling Smørgrav 2026-09-05 15:44:05

debug: classified in 03-filenames_plain1 by 'sbin/'


hastd: Add a stop control message

Add a stop control message which causes hastd to clean up and terminate.

Reviewed by:    kevans
Differential Revision:  https://reviews.freebsd.org/D59344
7dfadd78ba3c4608c3631fb5008de77ea1e29e88 Dag-Erling Smørgrav 2026-09-05 15:44:09

debug: classified in 03-filenames_plain1 by 'sbin/'


hastd: Add rudimentary tests

Test that we can start and stop hastd with an empty configuration.

Reviewed by:    kevans
Differential Revision:  https://reviews.freebsd.org/D59345
4ec3ca55f9a790192152fedb356ffd68fc1b8926 Dag-Erling Smørgrav 2026-09-05 15:44:15

debug: classified in 03-filenames_plain1 by '['etc/', 'sbin/']'

rtld: allow arches to initialize/finalize objects
Discussed with:       jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
6a69d28ee07534c8c0eac328dbbc2529dfceb7fd Konstantin Belousov 2026-08-26 11:53:20

debug: classified in 03-filenames_plain1 by 'libexec/'

rtld: explain the use of rtld_bind_lock in rtld_get_addr_slow()
Discussed with:       jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
5d9e5f49647e129bf814e7887b8201bfce8b53e3 Konstantin Belousov 2026-08-30 05:20:46

debug: classified in 03-filenames_plain1 by 'libexec/'

rtld i386: use macro for the 'GNU ABI' calling convention of TLS resolver
Discussed with:       jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
fb63a60d6e15d022dee453363dbaf647cbc2a507 Konstantin Belousov 2026-08-25 12:31:53

debug: classified in 03-filenames_plain1 by 'libexec/'

i386 rtld: implement support for TLSDESC relocation
Discussed with:       jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
d45d7aea6197a91b794808d508295a74ce5be0cd Konstantin Belousov 2026-08-25 12:26:50

debug: classified in 03-filenames_plain1 by 'libexec/'

amd64 rtld: implement support for TLSDESC relocation
Discussed with:       jrtc27
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59269
76f5fccc5fbdf2a7b42f1e4aa71fe625be32fa13 Konstantin Belousov 2026-08-26 09:41:59

debug: classified in 03-filenames_plain1 by 'libexec/'

pciconf: extend tree mode to also print numerical IDs
Also print the vendor/device and subvendor/subdevice IDs in addition
to any strings from the database found if the -v flag is given more
than once.
This helps with device identification if the strings resolve to
identical values for entire product families as well as when the
exact card cannot be determined from the string.
In theory a second call to pciconf could present that information in
non-tree mode but that kind-of defeats the purpose.

Reviewed by:    jhb
MFC after:      3 days
Differential Revision: https://reviews.freebsd.org/D56248
4dc810b5ff5b3e0a88575269205a1eb88b70e4d0 Bjoern A. Zeeb 2026-04-03 21:37:45

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

pmc: avoid illegal flexible array member
Remove struct pmchdr_cpuidinfo which was just a wrapper around a
flexible array member of uint32_t.  Flexible array members are
non-standard in C++, and even in C are not allowed as the only member
of a struct.

GCC errored out on pmchdr_cpuidinfo, but did not complain about
pmchdr_pmcinfo, so I left it alone here, though it is also non-standard.

Fixes:  https://cgit.freebsd.org/src/commit/?id=93da997ef759 ("pmc: new pmc log processing framework")
Reviewed by:    Ali Mashtizadeh <ali@mashtizadeh.com>
Differential Revision:  https://reviews.freebsd.org/D59355
2e33355ee2bfa0b6d7b61aeca66d9b2b2b7b9e56 Ryan Libby 2026-09-05 22:45:39

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

ifconfig: Add SR-IOV VF status output
Add NIC-specific VF status to the existing ifconfig -v output.  Fetch
the data through libifconfig using a separate native route Netlink
query.

Group optional identity, initialization, resources, VLAN policy,
administrator policy, protocol, traffic-permission, and
fault containment fields.  Omitted fields remain distinct from false or
zero.

Refer users to iovctl -L for device-neutral PCI attachment and
passthrough state.

This is a Netlink-native evolution of the original interface by Eric
Joyner.

Relnotes:       yes
Sponsored by:   Intel Corporation (initial version)
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D58778

Co-authored-by: Eric Joyner <erj@FreeBSD.org>
41418a7cd00c4a20eb72bc8c315c0e364d4e4ad2 Kevin Bowling 2026-08-10 22:30:22

debug: classified in 03-filenames_plain1 by 'sbin/'

Introduce nfsdtop(8)
Display top-like NFS server I/O using dtrace(1).
Also supports JSON output for time-series.

Relnotes:       yes

Reviewed by:    ziaee, bcr, adrian
Differential Revision:  https://reviews.freebsd.org/D59438
60c7313074b93adf4ea70ff44b78b3b4fc15c29f Devin Teske 2026-09-06 22:34:34

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

Libraries

various: Fix nlist invocations
Fix nlist(3) consumers that either expected our toolchain to prepend an
underscore to symbol names or expected nlist(3) to ignore the mismatch,
as it did until we overhauled it back in May.

While here, also fix cases where the last element in the list had an
empty string instead of NULL as sentinel.

MFC after:      3 days
Fixes:          https://cgit.freebsd.org/src/commit/?id=4617a6cb82a6 ("nlist: Handle multiple symbol tables")
Reviewed by:    kib, jhb
Differential Revision:  https://reviews.freebsd.org/D59254
cdfc673811aca2c6690f37bde9ef4896ea2e1d6b Dag-Erling Smørgrav 2026-09-01 12:49:24

debug: Commit manually moved from "unknown" to "libs".

lib9p: Make it a private library
lib9p was imported to add a 9p server to bhyve (and I believe this was
the original motivation for writing it in the first place).  Its
external interfaces are kind of strange (from first-hand experience
using it to implement an inetd-based 9p server) and undocumented.
Moreover, upstream has been inactive for over five years.

I suspect there are no third-party consumers.  Let's make it a private
library for now, so as to make it easier to rework external interfaces.
If we get more code written against it, symbol versioning, and some
documentation, we can revisit this decision.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297499
Reviewed by:    jhb, emaste
Differential Revision:  https://reviews.freebsd.org/D58828
1b8ccb02ac72c72d47662e73bc8a45b4210a0f89 Mark Johnston 2026-09-01 14:03:41

debug: classified in 05-summary-prefix by 'lib.*:'

libm: Implement femode_t, fegetmode(), and fesetmode() as per C23
Reviewed by:  kargl, kib
Approved by:    fuz (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D59288
d8b6461f8c56237a00ddc32678b3928bf76f5440 Faraz Vahedi 2026-09-02 23:35:22

debug: classified in 04-filenames_plain2 by 'lib/'

libcasper: reap zombies without requiring waitpid(2)
Reported and tested by:       bapt
Reviewed by:    bapt, markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59348
1a296762b3d093e1fed4e74f9251206102f68355 Konstantin Belousov 2026-09-03 18:00:12

debug: classified in 04-filenames_plain2 by 'lib/'

libc: Add <inttypes.h> C23 feature test macro
Define __STDC_VERSION_INTTYPES_H__ now that the header fully
conforms to C23.

Reviewed by:    fuz
Approved by:    fuz (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D59382
733ea4ee584db9b25b470ee48243135a321b4eed Faraz Vahedi 2026-09-05 08:28:29

debug: classified in 03-filenames_plain1 by 'include/'

libc: Add WCHAR_WIDTH in <wchar.h> as well
Define __WCHAR_WIDTH in sys/_types.h and derive WCHAR_WIDTH from
that, the same way as WCHAR_MIN and WCHAR_MAX, in both <wchar.h>
and <stdint.h> as per C23 §7.31.1 and §7.22.3.4, respectively.

Reviewed by:    fuz
Approved by:    fuz (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D59385
72ed6f9c9dc95124cd81158d1c4437484a1b951e Faraz Vahedi 2026-09-05 10:41:22

debug: classified in 05-summary-prefix by 'lib.*:'

lib/msun/tests: remove nearbyint test xfail on riscv
PR:           https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290099
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
d7ed56b0fcb310a466e75a47cac4619afaa7e9dd Siva Mahadevan 2026-09-05 13:53:29

debug: classified in 04-filenames_plain2 by 'lib/'

libifconfig: Add a native SR-IOV VF status query
Request RTEXT_FILTER_VF through route Netlink and parse the common VF
status schema into typed public structures.  Preserve per-field
presence using IFLAF_VF_* attribute numbers as mask bit indices so
callers can distinguish omitted values from false or zero.

Validate required VF indices, repeated driver namespaces, and their
versioned typed fields while allowing unknown optional attributes.

Return VF records through a pointer vector so append-only growth of the
public VF structure does not change the array stride seen by existing
consumers.

Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D58777
a8eca531e23b49b71115216a9d54bd78dd16d87b Kevin Bowling 2026-08-10 22:29:49

debug: classified in 04-filenames_plain2 by 'lib/'

Filesystems

nfs_clvfsops.c: Silence a compiler warning
MFC after:    3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
d8d9f39df5431cbb554173da0f473c0e576aa7cb Rick Macklem 2026-08-31 00:56:13

debug: classified in 03-filenames_plain1 by 'sys/fs/'

nfs_clvfsops.c: Fix the non-VIMAGE build
The OFED code checks for a vnet argument, but it is
is not defined.

Reported by:    glebius
MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
cc352a850f9860eadf9558cf0c920a3655fae576 Rick Macklem 2026-09-01 17:33:08

debug: classified in 03-filenames_plain1 by 'sys/fs/'

Kernel

Kernel stuff (other than networking, filesystems, and drivers).

LinuxKPI: 802.11: add != NULL check in ieee80211_tx_status_ext()
There seems to be another possible race with net80211 state machine
changing the bss from under us (another lvif_bss_synched case).
Just do the != NULL check to avoid a NULL pointer deref in
ieee80211_ratectl_rate().

(bz extended the original comment and wrote the commit message).

Sponosred by:   The FreeBSD Foundation (commit)
PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297184
MFC after:      3 days
0211e64ce1e5ba208f4b96453ce6740a49689b91 Kim Shrier 2026-08-31 16:28:51

debug: classified in 04-filenames_plain2 by 'sys/'

kern_mib: remove kern.fallback_elf_brand compat sysctl
This compatibility alias for kern.elf{32,64}.fallback_brand has been
marked for removal since FreeBSD 6.0.

Signed-off-by: Christos Longros <chris.longros@gmail.com>

Reviewed by:    kib, emaste
Differential Revision:  https://reviews.freebsd.org/D56085
ef03c60246be23e601c4d08bfd2682f51825f18e Christos Longros 2026-08-31 17:23:19

debug: Commit manually moved from "unknown" to "kernel".

LinuxKPI: 802.11: implement cfg80211_calculate_bitrate()
lkpi_cfg80211_calculate_bitrate_vht() was constantly showing up
in my debug traces as a TODO with rtw89 so I went ahead and implemented
the HT and VHT versions.  Realtek seems to limit amsdu sizes based
on the value and ask for it whether needed or not.

Sponsored by:   The FreeBSD Foundation
MFC after:      3 days
654cffe59dd6c8818241bf44eff333af28e10168 Bjoern A. Zeeb 2026-08-29 01:56:55

debug: classified in 04-filenames_plain2 by 'sys/'

umtx: use a distribution-fair multiplier for the chain hash
  umtxq_hash() multiplies the key by 0x9E370001 and keeps the high bits.  That
  constant is 0x9E37 * 2^16 + 1, so it degenerates for keys whose spacing carries
  trailing zero bits: at a 64 KiB stride it puts 128 of 512 parked waiters onto a
  single chain mutex, and at 16 KiB and up it uses only a handful of the 512
  chains.  Base-system consumers never hit this because libthr places its own wait
  words 128 bytes apart, but a Linux-ABI runtime waiting on addresses it allocates
  itself lands squarely on the floor.  Switch to 0x61C88647, which leaves at most 3
  waiters per chain at the same stride; Linux made this exact change in 2016, after
  judging the sparse constants "actively bad for hashing".

Approved by:    adrian (mentor)
Reviewed by:    kib, adrian, emaste
Differential Revision:  https://reviews.freebsd.org/D58337

Signed-off-by: Nick Price <nprice@FreeBSD.org>
ee44a57e34a8812b4641d5c9202255ea7883764d Nick Price 2026-08-31 23:47:12

debug: classified in 04-filenames_plain2 by 'sys/'

pdopenpid(2): in cap mode, translate all errors from pdopenpid1() to ECAPMODE
to not leak information about unused pids or system processes' pids.

Reviewed by:    markj
Fixes:  https://cgit.freebsd.org/src/commit/?id=73c92a978cce ("pdopenpid(2): allow in capability mode with restrictions")
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59252
326ab530dcabe70ab48728cad0465f35b30dbf60 Konstantin Belousov 2026-08-28 17:54:02

debug: classified in 04-filenames_plain2 by 'sys/'

nfsclient: Fix problems with the NFS over RDMA glue
There were a couple of problems detected w.r.t. the
"glue" for the nfsclrdma.ko module.
- When the NFS server has a small reply for a read,
  it can choose to not use the reduction chunk
  (separate memory area for the read data).  I did
  not realize this was the case.
- There was a bug in rpc_copy_uio_pages() function
  that caused intermittent crashes in memcpy().

This patch fixes the above cases.  It uses M_PROTO6
to mark that an RPC reply has used a reduction chunk,
so that read can handle it correctly.  Read also now
provides a reduction chunk for all read sizes, since
the worst case for the rest of the read RPC reply is
close to the 1024 byte limit.  (NFSv4 uses strings
instead of uid/gid in the attributes and these name
strings can be rather large.)

I wanted to get the "glue" into main so that others
could test the module more easily.  Avaliability of
the module will be announced on freebsd-current@ soon.

It should not affect non-RDMA operation.

I've specified a long MFC, since the module still
requires extensive testing and, hopefully, a review.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
f41d83578e8eb1efced76704f00bcf6b201c3821 Rick Macklem 2026-09-01 13:53:34

debug: classified in 04-filenames_plain2 by 'sys/'

gvirstor: Modernize the I/O path
 - Add unmapped I/O support.  The only case when the code needs data
access is BIO_READ returning zeroes for unallocated space.
 - Add BIO_FLUSH support.  Just send it to all allocated components.
 - Add BIO_DELETE support.  While current design does not allow
freeing allocated blocks, at least pass it to underlying providers.
 - Add direct I/O completion support.
 - Add rotation rate reporting.
 - Fix few minor issues.
b55783976945e900889d7ce9d5055a069de7441f Alexander Motin 2026-09-01 15:39:13

debug: classified in 04-filenames_plain2 by 'sys/'

geom_linux_lvm: Add BIO_FLUSH support
f73fe9a23c9a158075ba33eb4d0cff21b90bc769 Alexander Motin 2026-09-01 17:21:35

debug: classified in 04-filenames_plain2 by 'sys/'

geli: report stripesize/stripeoffset when applicable
03a197128f9c70ddb0685a0825c9d37003c41c4e Alexander Motin 2026-09-01 17:53:46

debug: classified in 04-filenames_plain2 by 'sys/'

rtwn: add support for the RTL8723BU
Pushed using the RTL8723BU.

Reviewed by:    ziaee, avos, adrian
Relnotes:       yes
Differential Revision:  https://reviews.freebsd.org/D59205
551b7c5e12bfea623a47edf97ad5689732a1233f Ahmad Khalifa 2026-09-01 21:07:59

debug: classified in 04-filenames_plain2 by 'sys/'

ptrace(2): allow ptrace(PT_TRACE_ME) in cap mode
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59317
c8f8d00c2422bf7eca71b7b41e9d586ca25c4b8a Konstantin Belousov 2026-09-01 22:14:58

debug: classified in 04-filenames_plain2 by 'sys/'

devstat: Fix a kernel stack disclosure
The 16-byte "device_name" field was not zero-filled, so could contain
uninitialized stack data.  Zero the whole struct, as that's the
prevailing pattern for this kind of conversion code, and it's more
robust in the face of future revisions to struct devstat.

Reviewed by:    olce, kib
Reported by:    Reo Shiseki
Fixes:          https://cgit.freebsd.org/src/commit/?id=a11d132f6c62 ("devstat: Provide 32-bit compatibility")
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59309
7cb1a76f88158fb690418336b736e66c238cd4f7 Mark Johnston 2026-09-01 16:07:09

debug: classified in 04-filenames_plain2 by 'sys/'

sys/conf/options: Add WITNESS_LOCK_CHILDCOUNT
Make the witness LOCK_CHILDCOUNT a configurable kernel option.
On machines with a very high core count the default value is too
low, leading to witness exhaustion after boot.

Relnotes:       yes
Reviewed by:    kib, ziaee
Signed-off-by:  Kajetan Puchalski <kajetan.puchalski@arm.com>
Closes:         https://github.com/freebsd/freebsd-src/pull/2398
792c94293e217d77d9eb8871ce3b53898ece0f9a Kajetan Puchalski 2026-08-27 14:37:14

debug: classified in 04-filenames_plain2 by 'sys/'

iflib: Plumb per-packet RX hardware timestamps to mbufs
Add iri_rcv_tstmp to if_rxd_info so an isc_rxd_pkt_get() driver can
report a hardware RX timestamp.  Copy it into m_pkthdr.rcv_tstmp,
reusing the generic mbuf timestamp path.

Widen iri_flags from uint8_t to uint32_t and define the flags drivers
may supply.  Mask the flags before copying them into the mbuf so no
other mbuf state can leak through the driver callback.

Place the timestamp next to iri_frags to avoid an alignment hole, and
document its nanoseconds-since-boot representation and validity flags.
Bump __FreeBSD_version because changing if_rxd_info breaks KBI.

Reviewed by:    gallatin
Signed-off-by:  Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Differential Revision:  https://reviews.freebsd.org/D58638
3c928ccadbb5d7baa3ce18d33d09d9a1d2770397 Sumit Saxena 2026-09-02 19:36:43

debug: classified in 04-filenames_plain2 by 'sys/'

nfscl: A few more fixes for the NFS over RDMA client glue
A couple of additional fixes for the NFS client side RDMA glue:
- For Readdirplus, the reply needs to be a large chunk, so set
  M_PROTO9 instead of M_PROTO8.
- The nfsclrdma.ko module now uses xprt_rdma_unmap_chunk()
  instead of xprt_rdma_rekey_chunk().

Hopefully, this is it for the NFS over RDMA client glue changes.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
799061fc769c96772a06881c1830a99d4db2fa67 Rick Macklem 2026-09-03 02:20:26

debug: classified in 04-filenames_plain2 by 'sys/'

dtrace/arm: Fix and de-pessimize dtrace_copy
Use an unprivileged load to access user memory from dtrace_copy, which
is running in SVC mode.

Abort the loop if the load is trapped, as it is useless, hence
wasteful, to keep faulting on successive addresses. I believe that
this de-pessimization should also be done on aarch64 and riscv.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298064
MFC after:      1 month
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59280
c874d312e78fc60e6731a043fc45b47165618370 Benjamin Jacobs 2026-09-03 13:52:21

debug: classified in 04-filenames_plain2 by 'sys/'

dtrace/arm: Really trap translation faults
Fix the constant case label to properly handle translation faults
caused by DTrace probes. Alignment errors are not expected to be
generated, so stop handling them.

While at it, correct an amd64-specific comment and add a comment
regarding the missing faulting address which could be addressed by a
later improvement.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298064
MFC after:      1 month
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59281
00678f5e5c08ec7949e2f57d78faeaf266a0f17a Benjamin Jacobs 2026-09-03 13:52:24

debug: classified in 04-filenames_plain2 by 'sys/'

umtx: do not sleep on an unowned mutex after a spurious CAS failure
On ll/sc architectures casueword32() may report a spurious
store-conditional failure (reservation lost to an interrupt, preemption,
or another CPU touching the same reservation granule), and this is
indistinguishable from a genuine comparison mismatch: both return 1.
That is intentional since D20772 and documented in casueword(9) ("The
store can fail on load-linked/store-conditional architectures."), so
callers must cope.

do_lock_normal() does not fully cope.  When the initial
UMUTEX_UNOWNED -> id acquire CAS fails spuriously, the observed owner is
still UMUTEX_UNOWNED, so neither the UMUTEX_CONTESTED branch nor the
real-owner case applies, and execution falls through past the "rv == 1
but not contested, likely store failure" comment into the sleep path.
There, the contested-bit CAS (expecting the observed owner, i.e.
UMUTEX_UNOWNED) succeeds because the mutex really is unowned, stamping
m_owner = UMUTEX_CONTESTED with no owner tid, and the thread sleeps on
"umtxn" forever: nobody owns the mutex, so no unlock and no wakeup ever
arrive.  In _UMUTEX_TRY mode the same situation returns a false EBUSY
for a free mutex.

Treat an observed owner of UMUTEX_UNOWNED like UMUTEX_CONTESTED: try to
acquire the mutex, setting the contested bit, instead of falling through
to the sleep path.  rv == 1 with the observed value equal to the
expected value can only mean a spurious store failure, so the mutex is
free.  If the acquire CAS fails again, the outer loop restarts and
re-evaluates ownership.  The contested bit set with no waiters present
only costs the matching unlock one trip through the kernel.

This was hit in practice on powerpc64le (POWER9): the Swift runtime's
Synchronization.Mutex issues _umtx_op(UMTX_OP_MUTEX_LOCK) directly with
no userspace fast path, so an uncontended lock of an unowned mutex runs
the kernel CAS exactly where a spurious failure deadlocks
(single-threaded process parked on "umtxn" with m_owner == 0x80000000,
observed as Foundation.Process.run() hanging).  libthr mostly masks the
bug because pthread_mutex_lock() enters the kernel only when there is a
real owner that will eventually issue a wakeup.

The mechanism was confirmed with an experimental powerpc kernel that
instead retried the ll/sc sequence inside casueword32()/casueword();
that also eliminated the hang, but is not proposed here since the
single-attempt semantics of casueword(9) are intentional.

Reviewed by:    kib
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D59338
c5d9485e7d7faeba1019301ed83a781dac2d0cb0 Piotr Kubaj 2026-09-03 14:08:45

debug: classified in 04-filenames_plain2 by 'sys/'

buf: Avoid calling bufdomain() on newly initialized bufs
bufinit() inserts newly initialized bufs into the QUEUE_EMPTY queue, at
which point they haven't yet been assigned a domain.  Thus, bufdomain()
returns &bdomain[-1], which trips the array-bounds sanitizer.

This is harmless since we don't use the result in that case, but let's
avoid the invalid access to begin with.  This is sufficient to let an
amd64 kernel boot to a login prompt with -fsanitize=array-bounds
configured.

Reported by:    Andrew Griffiths <andrew@calif.io>
Reviewed by:    rlibby, kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59381
e1d903bbfaf91060c43209b35b78a9992fbffe5e Mark Johnston 2026-09-04 12:46:29

debug: classified in 04-filenames_plain2 by 'sys/'

During shutdown, announce each file system as it's unmounted.
But only if debug.bootverbose=1.

MFC after:      2 weeks
Sponsored by:   ConnectWise
b551cb063c5efe66a634b5afded901a0323bcee2 Alan Somers 2026-09-04 20:48:41

debug: classified in 04-filenames_plain2 by 'sys/'

LinuxKPI: Fix DMA_BIDIRECTIONAL and other mappings
In dma_sync_single_for_cpu(), the DMA_BIDIRECTIONAL direction currently
performs BUS_DMASYNC_POSTREAD followed by BUS_DMASYNC_PREREAD. This
patch corrects the mapping to use BUS_DMASYNC_POSTREAD |
BUS_DMASYNC_POSTWRITE.

When ownership of the DMA area is transferred to the CPU, we must assume
the previous device access was bidirectional. Both POST operations are
necessary to ensure the CPU sees a consistent view of memory after
potential device reads and writes. A PREREAD is unnecessary here because
the device will no longer access the memory since ownership has been
transferred to the CPU.

Conversely, for dma_sync_single_for_device(), ownership is being
transferred back to the hardware. The buffer must be prepared for
potential bidirectional access by the device, requiring
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293381, https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297155
Reported by:    Zishun Yi <zishun.yi.dev@gmail.com>
Reported by:    Kim Shrier (fbsdbugs westryn.net)
Fixes:          https://cgit.freebsd.org/src/commit/?id=95edb10b47fc ("LinuxKPI: implement dma_sync_single_for_*, apply to (un)map single/sg")
Signed-off-by:  Zishun Yi <zishun.yi.dev@gmail.com>
Reviewed by:    aokblast, bz
Differential Revision: https://reviews.freebsd.org/D55497
6e1436d748273be52fb155914db3efae075a8619 Zishun Yi 2026-09-04 19:11:35

debug: classified in 04-filenames_plain2 by 'sys/'

syscalls: Avoid C++ reserved words
Both kern_renameat() and kern_dup() had arguments named `new`.  Rename
their arguments to match their respecitve manual pages.

Sponsored by:   Klara, Inc.
Sponsored by:   NetApp, Inc.
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D59386
ff4b81eea88fbc3f2014d4f2f5e156de318376c1 Dag-Erling Smørgrav 2026-09-05 15:44:18

debug: classified in 04-filenames_plain2 by 'sys/'

random: don't collect entropy when scheduling software interrupt handlers
The entropy will be collected in intr_event_schedule_thread() for event
handlers that are marked as entropy sources.  The quality of entropy
provided by SWI wasn't great anyway.

Reviewed by:            cem, ngie
Differential Revision:  https://reviews.freebsd.org/D58829
d13ee10b771493ba8fb6d12350240ba7deb26d8e Gleb Smirnoff 2026-09-05 18:03:40

debug: classified in 04-filenames_plain2 by 'sys/'

video(4): fix camera control class ABI and add missing V4L2 constants
Renumbered the camera class to match the reference ABI and added the
constants ported applications expect:

Reviewed by:    thierry
Differential Revision:  https://reviews.freebsd.org/D59459
ea7c31ba9d21c199f6458a4a4ec447dde2310c32 Abdelkader Boudih 2026-09-05 21:18:13

debug: classified in 04-filenames_plain2 by 'sys/'

video: bump __FreeBSD_version for V4L2 camera class renumbering
The camera control IDs in videoio.h changed numeric values; ports
consuming V4L2 camera controls need to be rebuilt.

Reviewed by:    thierry
Differential Revision:  https://reviews.freebsd.org/D59460
7c73fdb618d753a864ea2ad3a2af4416eb04b534 Abdelkader Boudih 2026-09-05 21:18:39

debug: classified in 04-filenames_plain2 by 'sys/'

LinuxKPI: implement dma_sync_sg_for_{cpu, device}()
Implement dma_sync_sg_for_{cpu, device}() and
dma_sync_sgtable_for_device().
These functions are useful for my GSoC 2026 project, udmabuf.

Reviewed by:    bz
MFC after:      3 days
Differential Revision: https://reviews.freebsd.org/D57766
9dec0cd79c693951fc58d82a99918fc5a02cbcd0 Zishun Yi 2026-09-05 20:05:39

debug: classified in 04-filenames_plain2 by 'sys/'

LinuxKPI: Correct nents passed to dma_{un,}map_sg_attrs()
According to Linux documentation the nents argument to dma_unmap_sg()
must be the number one passed in, not the number of DMA addresses.

In LinuxKPI this means orig_nents and not nents, so adjust this.

Given nents and orig_nents should always be the same in LinuxKPI,
this should only be a NOP for correctness.

Reviewed by:    bz, aokblast (LGTM)
MFC after:      3 days
Differential Revision: https://reviews.freebsd.org/D57842
33574d47d9dea317b9a4bfe543c4f20be6a565ef Zishun Yi 2026-09-05 20:12:38

debug: classified in 04-filenames_plain2 by 'sys/'

Bump __FreeBSD_version for SR-IOV VF status
Bump for the new ifnet and iflib VF-status provider KBI and the
rtnetlink VF-status interface.
9872a04038486676296501532337c767ffdec332 Kevin Bowling 2026-09-06 11:54:42

debug: classified in 04-filenames_plain2 by 'sys/'

Commit group #7: nfsd: Clean up the "glue" for the nfsrdma.ko module
nfsd: Clean up the "glue" for the nfsrdma.ko module

Move svc_reg() calls into a helper function so that the nfsrdma.ko
can call that.  Create a new nfs_extern.h as a place to put the
nfs stuff that server side NFS over RDMA needs to access, with a
prototype for the helper function and a couple of definitions that
probably shouldn't be in svc.h.

No semantics change.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=7144a1d58c5c ("nfsd: Add glue for the nfsrdma.ko module")
407d7177057d152f18b31773eaade93311113505 Rick Macklem 2026-09-06 20:40:34

debug: classified in 04-filenames_plain2 by 'sys/'


nfsd: Add nfs_extern.h

Oops, forgot to add the new .h file.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=407d7177057d ("nfsd: Clean up the "glue" for the nfsrdma.ko module")
fb3875a38e26c3535a635714f0eedbfd61619866 Rick Macklem 2026-09-06 20:51:37

debug: classified in 03-filenames_plain1 by 'sys/fs/'

debug: moved to kernel because 'Need to be grouped with 407d7177057d152f18b31773eaade93311113505'

Build system

loader.kboot: Add man page
Sponsored by:         Netflix
a0d5b130ef8112393659b4d4300ef81e949c8618 Warner Losh 2026-09-01 14:45:54

debug: classified in 02-filenames_wildcards by '.*Makefile'

lib/libarchive/tests/Makefile: minor fixes
- Remove trailing whitespace
- Fix typo with variable referenced adding sources for `test_fuzz`.

MFC after:      2 weeks
edbb2e9d7a9aba7194dd0f37cede7aea51408f74 Enji Cooper 2026-09-01 19:02:06

debug: classified in 02-filenames_wildcards by '.*Makefile'

[tests] libarchive: mark `test_read_filter_lz4_raw_skip` broken
This test has not passed since 185becb1e1bd2657c156f78aeb52edac05ba5fb5
(the libarchive 3.8.9 upgrade).

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=273732
MFC after:      1 week
Reviewed by:    siva
Differential Revision:  https://reviews.freebsd.org/D59314
064d190cdac48465083da1798a36d923f50790ac Enji Cooper 2026-09-02 15:42:04

debug: classified in 02-filenames_wildcards by '.*Makefile'

oci: Install FreeBSD-pam in the runtime image
In 16.0/15.1, the PAM modules were split from FreeBSD-runtime into a
new FreeBSD-pam package.  FreeBSD-runtime does not install FreeBSD-pam,
which means if a user starts from runtime, then installs sshd, sshd will
fail to authenticate users because of missing PAM modules.

Since FreeBSD-pam is relatively small (about 230kB on amd64), and is
already part of FreeBSD-set-minimal, add it to the runtime image as
well.  Users who absolutely don't want this can still build their
own images without it.

MFC after:      1 week
Reviewed by:    dfr
Reported by:    Michael Johnson <ahze@ahze.net>
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59194
c85a2539cd18bfc88d88547773d919e116b8bd6d Lexi Winter 2026-09-02 16:19:32

debug: classified in 02-filenames_wildcards by 'release/.*'

vmimage.subr: Use makefs -N
By default, makefs uses the host environment's user and group databases
when creating filesystems.  This causes makefs to fail when trying to
create files owned by users or groups which don't exist in the host
environment, for example when creating a VM with packages pre-installed
which added their own users/groups.

Pass "-N ${DESTDIR}/etc" to makefs to point it at the user and group
databases from the image being created.

MFC after:      1 week
Sponsored by:   Amazon
7ca0c1eba2e4c49ac92499ef0f6adf27c8b930d4 Colin Percival 2026-09-02 16:37:58

debug: classified in 02-filenames_wildcards by 'release/.*'

vm_page_free.9: Remove references to vm_page_try_to_free()
That function was removed in commit 98549e2dc6fb0.

PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=288081
Fixes:  https://cgit.freebsd.org/src/commit/?id=98549e2dc6fb ("Centralize the logic in vfs_vmio_unwire() and sendfile_free_page().")
8304e68994c86fa392118e7bf569dd442d01e8fb Mark Johnston 2026-09-03 14:55:35

debug: classified in 02-filenames_wildcards by '.*Makefile'

tty_pts: reduce/correct libatf-c linkage
ATF_TESTS_C automatically adds the appropriate library to LDADD --
there's no need to manually append the same library.

MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59411
5b10c3c3e3d5125e09e35cd607d15a546d5ad581 Enji Cooper 2026-09-04 18:16:49

debug: classified in 02-filenames_wildcards by '.*Makefile'

Internal organizational stuff

git-arc: Fix locals
Reviewed by:  markj
Differential Revision:  https://reviews.freebsd.org/D59162
6217c9c6f3dd90bc6dd4f9b81f728a44664be47f Devin Teske 2026-09-02 01:37:55

debug: classified in 03-filenames_plain1 by 'tools/tools/git/'

git-arc: SC2223 DoS-via-glob hardening
Quote LOCALBASE and ARC_CMD default assignments so a poisoned
value cannot glob into :'s argv.

Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59130
4aeab132f6d8f38f5434315db22dbeb3072e5d2c Devin Teske 2026-09-02 01:38:44

debug: classified in 03-filenames_plain1 by 'tools/tools/git/'

Testing

tests/sys/kern/procdesc.c: mark grandchild var in pdopenpid_capmode() as volatile
The variable is written in the child process which shares the address
space with the parent.  The data flow must not be optimized by a compiler.

Reviewed by:    markj
Fixes:  https://cgit.freebsd.org/src/commit/?id=ddf62c83fc0a ("sys/tests/kern/pdopenpid: pdopenpid(2) is allowed in cap mode")
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59282
b3734c1386dd2b0ade1a7f20d9ebf5f62c01819e Konstantin Belousov 2026-08-30 23:46:27

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

tests/sys/kern/ktls_test: fix -Wsign-compare issue
Cast the size_t quantity used in a comparison to off_t to mute a
`-Wsign-compare` complaint that now occurs after ATF 0.22 [1].

MFC after:      2 weeks
Reported by:    clang
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59285
[1]: https://github.com/freebsd/atf/pull/72
505103215ee2e3e31d233b952633e5697ac5da5f Enji Cooper 2026-09-02 07:38:11

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

tests/sys/netinet/tcp_socket: fix build with ATF 0.22+
Confirm that creating clients/sockets was successful by testing the
result separate from the assignment and test that the return value is
not -1 instead of testing that the value returned is non-zero.

This fixes the build with [ATF 0.22+][1].

MFC after:      2 weeks
Reported by:    clang (-Wparenthesis)
Reviewed by:    tuexen, cc
Differential Revision:  https://reviews.freebsd.org/D59284
[1]: https://github.com/freebsd/atf/pull/72
4aea6ea2eb400737837ff8d22c25688f88c7966c Enji Cooper 2026-09-02 07:38:17

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

tests/netpfil: xfail ipfnat_local_redirect testcase
PR:           https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296944
Reviewed by:    cy
MFC after:      3 days
MFC to:         stable/15
Sponsored by:   The FreeBSD Foundation
8fab8b3ae35d2388adfedbfc7ef6f3c93d34ce1c Siva Mahadevan 2026-09-02 15:45:15

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

dtrace/tests: compile D sources at runtime on test target
Previously, we would precompile D test dependencies using the
host's dtrace, which unconditionally outputs ELF files in the
host's format. This breaks the cross-compile build with errors
like the following:

dtrace: failed to link script: incorrect ELF machine type for
object file: tst.usdt.pieo
--- usdt.o ---
*** Failed target: usdt.o

This patch moves compilation to runtime for all C-based testcases
that have a dependent D source file.

Reviewed by:    markj
MFC after:      1 week
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59030
60d78908f57cf2100d5aeafa7db5d97cda3c5607 Siva Mahadevan 2026-09-02 18:09:48

debug: Commit manually moved from "unknown" to "tests".

syslogd/tests: Amend a test to catch leaked process descriptors
This serves to catch the regression fixed by commit
1a669b66ddb4 ("syslogd: reap pipe children on config reload").

MFC after:      1 week
231dfc99a08874c269593c2e491ce16a618f4ed6 Mark Johnston 2026-09-02 14:33:37

debug: classified in 02b-filenames_wildcards2 by 'usr.sbin/.*/tests/.*'

fsck_msdosfs: add tests for the 32-bit boot block field decoding
Exercise each of the 32-bit BIOS Parameter Block and FSInfo fields that
readboot() decodes, using values whose most significant byte has its high
bit set.  Each case checks two things: that fsck_msdosfs(8) reports the
full unsigned 32-bit value back on stdout, and that nothing writes a
sanitizer runtime error to stderr.

The second check is what catches a byte-at-a-time decode.  Shifting such
a byte left by 24 is undefined, but every compiler we use wraps it into
the same bit pattern, so the decoded value alone cannot tell a correct
decode from an overflowing one.  In a WITH_UBSAN build bsd.sanitizer.mk
compiles with -fsanitize=undefined and -fsanitize-recover=undefined, so
the shift is reported on stderr and execution continues, which the test
can then assert on.  Against the byte-at-a-time decode these cases fail
in a WITH_UBSAN build and pass without it.

Note that the stderr check also fails on unrelated undefined behavior
that these images reach anywhere in fsck_msdosfs(8), which is intended.

MFC after:      1 week
c4f458da4411872df4968e02ca292389df462b7b Xin LI 2026-09-03 05:23:53

debug: classified in 02b-filenames_wildcards2 by 'sbin/.*/tests/.*'

fsck_msdosfs: add a test for reconnecting on volumes larger than 4 GiB
Build a 4.5 GiB FAT32 image whose LOST.DIR cluster sits exactly 4 GiB above
the single cluster of a PAYLOAD.BIN, so that truncating the offset of the
former to 32 bits yields the offset of the latter, then inject a lost cluster
chain and let fsck_msdosfs(8) reconnect it.

The test asserts both halves of the bug fixed in the previous commit: that
PAYLOAD.BIN's cluster is unchanged, and that a second pass no longer reports
the chain as lost, which it only stops doing once the directory entry reaches
the real LOST.DIR.

newfs_msdos(8) -C only calls ftruncate(2) and nothing outside the reserved
area, the FATs and a handful of clusters is ever written, so the image stays
sparse and costs about 2 MiB on disk.

The geometry is read back out of the BPB rather than assumed, so
newfs_msdos(8) stays free to lay the file system out differently; the test
fails with a clear message if the volume ever becomes too small to hold a
cluster a full 4 GiB beyond the data area.

MFC after:      1 week
37aec55d0a7165960f686e5277f030ab3d44cf45 Xin LI 2026-09-03 07:33:31

debug: classified in 02b-filenames_wildcards2 by 'sbin/.*/tests/.*'

Commit group #8: hwpmc: Add ATF regression tests for hwpmc EXTERROR diagnostics
hwpmc: Add ATF regression tests for hwpmc EXTERROR diagnostics

Root-only ATF program hitting negative allocate/attach/read-write paths
and asserting the exterr(3) text. AMD/IBS cases skip without the PMC
class; program skips without hwpmc.

Additional changes by mhorne@:
- Move and rename to the established test directory tests/sys/pmc
- Remove broken test amd_missing_pmu_flag; fixed by recent change
  6c4d9b9af1a3
- Add ATF_REQUIRE_FEATURE("exterr_strings") to skip the tests on kernels
  compiled without the strings
- Remove arch-conditional compilation; tests are properly gated by PMC
  class check
- Fix copyright formatting

Reviewed by:    Ali Mashtizadeh <ali@mashtizadeh.com>
Signed-off-by:  Andre Silva <andasilv@amd.com>
Co-authored-by: mhorne
Sponsored by:   AMD
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2180
e555692d1bbbe8918054746f21013fff6256974e Andre Silva 2026-06-12 15:39:16

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'


pmc_exterr_test: add MACHINE_ARCH check

The tests manipulate MD structure fields directly. Build these tests for
amd64 only.

Fixes:  https://cgit.freebsd.org/src/commit/?id=e555692d1bb ("hwpmc: Add ATF regression tests for hwpmc EXTERROR diagnostics")
22e27e307f8d16d9bdf3dc6f618ecf896994a082 Mitchell Horne 2026-09-03 17:45:34

debug: classified in 02-filenames_wildcards by '.*Makefile'

debug: moved to tests because 'Need to be grouped with e555692d1bbbe8918054746f21013fff6256974e'

Assign and test `malloc` result separately
The previous pattern is cited as an issue with ATF 0.22+ when using
clang/gcc after [1].

MFC after:      2 weeks
Reported by:    clang (-Wparenthesis)
Differential Revision:  https://reviews.freebsd.org/D59274

[1]: https://github.com/freebsd/atf/pull/72
2561c468c11309fbc0a097d3f4fcf0bd3bf28b8f Enji Cooper 2026-08-19 08:38:46

debug: classified in 03-filenames_plain1 by 'lib/libc/tests/'

tests/sys/kern/ssl_sendfile: fix the build with ATF 0.22+
Code that assigned variables as part of ATF_\* are no longer
permitted due to changes introduced in [ATF 0.22][1].

MFC after:      2 weeks
Reported by:    clang/gcc (-Wparenthesis)
Differential Revision:  https://reviews.freebsd.org/D59286

[1]: https://github.com/freebsd/atf/pull/72
0cf1002113b90b74ac2c1973ca649632c8c7552a Enji Cooper 2026-08-19 15:21:25

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

Style, typos, and comments

These could go in other categories, but it's more clear if they're here instead.

rtwn: fix typo s/rtwm/rtwn
b2fd2f90637547b05c1fe1cea698a1e16ee274fc Ahmad Khalifa 2026-06-04 16:06:35

debug: classified in 01-style by '[tT]ypo'

nd6: Fix a typo on MAX_NEIGHBOR_ADVERTISEMENT comment
Fixes:        https://cgit.freebsd.org/src/commit/?id=7f3b46fe54f1 ("ndp: Add support for Gratuitous Neighbor...")
cc7901791cbccee40cd0a5908ae0d0b33d4a586e Pouria Mousavizadeh Tehrani 2026-09-04 13:09:17

debug: classified in 01-style by '[tT]ypo'

sys/kern/kern_fork.c: fix typo in error message
f63ed60033c83b9dd69797c260b392ac8706c8df Stefan Eßer 2026-09-06 06:52:08

debug: classified in 01-style by '[tT]ypo'

whereis(1): Fix style(9)
Reported by:  ngie@
Differential Revision:  https://reviews.freebsd.org/D42156
88db004d3369f1bc9a6cdf1ead873b2d63413d23 Fernando Apesteguía 2026-09-06 16:55:16

debug: classified in 01-style by '[sS]tyle'

Contrib code

contrib/lutok: update from 0.4 to 0.6.2
More information about what's included in the new release can be found
[here](https://github.com/freebsd/lutok/compare/lutok-0.4...lutok-0.6.2).

MFC after:      1 week
Merge commit '447d4fe61d8bf55ffa21698ecee0ac51010a9a0f'
132f818ddbf457ee67d502cd89b5a18e0a34713d Enji Cooper 2026-08-31 16:29:06

debug: classified in 03-filenames_plain1 by 'contrib/'

ath10k: remove some early FreeBSD-specific debugging
The extra DELAY seems to no longer be needed and the dump_stack()
is definitively a problem now.  Remove all this.

Sponsored by:   The FreeBSD Foundation
MFC after:      3 days
523c3992cf9e50dce7948372ef703f0057e22561 Bjoern A. Zeeb 2026-02-19 23:21:10

debug: classified in 03-filenames_plain1 by 'sys/contrib'

contrib/expat: import expat 2.8.4
Changes: https://github.com/libexpat/libexpat/blob/R_2_8_4/expat/Changes

Security:       CVE-2026-66046
Security:       CVE-2026-76641
Security:       CVE-2026-76957
Security:       CVE-2026-76956
MFC after:      1 week
f89b0ce5fd0786f5ed306d9cdf6f019942ae0d8a Philip Paeps 2026-09-01 02:25:25

debug: classified in 05-summary-prefix by 'contrib/'

Commit group #9: MFV: file 5.48
MFV: file 5.48

MFC after:      1 week
7af41682a96bf7058b82665c33bb9b1bfa079c17 Xin LI 2026-09-03 04:29:02

debug: classified in 05-summary-prefix by 'MFV:'


libmagic: Add swap.c and magic.h to SRCS.

file 5.48 added swap.c and swap.h for byte-swapping operations, which are
required on hosts that lack <byteswap.h> or <sys/bswap.h> (e.g. macOS cross-building
or older FreeBSD bootstrap environments).

Also add magic.h to SRCS so object files depend on the generated header
before compiling, avoiding falling back to the host's /usr/include/magic.h
during parallel builds.

Reported by:    wosch
MFC after:      1 week
Fixes:          https://cgit.freebsd.org/src/commit/?id=7af41682a96b ("MFV: file 5.48")
8929675e11c0c64ff96a2441082794980c9c6b2e Xin LI 2026-09-05 01:03:17

debug: classified in 02-filenames_wildcards by '.*Makefile'

debug: moved to contrib because 'Need to be grouped with 7af41682a96bf7058b82665c33bb9b1bfa079c17'

contrib/kyua: fix -Wshadow error
This fixes the build with gcc 14:

/usr/src/contrib/kyua/engine/prepare/prepare_all.cpp:56:16: error: declaration of 'handler' shadows a member of 'engine::prepare::prepare_all' [-Werror=shadow]
   56 |     for (auto& handler : prepare::handlers()) {
      |                ^~~~~~~
In file included from /usr/src/contrib/kyua/engine/prepare/prepare_all.hpp:35,
                 from /usr/src/contrib/kyua/engine/prepare/prepare_all.cpp:29:
/usr/src/contrib/kyua/engine/prepare/prepare.hpp:51:15: note: shadowed declaration is here
   51 | class handler {
      |               ^

Fixes:  https://cgit.freebsd.org/src/commit/?id=edb230c4af499203d7a6894b3711fe6574b26040

Reviewed by:    igoro, rlibby, ngie
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59346
a73bb621ca361edc678bbf49f3ca1acca8aa0344 Siva Mahadevan 2026-09-05 14:12:11

debug: classified in 03-filenames_plain1 by 'contrib/'

Reverted commits

-- no commits in this category this week --

Unclassified commits

Not classified automatically, and waiting for manual attention.

-- no commits in this category this week --

Technical notes

Dates:

Automatic grouping:

Automatic categories:

Source code:


Generated with commits-periodical 0.21 at (time removed for reproducibility).

This work is supported by Tarsnap Backup Inc.

Alternate version: 2026-08-31 (release)