FreeBSD git weekly: 2026-09-07 to 2026-09-13

Introduction

This is a display of mostly-automatically-classified git commits from 2026-09-07 to 2026-09-13.

Table of contents and commits per category:

(3) Highlighted commits (these are copies, not in stats)
0 0.0% Userland programs
36 16.1% Documentation
58 26.0% Hardware support
15 6.7% Networking
34 15.2% System administration
9 4.0% Libraries
1 0.4% Filesystems
37 16.6% Kernel
9 4.0% Build system
5 2.2% Internal organizational stuff
6 2.7% Testing
5 2.2% Style, typos, and comments
6 2.7% Contrib code
2 0.9% Reverted commits
0 0.0% Unclassified commits
223 100% total
Technical notes about this page

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.

EC2: Add desktop flavour
Desktop AMIs have xrdp enabled and boot to a KDE desktop; they are
as compatible as possible with EC2 Windows AMIs, setting a random
password and printing it to the console in encrypted format to be
retrieved using the EC2 GetPasswordData API.

Two rc.d scripts are included in this commit which will not exist
in the long term: ec2_addpass will become part of the ec2-scripts
package, and ec2_desktop_extras will go away once its functionality
is included elsewhere.

MFC After:      1 month
Relnotes:       yes
Sponsored by:   Amazon
a9710349513f4c6ccb8bcff34fa9ea186fae6114 Colin Percival 2026-09-07 07:54:04
dhclient(8): Add support for IPv6-Only option (RFC 8925)
Accept and validate the ipv6only option. When dhclient receives this
option and IPv6 connectivity is available, stop the DHCP configuration
process and wait for the duration specified by the option before
restarting DHCP discovery.

If the address was previously leased, disassociate it and send a
DHCPRELEASE packet.

Use netlink to check for IPv6 connectivity.

Also, unregister ignored options from default PRL.

Reviewed by:    ziaee, kfv
Tested by:      Marek Zarychta <zarychtam@plan-b.pwste.edu.pl>
Relnotes:       yes
Differential Revision: https://reviews.freebsd.org/D56637
37fd3fcaaf0ee3e1066ef9d4fb8b9245f7288743 Pouria Mousavizadeh Tehrani 2026-09-11 07:17:01
amd64, powerpc: Enable tpm(4) in supported kernels
tpm(4) was removed from amd64 GENERIC because it broke suspend and
resume.  The preceding lifecycle, state-save, interrupt, locality, and
teardown fixes address those failures for both TPM 1.2 and TPM 2.0.

Restore the driver to amd64 GENERIC and MINIMAL, where TPM entropy
harvesting remained enabled.  Enable the driver and entropy harvesting
in the MPC85XX and QORIQ64 configurations, which already provide FDT,
spibus, and the platform SPI controller required by FDT-attached TPMs.
Leave the generic AIM and POWER configurations unchanged because they
have no TPM attachment bus.

The TPM 1.2 path completed repeated S3 cycles and command tests on
ThinkPad T430 and T440p systems.  The TPM 2.0 path completed repeated
device and full-system suspend/resume cycles on a ThinkPad P51.  The
PowerPC configuration matrix was checked to retain tpm(4) only where its
FDT SPI attachment path is present.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291067
Reviewed by:    kevans
Tested by:      Marek Zarychta <zarychtam_plan-b.pwste.edu.pl> (tpm1.2)
Fixes:          https://cgit.freebsd.org/src/commit/?id=16f8ea6a81b5 ("amd64: Remove tpm(4) from GENERIC for now")
MFC after:      1 month
Relnotes:       yes
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59247
cb2964f840e873d03a0739f41eed5921922f93a0 Kevin Bowling 2026-08-28 00:14:02

Userland programs

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

-- no commits in this category this week --

Documentation

Man pages, release notes, etc.

pw(8): Brace the name-or-id synopsis so it matches the code
An unbraced pipe list made -n look like it could take a uid (or gid).
Use braces for a single choice of name or id, and keep -u newuid /
-g newgid on the name invocation only. Drop the USER/GROUP OPTIONS
sentences that said -n could be a numeric id.

PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269193
MFC after:      3 days
Reviewed by:    bapt
Differential Revision:  https://reviews.freebsd.org/D59472
fb144a705792dcc154ad2f75dfa21fbda255913d Devin Teske 2026-09-07 08:00:47
rtnetlink(4): Qualify VF status descriptions
Driver-specific extension namespaces are optional.  Describe their
role without implying that every provider supplies one.

Clarify that the VLAN count excludes membership installed implicitly by
the PF without implying that an explicit VID 0 request cannot consume a
reported filter.

Sponsored by:   BBOX.io
949029692f361fb5a96b24cfc46cee74be2b3a9c Kevin Bowling 2026-09-06 14:13:23
pdfork.2: document kern.pdfork_implicit_nowaitpid
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59349
661d1135e4ed12d6017220ea654ae67a6956dc73 Konstantin Belousov 2026-09-03 17:56:51
nvd.4: Canonicalize SYNOPSIS, TUNABLES, tag SPDX
MFC after:    3 days
Event:          Berlin Hackathon 202609
04f53c5fa4cc8109fb263c6eed3b3c45099411f5 Alexander Ziaee 2026-09-06 17:04:59
pw.conf: Describe better + tag SPDX
MFC after:            3 days
Reported by:            Artem Bunichev <temcbun@gmail.com>
Differential Revision:  https://reviews.freebsd.org/D58329
0e390df45468f19191775083a1505e3eb042f6bc Alexander Ziaee 2026-09-07 22:28:19
sort.1: Fix default memory buffer size
PR:           https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261496
Fixes:          https://cgit.freebsd.org/src/commit/?id=554442439dd0 ("Change the memory heuristics")
MFC after:      3 days
Reported by:    wosch
4fb4be7e36428058c6abaa29f359b3d70ae60f0a Alexander Ziaee 2026-09-08 11:36:26
pfctl(8): Remove superflous parenthesis
Since apropos(8) uses case-insensitive regular expressions by default
for both manpage names and descriptions, pfctl appears in results
regardless of the parenthetical initialism.

MFC after:      1 week
Reported by:    ziaee@
84eac60caa239d1ca4602ab0e5320df1afa065ff Daniel Ebdrup Jensen 2026-09-09 11:59:14
ipfw.8: grammar
055a726ca6324eead24df4177effd9c69755f386 Maxim Konovalov 2026-09-09 17:21:06
ipfw.8: more grammar fixes
b31db8d8de6785804f6b552bc9d7d1960a47eea5 Maxim Konovalov 2026-09-09 17:55:26
ipfw.8: clarify a difference between reset and reset6 actions
009940e3d4d398f0cba8b689d284bd8585e2ad5a Maxim Konovalov 2026-09-10 16:53:31
Commit group #0: rc.conf.5: Improve NOAUTO configuration + tag SPDX
rc.conf.5: Improve NOAUTO configuration + tag SPDX

- Show how to start a NOAUTOed interface
- "configured" is not quite right, try to improve that

MFC after:              3 days
Event:                  EuroBSDcon Devsummit 2026
Reviewed by:            adrian
Discussed with:         Antranig Vartanian <antranigv@freebsd.am>
Differential Revision:  https://reviews.freebsd.org/D59571
fa7094c5b06fe31a025906bcee922a46c1b36ed6 Alexander Ziaee 2026-09-11 06:17:39

rc.conf.5: Fix typo

Fixes:          https://cgit.freebsd.org/src/commit/?id=fa7094c5b06f ("Improve NOAUTO configuration")
MFC after:      3 days
Reported by:    Herbert J. Skuhra <herbert@gojira.at>
Event:          EuroBSDcon Devsummit 2026
45f4abef5eab5b439f8af272b68171ca5803498d Alexander Ziaee 2026-09-11 09:59:37
game controller manuals: Canonicalize SYNOPSIS
While here, tag SPDX.

Event:                  EuroBSDcon Devsummit 2026
MFC after:              3 days
Reviewed by:            wulf
Differential Revision:  https://reviews.freebsd.org/D59256
b7541acacb662436591277977317072a4eaa6dc3 Alexander Ziaee 2026-09-11 10:04:08
iflibdd(9): Clarify resume during suspend rollback
The resume callback also runs when suspend fails, without an intervening
PCI power-state transition or configuration-space restore.  Document
that drivers must not assume either has occurred.

MFC after:      2 weeks
Sponsored by:   BBOX.io
f496cd95cf9e1ed68b0df3ae2f7a24fc0f66aa6b Kevin Bowling 2026-09-11 20:16:45
wpa_supplicant.8: Renew SEE ALSO + tag SPDX
- remove old wifi drivers, these are very old and we have many more
- add quick start guide to connecting to wifi

Event:                  EuroBSDCon 2026
MFC after:              3 days
Reviewed by:            bz, emaste
Differential Revision:  https://reviews.freebsd.org/D59615
d5c09e32ce8aa625ab9429c5fe87137fb92bff53 Alexander Ziaee 2026-09-12 13:22:59
sh.1: Renew description of case
Update case synopsis, split description into paragraphs, improve markup,
light wordsmithing, and import exit status line from NetBSD.

While here, remove the '-' from the beginning of this document.

PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298329
Event:  EuroBSDcon 2026
Fixes:  https://cgit.freebsd.org/src/commit/?id=c9afaa63894e ("Add case statement fallthrough")
Fixes:  https://cgit.freebsd.org/src/commit/?id=f7a9b7fe3a8d ("Allow a left parenthesis before patterns in case blocks")
Fixes:  https://cgit.freebsd.org/src/commit/?id=e00e16ad7f86 ("Allow empty case/esac statements")
MFC after:      3 days
Reviewed by:    bcr, jilles, Artem Bunichev <temcbun@gmail.com>
Differential Revision:  https://reviews.freebsd.org/D59518
35973eceff091275d8692283ae3a1256a6317525 Alexander Ziaee 2026-09-12 14:44:34
Commit group #1: glabel.8: clarify volume labels, metadata identifiers, and generic GEOM labels
glabel.8: clarify volume labels, metadata identifiers, and generic GEOM labels

Change description of manual page to add precision. Split out
filesystem, GPT and GEOM labels.  Give an example for each filesystem
for the program to show how to set a label. Clarify examples and use ada
device names consistently.

PR:                         https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262207
Differential Revision:      https://reviews.freebsd.org/D51030
05a2d40ac240a2f3c24b8efeb501fbd371d447b8 Benedict Reuschling 2026-06-28 18:45:17

glabel.8: Fix description, improve table, tag spdx

- restore missing search keyword "disk", GEOM provider is a lgoical disk
- editorial nits on file system table to improve search and rendering
- correct msdosfs terminology, they are FAT filesystems
- use consistent spelling of filesystem

Fixes:          https://cgit.freebsd.org/src/commit/?id=05a2d40ac240
Event:          EuroBSDcon 2026
MFC after:      3 days
Discussed with: bcr, vishwin
b0a216ae3a44f5c18c575d457c66f9ba10021710 Alexander Ziaee 2026-09-13 10:47:30
manpages: Convert links from http to https when valid
Many of our man pages contain links to websites that are still using
http. Convert them to use https. I skipped those that:
- were not available anymore,
- did not provide an SSL page,
- had caused an SSL validation error,
- were not the original link anymore (i.e. aquisition)
- where the site structure had changed, causing 404s on the new site

Event:                  EuroBSDcon 2026
Reviewed by:            carlavilla (very fast, thanks for that)
Differential Revision:  https://reviews.freebsd.org/D59629
5de4183c0db0ca7802d84a632c4c91cddaf6b595 Benedict Reuschling 2026-09-13 08:57:20
aq.4: Canonicalize SYNOPSIS
Event:                EuroBSDcon 2026
MFC after:      3 days
116c7272e0933e643a02b184ec859047220e212e Alexander Ziaee 2026-09-13 11:39:34
vmx.4: Canonicalize device number
Event:                EuroBSDcon 2026
MFC after:      3 days
1bf7d54e416cad3c89eed0e781a85d15e6864920 Alexander Ziaee 2026-09-13 12:29:33
u3g.4: Canonicalize SYNOPSIS, fix stray hyphen
Event:                EuroBSDcon 2026
MFC after:      3 days
7ec06b4d9726188c7315cf1b2d5b69fec4a385b4 Alexander Ziaee 2026-09-13 12:34:47
uark.4: Canonicalize SYNOPSIS + tag SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
ca87782318d2e14bb07acfacd11c0be63a5e64a6 Alexander Ziaee 2026-09-13 12:36:30
uart.4: Conicalize sections a bit better
Sections are in all caps, and subsections are in title case. Sections
also have a standard order. This manual could certainly be reformatted
more to conform further to our conventions, but this is a step in the
right direction. While here, remove the stray hyphen from the beginning
of this document.

