aboutsummaryrefslogtreecommitdiff
path: root/sys/modules
Commit message (Collapse)AuthorAgeFilesLines
* zfs: merge openzfs/zfs@1f380a4f3Martin Matuska8 days3-5/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Notable upstream pull request merges: #17864 e903655c5 zpool: Add zpool status -vv error ranges #18820 -multiple zdb: account pending DDT-log frees in leak detection #18884 -multiple zio_crypt: establish platform interface; rework common code to use it #19010 -multiple zfs_namecheck: reject '.' and '..' before a snapshot or bookmark #19031 994fb1703 Fix metaslab count assertion in metaslab_group_alloc() for small vdevs #19093 f5b2fc8e2 zfs_ctldir: make .zfs/snapshot/<name> btime the snapshot creation time #19097 2dece2a34 zstream: report invalid record context without assertions #19102 78f49e1dd vdev_disk: simplify alignment checks for linear ABDs #19108 -multiple Fix permanent errors misfiled into the scrub error log #19110 fa4bc4dec spa_errlog: don't let one unresolvable entry hide the whole error log #19116 b6dde8a17 zio_crypt: free the key unwrap uios when decryption fails #19122 -multiple Fix dd_lock contention on space accounting #19126 c792317f2 Avoid dp_lock in the dirty space accounting #19131 7fd87803e Make the spa_config_lock reader fast path lockless #19137 a83d96835 libzfs: do not iterate snapshots for a mountpoint changelist #19152 ccce78729 ZIO: Order a batch arrival against the hold it releases #19155 9d7260c9b Propagate vdev state change on probe failure #19157 946be3a33 FreeBSD: remove legacy ioctl support #19165 1d9c32c16 zpool: accept more redundant special and dedup vdevs #19167 638abd22a zfs_domount: fix vfs_t double-free on root setup failure Obtained from: OpenZFS OpenZFS commit: 1f380a4f34da6068d22960807f53cda68a356add
* dtrace: Remove bogus Makefile.incJohn Baldwin14 days2-25/+0
| | | | | | | | | | | | | | | This was added in the initial import of dtrace and overrides the normal load/unload targets with a custom target that loads a hardcoded set of modules. Over time, the set of modules has not been updated and is now incomplete. It's also not really useful compared to the default implementation of these targets used for loading or unloading an individual module being actively developed. This functionality is also available via dtraceall.ko which is how users commonly load the full suite of dtrace modules. Reviewed by: imp, markj Differential Revision: https://reviews.freebsd.org/D59821
* ice: Add a failure injection facilityKevin Bowling2026-09-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add compile-time optional, non-sleeping fail points around every VF creation resource boundary, before VF VSI reconstruction, and in the GET_STATS validation path. Provide an ICE-wide wrapper and device selector so other driver subsystems can add scoped points without duplicating the failpoint plumbing. Keep the current SR-IOV points and VF selector in an iov child namespace. Compile the facility only with options DRIVER_FAILPOINTS. This shared option avoids a separate kernel option for every driver that provides test-only injection hooks. Ordinary kernels contain no ICE failpoint objects or sysctl nodes. Require an exact PF device name and optionally a VF index before any point can fire. This prevents a stale test setting from affecting another PF. The hooks exposed two reset-lifetime defects while validating the existing SR-IOV review series. A PF reset could discard a firmware VSI before teardown, and a rebuilt sibling could leave stale switch-filter state after IOV destroy. Tested on an E810-XXV with INVARIANTS and WITNESS. All twelve creation checkpoints rolled back and permitted immediate resource reuse. Forced reconstruction and malformed GET_STATS failures also preserved sibling operation and reply cardinality. Reviewed by: gallatin, nprice, ziaee MFC after: 2 weeks Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D58940
* hvuio: Add HV_UIO driverVag Singh2026-09-162-0/+14
| | | | | | | | | | | | | | [PATCH 10/31] FreeBSD OFED support for DPDK MLX5 PMD Adding UIO driver that exposes the synthetic network device resources to userspace for application such as DPDK can drive it. Added rescind CB capability to the VMBUS driver. Whenever the hypervisor wants to close the device channel, VMBUS on receiving this msg, calls the CB of the device driver (hv_uio in our case). Differential revision: https://reviews.freebsd.org/D32184 MFC after: 1 month
* intel: add hfsts debug-probe driver for Intel ME/HECI firmware statusAbdelkader Boudih2026-09-152-0/+13
| | | | | | | | | | | | | Add an amd64-only, Intel-only diagnostic driver that reads ME Host Firmware Status registers from PCI configuration space without mapping the messaging BAR. Select the HFS register count per device generation, decode sparse HFS1 state, mode, and error fields, and expose raw and summarized status via sysctl. Register an ISA-side hfstsfd probe for supported RCBA/FD2 generations so firmware-hidden HECI functions can be diagnosed. Reviewed by: kbowling, adrian Differential Revision: https://reviews.freebsd.org/D58863
* ixv: Add Hyper-V virtual function supportKevin Bowling2026-09-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hyper-V does not expose the normal Intel PF/VF mailbox. Import the Hyper-V operation overrides from DPDK and complete its reset callback with the configuration-space mechanism submitted by Microsoft. Route ixv operations through the operation table, use mailbox API 1.0, and limit this environment to one queue pair. Claim the 82599, X540, X550, X550EM-X, and X550EM-A Hyper-V device IDs listed by DPDK. Select the same path for the E610 Hyper-V subdevice identity defined there. For E610/Linkville, read the emulated VFLINKS-format status from PCI configuration space at offset 0x209. Older families retain the MMIO VFLINKS path. Treat receive-mode changes as host-owned no-ops and do not retry VLAN operations that Hyper-V permanently rejects. Limit the Hyper-V 82599 MTU to 1504 because its VF does not implement the X540 RLPML field. Use mailbox reset indications only to refresh cached Hyper-V link state. Hyper-V does not provide the mailbox handshake required to treat that indication as a request for an iflib reinitialization. Tested on 82599 and E610 (with a followup commit) with Windows Server 2025 Hyper-V. PR: 232472, 239849 Obtained from: DPDK (shared code) Sponsored by: BBOX.io Co-authored-by: Wei Hu <weh@microsoft.com>
* ufshci: add a control device nodeJaeyoon Choi2026-09-151-0/+1
| | | | | | | | | | | | | | | The driver only exposed a CAM SIM. Userland had no way to reach the device for anything that is not a SCSI command, so reading a descriptor or an attribute was impossible. Add /dev/ufshci%d as a root only node and the ioctl ABI header for it. The node answers no ioctl yet. The header pulls in ufshci.h, which declares bool only under _KERNEL, so include stdbool.h for userland the way nvme.h already does. Reviewed by: imp (mentor) Sponsored by: Samsung Electronics Differential Revision: https://reviews.freebsd.org/D59558
* Trim various $FreeBSD$ that have snuck back in since the mass removalJohn Baldwin2026-09-143-6/+0
| | | | Sponsored by: Chelsio Communications
* zfs: merge openzfs/zfs@02b5baf13Martin Matuska2026-09-142-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Notable upstream pull request merges: #18808 6d4ff3b4f Pool split leaks DTL spacemap objects #18844 0833cfd64 Decline Direct I/O reads on a file handle after a benign verify failure #18853 39764eb06 Fix double free when cloning a block with a pending free #18901 51fe1fb84 dmu_send: a meta-dnode range does not start where an object does #18903 904d4327f dmu_objset_open_impl: unregister prop callbacks on error #18906 e45640415 zdb: add detailed diagnostics for MOS leaks and spacemap refs #18909 1b7143557 Keep a grown vdev from adopting an older pool's labels #18912 -multiple Defer destruction of a snapshot that a mount is holding open #18921 33ae06bb6 ZIO: Batch vdev children completions #18940 7853c27eb ZIO: Batch lightweight ZIOs #18967 -multiple Speed up pool rewind and allow it to tolerate minor damage #18968 b0fff48dc arc: harness buf_hdr's anon state invariant checks #18969 b0da5c4ce dsl_crypt: validate every key change-key will rewrap #18974 b19fa7c97 log_spacemap: make zfs_log_sm_blksz tunable #18982 c878ee452 zstream: track and limit memory use #18991 a1261384a zstream: self-tuning queues #18992 fd639b075 zcp: support bookmarks in zfs.sync.destroy #18993 0498c554d vdev_disk_open: fix ENOENT retry & cleanup error handling #19003 5280a08f6 Write uberblocks only to vdevs used by the txg #19008 c47591d5d arc: apply arc_min tunables set before arc_init() has run #19016 cd578e518 dnode: fix heap-use-after-free in dnode_rele_and_unlock() #19017 b824f3116 zstd: declare __asan_*_memory_region() for user space builds #19029 6860d1c2f DDT: Use proper size when calling kmem_free on ddt_prune_entry_t #19041 aa26ca67b Do not complete a device removal that hit IO errors #19042 8e5bb1d4b Wait for the initialize and trim threads to exit #19051 ba524e0d7 zpool: things get messy with 0 columns #19053 69ef525a4 dsl_deadlist_space_range: use correct tree when summing up space #19059 0ee8ea01b FreeBSD: use sys/abi_compat.h for time32_t #19062 e08bc2973 Skip interior dnode slots when receiving DRR_FREEOBJECTS #19066 92a3904af Wait for the txg that finished a scan to sync #19071 db07a5e0a dbuf: account dirty data for embedded writes #19072 1a8e51491 Fix self-deadlock when cloning a range within the same file #19075 75bd31c28 L2ARC: do not feed a device while its rebuild is pending #19083 56e8d234b Stop the TRIM and initialize threads when a vdev goes offline #19090 ab994acdd dmu: remove dmu_prealloc() #19092 61fbdf1a2 zfs: spa_sync_upgrades() should only take lock when needed Obtained from: OpenZFS OpenZFS commit: 02b5baf13cbfdf9abd33b939a082b448951d9174
* intel/intelpmc: Add Intel PMC Core driverAbdelkader Boudih2026-09-132-0/+8
| | | | | | | | | | | | | | | | | | | | | | 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
* hid: Add Sony DualSense gamepad driverChristos Longros2026-09-112-0/+9
| | | | | | | | | | | 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
* linuxkpi: Add `int_sqrt()`Jean-Sébastien Pédron2026-09-101-0/+1
| | | | | | | | | | | 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
* tests/fib_lookup: Fix compilation by adding SYSDIRPouria Mousavizadeh Tehrani2026-09-101-0/+1
| | | | | | | This module is intended to compile in its own directory. Therefore, the SYSDIR is not defined by default. See 0433870efefc. Fixes: 8e985774117d ("kern: Remove needless kern.opts.mk")
* hwpmc: add MPERF/APERF MSR support for AMD/Intel CPUsAnderson Nascimento2026-09-091-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* linuxkpi: Add `timer64_to_tm()`Jean-Sébastien Pédron2026-09-071-0/+1
| | | | | | | | | | | 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
* gzoned: Introduce Zoned Storage emulatorvoidanix2026-09-032-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gzoned(8) is a new GEOM class that exposes a host-managed zoned device (similar to ZAC/ZBC drives) on top of regular, non-zoned providers. The created medium is sliced into equally sized zones, by default sequential-write-required. Such zones can be turned into conventional zones if desired. The zoned drive's state and configuration is persistent through metadata at the tail of the backing provider, meaning the zoned device gets recreated at the provider retaste. Zone state changes only mark the table dirty with BIO_FLUSH committing it, mirroring drives whose zone state is volatile until a cache flush. The new class tries to emulate real zoned drives by incorporating per-zone write pointers and support for BIO_ZONE management commands. Fault emulation through zone conditions (RWP recommended, offline, R/O), URSWRZ bit toggling and concurrent open zone limits are additional features useful for testing. While at it, fix zonectl's report of write pointer LBAs for zones that should have none, remove its forced debug flags and allow the geom(8) shared subroutines to detect host-managed drives. ATF-sh tests for gzoned(8) and zonectl(8) (dogfooded by gzoned(8)) are included, featuring helpers (see zoned_subr.sh) for testing zoned storage support in other components or GEOM classes. Reviewed by: asomers, fuz, ken Sponsored by: Google Summer of Code 2026 Pull Request: https://github.com/freebsd/freebsd-src/pull/2326
* rtwn: add support for the RTL8723BUAhmad Khalifa2026-09-014-1/+13
| | | | | | | | Pushed using the RTL8723BU. Reviewed by: ziaee, avos, adrian Relnotes: yes Differential Revision: https://reviews.freebsd.org/D59205
* zfs: merge openzfs/zfs@84aa7e7e0Martin Matuska2026-08-243-114/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Notable upstream pull request merges: #16761 eb1738bcb FreeBSD: Enable Direct IO by default #16747 -multiple On-demand log-spacemap flush #18474 0d0eae2ab implement thorough scrub support (zpool scrub -t) #18562 6721ab981 Calling thread IO #18657 7ed1268d3 Fix race between device removal completion and pool export #18707 0d1f3b1c6 RAIDZ: Fix parity regeneration/check condition #18713 -multiple libzfs: fix key unload failure when unmounting an encryption root #18714 d902eec64 Disconnect metaslab tracing from default builds #18716 e78fa488a zstream: multithreading #18718 6acb99cb1 Do not return ESTALE for open-unlinked files #18720 f607ef7e7 Fix insufficient locking in dedup verify #18722 -multiple snapdir: misc cleanups #18724 9bf75b4b1 Fix reads for blocks freed after being cloned #18725 9b7642df9 Harden recv record validation #18732 37f066e3c FreeBSD: Wire sha512 offload to the build #18736 -multiple Remove idmap/userns concept from core & FreeBSD platform code #18742 d63f14057 libzutil: keep valid spare and l2cache paths on import #18749 f217627d4 Fix receive of split large blocks with a short trailing chunk #18754 83bf40784 Use a single creation time for a recursive snapshot #18755 ebd9e2765 zstream: add "drop records" chain module #18763 7d565cdfa zfs bookmark: add recursive (-r) bookmark creation #18765 50557cc80 zpool initialize: add -z to write zeroes #18766 0467ba01c Add SECURITY.md policy filE #18773 ffde77051 Fix deduce_nblkptr for large dnodes on receive #18784 -multiple libzfs: clarify the raw incremental "IV set guid mismatch" error #18793 9a02e53ad libzfs: don't abort receiving a raw encrypted send that carries holds #18795 30426217b Rate limit Direct I/O verify zevents #18798 73b202451 Bound explicit user prefetch to a fraction of the ARC #18801 2a5331f8e Fix dmu_zfetch_prime() assuming a stream was created #18802 fb5fdefd8 libzfs: fallback VDEV_UPATH to VDEV_PATH for non-DM devices #18809 bd2d87399 zdb: output refcounts from verify_spacemap_refcounts() #18811 5d530b8be ABD: Validate borrowed buffer length #18812 5d687a975 dbuf: use dirty record size for overridden writes #18819 -multiple ddt: fix refcount bypass and gang member leak for dedup gang blocks #18821 87e2e4047 BRT: Implement partial bv_entcount writing #18822 -multiple dnode_sync: Relax constraint on indirect freeing - #18822 #18827 d98fa72ca L2ARC: bound the rebuild by the write hand on a first sweep #18831 90cdd9aef Batch object reallocation syncs in zfs receive #18833 466d90e15 zed: let autoexpand see capacity changes on partitioned disks #18835 1ac3f2786 mmp: skip non-writeable vdevs during activity check #18838 a04c40138 DDT: Fix several bugs in pruning #18841 0bb41751f zpool export: return EBUSY when zvol minors are in use #18848 3020c18ca dmu_recv: Avoid potential null deref #18855 8cdd9b2b7 mmp: do not require writes to mirror legs the config marks absent #18858 596c7a0ec Reduce dp_lock scope for MOS writes #18859 3ebf3ffc4 Predict and throttle buffers dirtied by the sync context #18860 -multiple Further parallelize block cloning #18865 412b17a29 Fix DMU bonus hold leak on I/O error #18867 b5bb1f816 Add missing checks to zfs_clone_range_replay() #18868 3df5b2e7f libzfs: String trimming should not operate out of bounds #18869 be62c5385 libzfs: Do not call munmap() when mmap() fails #18871 74e76f2d8 libzfs: don't truncate a resolved vdev path in zpool_vdev_name() #18874 7312322b5 nvpair: Fix operator precedence #18883 3bd8cefdc libzfs: don't read a dataset handle after closing it in resume send #18886 b4f70cb9e Fix negative time overflows in DDT pruning #18888 674b1ae5c DDT: Make ddt_zap_walk() use cursor _by_dnode functions #18889 fd1ae59c7 DDT: Skip DDT log lookups in ddt_prune_walk() #18892 -multiple zhack: add "mmp reclaim" to recover a pool stranded by MMP #18897 216de07d8 arc: fix race between arc_release() and arc_read_done() #18899 28afe8b08 CodeQL: Flag implicit compare-then-assign in branch conditions #18917 0a79c039f arc: save on buf_hash_find() call at arc_read_done() #18920 7026d3335 Fix race condition in raidz expansion startup #18927 be55e01bc FreeBSD: Do not leak TSD zfs_geom_probe_vdev_key on errors #18928 5bd7d4466 scan: count skipped blocks as examined #18937 a5d678864 Allow pool import with corrupted spare/l2arc configs #18960 -multiple vdev_open: use calling credential to check for device access #18961 acbcdd92c dmu_recv_begin_check: dsl_dataset_rele() should be called on ds #18962 df3ff37fc dmu_redact_snap: Do proper cleanup on ENAMETOOLONG #18964 84aa7e7e0 libspl: consult ZFS_HOSTID on FreeBSD as well Obtained from: OpenZFS OpenZFS commit: 84aa7e7e09f6a4ddad9ec40dbe9498d50184ed07
* hwpmc: build hwpmc_rapl.c into the i386 moduleAlexander Leidinger2026-08-231-0/+1
| | | | | | | | | The module's i386 source list compiles the files that call pmc_rapl_initialize() and pmc_rapl_finalize() but not the one that defines them, so the i386 hwpmc.ko has both undefined and cannot be loaded. Fixes: a99d04f39dab ("hwpmc: add RAPL energy-counter class (AMD + Intel)") Assisted-by: Claude Code (Opus 5)
* sys/dts: Add SD card overlays for the BananaPi-F3 SoCBojan Novković2026-08-161-0/+1
| | | | | | | | | | | The K1 user manual lists three separate SDHCI devices but the upstream DTS file only defines the eMMC device. Create a temporary overlay to allow the BananaPi-F3 to boot from the SD card until this is addressed upstream. Differential Revision: https://reviews.freebsd.org/D57177 Reviewed by: mhorne
* riscv: Add spacemit SoC files to the buildBojan Novković2026-08-161-0/+3
| | | | | Reviewed by: mhorne Differential Revision: https://reviews.freebsd.org/D57175
* linux: implement pkey_alloc, pkey_free and pkey_mprotectDevin Teske2026-08-162-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bridge the Linux memory protection key syscalls to FreeBSD's native MPK support instead of returning ENOSYS. Modern Linux software probes these at startup: Chromium-based browsers (found via www/linux-brave) use protection keys for V8's heap and JIT sandboxing, and glibc >= 2.27 exposes the full API. pkey_alloc() allocates from a per-process bitmap kept in the process emuldata (key 0 implicitly allocated, matching Linux's mm_pkey_allocation_map; ENOSPC once keys 1..15 are exhausted or when PKU is absent, as Linux returns on such hardware) and applies the requested initial access rights to the calling thread's PKRU, located in the XSAVE area via xsave_area_offset(). pkey_free() is bookkeeping only: as on Linux, freeing neither untags pages nor updates PKRU. pkey_mprotect() performs the protection change and tags the range through amd64_pkru_update(), factored out of sysarch(2)'s AMD64_SET_PKRU/AMD64_CLEAR_PKRU implementation so that both share the same argument checking and map read lock synchronization with a parallel pmap_vmspace_copy() on fork; tags die with the mapping, matching Linux VMA semantics. A pkey of -1 degrades to plain mprotect. The allocation map is inherited on fork and reset on exec. At exec the Linux sysvecs initialize PKRU to 0x55555554, Linux's init_pkru default (access disabled for keys 1..15), so memory tagged with a not yet allocated key is inaccessible to threads that were never granted rights -- the property V8's thread isolation relies on. Setting PKRU at exec initializes the user FPU state slightly earlier than the lazy first-use path; the state would be initialized moments later in rtld/libc startup regardless. Protection key faults already deliver SEGV_PKUERR through the existing siginfo translation. The common code carries no architecture ifdefs. Machine-dependent state lives in struct linux_pemuldata_md, embedded in the process emuldata in the manner of struct mdthread, and common code calls per-arch lifecycle hooks (linux_pemuldata_init_md/_exec_md) and pkey back ends after performing the parameter validation Linux applies regardless of hardware support. On amd64 the implementation lives in sys/amd64/linux/linux_pkru.c, compiled into linux_common and serving both the 64-bit and 32-bit Linux ABIs. Elsewhere (arm64, i386) linux_emul_md.c provides stubs returning what Linux returns on hardware without protection keys (ENOSPC from pkey_alloc; pkey_mprotect with a pkey of -1 acts as plain mprotect), so applications take their normal no-PKU fallback instead of the ENOSYS path. PR: 297427 MFC after: 1 month Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D58782
* fwcam: convert to video(4) frameworkAbdelkader Boudih2026-08-091-1/+2
| | | | | | | | Replaced the monolithic cdevsw implementation with the video(4) framework. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58369
* uvideo: convert to video(4) frameworkAbdelkader Boudih2026-08-091-1/+2
| | | | | | | | Replaced the monolithic cdevsw implementation with the video(4) framework. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58368
* video: add generic video(4) capture frameworkAbdelkader Boudih2026-08-092-0/+13
| | | | | | | | | | Add a new video(4) framework that provides /dev/videoN, buffer management, mmap lifetime, and V4L2 ioctl dispatch for video capture drivers. Hardware drivers implement struct video_hw_ops callbacks and use video_buf_acquire/write/done to deliver frames. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58367
* gpio: add Intel Tiger Lake-H GPIO driverYannickV2026-08-062-0/+8
| | | | | | | | | | | | | Add a GPIO driver for the Intel Tiger Lake-H platform based on the generic intelgpio framework. The driver defines five GPIO communities with pad groups GPP_A through GPP_K, vGPIO and JTAG, and matches ACPI hardware ID INT34C6. The kernel module build infrastructure and the wiring into files.x86 are included. Reviewed by: vexeduxr MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Pull Request: https://github.com/freebsd/freebsd-src/pull/2205
* gpio: add Intel Alder Lake-N GPIO driverYannickV2026-08-062-0/+8
| | | | | | | | | | | | | Add a GPIO driver for the Intel Alder Lake-N platform based on the generic intelgpio framework. The driver provides pad group definitions for four GPIO communities covering groups GPP_A through GPP_T, vGPIO and HVCMOS, and matches ACPI hardware IDs INTC1056, INTC1057 and INTC1085. The kernel module build infrastructure and the wiring into files.x86 are included. Reviewed by: vexeduxr MFC after: 1 week Sponsored by: Beckhoff Automation GmbH & Co. KG Pull Request: https://github.com/freebsd/freebsd-src/pull/2205
* igbv: Isolate VF policy and validate its registersKevin Bowling2026-07-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Give igb virtual functions a separate ifdi method table and move VF-specific attach, reset, queue, interrupt, and diagnostic policy to if_igbv.c. Keep shared descriptor-ring mechanisms in if_em.c. Derive VF identity from IFLIB_IS_VF and assert that hardware identification agrees. Under INVARIANTS, validate normal VF CSR accesses against the sparse 82576 and I350 VF register maps. Stop shared setup from accessing PF-only controls. Require MSI-X and defer VF sysctls until attach succeeds so failed attachment cannot leave handlers pointing at freed driver state. Advertise only VF capabilities, run adaptive moderation without the PF receive-buffer guard, enable SRRCTL.DROP_EN, and provide a VF-safe diagnostic register view. The moved implementation is the existing FreeBSD code. Register model was cross-checked against the Intel datasheets and other Intel drivers. Sponsored by: BBOX.io
* igb: Add SR-IOV PF support for 82576 and I350Kevin Bowling2026-07-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Add the PCI IOV schema and PF control plane for up to seven VFs with one hardware queue per pool. Implement VF mailbox handling, MAC and VLAN assignment, multicast filtering, promiscuity policy, anti-spoofing, malicious-driver recovery, reset replay, and queue lifecycle management. The basic SR-IOV and VMDq PF implementation follows DPDK Intel e1000 code, including PF pool selection, one queue per pool, mailbox dispatch, and VF enablement. Intel FreeBSD igb-2.5.31 supplies the older driver baseline. Linux igb and the Intel SDMs clear up lifecycle, isolation, reset, and family-specific details absent from DPDK. Enabling IOV requires the PF to attach with one TX and RX queue. Systems whose defaults select RSS queues must set the documented iflib queue override tunables before attach. Only 82576 and I350 support SR-IOV in silicon. The series has been extensively tested on I350, including thowing boundaries at the PCI BAR that shipping drivers will never. Still, think carefully before reaching for this in critical environments. Relnotes: yes Sponsored by: BBOX.io
* igbv: Split 82576 and I350 VF registration off igbKevin Bowling2026-07-301-1/+2
| | | | | | | | | | | | | | | | | | | | | Register the 82576 and I350 VF PCI IDs under a separate igbv driver while continuing to share the igb datapath implementation. Follow the ixv driver split and give the VF context IFLIB_IS_VF so iflib does not apply the PF SR-IOV detach guard to a child VF. Program VTIVAR_MISC in the VF low byte so mailbox and reset notifications reach the VF admin vector. The split will become increasingly obvious as bug fixes land, trying to bias everything with if (sc->vf_ifp) everywhere is error prone in two directions. This breaks existing naming/configurations and cannot be MFCed as-is. I have no plans of adapting it to prior branches at the moment but it may be possible. Relnotes: yes Sponsored by: BBOX.io
* coreboot: Add coreboot firmware table driverAbdelkader Boudih2026-07-292-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nexus-attached driver that discovers and parses coreboot's LBIO tables from physical memory. Exposes firmware metadata (version, build info, mainboard, serial config, TSC frequency, CBMEM entries) via sysctl hw.coreboot.*, the firmware console ring buffer via /dev/coreboot_console, and structured CBMEM entry access via /dev/cbmem ioctl interface. Tested on: - Qotom Q535G6 (Kabylake) - Intel NUC D54250WYK (Haswell) - Intel NUC D33217GKE (Ivy Bridge) - Dell 3100 2-in-1 (Gabbiter) - Dell 3100 (Fleex) - Lenovo IdeaPad 320s - Lenovo ThinkPad T480 - HP Chromebook 11 G4 - HP Chromebook 11 G5 - HP Chromebook 11 G6 EE - HP Chromebook 14 G4 - HP Chromebook 14 G5 - HP Chromebook x360 11 G1 EE - HP Chromebook x360 11 G2 EE - HP Chromebook x360 14 G1 - Acer C720 - Acer Chromebook 11 - Lenovo N22 Reviewed by: ngie, kib, adrian Differential Revision: https://reviews.freebsd.org/D55649
* hwpmc: add RAPL energy-counter class (AMD + Intel)Andre Silva2026-07-281-0/+1
| | | | | | | | | | | | | | | | | | Add hwpmc_rapl.c/.h implementing PMC_CLASS_RAPL, a read-only system-scope class modeled on TSC and wired into x86 AMD and Intel MD init. A per-vendor MSR table covers AMD/Hygon and Intel; energy is reported in microjoules, with the Intel server 2^-16 J DRAM unit handled and 32-bit wraps recovered into a 64-bit accumulator. The overflow guard follows the PMC lifetime: armed on the first allocated PMC, callout_drain()d on the last release, and each tick only rendezvouses CPUs holding one. Per-CPU spin locks guard the accumulator against torn reads on i386. PMC_CAP_DOMWIDE lets pmcstat(8) allocate one counter per NUMA domain instead of per CPU. Reviewed by: mhorne, Ali Mashtizadeh <ali@mashtizadeh.com> Sponsored by: AMD Differential Revision: https://reviews.freebsd.org/D58028
* sys/modules/hwpmc/Makefile: tidy upMitchell Horne2026-07-281-27/+38
| | | | | | | | | | | | | | This module has several source files, with many conditional on the platform architecture. Make it easier to read, and better for future diffs against these lists. - Convert to one SRC per line - Simplify arm/armv7 condition - Remove now-empty header comment - Minor formatting MFC after: 1 week Sponsored by: The FreeBSD Foundation
* LinuxKPI: page pool updates and add to the buildBjoern A. Zeeb2026-07-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Split implementation out from the header files. This "page pool" is the very minimalistic version we need in order to support packets on mt76. We allocate the page pool in order to have the meta data available of which we only make limited use. This implementation does no pooling, it does no page fragments for now, it always hands out a full page and frees it upon return. It is written in a way that it can be in the tree before the 'struct page' work it depends on has landed in order to reduce friction for people who want to try mt7921 (or others later) upfront. We use the same #ifdef as in the struct page work for that reason so one knob will turn everything on or off. Once the struct page work has landed and settled we can start filling this with more complexity. In the unlikely event that in the mean time any other consumer would start showing up they will have to be aware that the current code as-is essentially is a NOP without the 'struct page' work. A WARN_ONCE() will notify them. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* aq(4): add Atlantic 2 (AQC113) device supportNick Price2026-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for the Marvell Atlantic 2 (AQC113/114/115/116) controllers, a new chip generation that is not register-compatible with the Atlantic 1 parts aq(4) supports today. Adapted from the OpenBSD/NetBSD if_aq driver. Register and device definitions (aq2_hw.h): the firmware handshake (MIF_BOOT / MCP_HOST_REQ_INT / MIF_HOST_FINISHED), the 0x12000/0x13000 firmware interface windows, and the action-resolver table (ART) that replaces Atlantic 1's discrete RX filters, plus the Atlantic 2 PCI device ids and the aq_is_atlantic2() helper. Reserve a chip-feature bit (AQ_HW_CHIP_ATLANTIC2) and add the aq_hw fields the firmware fills at boot (ART base index, statistics interface version A0/B0). The per-VLAN-filter resolver-tag field comes from the Linux driver; the BSD sources never write it. Firmware operations (aq_fwa2.c): Atlantic 2 talks to the management CPU through the 0x12000/0x13000 register windows plus the boot handshake, rather than Atlantic 1's mailbox in shared RAM. Implement that as a third aq_firmware_ops vtable (reset, set_mode, get_mode, get_mac_addr, get_stats); aq_fwa2_reboot() boots the firmware, selects the A2 ops, and reads the version and ART base index, failing fast on the crash-init / boot-failed bits. fwa2_set_mode advertises full duplex only (the media model exposes no half-duplex types) and writes and acks the link options before raising ACTIVE mode, so a forced media change does not begin negotiation with a stale rate mask. enum aq_fw_link_speed gains aq_fw_10M, which Atlantic 2 supports and Atlantic 1 does not. Probe and attach: list the device ids with their media types and link speeds (all copper; AQC113* up to 10G, AQC116C to 1G), populate hw->device_id, and tag the generation with AQ_HW_CHIP_ATLANTIC2 so IS_CHIP_FEATURE() recognises it uniformly. Branch firmware bring-up and reset on the generation: aq_hw_init_ucp() and aq_hw_reset() reboot the MCP instead of the Atlantic 1 RBL/FLB reset -- without a real datapath reset every stop/init cycle reprograms the rings on a live, desynced RX DMA engine and the receive path stays dead. aq_hw_init() programs the Atlantic 2 launch-time clock ratio in place of the Atlantic 1 MRRS / TX-DMA request-limit clamp. Add an AQ_LINK_10M capability bit (Atlantic 2 links at 10M, Atlantic 1 cannot), offer 10baseT media, and map IFM_10_T to aq_fw_10M. With every supported media type now present, replace the per-speed switch statements in aq_media.c with a single {link bit, fw rate, IFM_* subtype, Mbit/s} table -- one source of truth for the supported link speeds. With this an Atlantic 2 card probes, brings up its firmware, reads its MAC, and negotiates link; the RX action-resolver datapath comes next. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58141
* mt76: disable debugfs due to missing piece still in reviewBjoern A. Zeeb2026-07-172-2/+2
| | | | | | | | | Until D57524 is not reviewed and committed we will have a missing function declaration which prevents us to compile (in) debugfs for mt76 core and mt7921. Temporary disable debugfs again. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* acpi_einj: Add acpi_if.h to SRCSAndrew Turner2026-07-081-1/+1
| | | | | | | | This is included via acpivar.h so needs to be in SRCS to be generated. Reported by: bz Fixes: bc49842769bd ("acpi_einj: Support for ACPI error injection") Sponsored by: Arm Ltd
* mt76: further adjust debugfs compile time optionsBjoern A. Zeeb2026-07-137-5/+8
| | | | | | | | | | | | | The debugfs options between the various modules (core and chipsets) are not 100% de-coupled. This means we may run into unresolveable symbols at load time of the modules if we enable certain options generally or for core but not for the chipset. For now: always build the core module with debugfs support. Migrate the CONFIG_MAC80211_DEBUGFS flag into the Makefile of each chipset so we can individually turn it on. Sponsored by: The FreeBSD Foundation MFC after: 3 days
* hidwacom: Add Wacom ExpressKey Remote driverAbdelkader Boudih2026-07-122-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Wacom ExpressKey Remote (ACK-411050) is a wireless button pad with 18 programmable buttons and a touch ring, used as a companion device with Wacom tablets. It communicates via a USB wireless receiver (0x056a:0x0331) using a vendor-specific HID report (ID 0x11). This driver exposes the device via evdev: - 18 buttons: BTN_0–BTN_Z, BTN_BASE, BTN_BASE2 - Touch ring position via ABS_WHEEL (0–71; reports 0 on release) - Pad activity marker via ABS_MISC (set to 15/PAD_DEVICE_ID when any input is active, 0 when idle that matches Linux wacom driver convention) - Remote serial number via MSC_SERIAL (for userland per-remote identification) Battery level, charging state, and touch ring mode (3 LEDs, values 0–2) are exposed as per-device sysctls (dev.hidwacom.0.battery, .charging, .ring_mode) rather than overloading evdev misc codes. The ring mode sysctl is preserved across device idle periods. Protocol was decoded from USB traffic analysis and cross-referenced against the Linux wacom_remote_irq() implementation in drivers/hid/wacom_wac.c. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D56729 Discussed with: ziaee
* fwdv: add AV/C DV capture driver for FireWire camcordersAbdelkader Boudih2026-07-122-0/+12
| | | | | | | | | | | | Add fwdv(4) driver for DV video capture from FireWire camcorders using AV/C protocol and isochronous streaming. Supports AV/C tape transport commands (play, stop, ff, rewind, pause, record, eject) with NTSC/PAL auto-detection and read(2) interface for frame capture. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58122
* XZ kernel build cleanupWarner Losh2026-07-101-2/+0
| | | | | | | | -I${SRCTOP}/sys/contrib/xz-embedded/linux/lib/xz isn't used, and .PATH: ${SRCTOP}/sys/contrib/xz-embedded/freebsd isn't used either. Remove them both to simplify things a little. Sponsored by: Netflix
* hrfkill: Add driver to report RFKILL button pressAymeric Wibo2026-07-092-0/+9
| | | | | | | | | | | | | | This driver only reports the RFKILL button presses. This is needed for the "airplane" key on some Framework laptops. Reviewed by: wulf, ziaee Event: Halifax Hackathon 202606 Location: vishwin@'s car Co-authored-by: Daniel Shaefer Sponsored by: Framework Computer Inc Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D57838
* fwisound: add Apple FireWire audio driverAbdelkader Boudih2026-07-092-0/+13
| | | | | | | | | | | Expose audio capture from Apple FireWire devices as a standard pcm(4)/dsp(4) device via the newpcm framework. (adrian: I've tested this on an isight camera and looped it back to USB speakers via "sox -t oss /dev/dsp3 -t oss /dev/dsp4") Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D58109
* acpi_einj: Support for ACPI error injectionJohn Baldwin2026-07-072-0/+8
| | | | | | | | | | | | This driver parses the ACPI EINJ table and builds a list of instructions associated with known actions. It then exports ioctls to fetch the set of supported errors and inject system errors by executing specific sequences of actions. This can be used to test error reporting facilities for events such as ECC errors. Reviewed by: gallatin Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D58025
* arm64/vmm: Make remaining registers use hypctx_*_sys_regKajetan Puchalski2026-07-061-4/+7
| | | | | | | | | | Move vgic, timer and trapframe registers into sys_regs to handle them in the same way as all the other registers. Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com> Reviewed by: andrew Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D56556
* Revert "zfs: Wire sha512 offload to the build"Alexander Motin2026-07-041-1/+1
| | | | | | | | This reverts commit cd61eb4f6681b13d98b6a7be252500ad30f05f74. Some people report module load failure due to undefined symbol. I don't have those problems myself, so it might be a question of full rebuild. But I don't have time right now, so just revert.
* zfs: Wire sha512 offload to the buildAlexander Motin2026-07-021-1/+1
| | | | | | FreeBSD main just got the CPUID_STDEXT4_SHA512 define. OpenZFS PR #18732
* hym8563: Fix 32-bit powerpc buildJustin Hibbits2026-07-011-0/+1
| | | | | | | | | | | Depend on clknode_if.h in the module Makefile, so that it gets explicitly built for the module. Also, reduce the #if guards to only the new clock output code, and gate them on all powerpc, not just powerpc64. Fixes: 6b77d34f("HYM8563: Add support for clock output.") Reviewed by: mmel Differential Revision: https://reviews.freebsd.org/D57795
* zfs: merge openzfs/zfs@37af89948Martin Matuska2026-06-272-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Notable upstream pull request merges: #18509 f16b3744d zstream: refactor common functions #18573 -multiple Persist z_seq across znode eviction s18611 eb0c674c2 zfs_ioctl: fix EBUSY race between quota queries and mount #18637 77e64d86e Fix self-deadlock when setting the "allocating"/"path" vdev property #18645 e3082b923 freebsd: set mnt_time on the rootfs at mountroot time #18652 50d012b2a zbookmark_compare: handle "marker" bookmarks with negative levels #18664 520eeeaa6 Improve performance of "zpool offline" for log devices #18668 6b8f79877 Avoid more abd_t allocations in RAIDZ/dRAID #18669 99ab859c3 Optimize metaslab_set_selected_txg() #18673 97b9ba7a9 delegate: add 'send:encrypted' permission #18687 2ea519c2a Avoid lookup overhead for nonexistent xattr directories #18688 87593ea2b Fix handling of _PC_HAS_HIDDENSYSTEM for FreeBSD #18693 0483a8e0c Clean up embedded slog metaslab across txgs #18695 41311c665 RAIDZ: Optimize single data column writes #18706 37af89948 ddt_log: Fix refcount tagging for begin/commit Obtained from: OpenZFS OpenZFS commit: 37af899488652c55c456d3f160fb8b295db2ec70
* fwcam: add IIDC 1394 FireWire camera driverAbdelkader Boudih2026-06-252-0/+12
| | | | | | | | | | | | Add fwcam(4), a driver for IIDC v1.30 (TA Document 1999023) digital cameras over IEEE 1394. Supports Format_0 (VGA) video modes with isochronous receive DMA, feature control (brightness, exposure, gain, shutter, white balance, focus, etc.), poll/kqueue, and hot-plug via bus reset handling. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D57685