|
noload-drv
|
Noload driver is a driver for the Linux and FreeBSD kernels which supports Noload hardware which have substantial similarities with NVMe but are for acceleration tasks, not block devices.
Work is submitted with ioctls on a character device. The packages install the header that defines them, kmod/inc/noload_ioctl.h, as /usr/include/noload_ioctl.h.
Every ioctl, structure and inline helper is documented in noload_ioctl.h.
The Linux driver currently supports kernel versions from 5.14 through 6.18. The following operating system kernels are supported:
A DKMS package is available for easier distribution.
The steps to install the module are as follows:
4a. Install the driver and probe the module (from the build directory):
4b. Alternatively, use the module without installing (from the build directory):
If compiling the module for a non-standard kernel build, pass the kernel path via -DKDIR= during the cmake step:
To let non-root users reach the hardware, install the udev rule and add them to the noload group:
The following parameters can be passed when inserting the module:
NOLOAD_IOCTL_SET_QUEUE(). The default is 8.These parameters can be set when inserting the module:
Queues, depth and tuning covers when to change them. FreeBSD has the same knobs as sysctl hw.noload tunables, listed in FreeBSD notes.
On FreeBSD the noload driver can either build against a patched in-tree nvme driver or use its own copy. Two build modes are selected with -DNOLOAD_BSD_KERNEL_TARGET:
patched - build against a patched in-tree nvme driver. This requires patching and rebuilding the kernel, as described below.standalone - bundle a renamed private copy of the nvme driver into noload.ko. No kernel changes are required, but the bundled copy must be ABI-compatible with the running kernel.When -DNOLOAD_BSD_KERNEL_TARGET is not given, cmake probes the kernel source tree for the nvme patch and defaults to patched when it is found and standalone otherwise.
kmod/freebsd/freebsd-16-nvme-patch.patch adds the Eideticom support to the in-tree nvme driver. It is generated against FreeBSD 16.0-CURRENT and applies to a matching /usr/src tree.
To build without touching the kernel, use the standalone target instead (cmake -B build -DNOLOAD_BSD_KERNEL_TARGET=standalone); no patch is needed in that case.
The following code examples are included to demonstrate methods for integrating noload-drv:
The packages install the example sources under /usr/share/doc/noload-drv/examples/, with a Makefile for them.