Event:          EuroBSDcon 2026
MFC after:      3 days
2f2938d2654e3c41641c9fce4c8b08b38acfdcc6 Alexander Ziaee 2026-09-13 12:45:50
uath.4: Canonicalize SYNOPSIS
Event:                EuroBSDcon 2026
MFC after:      3 days
2c92e4c931e7f12f1dc9b82036b26295c1f4d37e Alexander Ziaee 2026-09-13 12:49:13
uath.4: Canonicalize FIRMWARE -> FILES
Event:                EuroBSDcon 2026
MFC after:      3 days
2b67a5b5273e0af7c9dbf9f92b2b8c7b1940f9c3 Alexander Ziaee 2026-09-13 12:50:22
ubsa.4: Canonicalize SYNOPSIS + tag SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
01e9a8bc8a124d3e19280d82b1ce16bd69237627 Alexander Ziaee 2026-09-13 12:52:00
ubser.4: Canonicalize SYNOPSIS + tag SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
372b94623ca48d7ceae02175b5ffd635e62c2c58 Alexander Ziaee 2026-09-13 12:53:46
ubtbcmfw.4: Canonicalize SYNOPSIS + tag SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
28bbe93c5bb5e6fb34bf680341faa9c869417320 Alexander Ziaee 2026-09-13 15:23:03
ucom.4: Canonicalize SYNOPSIS + tag SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
08ab66b3f69391e753c6f5449105d61ce81cd0ed Alexander Ziaee 2026-09-13 15:31:14
ucycom.4: Canonicalize SYNOPSIS
Event:                EuroBSDcon 2026
MFC after:      3 days
c64f6133ff083feb1c9451e12af5b7de0c2d6a41 Alexander Ziaee 2026-09-13 15:31:58
udav.4: Canonicalize SYNOPSIS + "Fast" Ethernet
Event:                EuroBSDcon 2026
MFC after:      3 days
6fe1d51aedb086e49bb338ed87861abdcce416f2 Alexander Ziaee 2026-09-13 15:34:30
udbp.4: Canonicalize SYNOPSIS, structure, SPDX
Event:                EuroBSDcon 2026
MFC after:      3 days
bba2aebcebc1d46b15e1b6d86c041186dc8d49f0 Alexander Ziaee 2026-09-13 15:41:51
udl.4: Canonicalize SYNOPSIS
Event:                EuroBSDcon 2026
MFC after:      3 days
7b70103a6303b53ea8130cfbb89a3eb2e476e2e5 Alexander Ziaee 2026-09-13 15:44:43
tslog.4: Canonicalize SYNOPSIS
Also, add the missing blank comment line at the top of the file.

Event:          EuroBSDcon 2026
MFC after:      3 days
dc867c353c8b423131f7f6a7f687c86713bf0666 Alexander Ziaee 2026-09-13 15:46:31
tpm.4: Canonicalize SYNOPSIS and HARDWARE
f49dc19881d853b26dd675127f579f923dc87de2 Alexander Ziaee 2026-09-13 15:49:41

Hardware support

Hardware drivers and architecture-specific code.

iavf: Probe the Hyper-V VF device ID
The shared code already recognizes IAVF_DEV_ID_VF_HV and handles it
through the regular iavf register and virtchnl paths, but the PCI probe
table omits it.  Add the missing entry so the driver attaches.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=239849
MFC after:      1 week
d983dc521b6ecaf054bdbe938bd1bf079030f76d Andrey V. Elsukov 2026-09-07 04:42:09
e1000: Fence DMA when hardware reset fails
iflib releases queue mappings after IFDI_STOP() returns.  If a
Physical Function reset fails, returning with PCI bus mastering
enabled can therefore leave the device able to access mappings which
the framework is about to recycle.

Disable bus mastering and drain pending PCIe transactions when reset
fails during initialization or stop.  Re-enable and verify bus
mastering only after a later reset succeeds and before queue
programming begins.  Treat inability to establish the DMA fence as a
fail-stop invariant violation.

MFC after:      2 weeks
Sponsored by:   BBOX.io
f51ad3a266ec1ea71c24329dbffdb66a3708b214 Kevin Bowling 2026-08-26 09:21:56
sound: Prefer idle primary channels when allocating
dsp_chn_alloc() stopped at the first primary channel that was either
idle or already had vchans. Since the list is walked in order, the first
channel matched both conditions once it had been used, so every client
after the first was stacked onto it as a vchan and the remaining primary
channels were never allocated at all.

This is invisible on devices with a single primary channel, but not on
those which provide several. snd_emu10kx(4), for instance, registers
four primary channels for its front device, each able to run with its
own rate.

Look for an idle primary channel first, and only fall back to sharing
one that already has vchans when there is none left.

Sponsored by:   The FreeBSD Foundation
MFC after:      2 weeks
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59084
5e02679f03cda224f59adcf83d5308fffa6d11a1 Christos Margiolis 2026-09-07 13:04:09
snd_dummy: Bump primary channel count
Makes it easier to test scenarios involving more than 1 primary channels
per direction.

Sponsored by:   The FreeBSD Foundation
MFC after:      2 weeks
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59085
358fe149f591028945a8e5a51dff9121a2358c85 Christos Margiolis 2026-09-07 13:04:22
snd_emu10kx: Make sure the block count and size cover the whole buffer
The playback voices always loop over the whole EMU_PLAY_BUFSZ buffer,
but emupchan_setblocksize() only recorded the new block size and left
the block count as it was set up by emu_vinit(). The blocks then no
longer covered the whole buffer, and the part they left out was played
without ever being written to, which became audible as distortion once
playback started going through a virtual channel.

Resize the buffer, so that the block count and size always cover it.

Fixes:          https://cgit.freebsd.org/src/commit/?id=02d4eeabfd73 ("sound: Allocate vchans on-demand")
PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=287687
MFC after:      1 week
Sponsored by:   The FreeBSD Foundation
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D59444
a7258157e1a20957af23332814197ea723f5778d Christos Margiolis 2026-09-07 14:48:21
amd64/arm64 pmap: consistently clear PGA_WRITEABLE
We don't consistently clear PGA_WRITEABLE on fictitious, managed pages.
Some functions do, e.g., pmap_remove_all(), but several do not.  At
worst, this is just a pessimization, but there is no good reason to be
inconsistent.  Clear PGA_WRITEABLE in those that previously did not by
introducing (and using) the helper function pmap_page_is_mapped_locked()
that implements the correct test.

Reviewed by:    kib, markj
MFC after:      3 weeks
Differential Revision:  https://reviews.freebsd.org/D59466
37321270b630d891e48851f81dd6d077ebd6b635 Alan Cox 2026-09-07 07:31:45
mlx5ib: use the hardware Toeplitz id when creating an RSS TIR
create_rss_raw_qp_tir() wrote MLX5_RX_HASH_FUNC_TOEPLITZ (the
userspace ABI flag, value 1) into tirc.rx_hash_fn.  That field takes
the hardware encoding from mlx5_ifc.h, where 1 is INVERTED_XOR8 and
Toeplitz is MLX5_TIRC_RX_HASH_FN_HASH_TOEPLITZ (2).

Reviewed by: kib, slavash
Sponsored by: Nvidia Networking
MFC after: 1 week
36256f77c7de2bbfdff6922648f4d445d7212dc2 Ariel Ehrenberg 2026-09-02 13:12:32
usbdevs: add TP-Link Archer T4U ver 3
USB Vendor:Product 0x2357:0x0115

The data was provided by Pavel Timofeev (timp87 gmail com)
and the device will be supported by rtw88 USB (rtw8822bu.c)
in the future.

MFC after:      3 days
95e9c3b1aa9fb2e78295e5053e1e84afad938e31 Bjoern A. Zeeb 2026-09-07 21:28:13
bce_vhci: fix duplicate endpoint queue registration, ratelimit failure logging
bce_vhci_endpoint_create() was registering both the IN and OUT
submission queues on every call, regardless of which direction
the endpoint actually needed.
The per-stage firmware registration failures weren't rate-limited,
so a stuck registration will spam the console.

Tested on:
MacBookPro15,2
Macmini8,1
MacBookPro15,3
MacBookPro16,2

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D58831
a14a81016b14b54a9cd660bb76ef505c6f70dd73 Abdelkader Boudih 2026-09-08 00:19:36
nvme: name the Create I/O queue cdw11 fields, use Medium QPRIO
The Create I/O queue commands carried magic 0x1/0x3 cdw11 values, and
the implicit QPRIO of zero classifies every I/O queue Urgent the
moment weighted round robin arbitration is enabled. No functional
change with the round robin default.

Approved by: ngie (co-mentor)

Reviewed by:    ngie, imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59153
82f70a0070a30a448eeeb47471749c8b382273c3 Abdelkader Boudih 2026-09-08 00:20:16
nvme: limit I/O queue trackers to Identify MAXCMD
MAXCMD is the maximum number of commands the controller processes at
one time for a particular I/O queue. Allocating more trackers than
that only queues commands inside the controller. Controllers
reporting 0 are unaffected.

Approved by: ngie (co-mentor)

Reviewed by:    ngie, imp
Differential Revision:  https://reviews.freebsd.org/D59154
f195b9f3f6f768ff2ae1e4523cab59a305666491 Abdelkader Boudih 2026-09-08 00:20:53
tpm: crb: make the Pluton startmethod more resilient
The original implementation assumed that the start/reply doorbells
lived within the device _CRS space, but that isn't always the case.  On
my AMD Ryzen 7640U-based frame.work laptop, device memory runs from
0xc0500000-0xc0500fff while the doorbells are up around 0xc0508000.

Stop sanity checking the addresses and just map them in to work reliably
whether they're within the device range or not.

pluton_wait_reply is cribbed from tpm_wait_for_u32, but rewritten
slightly to read in just one place and to read one last time before
giving up at the end of the timeout, just in case.

Reviewed by:    kbowling
Differential Revision:  https://reviews.freebsd.org/D59327
6af3031c951614f2a42dfd67ce2c3a48ee8314ae Kyle Evans 2026-09-09 09:00:28
Commit group #2: arm64
arm64: Fix the CTR_EL0 field names

Use the field names from the Arm Documentation for the CTR_EL0
register. These will later be generated from a BSD Licensed JSON file
so to reduce the diff for that rename now.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59173
747c3779630f7e25ac40ec68c58e24ca3dd5c1ff Andrew Turner 2026-09-07 23:28:54

arm64: Fix the ICC_SGI1R_EL1 field names

Use the field names from the Arm Documentation for the ICC_SGI1R_EL1
register. These will later be generated from a BSD Licensed JSON file
so to reduce the diff for that rename now.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59174
e1f684a1603618b63640bcaf35da6e14ef3edb54 Andrew Turner 2026-09-07 23:29:49

arm64: Fix the ID_AA64MMFR1_EL1.CMOW name

This was incorrectly names CMOVW. Remove the unneeded 'V'.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59175
4837a14b08e290dc4f6152a97cf1ad5d4cb0e16f Andrew Turner 2026-09-07 23:58:18

arm64: Remove ID_AA64PFR0_GIC_BITS

It's unused since 05f6f65c3bda ("arm64: add CHECK_CPU_FEAT() for
checking feature support in assembly"). It's been replaces with a
commonly named ID_AA64PFR0_GIC_WIDTH macro.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59177
d9106d74ff7636521fb9fc0d307632505902eead Andrew Turner 2026-09-07 23:59:11

arm64: Rename some ID_AA64DFR0_EL1 macros

These macros are used to extract the number of breakpoints and
watchpoints from the register. Rename them to not conflict with the
common meaning of an _VAL macro in this file.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59178
fe659a889617de129461b19e60a14a751e1ff02e Andrew Turner 2026-09-08 00:00:00

arm64: Add ICC_SGI1R_IRM_VAL and use it

This will be the name of the generated macro. As we only need to check
if this field is set or not use the common ICC_SGI1R_IRM_VAL name.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59179
5c9daa5451874c1492446dac01cc0f63eb70c4cf Andrew Turner 2026-09-08 00:00:23

arm64: Fix the capitalization of CurrentEL

Use the same capitalization as the Arm documentation.

Reviewed by:    Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59180
deb43dafdcd2805a59e7ce29327279c8357dbe03 Andrew Turner 2026-09-08 00:00:32

arm64: Move the CNTV_CTL_EL0 fields to armreg.h

They are architecturally defined, so should be in the common location.

Reviewed by:    emaste, Kajetan Puchalski <kajetan.puchalski@arm.com>
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59181
93a08bf12cf501d03f9938fb813466525b708eea Andrew Turner 2026-09-08 00:00:42
arm64/vmm: vgic_v3: Fix value of ICH_VTR_EL2.PREbits
ICH_VTR_EL2.PREbits contains the number of virtual preemption bits
implemented minus one, analogous to ICH_VTR_EL2.PRIbits. Unlike PRIbits,
the macro for PREbits does not account for "minus one". Make the two match.

Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2391
a890eb42ae825d2711695a65aa8f604b7011f5a2 Kajetan Puchalski 2026-08-27 12:52:47
arm64: Fix definition of CLIDR_EL1_op0
Fix incorrect opcode on CLIDR_EL1.

Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2400
5d57f8a9d3d8fb8045dc02a7a77eaa64ca3f322f Kajetan Puchalski 2026-09-02 13:26:22
arm64/pmap: Fix invalidate_icache condition in stage2 fault
pmap_stage2_fault is supposed to invalidate the icache if it is
accessing an executable page. Instead, the condition currently checks
whether execution is disallowed at any EL. Make it check whether
execution is allowed at any EL to match the intended behaviour.

Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2416
728d9f322935905c09236e8312b3268b6ff8691b Kajetan Puchalski 2026-09-08 11:21:52
arm64: Add GICv5 GSI definitions
Reviewed by:  andrew
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59170
038843a1c3cb37e76c331719ff246e66959146ed Sarah Walker 2026-08-04 12:37:07
sys: arm64: acpica: Add support for GICv5 ITS & IWB nodes
Reviewed by:  andrew
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59168
e8aebac4645348b520e7d00c3eed59f1de228b87 Sarah Walker 2026-08-04 12:33:46
arm64: busdma_bounce: Only use bufzone if it can meet requested alignment
Reported by:  alc
Tested by:      alc
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D59476
b60c5233770cdbec77596c81e031cf874267efd4 Sarah Walker 2026-09-08 03:06:18
hwpmc: add MPERF/APERF MSR support for AMD/Intel CPUs
Add support for reading the MPERF (MSR 0xE7) and APERF (MSR 0xE8)
model-specific registers on AMD/Intel CPUs through hwpmc(4). These
counters track maximum and actual performance frequency respectively,
and are used to compute effective CPU frequency scaling independent
of the nominal TSC rate. The name of the class was chosen as PERF
because later support for other PERF MSRs can be added to the same
class.

