This commit brings back the driver from FreeBSD commit
f187d6dfbf plus subsequent fixes from
upstream.
Relative to upstream this commit includes a few other small fixes such
as additional INET and INET6 #ifdef's, #include cleanups, and updates
for recent API changes in main.
Reviewed by: pauamma, gbe, kevans, emaste
Obtained from: git@git.zx2c4.com:wireguard-freebsd @ 3cc22b2
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D36909
(cherry picked from commit 744bfb2131)
This allows the syscallname() function to give a usable result for Linux
ABIs.
Reported by: jrtc27
Reviewed by: jrtc27, markj, jhb
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D37199
(cherry picked from commit 1da65dcb1c)
(cherry picked from commit f396f9b6c9)
Sort the entries alphabetically, and list them with one entry per line.
This makes the diffs much cleaner when adding or removing a new entry,
as I will do in the next commit.
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 3317848808)
This allows the "irdma" driver to communicate with the ice(4)
driver to allow it access to the underlying device's hardware
resources as well as synchronize access to shared resources.
This interface already existed in the standalone out-of-tree
1.34.2 driver; this commit adds and enables it in the in-kernel
driver.
Note:
Adds hack to module Makefile to compile interface/.m files
These are required for the RDMA client interface, but they don't
build as-is like the normal .c files. The source directory doesn't
seem to be included by default, so add lines that specifically
add them as libraries so that ice_rdma.h can be found and the
interface files will compile.
Signed-off-by: Eric Joyner <erj@FreeBSD.org>
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D30889
(cherry picked from commit 8a13362d49)
(cherry picked from commit d8cce8145c)
While for in-kernel we already have LINUXKPI_INCLUDES in kern.pre.mk
for kmod builds we've not had a common define to use leading to various
spellings of include paths.
In order for the include list to be expanded more easily in the future,
e.g., adding the "dummy" includes (for all) and to harmonize code,
duplicate LINUXKPI_INCLUDES to kmod.mk and use it for all module Makefiles.
Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D36683
(cherry picked from commit 514fb38721)
OpenZFS release 2.1.6
Notable upstream pull requeset merges:
#11733 ICP: Add missing stack frame info to SHA asm files
#12274 Optimize txg_kick() process
#12284 Add Module Parameter Regarding Log Size Limit
#12285 Introduce a tunable to exclude special class buffers from L2ARC
#12287 Remove refcount from spa_config_*()
#12425 Avoid small buffer copying on write
#12516 Fix NFS and large reads on older kernels
#12678 spa.c: Replace VERIFY(nvlist_*(...) == 0) with fnvlist_*
#12789 Improve log spacemap load time
#13022 Add more control/visibility and speedup spa_load_verify()
#13106 add physical device size to SIZE column in 'zpool list -v'
#13388 Improve mg_aliquot math
#13405 Revert "Reduce dbuf_find() lock contention"
#13452 More speculative prefetcher improvements
#13476 Refactor Log Size Limit
#13540 AVL: Remove obsolete branching optimizations
#13553 Reduce ZIO io_lock contention on sorted scrub
#13555 Scrub mirror children without BPs
#13563 FreeBSD: Improve crypto_dispatch() handling
#13576 Several sorted scrub optimizations
#13579 Fix and disable blocks statistics during scrub
#13582 Several B-tree optimizations
#13591 Avoid two 64-bit divisions per scanned block
#13606 Avoid memory copies during mirror scrub
#13613 Avoid memory copy when verifying raidz/draid parity
#13643 Fix scrub resume from newly created hole
#13756 FreeBSD: Mark ZFS_MODULE_PARAM_CALL as MPSAFE
#13767 arcstat: fix -p option
#13781 Importing from cachefile can trip assertion
#13794 Apply arc_shrink_shift to ARC above arc_c_min
#13798 Improve too large physical ashift handling
#13811 Fix column width in 'zpool iostat -v' and 'zpool list -v'
#13842 make DMU_OT_IS_METADATA and DMU_OT_IS_ENCRYPTED return B_TRUE
or B_FALSE
#13855 zfs recv hangs if max recordsize is less than received
recordsize
#13861 Fix use-after-free in btree code
#13865 vdev_draid_lookup_map() should not iterate outside draid_maps
#13878 Delay ZFS_PROP_SHARESMB property to handle it for encrypted
raw receive
#13882 FreeBSD: Fix integer conversion for vnlru_free{,_vfsops}()
#13885 Fix incorrect size given to bqueue_enqueue() call in dmu_redact.c
#13908 FreeBSD: stop passing LK_INTERLOCK to VOP_LOCK
#13930 zpool: Don't print "repairing" on force faulted drives
#13954 Fix bad free in skein code
Obtained from: OpenZFS
OpenZFS tag: zfs-2.1.6
OpenZFS commit: 6a6bd49398
Relnotes: yes
Update iwlwifi 22000 firmware to -73 and rebuilds for 9000/9260.
Update the driver to accept the newer version.
Firmware was obtained from linux-firmware at
150864a4d73e8c448eb1e2c68e65f07635fe1a66.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 13a7663c52)
The additional slash causes double slashes in the filenames that
eventually get passed to the compiler.
MFC after: 3 days
(cherry picked from commit dfddfe29d8)
Clang 15 is more strict about function definitions not matching
declarations, and zlib has a lot of these, but since it is contributed
code (and in K&R style to boot), suppress those warnings instead.
MFC after: 3 days
(cherry picked from commit e83ffec3af)
With clang 15, the following -Werror warning is produced:
sys/contrib/openzfs/module/zfs/zfs_fm.c:256:6: error: variable 'cnt' set but not used [-Werror,-Wunused-but-set-variable]
int cnt = 0;
^
The 'cnt' variable does not seem to be used for anything, but since this
is contributed code, suppress the warning instead.
MFC after: 3 days
(cherry picked from commit e726e71056)
This adds a wrapper around libsodium's curve25519 support matching
Linux's curve25519 API. The intended use case for this is WireGuard.
Note that this is not integrated with OCF as it is not related to
symmetric operations on data.
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D33935
(cherry picked from commit 0c6274a819)
This is a synchronous software API which wraps the existing software
implementation in libsodium. This is different from the code in main
in that this uses libsodium directly. The version in main uses the
software backend shared with OCF, but main required changes that break
the ABI of struct enc_xform that cannot be merged to stable/13.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit e71680049b)
This was added to 'device crypto' in the kernel in
bbb7a2c7c3 but was missing from the
module.
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D33522
(cherry picked from commit 7df4c50643)
They are not loadable otherwise.
Reviewed by: emaste
MFC after: 1 week
Sponsored by: Juniper Networks, Inc.
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D35369
(cherry picked from commit 648a47b854)
Add i2c support to linuxkpi. This is needed by drm-kmod.
For every i2c_adapter added by i2c_add_adapter we add a child to the
device named "lkpi_iic". This child handle the conversion between
Linux i2c_msgs to FreeBSD iic_msgs.
For every i2c_adapter added by i2c_bit_add_bus we add a child to the
device named "lkpi_iicbb". This child handle the conversion between
Linux i2c_msgs to FreeBSD iic_msgs.
With the help of iic(4), this expose the i2c controller to userspace
allowing a user to query DDC information from a monitor.
e.g.: i2c -f /dev/iic0 -a 0x28 -c 128 -d r
will query the standard EDID from the monitor if plugged.
The bitbang part (lkpi_iicbb) isn't tested at all for now as I don't have
compatible hardware (all my hardware have native i2c controller).
Tested on: Intel (SandyBridge, Skylake, ApolloLake)
Tested on: AMD (Picasso, Polaris (amd64 and arm64))
MFC after: 1 month
Reviewed by: hselasky
Sponsored by: Beckhoff Automation GmbH & Co. KG
Differential Revision: https://reviews.freebsd.org/D33053
(cherry picked from commit 1961a14a47)
To avoid annoyng messages from glibc-2.35 test suite add the simple
implementation of rseq syscall which is do nothing for now.
I plan to implement it if and when the API stabilizes.
MFC after: 2 weeks
(cherry picked from commit ee55d560e8)
In preparation for machine-independent sys/compat/linux/linux_ptrace.c,
rename the i386-specific Linux ptrace(2) implementation. No functional
changes.
Sponsored By: EPSRC
Differential Revision: https://reviews.freebsd.org/D32757
(cherry picked from commit 4dfd612286)
Do not specify memory model and mregparm for amd64, it's only
available on IA-32 architecture.
Reported by: jhb, jrtc27
MFC after: 2 weeks
(cherry picked from commit b0fa09a0a7)
Do not specify memory model for i386. Seems that clang silencly
ignores -mcmodel unlike gcc.
Reported by: jhb
MFC after: 2 weeks
(cherry picked from commit de273c83a1)
The vDSO (virtual dynamic shared object) is a small shared library that the
kernel maps R/O into the address space of all Linux processes on image
activation. The vDSO is a fully formed ELF image, shared by all processes
with the same ABI, has no process private data.
The primary purpose of the vDSO:
- non-executable stack, signal trampolines not copied to the stack;
- signal trampolines unwind, mandatory for the NPTL;
- to avoid contex-switch overhead frequently used system calls can be
implemented in the vDSO: for now gettimeofday, clock_gettime.
The first two have been implemented, so add the implementation of system
calls.
System calls implemenation based on a native timekeeping code with some
limitations:
- ifunc can't be used, as vDSO r/o mapped to the process VA and rtld
can't relocate symbols;
- reading HPET memory is not implemented for now (TODO).
In case on any error vDSO system calls fallback to the kernel system
calls. For unimplemented vDSO system calls added prototypes which call
corresponding kernel system call.
Relnotes: yes
Tested by: trasz (arm64)
Differential revision: https://reviews.freebsd.org/D30900
MFC after: 2 weeks
(cherry picked from commit 9931033bbf)
Implement dumping core for Linux binaries on amd64, for both
32- and 64-bit executables. Some bits are still missing.
This is based on a prototype by chuck@.
Reviewed By: kib
Sponsored By: EPSRC
Differential Revision: https://reviews.freebsd.org/D30019
(cherry picked from commit 447636e43c)
miivar.h includes opt_platform.h. Make sure all the drivers that use the
miibus_if.h interface file have opt_platform.h as well. While some of
these may not, strictly speaking, need it, it's easier to include it
universally for miibus.
Sponsored by: Netflix
(cherry picked from commit b111430e54)
Author: Warner Losh <imp@FreeBSD.org>
Update to the latest iwlwifi firmware based on
linux-firmware at b19cbdca78ab2adfd210c91be15a22568e8b8cae
(tag: 20220509)
and update firmware module Makefiles accordingly.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 275172b519)
Import code update from iwlwifi-next
at e89600ebeeb14d18c0b062837a84196f72542830.
This amongst other things removes the deprecated BCAST_FILTERING option,
which we had disabled before due to firmware issues.
Also prepares us for the next firmware update.
The "enable_ini" module option has become an integer with a
sysctl proc equivalent handler. Disable the module parameter changing
for the moment until we'll have working LinuxKPI support or implement
it as SYSCTL_PROC in FreeBSD directly.
Sponsored by: The FreeBSD Foundation
(cherry picked from commit fac1f59384)
Add man pages for rtw88 and rtw88fw. Install a copy of the firmware
license file and hook up the driver and firmware modules to the build.
Sponsored by: The FreeBSD Foundation
Relnotes: yes
(cherry picked from commit 20eeed6844)
Import the most recent versions of the firmware images for the
rtw88 driver.
This is based on linux-firmware at 681281e49fb6778831370e5d94e6e1d97f0752d6.
rtw8822c firmware got downgraded in a later commit to 9.9.10:
firmware version 9.9.11 added support for hw_scan and is reportedly
causing more problems than 9.9.10 does.
The license of the firmware matches the previous rtwnfw(4) firmware
files (modulo a Copyright year) and you can find a copy in
sys/contrib/dev/rtw88fw/LICENCE.rtlwifi_firmware.txt.
Add build infrastructure to create the .ko files but do not yet hook
it up to the build until all parts are in the tree.
Approved by: core (imp)
PR: 248235
(cherry picked from commit 73d4ebea35)
(cherry picked from commit 3443476ca9)
Import rtw88 based on wireless-testing at
5d5d68bcff1f7ff27ba0b938a4df5849849b47e3 with adjustments for FreeBSD.
While our version of the driver has knowledge about the incapablity
of DMA above 4GB we do see errors if people have more than that
often already showing when laoding firmware.
The problem for that is currently believed to be outside this driver
so importing it anyway for now.
Given the lack of full license texts on non-local files this is
imported under the draft policy for handling SPDX files (D29226). [1]
Approved by: core (imp) [1]
(cherry picked from commit 2774f20680)
ib_uverbs_flow_resources_free() is declard in two header files in
upstream OFED. Disable the warning to avoid introducing diffs to fix
the build on GCC 9.
While here, fix the ibcore module to disable the same warnings
disabled in OFED_CFLAGS.
Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D31943
(cherry picked from commit 44126818d2)
This matches the order used in sys/conf/files to make it easier to
keep these two files in sync.
Reviewed by: imp
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D33484
(cherry picked from commit 8b4af206f6)
As of today, using 'kldload miibus' is not equivalent to using 'device
miibus' in a kernel config. Newly introduced PHY drivers (DP83822,
DP83867, VSCPHY) and source files/PHY driver for FDT-enabled kernels
are missing. Without including them, kernel modules using any function
from dev/mii/mii_fdt.c refuse to load. Additionally, miivar.h directly
includes opt_platform.h.
Add the missing sources to the module build, with the FDT-only files
gated behind an OPT_FDT check. Maintain the alphabetical listing of
SRCS, but move the required header files to a separate line to improve
readability.
Reviewed by: mhorne, mindal@semihalf.com
Differential Revision: https://reviews.freebsd.org/D34256
(cherry picked from commit 517ea731d4)
As of today, using 'kldload miibus' is not equivalent to using 'device
miibus' in a kernel config. Newly introduced PHY drivers (DP83822,
DP83867, VSCPHY) and source files/PHY driver for FDT-enabled kernels
are missing. Without including them, kernel modules using any function
from dev/mii/mii_fdt.c refuse to load. Additionally, miivar.h directly
includes opt_platform.h.
Add the missing sources to the module build, with the FDT-only files
gated behind an OPT_FDT check. Maintain the alphabetical listing of
SRCS, but move the required header files to a separate line to improve
readability.
Reviewed by: mhorne, mindal@semihalf.com
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D34256
(cherry picked from commit 517ea731d4)
For development, building a driver as kernel module is both convenient
and a time saver (no need for reboot on some change, testing it requires
just kldunload and kldload, a matter of seconds). For some special
cases, it may be even desirable to postpone initializing the network
interface after some action is done (loading a FPGA bitstream may be
required for Zynq/ZynqMP based hardware as an example).
Building is limited to ARM, ARM64 and RISC-V architectures (for Zynq,
ZynqMP, PolarFire Soc based boards, and HiFive based boards are known to
use CGEM at the moment).
Reviewed by: mhorne
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D34687
(cherry picked from commit 242cd60a0a)