Extend libpmc(3) to expose the AMD/Intel MPERF/APERF counters added
to hwpmc(4) in the companion kernel change, so userland consumers
(pmcstat(8), etc.) can allocate and read these events by name.

Document the new PERF class and its MPERF/APERF counters in a new
pmc.perf.3 manual page, describing their semantics and how to read
them via pmc(3) and pmcstat(8).

Bump PMC_VERSION_MINOR.

Signed-off-by:  Anderson Nascimento <anascime@amd.com>
Reviewed by:    Ali Mashtizadeh <ali@mashtizadeh.com>, mhorne
Reviewed by:    ziaee (manpages)
Sponsored by:   AMD
Differential Revision:  https://reviews.freebsd.org/D58647
5369f8e73eff4772b133284012cb810e50d7c018 Anderson Nascimento 2026-09-03 17:51:38
dpaa2: Allocate DMA tag per Rx buffer
Previously each channel allocated its own set of buffers using the
channel's DMA tag which causes a DMA lock contention under load.
Even a single saturated 1 Gbps link caused ~50,000 adaptive
mutex spin events (as per lockstat) per second. With the proposed
approach there's no more contention on the channel's DMA mutex and the
adaptive mutex spin events dropped to ~6,000/s.

Stress test where iperf3 pushed as much traffic as possible to the 4
ports revealed that throughput drops from expected 940 Mbps down to
600-800 on each link with the "bounce pages lock" generating ~110,000
adaptive mutex spin events per second, but this is to be addressed
later on.

Tested by:              flo_purplekraken.com, gnikl_justmail.de, bofh@
MFC after:              3 weeks
Differential Revision:  reviews.freebsd.org/D59463
Event:                  EuroBSDcon Devsummit 2026
94a6919efda0638bd35a2cae2c4748a91c7fce66 Dmitry Salychev 2026-08-26 13:34:36
dpaa2: Make cleanup budget values sysctl(9) tunable
Reviewed by:          dsl
Approved by:            dsl
Obtained from:          flo_purplekraken.com
MFC after:              3 weeks
Differential Revision:  https://reviews.freebsd.org/D59497
Event:                  EuroBSDcon Devsummit 2026
7f79802bf93140c42f8b03aa7a943dcb1c064796 Dmitry Salychev 2026-09-10 12:13:37
cxgb(4): remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    np
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59545
d5047ddeddab45923ff4870cf9a0e158619e3a30 Siva Mahadevan 2026-09-10 14:37:06
ig4: Add Lunar Lake-M I2C controllers 4 and 5
Commit 851dffef532a added the Lunar Lake-M I2C controllers 0 through 3
(0xa878-0xa87b), which sit on PCI device 0x15.  The platform exposes two
further controllers at 0xa850 and 0xa851 on PCI device 0x19, reported by
Intel as I2C #4 and #5.  This mirrors the layout already handled for
Arrow Lake-U, where both the 0x777x and 0x775x ranges are listed.

On an HP OmniBook X Flip 16-as0xxx (Core Ultra 9 288V) the firmware
enables only four of the six controllers, and both HID devices sit on
the two that were missing: an ELAN2514 touchscreen on controller 4 and
a SYNA3503 touchpad on controller 5.  Neither attaches without this
change, so the machine has no working pointing device.

Like the other four, these use the Tiger Lake revision of the I2C IP;
Linux treats 0xa850/0xa851 identically to 0xa878-0xa87b in
intel-lpss-pci.c.

Tested on:      HP OmniBook X Flip 16-as0xxx (Intel Core Ultra 9 288V)
Reviewed by:    vexeduxr
MFC after:      2 weeks
Signed-off-by:  Kang Kang <kk1987@gmail.com>
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2406
6b92093fdf65a80cba01af74710bdfe7ac7ef252 Kang Kang 2026-09-03 20:18:51
acpi_spmc: Make sure constraints array doesn't end up sparse
If we skip one of the constraint package elements and decrement
sc->constraint_count, sc->constraints would end up sparse and some of
our constraints would be put after sc->constraint_count.

Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Event:          EuroBSDCon Devsummit 2026
Differential Revision:  https://reviews.freebsd.org/D59562
542df51903ae57c5a5f271949a45ebcb1362d9b1 Aymeric Wibo 2026-09-10 09:34:31
amd64/pmap: Return la57 in amd nested page
AMD doesn't encode page depth in eptp. As a result, the page level is
decided by the host la57 value. Without this, it uses 4 level page and
therefore cause machine enable la57 have garbage page translation.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291768
Reviewed by:    kib
Tested by:      Antranig Vartanian <antranigv@freebsd.am>
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D57978
ef26f64c11220ea303de16d088c585f9d2908b0f ShengYi Hung 2026-09-11 08:22:39
hid: Add Sony DualSense gamepad driver
Add a driver for the Sony PS5 DualSense controller (054c:0ce6)
providing gamepad input via evdev, lightbar RGB LED control, and
player indicator LEDs through sysctl.

Signed-off-by:  Christos Longros <chris.longros@gmail.com>
Reviewed by:    ziaee, wulf
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D56345
d8e315ba975163a2050dd3d3e193f2472dbc2478 Christos Longros 2026-09-11 15:49:22
ixgbe: Pause firmware recovery polling in low power
The firmware recovery callout continues polling controller registers
after a power transition.  An inaccessible E610 GL_MNG_FWSM register
reads as all ones in D3, which looks like firmware recovery mode and
queues an iflib reset while the device is suspended.  A later D0 poll
then reports recovery complete and queues another reset.

Pause and drain the callout before terminal stop policy is applied,
prevent an in-flight callback from rearming it, and restart polling
only after resume has cleared the wake state.  Track callout
initialization so partial attach cleanup does not drain an uninitialized
callout.

The false transition was reproduced on a dual-port E610 with direct D3
and system S3.  Validate the guard with wake-disabled and wake-armed D3,
three repeated D3 cycles per port, and an S3 magic-packet wake.  Both
ports returned to D0 without a false recovery transition.

MFC after:      2 weeks
Sponsored by:   BBOX.io
45dc4a13654c5e90bcf5f757e46f1353b30848ee Kevin Bowling 2026-09-04 06:37:25
vmxnet3: Propagate device-enable failure to iflib
Do not let iflib publish a running interface when the virtual device
rejected its enable command.  Mark initialization failed and leave the
interface stopped.

MFC after:      2 weeks
Sponsored by:   BBOX.io
99eaf07a3cef77e61423e9431c0a8c5fd4d4be58 Kevin Bowling 2026-09-07 11:55:12
ixl: Set critical-error state bits independently
ixl_set_state() takes a bit index, not a bit mask.  ORing the
reset request and critical error indices produced the global reset
index, so a critical interrupt could mask its cause without scheduling
the intended PF reset.

Set both state bits explicitly.

MFC after:      2 weeks
Sponsored by:   BBOX.io
372803d65d242b308abd6b312a40ff6987fc3452 Kevin Bowling 2026-09-07 13:36:06
ice: Use the mirror interface softc in PF callbacks
PF iflib callbacks receive struct ice_softc, not struct ice_mirr_if.
Resolve the mirror interface through sc->mirr_if before checking or
resetting subinterface state.

Use the same mirror softc when rebuilding its VSI.  This records the
required subinterface reset in the state consumed by the PF callback,
rather than overlaying the PF softc and leaving rebuilt queues stopped.

MFC after:      2 weeks
Sponsored by:   BBOX.io
33be59b660befb13cdcc38e52b1c9b4119a6a069 Kevin Bowling 2026-09-07 13:43:20
ixgbe: Leave run-state publication to iflib during FDIR recovery
Rebuilding the Flow Director tables does not initialize the interface
or restore its queues.  Do not set IFF_DRV_RUNNING from that operation:
iflib owns the flag, and may have cleared it while a watchdog reset is
pending.  Restoring it here could admit traffic before the deferred
stop and initialization have run.

Keep the table rebuild and Flow Director interrupt re-enable unchanged.
This path is conditional on IXGBE_FDIR.

MFC after:      2 weeks
Sponsored by:   BBOX.io
3a4e037989f91672974eeedf1fa81ce0b684beb7 Kevin Bowling 2026-09-11 18:56:17
powerpc/booke64: Remove unused pmap global
d9c798b9fcc9c559e5d12a21fdca3eb226f53edf Justin Hibbits 2025-06-22 18:55:06
powerpmac_thermal: Improve thermal regulation on G5 quad models
Add a new "high temp" threshold below the max temp, in order to ramp the
fans (or pump for liquid cooled quads) sooner, and avoid the maximum
temperature.  From the PR, this makes older G5 quads louder, but usable,
instead of hitting max temperature and forcing a thermal shutdown.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209202
Submitted by:   gmbroome (PR)
fc3eca391341f1d354340ef41e059c0fce6afa8e Justin Hibbits 2025-03-10 03:10:49
rtwn: add ID for the Edimax EW-7611ULB
The dongle uses the rtl8723bu chip.

Also add an entry for it in usbdevs.
2e01f5bf9813d67d33e8ca095e22952c0193e3b7 Ahmad Khalifa 2026-09-11 23:48:10
dpaa/fman: Clean up port config code
No functional change, just simplify the code flow a little.
4f9de24ae98384fced8114a4ee331c87e90ca814 Justin Hibbits 2026-08-27 22:02:30
powerpc/booke: Add a machine check stack
Machine check and critical exceptions are independent of each other, and
can interrupt each other.  Since they're asynchronous we cannot trust
that the existing stack pointer (%r1) is correct at time of entry, so
add a private machine check stack separate from the critical exception
stack.  As part of this, switch to the STANDARD_CRIT_PROLOG() for
machine check exceptions, and overload the macro to specify the stack to
switch to.  Also add a savearea argument to CRIT_SRR_RESTORE() so that
we can restore machine check exception state from the right location.
de5fcd16650207f6f2e7c50afd1ebbaeb36612c7 Justin Hibbits 2026-09-05 18:38:55
acpi_spmc: Check Intel constraint packages
Some firmware inexplicably decides to do non-standard and annoying stuff
here, e.g. the Fujitsu Futro S940 with an Intel Pentium J5005 sometimes
returns the following when calling the DEVICE_CONSTRAINTS function on
the Intel DSM:

    Return (Package (0x01)
    {
        Zero
    })

(Package elements here are supposed to be constraint packages, not just a
single value.)

First reported in the following forum post:

https://forum.netgate.com/topic/201090/2.9.0-beta-leads-to-kernel-panic-on-boot

Reported by:    TampertK on forum.netgate.com
Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Event:          EuroBSDCon Devsummit 2026
Differential Revision:  https://reviews.freebsd.org/D59566
508efe35e577e322ab839def893f9ccb9826a9e4 Aymeric Wibo 2026-09-10 09:40:35
acpi_spmc: Check AMD constraint packages
Also match behaviour with Intel constraint parsing by skipping malformed
constraints instead of failing hard.

Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Event:          EuroBSDCon Devsummit 2026
Differential Revision:  https://reviews.freebsd.org/D59568
a1e236e9d610be69c9fcde0162a09385a2feb49f Aymeric Wibo 2026-09-10 12:10:10
powerpc/booke pmap: Adjust TID bits to correct size
MMUCFG::PIDSIZE is the TID field size less 1, so adjust to get the
full width.
300c54a0389fe8165a35d7fe88c46a993aaa11f8 Justin Hibbits 2026-07-04 04:50:18
powerpc/pmap: Add a minimum TID width
QEMU doesn't appear to emulate the MMUCFG register for Book-E CPUs, so
give a sane small default of 7, for an 8 bit PID register.
3ca70c59b8472134e61849478ef15202e2ea1116 Justin Hibbits 2026-07-04 04:34:08
superio, ncthwm: add support for the Nuvoton NCT6798D
The ASUS PRIME X570-P carries a Nuvoton NCT6798D, Super I/O device ID 0xd42b. Add an exact-match entry to both. Exact rather than masked: the neighboring 0xd42a entries are deliberately exact with an extid because that ID is claimed by both NCT6796D-E and NCT5585D, and widening the family would make them collide.

The NCT6798D has seven tachometers, so raise NCTHWM_FAN_MAX to seven and describe the two extra ones; existing entries keep fan_count = 5 and are unaffected. Fan names follow the NCT6779 convention and do not map to any board's physical headers.

Tested on: ASUS PRIME X570-P, Ryzen 9 5950X, FreeBSD 16.0-CURRENT.

Approved by:    adrian
Reviewed by:    stephane.rochoy_stormshield.eu, adrian
Differential Revision:  https://reviews.freebsd.org/D58291

Signed-off-by: Nick Price <nprice@FreeBSD.org>
9c650fb537d53ec396fc8537b2de403553ae3d02 Nick Price 2026-09-12 21:56:08
puc: be more careful about using MSI
puc has preferred MSI for every card since MSI support was added, with
only a global tunable to opt out.  uart(4) makes the same decision for
the serial devices it attaches directly, and has since grown two
defences: it skips MSI unless the device advertises exactly one vector,
because attaching a single instance to a device offering many has caused
problems (PR 235016), and it lets individual devices be flagged when
they claim MSI support that does not work.

Adopt both.

Approved by:    adrian (mentor)
Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D59623

Signed-off-by: Nick Price <nprice@FreeBSD.org>
82281715ef2f08f873a19340c3d00ef7fa9bf728 Nick Price 2026-09-12 21:58:10
puc: add the WCH CH382 2S dual serial card
Two 16850 UARTs in the first I/O BAR at offset 0xc0, 8 bytes apart.

Approved by:    adrian (mentor)
Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59512

Signed-off-by: Nick Price <nprice@FreeBSD.org>
9ed5901048aeec0c7cd74e96db6a99c818186d65 Nick Price 2026-09-12 21:58:55
amd64, powerpc: Enable tpm(4) in supported kernels
tpm(4) was removed from amd64 GENERIC because it broke suspend and
resume.  The preceding lifecycle, state-save, interrupt, locality, and
teardown fixes address those failures for both TPM 1.2 and TPM 2.0.

Restore the driver to amd64 GENERIC and MINIMAL, where TPM entropy
harvesting remained enabled.  Enable the driver and entropy harvesting
in the MPC85XX and QORIQ64 configurations, which already provide FDT,
spibus, and the platform SPI controller required by FDT-attached TPMs.
Leave the generic AIM and POWER configurations unchanged because they
have no TPM attachment bus.

The TPM 1.2 path completed repeated S3 cycles and command tests on
ThinkPad T430 and T440p systems.  The TPM 2.0 path completed repeated
device and full-system suspend/resume cycles on a ThinkPad P51.  The
PowerPC configuration matrix was checked to retain tpm(4) only where its
FDT SPI attachment path is present.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291067
Reviewed by:    kevans
Tested by:      Marek Zarychta <zarychtam_plan-b.pwste.edu.pl> (tpm1.2)
Fixes:          https://cgit.freebsd.org/src/commit/?id=16f8ea6a81b5 ("amd64: Remove tpm(4) from GENERIC for now")
MFC after:      1 month
Relnotes:       yes
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59247
cb2964f840e873d03a0739f41eed5921922f93a0 Kevin Bowling 2026-08-28 00:14:02
aq(4): arm PHY thermal shutdown from the admin poll
move thermal shutdown arming to the admin poll

this gives a more reasonable delay prior to the first attempt, and also
allows us to retry and make the option runtime-tuneable via a new
disable_thermal_arm sysctl

Approved by:    adrian (mentor)
Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D59593

Signed-off-by: Nick Price <nprice@FreeBSD.org>
75a1939f6360d4a329891e2075d18eef069db9bb Nick Price 2026-09-11 03:35:07
iwx: fix kernel panic on module unload with assertions enabled
When interface is up and running 'kldunload if_iwx' stops the device and executes RUN -> INIT state transition.
Since the device is already stopped iwx_run_stop fails to stop the device again and returns non-zero exit code from iv_newstate callback which triggers 'INIT state change failed' assertion.

I reused IWX_FLAG_SHUTDOWN flag to:
a) set it in iwx_detach
b) check it in iwx_newstate_sub - when it is set all custom state transition logic is skipped

Accidentally found while experimenting with iwlwifi / iwx drivers

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D59624
f616f8a83ba1bf8aa41003837c11a0f0955efed8 Andriy Voskoboinyk 2026-09-13 02:26:53
evdev: map ChromeOS "Vivaldi" top-row action keys
Chromebook keyboards driven by the ChromeOS EC emit the top-row action
keys as scancode set 1 codes 0xE0 0x11 - 0xE0 0x1E (see the codeset 1
comments on the SCANCODE_* enum in chrome-ec
include/keyboard_8042_sharedlib.h).  The e0 half of the
evdev_scancode2key() translation table leaves eleven of those at NONE,
so on FreeBSD those keys emit no evdev event at all and userspace
remappers such as keyd have nothing to bind to:

  e0 11  fullscreen             KEY_ZOOM
  e0 12  overview               KEY_SCALE
  e0 13  screenshot             KEY_SYSRQ
  e0 14  brightness down        KEY_BRIGHTNESSDOWN
  e0 15  brightness up          KEY_BRIGHTNESSUP
  e0 16  privacy screen toggle  KEY_PRIVACY_SCREEN_TOGGLE
  e0 17  kbd backlight down     KEY_KBDILLUMDOWN
  e0 18  kbd backlight up       KEY_KBDILLUMUP
  e0 1a  play/pause             KEY_PLAYPAUSE
  e0 1b  mic mute               KEY_MICMUTE
  e0 1e  kbd backlight toggle   KEY_KBDILLUMTOGGLE

Fill those in.  Only entries that were previously NONE are touched: the
EC's remaining top-row codes already have mappings here (e0 10 prev
track, e0 19 next track, e0 20 mute, e0 2e / e0 30 volume, e0 67 refresh,
e0 69 forward, e0 6a back), as do e0 1c keypad enter and e0 1d right
control, and none of them change.

Signed-off-by:  Kang Kang <kk1987@gmail.com>
Tested on:      Lenovo ThinkPad C14 Chromebook (Google primus, ChromeOS EC)
Reviewed by:    wulf
MFC after:      2 weeks
11ad849f1c50b2469ff13ee74e2ab0f5bcfa6cc9 Kang Kang 2026-09-13 09:37:39
tpm_tis: Quiesce interrupts before registering a handler
The current interrupt path uses the IRQ resource value directly as the
LPC SIRQ selector in TPM_INT_VECTOR and already restricts it to 1 through
15. This is a driver limitation: a parent interrupt number need not equal
an LPC SIRQ channel, and SPI TPMs can use a separate parallel interrupt.

On the reported system with ACPI IRQ 45, the existing range check runs
after handler registration and returns before disabling firmware interrupt
delivery. This can leave a polling device with a handler on an asserted
source.

Disable and verify interrupt delivery before registering a handler or
starting common TPM services. Preserve the existing range policy, using
polling without registering a handler for routes rejected by that check,
and release their IRQ resources. Keep a failed setup's potentially stale
output cookie out of the device state; the interrupt framework may
already have removed that handler.

Cancel timed-out locality requests in the shared request helper, covering
both interrupt programming and commands. Permit attach after a locality
timeout if the enable register proves delivery is already off, allowing
later command recovery. If delivery remains enabled and cannot be
quiesced, fail attach instead of exposing a device node for possible later
recovery. Report this as a quiesce failure since locality acquisition as
well as register programming can fail.

On detach, publish dying and serialize with commands before quiescing TPM
interrupt delivery. Do this for polling devices too, since firmware may
have re-enabled delivery and resume-time quiescing may have failed. Quiesce
before common release destroys the command lock and before removing any
handler. Report hardware quiesce failure while completing software cleanup.

Reported by:    adrian
Reviewed by:    adrian, imp
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59645
a22eb754c4bb7e3adffdaa9b2c3ddf24eda89a9c Kevin Bowling 2026-09-13 14:57:16
intel/intelpmc: Add Intel PMC Core driver
Add driver for Intel Power Management Controller (PMC) found on Sunrise Point PCH chipsets.
This device exposes S0ix sleep state residency counters and power management status.

Sysctls provided:
  dev.intelpmc.0.slp_s0_residency_us - Time in deepest sleep (us)
  dev.intelpmc.0.ltr_ignore          - LTR ignore mask
  dev.intelpmc.0.pm_cfg              - PM configuration register
  dev.intelpmc.0.pm_sts              - PM status register
  dev.intelpmc.0.access_denied       - Firmware lock status

Supported devices for now:
  - Sunrise Point-LP (0x9D21)
  - Sunrise Point-H (0xA121)

Note: Later PCH generations (Cannon Lake, Tiger Lake, ect.) have different PMC register layouts according to the datasheet and would need per-generation tables.
I avoided adding untested hardware in case they have a quirk.

Reviewed by:    olce, adrian
Differential Revision:  https://reviews.freebsd.org/D54881
dd9e49a10bc14f7d876426d7d85fed0d1fe9699d Abdelkader Boudih 2026-09-13 20:36:16
acpi_cpu: only report unmapped processor objects enabled in the MADT
Firmware expose a DSDT sized for the largest SKU of the platform,
so a verbose boot prints an "ignored" line for every vacant
processor slot. A vacant slot has no enabled MADT entry; a CPU that
failed to come online does.

Reviewed by:    olce, adrian
Differential Revision:  https://reviews.freebsd.org/D59551
9a46a1439c46045ecb33684d8fbdb1a841ccb425 Abdelkader Boudih 2026-09-13 20:48:26

Networking

Network-related commands, library, and kernel.

pf: allow unspecified addressed for certain MLD messages
As per RFC 3590 MLD Report and Done messages are permitted to use the
unspecified address as a source address (e.g. during duplicate address
detection for the first IPv6 address). Allow this, but only this.

Reported by:    Alexander Leidinger <Alexander@Leidinger.net>
Reviewed by:    bms
See also:       OpenBSD, sashan <sashan@openbsd.org>, 60036e8507
Sponsored by:   Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D59334
0a35e0afef2860a0a96e30e682f6782a323a82a4 Kristof Provost 2026-09-02 17:03:44
pf: Prevent pf dropping TCP state with crafted reset packet.
Revision 1.1212 of pf.c weakened the TCP reset check in stateful
connection tracking to let legitimate resets pass in the backwards
window.  Such a reset is accepted only if its acknowledgment number
matches perfectly.  But as a workaround for broken stacks, pf
replaces an acknowledgment number of 0 in a reset with the tracked
sequence of the peer.  Then the perfect match always succeeds, and
an attacker can spoof resets more easily than intended.  Use the
acknowledgment number from the wire, before the workaround has
modified it.

discovered by Minghao Zhang; OK sashan@

Obtained from:  OpenBSD, bluhm <bluhm@openbsd.org>, 1e0a1f4b82
Sponsored by:   Rubicon Communications, LLC ("Netgate")
7d810f27c16b1bb151ed701b040febef8f8909fe Kristof Provost 2026-09-03 13:57:58
inpcb: use new local address in in_pcbconnect()
when collecting necessary locks for the operation.  The IPv6 version
is already correct.

Submitted by:   Nick Price <nick spun.io>
Fixes:          https://cgit.freebsd.org/src/commit/?id=1dda8ba77a20d983774a3bf0e94c51c93f1d8758
08cf9598bd9058782dcbc7a2c6de12779847d651 Gleb Smirnoff 2026-09-07 18:51:22
tcp: fix TCPS_CLOSED state underleak in syncache_socket()
The syncache entry holds one TCPS_SYN_RECEIVED count that normally is
transferred to the the newborn tp.  Upon failure syncache_socket() shall
not use TCPSTATES_INC/TCPSTATES_DEC (see 5050df3f4aa4 why).  But when
syncache_socket() fails in_pcbconnect(), it calls tcp_discardcb() to free
resources that were just allocated by tcp_newtcpcb() and this
tcp_discardcb() would do TCPSTATES_DEC(tp->t_state).  The t_state is
TCPS_CLOSED at this point.

Make tcp_discardcb() symmetrical to tcp_newtcpcb() - not responsible for
the TCPSTATES.  Make the caller responsible for state count book keeping.

Reviewed by:            tuexen
Fixes:                  https://cgit.freebsd.org/src/commit/?id=3703e1a73e0e0367c04f47f793e46495e46e647b
Differential Revision:  https://reviews.freebsd.org/D59325
b712bb84a7a7dc229324a95170b8a77e0d9c5bec Gleb Smirnoff 2026-09-07 19:09:40
rtnetlink: Allow VF priority reporting in trunk mode
PF-administered priority need not impose an access VLAN.  Permit the
existing VLAN PCP attribute in either access or trunk mode, while
keeping VLAN identifier and protocol access only.

Display trunk PCP in ifconfig and document the broader meaning in the
kernel snapshot, libifconfig, and rtnetlink contracts.  This changes no
attribute numbers, wire encoding, or structure layout.

Reported by:    kib
Sponsored by:   BBOX.io
429fbc7c35a6d860462db3109608b7f800f0e50b Kevin Bowling 2026-09-10 06:54:50
nd6: Fix the array size in union nd_opts
ND_OPT_ROUTE_INFO is 24, so an access of that index is technically out
of bounds, though note that the per-option struct has an entry for this
option.  Fix the array size to appease -fsanitize=array-bounds.

Reviewed by:    pouria, glebius
MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59392
fc33bbb024502d2c90289ff4b62a8ec4d20df238 Mark Johnston 2026-09-10 09:27:35
ipfilter: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    cy
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
94f7019668f8a02416c5b32ba8a9c32a68edd261 Siva Mahadevan 2026-09-09 17:14:45
iflib: remove unused variables
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    gallatin
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59544
d1ef616302f185ca9c217a9bfa70509b19136016 Siva Mahadevan 2026-09-10 14:38:19
ng_hci: build the devd notification in a stack buffer
sbuf_new_auto() sleeps, and ng_hci_default_rcvmsg() can run under the
raw HCI socket pcb mutex held across NG_SEND_MSG_PATH().

Reported by:    WITNESS
Fixes:          https://cgit.freebsd.org/src/commit/?id=ad91d47db306

Reviewed by:    glebius, adrian
Differential Revision:  https://reviews.freebsd.org/D59550
755b9d5393253e1d5d3f9a894c18ac8bedb39b5d Abdelkader Boudih 2026-09-10 15:25:16
sctp: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    tuexen
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59590
b7e91f238c2f70e8432f56762499aebd0ab9960b Siva Mahadevan 2026-09-11 14:56:10
if_bridge: count the drops on the fragmentation path
bridge_pfil() returned a fragmentation failure without counting it,
and bridge_fragment() dropped a chain on three allocation failures
without counting those either.

Count the first on the filtered interface and the others with
ips_odropped, which is what ip_fragment() uses for the same failure
and what bridge_fragment() already uses for its success case.

Reviewed by:    gallatin
Differential Revision:  https://reviews.freebsd.org/D59391
Assisted-by:    Claude Code (Fable 5, Opus 5)
8209ceeb7504417c49fae77de4c77286eccb8746 Alexander Leidinger 2026-09-04 07:36:10
Commit group #3: iflib
iflib: Track queue datapath lifecycle

Track whether iflib queue mappings may still be accessed by the
device.  Keep the state private to iflib and conservative: an unknown
or failed device must pass through IFDI_STOP() before mappings are
reused or released, while a device known to be stopped need not
receive another hardware stop.

Enter the starting state before IFDI_INIT(), publish running only
after receive buffers and framework state are ready, and stop hardware
if receive-buffer setup fails after driver initialization.

Do not initialize an administratively-down interface merely because
its MTU, capabilities, VLAN configuration, or media changed.  Preserve
successful retries for an administratively-up interface whose previous
initialization failed.

This state describes ownership of iflib datapath mappings only.  It
deliberately makes no claim about firmware queues, administrative DMA,
PCI power state, or whether a driver can safely elide a hardware reset.

Reviewed by:    iflib (gallatin)
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59328
fb8fcd4bff36d620d00fc20903379fb9ee844c57 Kevin Bowling 2026-08-26 09:21:55

iflib: Own queue quiescence during power transitions

Perform a terminal datapath stop before suspend and shutdown
callbacks, then drain the private configuration taskqueue before
entering low power.  Track power state independently of queue
ownership and prevent built-in admin, IOV, LED, and media-status
callbacks from accessing a suspended device.

Restore driver-specific state while the datapath remains stopped.
Initialize it exactly once on resume when the interface is
administratively up, and keep an administratively-down interface
stopped.  Roll back the driver when suspend or child suspension fails.

Add ifdi_power_prepare() for policy which must be established before
the terminal stop.  Use it to snapshot ixgbe(4) wake policy and preserve
X550EM PHY ordering, and remove the duplicate stop from aq(4).

Reviewed by:    iflib (gallatin)
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59329
2b2cc52236f462f1ca2b86581c8115252fb1a834 Kevin Bowling 2026-08-26 09:21:55

iflib: Reject media changes during suspend

iflib gates its built-in administrative and media-status callbacks once
a power transition starts, but iflib_media_change() could still invoke a
driver while the device was suspending or suspended.  Several drivers
perform PHY or firmware I/O directly from this callback.

Return EBUSY before invoking IFDI_MEDIA_CHANGE() unless the device is
active.  ifmedia then restores the prior selection, avoiding both
suspended hardware access and an unvalidated configuration that would
need to be replayed during resume.

Validated with device suspend on 82579LM, I210, and I225-IT
controllers.  Media-selection requests returned EBUSY on every
suspended device.  Resume restored the linked management interfaces at
1 Gbps with working traffic and no watchdogs; unconfigured interfaces
retained their prior admin and link state.

Reviewed by:    iflib (gallatin)
MFC after:      2 weeks
Sponsored by:   BBOX.io
Differential Revision:  https://reviews.freebsd.org/D59330
62dd064b03dfe04b727e7d1fdea17eb165b52e9c Kevin Bowling 2026-08-30 08:20:27
raw ip: clear sin_port on bind(2)
Application may set sin_port to some value.  Although this value is not
used by SOCK_RAW, it breaks a check that the address is available.  A
perfect fix would be not use sockaddrs for ifaddrs, but that would be a
bigger change.

PR:                     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298366
Reviewed by:            pouria, bnovkov, adrian
Differential Revision:  https://reviews.freebsd.org/D59570
Fixes:                  https://cgit.freebsd.org/src/commit/?id=948ad32ae1e0811f45e1d38f26636fefed5051f0
465942e8cc8160b21e1a3d5e45fa3ddbb852f6db Gleb Smirnoff 2026-09-12 12:12:36

System administration

Stuff in man section 8 (other than networking).

nfsuserd.c: Fix handling where pw_name/gr_name differ from lookup name
When an NSS backend returns a canonical pw_name or gr_name that differs from
the lookup name supplied by the NFSv4 upcall, nfsuserd stores the successful
mapping in the kernel cache under the canonical name instead of the requested
name.

This causes the retry lookup performed by nfsv4_strtouid() or
nfsv4_strtogid() to miss the newly inserted cache entry, resulting in the
default UID/GID being returned although the NSS lookup itself succeeded.

PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296753
Reviewed by:    rmacklem
Tested by:      Emanuel Helms <emanuel@nfv.cc>
MFC after:      2 weeks
1771ab245c2341033f0cee3bd098c76888cf3515 Emanuel Helms 2026-09-07 19:50:58
fsck_msdosfs: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    delphij
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59543
fead44b3ed61a09c2a0c4f79537462e837067fce Siva Mahadevan 2026-09-10 14:38:44
sbin/ifconfig: remove unused static function parameter
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    glebius
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59541
e1a1206245be0db252d52f4b090c62a002fc1cc5 Siva Mahadevan 2026-09-10 14:39:37
camcontrol: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    ken, imp
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59540
076c9db51f95291f73c25b39a8c9c4206c050bc1 Siva Mahadevan 2026-09-10 14:40:03
Commit group #4: loader
loader: Allow this to compile w/o MD_IMAGE_SIZE defined

Slight tweak to allow md.c to be compiled when MD_IMAGE_SIZE isn't
defined.

Sponsored by:           Netflix
Reviewed by:            olivier, tsoome
Differential Revision:  https://reviews.freebsd.org/D59415
8fae9294d6ba714000611d1dd2263fdaf528ad62 Warner Losh 2026-09-11 04:09:39

loader: Small tweak to how md is configured

Only the EFI loader supports the md devices (as the moment). Create
LOADER_MD_SUPPORT and only try to compile md when that's true. For the
moment, also allow it when only MD_IMAGE_SIZE is defined, but that
will be dropped since LOADER_MD_SUPPORT is a superset.

Sponsored by:           Netflix
Reviewed by:            tsoome
Differential Revision:  https://reviews.freebsd.org/D59416
4f7475ab5b3f78300b5357a3ee53cd09e03efb7c Warner Losh 2026-09-11 04:13:01

loader: Move ramdisk export to md.c

Move the common routine to md.c and use it where we do memdisks today.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59417
7055aa7a070fa98fa3a7e1efaab0b07d68a08975 Warner Losh 2026-09-11 04:13:09

loader: Allow dynmaic creation of MD disks

Augment the md device to allow creation of md devices. This is useful
when UEFI doesn't support RamDisk and in other cases where we have a
handy initrd-like image we want to use.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59418
752bde7da6ad11b53af82f81d44e0ae2729c56d7 Warner Losh 2026-09-11 04:13:14

loader: Use %u to print unsigned value

Fixes: https://cgit.freebsd.org/src/commit/?id=7055aa7a070f
Sponsored by:           Netflix
772c658c66e365f02433a4f57d6a14a8120861eb Warner Losh 2026-09-11 20:42:03
loader.efi: Move probing the md up to before doing bootmgr
When someone has loaded a ram disk, that's a stronger hint about what to
boot than the UEFI boot manager. Prefer it and rework a little the #ifdefs
to reduce their number.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59419
69d1595ded957137ee103a385ca4056cc1d30d5a Warner Losh 2026-09-11 04:13:19
loader: Add md support
Allow md devices like efi allows them.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59420
96b1e04a747fef17cb660f62ca7cf6d0e365549c Warner Losh 2026-09-11 04:13:24
loader.efi: For ipxe booting, fall back to md when ramdisk fails
Some UEFI firmwares do not contain the RamDisk protocol. When this
happens, load the file into a md disk instead. This is less desireable
than the RamDisk (since that allows better chain-booting options), but
sufficient to boot an image as a md device for FreeBSD. While most
severs have the RamDisk protocol enabled in their builds, I have two
IoT class boards from different manufacturers that do not. Since it
works just fine with this fallback, that's preferable.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59421
f1163b9436b750f6d141e3db72e9000f9cf8b5e4 Warner Losh 2026-09-11 04:13:29
libsa: Add a generic URI-syntax devspec parser
Add parse_uri(), a helper for devices whose devspec can take a
"[N]://host[:port][/path]" form in addition to the traditional "N:path"
form. It returns EINVAL when devspec doesn't match that pattern, so a
caller's own dv_parsedev can fall back to the traditional form.

Un-static default_parsedev() so it can serve as that fallback.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59422
7208b3b845a6fca40099a4eab0d86afc2fb84aa7 Warner Losh 2026-09-11 04:13:37
Commit group #5: stand/efihttp: Support arbitrary http[N]://host[:port]/path devspecs
stand/efihttp: Support arbitrary http[N]://host[:port]/path devspecs

Until now, the "http" device only worked when firmware itself booted
loader.efi via EFI HTTP Boot: efihttp_dev_init() required a URI node on
the loader's own boot device path, and every fetch went to that same
server. Add a second form, using the parse_uri() helper from libsa/dev.c,
that works anywhere: http[N]://host[:port]/path (N is a network interface
unit, defaulting to 0). This lets a devspec like this be used as rootdev,
in loader.conf, or interactively, independent of how loader.efi itself
was booted.

Network configuration is shared, loader-wide state (the myip/netmask/
gateip/nameip globals from net.h): if something has already configured
them (e.g. tftp/nfs via net_open()), the http device just reuses those
values, applying them to EFI_IP4_CONFIG2_PROTOCOL as a static address. If
nothing has, it drives IP4Config2's own DHCP directly instead of calling
netdev's net_open(): net_open() opens the NIC's SNP
EFI_OPEN_PROTOCOL_EXCLUSIVE, which would disconnect the Mnp/Ip4/.../
HttpDxe driver chain this code depends on. That chain is also commonly
disconnected already by whatever chained us here (e.g. iPXE excludes and
exclusively opens SNP for its own raw I/O), so reconnect it explicitly
with ConnectController() before giving up.

The legacy EFI HTTP Boot path is untouched.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59423
6788e42d53c60904943a1db11bdb27b8f9d2bb4c Warner Losh 2026-09-11 04:13:46

loader.efi: Fix memory leak in efihttp_dev_close

Save enough context to free the host we allocated in open on close.

Fixes: https://cgit.freebsd.org/src/commit/?id=6788e42d53c6
Noticed by: claude + Sonet 5
Sponsored by: Netflix
bbee544312e730e438c57e4d5777bd0687ea6b77 Warner Losh 2026-09-11 15:23:42
loader: request DHCP initmd option
Request FreeBSD RFC 3925 PEM 2238 DHCP 125 option. Use suboption 1 to
specify a ramdisk image to load and use to load the kernel and as the
root file system.

Differential Revision:  https://reviews.freebsd.org/D59428
Sponsored by:           Netflix
a098fd021e517df930d8df0ac3a808d63c24252b Warner Losh 2026-09-11 04:13:57
loader: add standalone network configuration
Allow callers to obtain DHCP configuration without opening a network
file, enabling loader.efi to discover an initmd URL before handing the
interface back to firmware HTTP.

Differential Revision:  https://reviews.freebsd.org/D59429
Sponsored by:           Netflix
e6b997c73c41dd8cf42afbc86215fe9c312d5096 Warner Losh 2026-09-11 04:14:06
Commit group #6: loader.efi
loader.efi: release SNP after network configuration

Close the exclusively opened SNP protocol after loader networking
finishes so the firmware network stack can reconnect the controller and
service a subsequent HTTP request.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59430
5bbd617cc5fe10949a856e7f75cd616c24b3438b Warner Losh 2026-09-11 04:14:12

loader.efi: download md images through file API

Feed the existing decompressor from loader file descriptors as well as
iPXE callbacks, allowing arbitrary HTTP filesystem URLs to become
kernel-exportable memory disks.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59431
25b58eb37a7971f94f61f3a001b0d2c47228f08e Warner Losh 2026-09-11 04:14:18

loader.efi: fetch initmd specified by DHCP

Configure net0, read the DHCP-provided initmd URL, and download it
through the file API so directly booted loader.efi can construct its
root memory disk.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59432
d48e9bff8c0216e66c5d789266c8800dc18d51e0 Warner Losh 2026-09-11 04:14:24

loader.efi: download DHCP initmd specified image

When we haven't downloaded an image via mem{disk,cd} and ipxe, try any
image specified by the FreeBSD-specific initmd dhcp option. This allows
direct booting of loader.efi with a detached root ramdisk filesystem.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59433
6de311d309dadee0d66e7f1533c254a44b9b5635 Warner Losh 2026-09-11 04:14:30
loader.efi: Eat the character used to break to OK
When we can't find root, we give the user a chance to drop to the boot
loader OK prompt. We should eat the character that's pressed to not
interfere with the interactive session.

Sponsored by:           Netflix
0ca12047beb97f3e8dd19d272bafeea045b27252 Warner Losh 2026-09-11 04:14:45
loader.efi: Allow downloading of ramdisk or md to be aborted
Hitting <ESC> will now allow one to abort a (possibly mistaken)
download.

Sponsored by:           Netflix
8821d42d8be4c2dcf1f70a3ccc96a9c37bd85172 Warner Losh 2026-09-11 04:14:50
Commit group #7: mpsutil: Add Show Discovery command
mpsutil: Add Show Discovery command

Prints the current discovry tables for the driver.

Sponsored by:           Netflix
Assisted by:            Claude (sonet-5)
Differential Revision:  https://reviews.freebsd.org/D58528
afb60897a15c37cb5dbc45e2cabfac58b681550f Warner Losh 2026-09-11 05:13:14

mpsutil: Better naming form the discovery_status function

It's really discovery_status_str(). Rename it and use open_memstream()
to write the string so we don't have to play as many str* games.

Fixes: https://cgit.freebsd.org/src/commit/?id=afb60897a15c
Noticed by: claude + Sonet 5 (size error, bad fix ignored)
Sponsored by: Netflix
f9517d23746115dfdd7da6d6919e20fe55882e4d Warner Losh 2026-09-11 15:17:47
Commit group #8: nvmecontrol: Add APST feature support
nvmecontrol: Add APST feature support

Add -a, -d and -m options to the power subcommand to manage APST,
along with additional status output when invoked without args.

Signed-off-by: Alexey Sukhoguzov <sap@eseipi.net>
Reviewed-by: imp
35793364d722fcba73a7dd0c76ddadaa0038fa10 Alexey Sukhoguzov 2026-09-11 05:13:40

nvmecontrol: Fix APST transition encoding

Use uin64_t casts to encode data sent to avoid overflows.

Fixes: https://cgit.freebsd.org/src/commit/?id=35793364d722
Sponsored by: Netflix
79e2a46a6afda1b762c75cb308a474c9ed0cda4c Warner Losh 2026-09-11 06:14:00

nvmecontrol: Minor correctness issues

Turn an assert into a bounds check to not overflow if the nvme drive
reports too many power states (we validate the user input, but not the
drive's identify data).

Use a uint32_t instead of int for entry so right shift we do is defined.

No functional changes.

Fixes:                  https://cgit.freebsd.org/src/commit/?id=35793364d722
Noticed by:             claude + Sonet 5
Sponsored by:           Netflix
baa78c87eb074fa8d9ee5625a6440d35f617e67f Warner Losh 2026-09-11 14:54:17
Commit group #9: dhclient(8): Add support for IPv6-Only option (RFC 8925)
dhclient(8): Add support for IPv6-Only option (RFC 8925)

Accept and validate the ipv6only option. When dhclient receives this
option and IPv6 connectivity is available, stop the DHCP configuration
process and wait for the duration specified by the option before
restarting DHCP discovery.

If the address was previously leased, disassociate it and send a
DHCPRELEASE packet.

Use netlink to check for IPv6 connectivity.

Also, unregister ignored options from default PRL.

Reviewed by:    ziaee, kfv
Tested by:      Marek Zarychta <zarychtam@plan-b.pwste.edu.pl>
Relnotes:       yes
Differential Revision: https://reviews.freebsd.org/D56637
37fd3fcaaf0ee3e1066ef9d4fb8b9245f7288743 Pouria Mousavizadeh Tehrani 2026-09-11 07:17:01

dhclient(8): Fix dhcpack comment

Restore a comment accidentally removed above dhcpack.

Fixes:  https://cgit.freebsd.org/src/commit/?id=37fd3fcaaf0e ("dhclient(8): Add support for IPv6-Only option (RFC 8925)")
b485d70d4eb233dc0c6a7efbc6c1f42ebc353c50 Pouria Mousavizadeh Tehrani 2026-09-12 16:32:57
Commit group #10: loader.efi
loader.efi: Expose efi_devpath_get_mac to get mac

This is a convenient way to test if a device path is a nic or not, so
expose it to the world.

Sponsored by:           Netflix
577ea37d6d5cf4ab9fb556f7ec21276db683e600 Warner Losh 2026-09-11 16:04:10

loader.efi: Only try to download md if we're netbooting

The only possible time we could download the initmd that the dhcp server
told us about is if we're netbooting. So only attempt to do that if the
load device for loader.efi is a network. IF you are booting off disk and
then need to snag an initmd off the network, that's a different path,
and wouldn't need to necessarily do a dhcp exchange, except to get the
IP address.

Sponsored by:           Netflix
197df29edb39782464276701f8fd9891793d4979 Warner Losh 2026-09-11 16:05:16
loader: Move some support things around, maybe lame?
Sponsored by:         Netflix
6413a870fa0721ac509e38f24d5dd5204c603288 Warner Losh 2026-09-11 20:39:56
bsdinstall: allow ZFS root on GPT under UEFI (amd64)
GPT+ZFS+UEFI boots fine, but the manual guided
wizard prevented it.

MFC after: 3 days

Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59603
877294a7a770cd01341bdfd7b93b08d6252f2b57 Abdelkader Boudih 2026-09-12 20:22:57

Libraries

lib/msun amd64: use AVX FMA instructions for fma(3) and fmaf(3) when available
Utilize the ARCHLEVEL framework from libc/amd64/string to provide the
way for runtime selection of the implementation, if wanted.

Reviewed by:    fuz, kfv
Discussed with: kargl
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59462
18a5549bcb81ec084f284a98046631db277ad47c Konstantin Belousov 2026-09-06 05:01:35
libjail: fix fetching mac.label for multiple jails
When doing a basic `jls -n`, jls(8) will jailparam_get() the mac.label
for every jail on the system using the same set of jailparams, and thus
the same jp_value.  We only init the mac_t the first time, so the first
jail would populate it with `?` from /etc/mac.conf and the resulting
jail_get(2) would clobber it with the empty string, then a second jail
would try to pass the empty string to the kernel and fail because it
must have a non-zero length.

Fix it by invoking jps_get() every time.  Drop some comments to note
that jps_get() will be invoked with zero || garbage from previous call,
and be sure that we don't leak our previous mac_t.  There aren't any
other jps_get implementations at this time, so this shouldn't cause any
unexpected problems.

Reported by:    ivy
Reviewed by:    jamie
Differential Revision:  https://reviews.freebsd.org/D57280
b2a270da9fbf0fb58fb7c1bf1006ae675e14a5e3 Kyle Evans 2026-09-09 21:24:18
libjail: Preserve const qualifier on strchr(3) and strrchr(3) results
Reviewed by:  fuz
Approved by:    fuz (mentor)
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59553
c63b69f82a745c1b905c1050eeff9df96fe18f4c Faraz Vahedi 2026-09-10 11:08:00
libjail, jls(8), jail(8): use the JAIL_PARAM_* constants
Replaced hardcoded jail parameter name strings in the base userland
consumers with the JAIL_PARAM_* constants.

No functional change.

Reviewed by:    jamie, adrian
Differential Revision:  https://reviews.freebsd.org/D59577
9ae680fcfd36e03547ffc7989c80dcbaac200556 Abdelkader Boudih 2026-09-10 19:51:30
lib/msun: use the same algorithm for sw fmaf(3) as for fma(3)
This fixes rounding at the last bit for subnormals.

PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298260
Reviewed by:    kib
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59579
b08e6a3882b44a09fbda84dd315a431c7a585219 Steve Kargl 2026-09-10 23:18:58
lib/msun: add tests for fmaf(3) subnormals
PR:   https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298260
Reviewed by:    kib
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59579
cb82cc9f0e3bdf2b39734851c74b9a13edb0cbdc Steve Kargl 2026-09-10 23:33:14
chflags: Alias nocache to noucache for consistency
Event:                        EuroBSDcon 2026
Requested by:           fuz
Reviewed by:            fuz, rmacklem
Differential Revision:  https://reviews.freebsd.org/D59588
49b4137da6ea1443f9b166cd6204ae03cfe9cbd9 Alexander Ziaee 2026-09-13 11:42:51
libc: Parenthesise qualifier-preserving function definitions
Required to prevent function-like macros with the same name from
being expanded in the definitions once they become active in a
later C mode.  Without the parentheses, the macro would rewrite
the declarator, and the file would consequently fail to compile.
This style is already used for similar cases such as mempcpy().

Reviewed by:    fuz
Approved by:    fuz (mentor)
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59600
c389738f21c09931cd88a84a357be514b5c60030 Faraz Vahedi 2026-09-13 12:14:26
libc: Preserve const qualifier on strchr(3), strrchr(3), and memchr(3) results
Reviewed by:  dteske, fuz
Approved by:    dteske (mentor), fuz (mentor)
MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D59612
73d3c964be93034daf26a55ebac38c2152769f74 Faraz Vahedi 2026-09-13 12:27:45

Filesystems

fdescfs: descend through /dev/fd/N when mounted linrdlnk
Linux resolves a path below /proc/self/fd/N in the directory the
descriptor names, and linprocfs makes /proc/<pid>/fd a symlink to
/dev/fd.  Under linrdlnk the fdescfs node carries only VV_READLINK,
which namei will not walk through, so such a path fails with ENOTDIR.

Return the underlying vnode from fdesc_lookup for a non-final component,
or a trailing slash, reusing the machinery the nodup option already
uses.  The last component is untouched, so open("/dev/fd/N") keeps its
dup(2) semantic; a descriptor with no vnode behind it, such as a pipe,
yields ENOTDIR.

Add ATF coverage for traversal, descriptor reuse, and preservation of
last-component and mount-option semantics.

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

Signed-off-by: Nick Price <nprice@FreeBSD.org>
b3f7a438bb233c85290dcdc5241d86c49100b6b7 Nick Price 2026-09-02 17:43:13

Kernel

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

apple_bce: require usb(4) for vhci functionality
The vhci portion of the driver relies on usb(4) for both constants and
functionality. Add an explicit dependency on usb(4) in `files.amd64` so
it builds properly 100% of the time in a static kernel config.

Reviewed by:    seuros
Differential Revision:  https://reviews.freebsd.org/D59469
a24eb09825cf4142531189a1e00fcea84d4f9773 Enji Cooper 2026-09-07 04:27:24
vp_crossmp: weaken the assert and make it more precise
Since the vp_crossmp vnode can leak into vn_vptocnp() calls due to
nullfs file mounting, not all lock requests are non-sleeping. The
requirement for the crossmp locking is that all lock requests should be
shared. Then, it does not matter if the requests allow sleeping, since
all locks are shared.

Also, check the lock type by correctly masking it with LK_TYPE_MASK.

Reported and tested by: pho
Reviewed by:    jah, markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59468
c63c77b3a5312dfd00f7749a07269119da886609 Konstantin Belousov 2026-09-06 15:11:41
kern_fork.c: add kern.pdfork_implicit_nowaitpid sysctl
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59349
24d3cbaaf5ad45b53e15d4729961fc8a8b385562 Konstantin Belousov 2026-09-03 17:56:13
Commit group #11: linuxkpi
linuxkpi: Alias `sd` field of `struct kobject`

On Linux, a `struct kernfs_node *` pointer, representing a directory in
sysfs, is kept in the `sd` struct field.

We don't have that on FreeBSD because we use sysctls instead. Let's
alias the sysctl OID pointer to `sd` using an union.

This pointer is checked by the DRM drivers using:
    if (var->kobj.sd) {
        ...
    }

The amdgpu DRM driver started to use these checks in Linux 6.13.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57586
33ba6077b0f162091bf0871686304916458420d3 Jean-Sébastien Pédron 2026-06-12 20:44:43

linuxkpi: Add `kthread_run_worker()`

On Linux, `kthread_run_worker()` differs from `kthread_create_worker()`
by waking up the task after creating it with `kthread_create_worker()`.

On FreeBSD, we already execute it and wait for it, so probably no need
to do anything further. Therefore, `kthread_run_worker()` is an alias to
`kthread_create_worker()`.

The DRM drivers generic code started to replace
`kthread_create_worker()` by `kthread_run_worker()` as is in Linux 6.14.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57701
fbc89a8cd81b27d9d5de3a91bfd4626cf0f7ebbc Jean-Sébastien Pédron 2026-06-17 16:58:11

linuxkpi: Update `struct vm_area_struct` when an existing mapping is extended

With Mesa 26 and DRM drivers in Linux 6.13, userspace will try to extend
an existing mmap, at last push the end address further.

Before this change, the mapping was not updated, but userspace would try
to access a page after the initial end address, leading to a panic
triggered by the following assertion in `vm_fault_populate()`:

    MPASS(fs->first_pindex <= pager_last);

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58195
be6e357a3e51b7b24e205ef904f67333ca8e298c Jean-Sébastien Pédron 2026-07-12 16:20:29

linuxkpi: Add `split_page()`

This function is supposed to split large pages into an array of
`PAGE_SIZE`-sized pages, with correct refcounting. This is apparently
used to allow some drivers to free a part of a large page only.

I don't think we use large pages in linuxkpi. Therefore, this new
function is curently a no-op.

The DRM drivers TTM memory manager started to use it in Linux 6.15.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58762
153446ecd740702af00cf9b09d8cd39f6d397dd3 Jean-Sébastien Pédron 2026-08-15 18:31:46
linuxkpi: Fix assertion in `lkpi_vmf_insert_pfn_prot_locked()`
Before this change, the assertion would not catch a page index matching
the end address, even though the end address of a mapping is outside of
that mapping.

While here, add another assertion to catch page indexes outside of the
expected range earlier.

Also, pagefaulting an address outside of the mapping range should return
`VM_FAULT_SIGBUS` instead of panicing.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58194
8ffe2419e4e74e05e8042ccc3c0445a13b41a02f Jean-Sébastien Pédron 2026-06-25 23:07:11
linuxkpi: Add `timer64_to_tm()`
The function converts a number of seconds since Epoch to a `struct tm`.
The implementation was copied from `contrib/tzcode/localtime.c`.

The amdgpu DRM driver started to use it in Linux 6.15.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58758
5fad251f05634e3220d36d51f624d77b41bc01c1 Jean-Sébastien Pédron 2026-08-15 18:31:15
linuxkpi: Add `hrtimer_setup()`
`hrtimer_setup()` replaces `hrtimer_init()` in Linux 6.15. The API and
the role are the same, except:
* it takes the `function` callback as argument
* if `function` is NULL, it assigns a default callback

At the same time, we hide `hrtimer_init()` if LINUXKPI_VERSION is
greater than or equal to 61500 because it was dropped in Linux 6.15.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58757
9273fe8ed2addad2179227d444f9f8ab63b942a1 Jean-Sébastien Pédron 2026-08-15 18:31:05
LinuxKPI: Add tgid to task_struct under sched.h
The amdkfd driver requires the `tgid` to be a part of the `task_struct`.
This patch introduces the `tgid` member to `task_struct`.

Reviewed by:    bz
Sponsored By:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D58228
3716da91b1a6288b858b4e9b55052836e7cd01b6 Sourojeet A 2026-09-09 18:54:53
linuxkpi: Define `for_each_if()`
This macro was moved from <drm/drm_util.h> to <linux/util_macros.h> in
Linux 6.15.

Submitted by:   Sourojeet Adhikari
Approved by:    adrian, bz, emaste, seuros
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57465
75b9d19c62a148a30859f9a2dc47ffa14e9d644f Jean-Sébastien Pédron 2026-09-09 19:37:48
LinuxKPI: Added jiffies64_to_msecs for amdkfd compatibility
jiffies64_to_msecs is used by kfd_process.c in the amd/amdkfd driver
from Linux kernel 6.12.

Submitted by:   Sourojeet Adhikari
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58075
b8b2be57af15c96865004252b2188bcbc9bc3c67 Jean-Sébastien Pédron 2026-09-09 19:45:06
Commit group #12: linuxkpi
linuxkpi: Add device under parent, not under class

In `device_add()`, the function used to add the given device under its
class. This is used to build a sysctl tree. We ended up with devices or
"pseudo" devices (like the output connectors of a GPU). For example with
an output connector:

    sysctl sys.class.drm.card0-DP-1

This device should be added under its parent if it has one. With this
fix, the same output connector is now:

    sysctl sys.device.drmn1.card0.card0-DP-1

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D55175
fc0a5ae094308609927e9c355928d08923278325 Jean-Sébastien Pédron 2026-02-08 10:06:37

linuxkpi: Add `pci_map_rom()` and `pci_unmap_rom()`

They were already defined as macros in various places in DRM drivers,
aliasing the `vga_pci_map_bios()` and `vga_pci_unmap_bios()` functions.
Let's move them to linuxkpi and avoid copies everywhere.

Because they use the `vga_pci` code internally, `pci_map_rom()` checks
whether the given device is a video card. If it is not, it logs a "TODO"
and returns NULL.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57573
33595d4ae01c10c436a83e7f5afd2c07a7fbd2c5 Jean-Sébastien Pédron 2026-06-12 10:24:02

linuxkpi: Define `DEFINE_CLASS()` and `CLASS()`

`DEFINE_CLASS()` is in fact named `LINUXKPI_DEFINE_CLASS()` because it
conflicts with `DEFINE_CLASS()` defined in <sys/kobj.h>.

This macro defines a type and a pair of constructor/destructor
functions.

They are to be used by `CLASS()`: this one declares a variable,
initialise it with the constructor and set the `__cleanup()` attribute
to call the destructor once the variable goes out of scope.

The DRM drivers generic code started to use `CLASS()` in Linux 6.13. It
requires the `fd` class to be defined in <linux/file.h>.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57583
f2a2e02ae54b836d1e23648756a050406f65111e Jean-Sébastien Pédron 2026-06-12 17:56:35
dtrace/arm64: de-pessimize dtrace_copy
When DTrace catches a data abort exception it resumes execution on the
next instruction. If a probe executes copyinto from unmapped memory,
then dtrace_copy keeps faulting on successive bytes until the loop
counter is exhausted. Detect the situation by witnessing the absence
of zero-extension from an aborted unprivileged load.

Reviewed by:    markj
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D59341
464b29857ff18801aca49d1001643c5cdd1324e8 Benjamin Jacobs 2026-09-09 09:57:12
jail: define well-known parameter names in sys/jail.h
Userland jail managers hardcode jail parameter name strings; nothing
in the headers has ever named them, even when sys/jail.h already
has JAIL_META_PRIVATE/JAIL_META_SHARED for the metadata pair.

Added JAIL_PARAM_* string constants for the static parameters registered
by the base kernel.

No functional change.

MFC After: 1 week

Reviewed by:    jamie, adrian
Differential Revision:  https://reviews.freebsd.org/D59572
1256447cbc21361ff5a6f9022b58ad6c1c43e59f Abdelkader Boudih 2026-09-10 19:03:57
linuxkpi: Add `int_sqrt()`
The implementation comes from `isqrt64()` in `sys/cam/cam_iosched.c`. It
is modified to take an `unsigned long` and return an `unsigned int`.

The i915 DRM driver started to use it in Linux 6.15.

Reviewed by:    bz
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58251
d4820dc1e6cb9ec9d8d3ef030f143c69f92228cd Jean-Sébastien Pédron 2026-08-15 18:30:35
da: Stop the probing when periph invalidated in dadone_proberc
When READ CAPACITY fails, we call cam_periph_invalidate() for some
hopeless ASC/ASCQ combinations and then fall through to test the cache
state. This results in excess commands to the abandoned device that may
take a while to timeout and/or report confusing errors. Instead, call
daprobedone() when the periph is invalid to terminate the probe.

Fixes: https://cgit.freebsd.org/src/commit/?id=d78d04b17cb24
Sponsored by:           Netflix
MFC After: 1 week
Differential Revision:  https://reviews.freebsd.org/D58524
0bc6c9279e51ee6dddb7fe307121cd9a54176e81 Warner Losh 2026-09-11 05:12:29
da: Fix logic error
Apply de-morgan's law correctly to force only 4/2 to go to the
invalidate stage for that ASC/ASCQ.

Fixes: https://cgit.freebsd.org/src/commit/?id=d78d04b17cb24
Sponsored by:           Netflix
MFC After: 1 week
Reviewed by:    ali_mashtizadeh.com, mav
Differential Revision:  https://reviews.freebsd.org/D58525
e2bcab51fb5053907a7db34978bfa7f112d0c9c6 Warner Losh 2026-09-11 05:12:55
cam: Refactor cam_periph_devctl_notify init/fini bits
To be able to create other kinds of devctl notifications that don't flow
through cam_periph_devctl_notify, refactor out the header / trailers we
do and the sbuf life cycle management. No functional change.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D58526
a67354f213f83327cc4357db02985985c9c8db27 Warner Losh 2026-09-11 05:13:02
cam: Add devctl message for invalidation of a periph.
Report serial number, if available, otherwise report the path of the
device invalidated.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D58527
d04083d52b16893c7346ae4261ed52bf23501282 Warner Losh 2026-09-11 05:13:08
dtrace: Instrument more of the CAM device lifecycle
cam::periph:error, cam::{,a,n,sd}da:error
        Trace the error evolution for I/O errors the periph encounters

cam::periph:recovery, cam::{,a,n,sd}da:recovery
        Trace the result of the error sorting

cam::periph:invalidate
        Trace device invalidations

cam::periph:hold-boot
cam::periph:release-boot
cam::xpt:hold-boot
cam::xpt:release-boot
        Trace boot holds and releases at different levels

cam::xpt:bus-register
        Trace new busses added

These additions allow fairly complete instrumentation of the discovery
process at boot through dtrace's anonymous tracing. It would be mildly
better to have the boot holds have the periph, but dtrace sbts have to
be static at compile time.

Sponsored by:           Netflix
Reviewed by:            dteske
Differential Revision:  https://reviews.freebsd.org/D58523
c4c790949fbcba9f8425351896e3b3047eaae0b8 Warner Losh 2026-09-11 05:13:30
Commit group #13: linux: implement prctl PR_{G,S}ET_THP_DISABLE
linux: implement prctl PR_{G,S}ET_THP_DISABLE

Since we don't have THP in FreeBSD, return that it's disabled. Linux
applications use this to get around the weird latency spikes THP in
Linux creates. Since FreeBSD superpages don't suffer from this issue,
just say it's disabled.

This removes the noisiest noise from the linux claude running on
FreeBSD.

Sponsored by:           Netflix
a8a6eac570917825d947020775d8f1962b396fd7 Warner Losh 2026-09-11 05:42:34

linux: LINUX_PR_SET_THP_DISABLE all non-zero values are disable

Linux treats any nonzero value as "disable", so accept them all.

Fixes: https://cgit.freebsd.org/src/commit/?id=a8a6eac57091
Sponsored by:           Netflix
06488d2a121af7a454083670b429d9ec42e77c99 Warner Losh 2026-09-11 20:47:16
linuxkpi: Add compat_ptr_ioctl
Adding the `compat_ptr_ioctl` function for amdkfd support it's called by
kfd_chardev.c

Reviewed by:    dumbbell
Differential Revision:  https://reviews.freebsd.org/D58076
eb9e38e37c828473cb56705b45d7940b492e41a0 Sourojeet A 2026-09-11 09:49:16
kobj: allow multiple inheritance with per-class softc
Add support for hierarchical softc layout so that a leaf class and each
of its base classes owns a private softc region inside a single
allocation.

device_get_softc_class(dev, cls) returns a pointer to the softc that
belongs to the requested class.  The classic device_get_softc() still
returns the leaf softc and remains fully compatible with existing
drivers.

Existing drivers are unaffected; they simply obtain a slightly larger
softc block when they inherit from base classes.

MFC after:      2 months
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D59115
477c594d906328e210c30cf2c21d983152f21de3 Michal Meloun 2026-09-11 11:47:30
LinuxKPI: Run irq_work callbacks under RCU protection
Linux executes irq_work callbacks from an interrupt context that
provides implicit RCU read-side protection. LinuxKPI dispatches these
callbacks through a taskqueue, so provide equivalent protection
explicitly.

This prevents an RCU grace period from completing while an irq_work
callback is still using an RCU-protected object.

Suggested by:   wulf
Tested by:      JustAnotherHumanBeing
Signed-off-by:  JustAnotherHumanBeing <oleglelchuk@gmail.com>
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2385
0d022baa047aea6499e394d2cd8d097820ecf486 JustAnotherHumanBeing 2026-09-11 15:49:23
if_bridge: pull up only the headers bridge_pfil() inspects
bridge_pfil() pulled up min(m_pkthdr.len, max_protohdr) bytes.  When the
mapped head is shorter than that and followed by an unmapped (M_EXTPG)
mbuf -- a sendfile(2) or KTLS segment from a member advertising
IFCAP_MEXTPG -- m_pullup() ran into it and dereferenced a NULL mtod(),
panicking the kernel.

Pull up the Ethernet header first, and the SNAP/LLC header only for an
802.3 frame.  This is similar to pf and ip_output().

m_pullup() and m_copyup() asserted only the first mbuf; assert inside both
copy loops so the shape trips the check.

Fixes:          https://cgit.freebsd.org/src/commit/?id=c38abd64dbc1 ("if_epair: support IFCAP_MEXTPG")
Suggested by:   markj
Reviewed by:    markj, gallatin
Assisted-by:    Claude Code (Fable 5, Opus 5)
26248c370fade359e5303094fb57102d7fcc9c78 Alexander Leidinger 2026-09-04 07:35:59
nfscl: Yet more fixes for the NFS over RDMA client glue
This should be it for a while, but there will be another cycle
of "glue" updates.  I just found out that I'll need to create
an alternate code path that uses a contigmalloc() blob instead
of scatter/gather of pages, since some NICs cannot do the
scatter/gather of pages well.

This commit should not affect non-RDMA behaviour.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
741cd29526e0033c5b8282f79cae828bf2ad12a8 Rick Macklem 2026-09-12 22:47:20
vfs_lookup_cross_mount(): fix missing LK_CANRECURSE
This was a rather dumb miss on my part in commit 42442d7a6e.
LK_CANRECURSE is clearly needed in any case in which the covered vnode
is held exclusive across the call to VFS_ROOT(), regardless of whether
it was initially held exclusive or upgraded.  The commit message for
that change also noted that unionfs lookup only worked without
LK_CANRECURSE due to a coincidence of the then-current unionfs
implementation.  As it happens, said coincidence was recently removed
in commit b952606b4f ("unionfs_lock(): eliminate LK_CANRECURSE special-
case").

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298201
Reported by:    olivier
Fixes:          https://cgit.freebsd.org/src/commit/?id=42442d7a6e "Generalize the VV_CROSSLOCK logic in
vfs_lookup"
Reviewed by:    kib, markj, pho
Tested by:      pho
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59494
f57ce26f2572efb8adc825ad4efc0e0743a9112f Jason A. Harmening 2026-09-07 17:36:20
linuxkpi: Fix cancel_delayed_work_sync() return value
Align behavior between the Linux cancel_delayed_work_sync()
function return value and the LinuxKPI equivalent.

Linux cancel_delayed_work_sync() returns whether delayed
work was pending, even if canceled before executing. This
includes the case where the timer fired and work was queued
but the callback had not yet started.

The LinuxKPI version used the return value from taskqueue_cancel()
as the return value of the public facing API, which inverted the
behavior of two cases, violating the Linux API contract.
Queued work which was removed before running would return false, and
work whose callback was already executing would return true.

Track the taskqueue pending count separately from the
taskqueue_cancel() return value.
Use the pending count for the public return value.
Use taskqueue_cancel() return value only to decide whether
state needs to be re-checked.

This fixes behavior in consumers which use the return value of
cancel_delayed_work_sync() to distinguish canceled pending
work from work that was already running or idle.

Signed-off-by:  Ryan Fahy <ryan@rfahy.com>
Reviewed by:    wulf
MFC after:      1 month
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2268
79e290d967862bef1adcf39f0bfcf1b4993a8202 Ryan Fahy 2026-09-13 07:39:48
sendfile(2): rework compat implementation
Rename the sendfile() function to kern_sendfile(), expand the arguments
previously passed in struct sendfile_args, and extend with two function
pointer arguments to copy in the header/trailer structure and the
create uio's for the header and trailer as required.  Use this to allow
the removal of freebsd32_do_sendfile() which was a nearly identical
duplicate of sendfile() with attendant maintenance cost.

Reviewed by:    kib, markj
Effort:         CHERI upstreaming
Sponsored by:   Innovate UK
Differential Revision:  https://reviews.freebsd.org/D59034
c1e73325877038655236930534253572ec4a0317 Brooks Davis 2026-09-13 08:41:38
graid3: Restore lock acquisition
The lock acquisition in g_raid3_ctl_insert() was improperly dropped a
while ago, making it impossible to add or replace a device in an
existing graid3.  This went unnoticed because the tests are broken.

MFC after:      1 week
Fixes:          https://cgit.freebsd.org/src/commit/?id=fcf69f3dbce6 ("Consistently use gctl_get_provider instead of home-grown variants.")
Event:          EuroBSDcon 2026 DevSummit
Reviewed by:    delphij
Differential Revision:  https://reviews.freebsd.org/D59563
9094f86b57a7e4b356cae83f35c8d41c842b42a2 Dag-Erling Smørgrav 2026-09-13 12:27:18
LinuxKPI: Add dma_length field to struct scatterlist
On Linux `dma_length` field of `struct scatterlist` is present on the
arches where DMA mapping code is able to coalesce adjacent segments
of physical address space. It contains total length of coalesced
segments while `length` field contains non-coalesced length of each
segment. On other arches `dma_length` is aliased to `length` field with
`sg_dma_len` macro. As FreeBSD does not merge scatterlist segments it
do not have `dma_length` field. It is appered that at least i915kms
driver depends on existence of `dma_length` field.

Add the field and disable it by default. To enable add to Makefile

.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" || \\
    ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "powerpc"
CFLAGS+=        -DCONFIG_NEED_SG_DMA_LENGTH
.endif

Reported by:    Ryan Fahy
Reviewed by:    bz
MFC after:      1 month
GHI:            https://github.com/freebsd/drm-kmod/issues/315
Differential Revision:  https://reviews.freebsd.org/D59630
a6b40d746b4b727b308f2437b41f8032b921a8e5 Vladimir Kondratyev 2026-09-13 17:25:12
nvme: reject namespaces formatted with metadata
The active LBA format's MS field was never examined. I/O to a
metadata-formatted namespace carries neither interleaved metadata
nor MPTR, so every command is malformed, yet the namespace attaches
as a disk with the wrong sector size.

Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59625
416611f05cc4fc431a6f9f40fcc40171e846e8fe Abdelkader Boudih 2026-09-13 19:54:00

Build system

EC2: Add desktop flavour
Desktop AMIs have xrdp enabled and boot to a KDE desktop; they are
as compatible as possible with EC2 Windows AMIs, setting a random
password and printing it to the console in encrypted format to be
retrieved using the EC2 GetPasswordData API.

Two rc.d scripts are included in this commit which will not exist
in the long term: ec2_addpass will become part of the ec2-scripts
package, and ec2_desktop_extras will go away once its functionality
is included elsewhere.

MFC After:      1 month
Relnotes:       yes
Sponsored by:   Amazon
a9710349513f4c6ccb8bcff34fa9ea186fae6114 Colin Percival 2026-09-07 07:54:04
lib/msun: move the calculation of LIBC_SRCTOP earlier
which makes the variable available for machine/Makefile.inc usage.

Reviewed by:    fuz, kfv
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59462
b45fd24a3ca666fbb1c754d9de94a9b33fa7949e Konstantin Belousov 2026-09-06 23:23:45
universe.sh: build with 1.5 * ncpu jobs
Build with 1.5 * ncpu jobs instead of hardcoding 40.

Reviewed by:    imp
Differential Revision:  https://reviews.freebsd.org/D59515
bac0daa9cbcba8bd4147f8e6a24b097fb6eefdc5 Ahmad Khalifa 2026-09-09 03:41:05
universe.sh: add MK_BEARSSL build
BEARSSL is disabled by default, add this here to make sure it doesn't
break.

Reviewed by:    imp
Differential Revision:  https://reviews.freebsd.org/D59516
1de79e73a8be1938911d9640d0bde0432d220dd6 Ahmad Khalifa 2026-09-09 03:41:14
universe.sh: don't overwrite no_zfs's build log
Give the WITHOUT_LOADER_BIOS_TEXTONLY build its own log file.
73244875624cfaf94ca39fbaed510c3435b3b142 Ahmad Khalifa 2026-05-30 22:44:01
tests/fib_lookup: Fix compilation by adding SYSDIR
This module is intended to compile in its own directory.
Therefore, the SYSDIR is not defined by default. See 0433870efefc.

Fixes:  https://cgit.freebsd.org/src/commit/?id=8e985774117d ("kern: Remove needless kern.opts.mk")
c6dfeb546d8c45ae30bba15402da8ab0621532a0 Pouria Mousavizadeh Tehrani 2026-09-10 10:54:28
man: Do glob expansion with echo instead of ls
echo is a shell builtin, and always present. While ls usually works,
some upgrade scenarios need to have ls be a build to to work
correctly. Rather than add it as a build tool, use echo instead which is
always safe because sh is a build tool.

Sponsored by:           Netflix
73df5f2ec93ab03a74fced49323bfdfdb1514700 Warner Losh 2026-09-11 05:13:46
man: Link mlx5en.4 also to if_mce.4
For consistency, create a symbolic link from mlx5en.4 to also if_mce.4

Reviewed by:            ziaee, #manpages
Event:                  EuroBSDCon 2026
Differential Revision:  https://reviews.freebsd.org/D59610
MFC after:              3 days
e46a7d842a7572cc7ccef88a463a9af1a725fefc Juraj Lutter 2026-09-12 09:54:09
lib/googletest: also use -O0 for internal tests with GCC
This fixes the build with gcc 16's aggressive inlining.

Reviewed by:    ngie
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59538
243bdaff75853606ce477807e87e4fbcc1decfb1 Siva Mahadevan 2026-09-12 18:29:02

Internal organizational stuff

jib, jng: Add license banner
bba4f80b5c15d84ce05be4cf89db770715eb3873 Devin Teske 2026-09-07 03:57:36
bsd-family-tree: add NetBSD 9.5 and FreeBSD 14.5
ae458518935eee7a6dc59958f1fb9da223b873c3 Maxim Konovalov 2026-09-08 04:03:27
MAINTAINERS/CODEOWNERS: Add myself to scheduler files
I have been the de-facto maintainer for a few years now.

Also mention the #scheduler group for reviews on Phabricator.

Sponsored by:   The FreeBSD Foundation
f02f93e79147f8f8ef536d9696d6cb29e08592cd Olivier Certner 2026-09-07 16:35:16
MAINTAINERS/CODEOWNERS: Scheduling/Priorities: Add a bit more files
These files are not about scheduling per se but about priority
management, mostly from user space.
d55eb2bed6a7d8b55cfc120ccd535ca798175764 Olivier Certner 2026-09-10 14:11:09
MAINTAINERS/CODEOWNERS: Scheduler: Use globs
Suggested by:   des
7b4d0f62731e1fd8340b99c0c6c36e359a5d2ee9 Olivier Certner 2026-09-11 11:22:18

Testing

tests/netinet: test case for a jail with 2 addresses
Check that wildcard bind(2) doesn't yet select a local address, and later
connect(2) succeeds.
2e16d37e275fa6bcd0494dbc48868a979404ce56 Gleb Smirnoff 2026-09-07 18:51:22
tests/fusefs: fix the build with gcc 16
Reviewed by:  asomers
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
0e3dae1ca8fc371eb5c451032adc5e0813b00db6 Siva Mahadevan 2026-09-08 20:10:51
tests/kqueue: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    markj
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59542
c65c63cf5104bff198854fd1d8fe277dfc1c1956 Siva Mahadevan 2026-09-10 14:39:11
stress2: add two new unionfs test scenarios
These exercise lookup traversal from tmpfs into unionfs, which is
useful because, unlike UFS, tmpfs does not allow recursion on its vnode
locks by default.

unionfs22.sh exercises these lookups with a normal unionfs mount, while
unionfs23.sh uses '-o below' for the unionfs mount and reproduces the
panic described in PR 298201.

Reviewed by:    kib, markj, pho
Tested by:      pho
Differential Revision:  https://reviews.freebsd.org/D59494
5fe1964fa05632cb86459a64debd92f9dca37ed3 Jason A. Harmening 2026-09-07 17:52:44
tests: Fix graid3 insert tests
The script was passing the wrong device name to `graid3 insert` and
didn't notice that the command was failing.

MFC after:      1 week
Event:          EuroBSDcon 2026 DevSummit
Reviewed by:    delphij
Differential Revision:  https://reviews.freebsd.org/D59564
4cc85d1f00fa1938923fe8d6fc2934593d4303b4 Dag-Erling Smørgrav 2026-09-13 12:27:50
libc: Preserve const qualifier on bsearch(3) results in tests
Reviewed by:  dteske, fuz
Approved by:    dteske (mentor), fuz (mentor)
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D59611
3caa8d2c58b2787e4c4c64d9ac1831dadd7b0b47 Faraz Vahedi 2026-09-13 12:25:47

Style, typos, and comments

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

buf_ring: tiny style(9) fixup
4e45f4c76723fb26bfcab60c7491d960db252c1e Gleb Smirnoff 2026-08-05 18:17:21
ipfw.8: whitespace police
b891252f209bf22938c9492496d166da96fcba1f Maxim Konovalov 2026-09-09 17:21:37
loader: Fix starting typo
Fixes:                        https://cgit.freebsd.org/src/commit/?id=a22fa5ec74e0 ("laoder.efi: Fix error in download protcol")
Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59434
08265d5edef168d8ad493b975ef184336a022927 Warner Losh 2026-09-11 04:14:35
arpa/telnet: Fix a typo in a source code comment
- s/ascic/ASCII/

MFC after:      3 days
16246209d25ac437494ebe92b9819a65f1336594 Gordon Bergling 2026-09-11 16:29:05
sys/kern: Fix a typo in a source code comment
- s/untill/until/

MFC after:      3 days
8255ae9a750f6de312f9b445c25b1c8caf3d95b7 Gordon Bergling 2026-09-11 16:30:10

Contrib code

contrib/lutok: remove autotools generated files
These files provide no value in the FreeBSD tree proper and change
frequently, depending on what machine I generate the release tarball on
(and what versions of autotools are on the host). Nuke the autogenerated
files to avoid bloating commit history/the tree.

MFC after:      3 days
Requested by:   Benjamin Jacobs <freebsd@dev.thsi.be>
cfe443e1e63dd588fba7eabec553ed5e1c408d1f Enji Cooper 2026-09-07 03:21:50
libctf: remove unused variable
This fixes the build with gcc 16 after the changes
to -Wunused*[0].

[0] https://gcc.gnu.org/gcc-16/porting_to.html#changes-to-wunused

Reviewed by:    markj
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D59537
8e75ea59b085fb6dedfe5911481e6673a60b48fe Siva Mahadevan 2026-09-10 14:40:28
tests: skip gracefully when the tested binary's own package isn't installed
pkgbase splits programs and their tests into separate packages (e.g.
unifdef/yacc/indent/file2c -> toolchain, jail -> jail, etc), while their
tests always land in the generic tests package.  Installing just the
tests package therefore leaves these suites unable to find the binary
they exercise, and they fail confusingly instead of skipping.

Rather than force all packages to be installed for the tests package,
make the tests cope with the missing packages.  Add require.progs (or,
for TAP/PLAIN-style suites with no atf_set hook: TEST_METADATA
required_programs) for the binary under test in: bectl, certctl,
ctfconvert, dhclient, file2c, indent, ipfw, jail, lastcomm, mixer,
newsyslog, nvmecontrol, pfctl, praudit, sa, syslogd, tunefs, unifdef,
yacc, ztest.

I skipped adding data for all the binaries in the base runtime
package for simplicity.

Assisted-by:            Claude Code (Sonnet 5)
Sponsored by:           Netflix
Reviewed by:            ngie
Differential Revision:  https://reviews.freebsd.org/D58262
a259b98fa211ed87bfee58c575de4e2de94ee0fa Warner Losh 2026-09-11 05:42:25
contrib/tzdata: import tzdata 2026d
fe81d42176f04718d7534242dfd4b9f250ac50fc Philip Paeps 2026-09-12 00:29:28
Commit group #14: tzcode: Update to 2026c
tzcode: Update to 2026c

MFC after:      1 week
212e3524943222650688bd1f49d5eb4c9326de7f Dag-Erling Smørgrav 2026-09-13 13:29:59

libc/stdtime: Catch up with tzcode 2026d

Fixes:          https://cgit.freebsd.org/src/commit/?id=212e35249432 ("tzcode: Update to 2026c")
1689b875b4b80c152cf7d3652c72335a2149173e Dag-Erling Smørgrav 2026-09-13 13:54:42

Reverted commits

Commit & revert pair: contrib/lutok: remove autotools and doxygen generated files
contrib/lutok: remove autotools and doxygen generated files

These files provide no value in the FreeBSD tree proper and change
frequently, depending on what machine I generate the release tarball on
(and what versions of autotools are on the host). Nuke the autogenerated
files to avoid bloating commit history/the tree.

MFC after:      3 days
Requested by:   Benjamin Jacobs <freebsd@dev.thsi.be>
3dbe1800848ca71f5cc083f1d5c5b4759b601fae Enji Cooper 2026-09-07 03:21:50

Revert "contrib/lutok: remove autotools and doxygen generated files"

I messed up the commit title. Redo it with a correct summary.

This reverts commit 3dbe1800848ca71f5cc083f1d5c5b4759b601fae.
ca0e8956c5472266ae2c1a64d23aa4a6f9611ef1 Enji Cooper 2026-09-07 03:24:36

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 2026-10-05 16:54:58+00:00.

This work is supported by Tarsnap Backup Inc.

Alternate version: 2026-09-07 (debug) (contains info about the classification)