Release notes

HFTKernel 7.3.x release notes.

Browse the 7.3.x kernel line from newest to oldest, with the upstream changes most relevant to predictable CPU execution, stable networking, accurate timekeeping, virtualization, memory behavior, and measurable latency tails.

Public changelog

Release notes

Each entry focuses on upstream changes that support HFTKernel’s primary goals: minimal jitter, controlled tail latency, a stable data path, accurate timekeeping, and measurable behavior under pressure.

HFTKernel 7.3.3

Better packet ordering, more reliable I/O progress, and leaner polling

Latest 7.3.x entry

Upstream baseline: Linux 7.3.3. Cumulative changes: Linux 7.3.2 and 7.3.3, relative to 7.3.1. Upstream release date: November 6, 2026, for both releases.

Ordered transmission under queue pressure

The networking scheduler preserves packet order when a driver returns NETDEV_TX_BUSY. Requeued packets return to the front of the pending list in their original order.

In the upstream four-stream TCP test over a veth pair with a pfifo qdisc, throughput increased from approximately 40 to 76 Gbps. The change eliminated about 1.3 million out-of-order segments and 15,000 to 37,000 retransmissions per 15-second test interval.

Consistent VLAN hardware offload

With reorder_hdr=off, eligible frames pass their VLAN tag to NIC insertion metadata while retaining the expected layout at VLAN-device egress. This keeps hardware VLAN insertion compatible with checksum and segmentation offloads, including relevant packet-socket and AF_XDP copy-mode paths.

Deadline-aware NAPI busy polling

io_uring caps busy polling to the remaining wait interval. When an absolute deadline has already passed, the polling budget becomes zero, allowing the wait to return promptly.

Dynamically tracked NAPI entries now expire after 60 seconds of inactivity. Long-running rings stop revisiting obsolete queue identifiers, keeping polling focused on recent traffic.

Reliable deferred-work wakeups and completion progress

IORING_SETUP_DEFER_TASKRUN publishes the waiting task's sleep state before exposing its wakeup credit. Producers can reliably notify the consumer when new local task work arrives. The BPF-driven wait loop follows the same ordering.

When pending overflow completions cannot fit into the completion queue, io_uring returns control to userspace so the application can drain it. This provides an explicit progress path for mixed-size completion queues.

Stronger progress for real-time consumers

The lockless task-work queue protects its two-step producer publication with a short preemption-disabled section. A SCHED_FIFO consumer sharing a CPU with a lower-priority producer observes a completed publication rather than preempting the producer halfway through the update.

Asynchronous private-futex waits prepare the process-private hash before registering the waiter. Wakeups remain aligned with the active hash across subsequent thread creation and hash configuration changes.

Less unnecessary SQPOLL activity

SQPOLL can sleep while a ring is disabled, even when submission entries have been prepared. Enabling the ring wakes the polling thread. Applications can stage their startup configuration without spending a CPU repeatedly checking work that is not yet enabled.

Better-bounded asynchronous I/O workers

io_uring resolves the target file before assigning work to io-wq. Forced-async regular-file and block-device operations follow the bounded-worker limits, including configured IORING_REGISTER_IOWQ_MAX_WORKERS limits.

Buffered writes to the same regular file are coordinated through inode-based hashing, reducing workers competing for the same inode lock. File identity is fixed when the request enters the work queue.

Reliable receive buffers at larger scales

Zero-copy receive calculates buffer offsets in 64-bit arithmetic before shifting. Completion entries identify the correct buffer beyond the first 4 GiB of a registered receive area, keeping consumption and refill aligned.

For incremental provided buffers and multi-buffer receive bundles, partial progress is completed before another request can reuse the remaining memory. Applications receive the actual transferred length and continue from that boundary; these MSG_WAITALL operations can return a short result.

Correct clock domains for absolute timeout updates

Absolute timeout updates use the clock associated with the existing timer when converting the caller's time namespace to host time. CLOCK_MONOTONIC, CLOCK_BOOTTIME, and CLOCK_REALTIME retain their respective semantics.

This keeps asynchronous deadlines consistent for services using time namespaces and different timeout clock domains.

More complete memory accounting

Task-to-ring metadata and personality XArrays are charged to memory cgroups. Registered-buffer metadata and resource nodes also participate in memcg accounting, keeping kernel-side I/O memory represented in service budgets.

XArray teardown releases empty internal nodes left by unsuccessful insertion attempts. Repeated ring creation and cleanup return those metadata allocations and their charges.

Stronger HugeTLB page lifecycle

The anonymous HugeTLB fault path completes folio state updates and unlocking before releasing the page-table lock. Initialization remains coordinated with concurrent unmapping and page reclamation, strengthening private huge-page mappings used for large application buffers.

Coordinated IRQ and timing-device teardown

Threaded-IRQ cleanup retains irqaction until pending exit task work has finished, maintaining resource lifetime through the abnormal thread-exit path.

PPS generator control operations are synchronized with source unregister. Existing operations finish against valid driver state, and subsequent operations receive ENODEV after removal. This gives timing-service software a clear device-lifecycle boundary.

More consistent KVM host state

On Intel VMX hosts, userspace changes that make a vCPU runnable also clear a hardware-tracked halt when necessary. This keeps hardware execution state aligned with the virtual-machine monitor during reset and restart workflows.

AMD SVM refreshes ASID generation in both nested-virtualization control blocks after a physical-CPU change. Address-space identifiers remain coordinated as nested vCPUs move between processors.

Xen backend improvements added in Linux 7.3.3

The final cumulative update adds three improvements for Xen backend deployments. Block-backend statistics reads are synchronized with frontend teardown. Network-backend statistics remain protected through queue cleanup. Multicast-list cleanup occurs after transmit and receive processing has stopped.

Together, these changes keep monitoring, virtual-network state, and backend resource release coordinated during device disconnect and reconfiguration.

Supported operating systems

HFTKernel's package catalogue covers 24 operating-system targets:

  • Ubuntu 20.04 / 22.04 / 24.04 / 26.04 LTS
  • Debian 11 / 12 / 13
  • RHEL-compatible, AlmaLinux, Rocky Linux 8 / 9 / 10
  • CentOS Stream 9 / 10
  • Fedora Linux 44
  • Amazon Linux 2023, Cloud profile
  • ALT Linux p11 / Simply Linux 11
  • Astra Linux 1.8
  • Arch Linux base-devel
  • NixOS-compatible base.

One-command installation

curl -fsSL https://hftkernel.com/install.sh | sudo bash

The installer detects the operating system and deployment profile, verifies the matching package, and installs it. A manual reboot activates the installed kernel.

Release focus

Preserve transmission order, keep asynchronous work progressing, eliminate unnecessary polling, and maintain clear ownership of memory and device resources.

HFTKernel 7.3.1

More predictable asynchronous I/O, precise RT wakeups, and dependable host diagnostics

Upstream baseline: Linux 7.3.1. Changes since Linux 7.3. Upstream release date: October 30, 2026.

Timely progress after io_uring drain barriers

A standalone drain request now clears the drain state when its completion is flushed and no other deferred work remains. For io-wq execution, that transition happens under the ring lock before the completion becomes visible to userspace.

Requests submitted after the completed barrier can proceed without waiting for the worker to release its final request reference. Linked drain requests retain their ordering requirements.

This makes completion-driven I/O pipelines more predictable for applications using drain barriers.

Reliable poll wakeups and multishot completion

An atomic compare-and-exchange now coordinates poll ownership release with concurrent retry notifications. Pending wakeups remain visible, allowing processing to continue without depending on an unrelated event.

Multishot poll also updates the shared reference counter correctly on hangup. The final event pass can complete without unnecessary repeated looping, improving connection-lifecycle handling in asynchronous applications.

Precise completion-queue timeouts on PREEMPT_RT

For RT and deadline tasks on PREEMPT_RT, io_uring completion-queue timeout callbacks run in hard-interrupt context. Wakeup delivery no longer depends on scheduling the lower-priority timer thread.

In the upstream Jetson Orin Nano test, backported to Linux 6.18.39-rt, maximum lateness fell from 1,040 µs to 18 µs across 40,000 deadlines under competing SCHED_FIFO load. All wakeups stayed within 100 µs after the change.

Consistent handling of large provided receive buffers

For non-bundled receive operations that derive their length from a provided buffer, io_uring caps the selected transfer length at MAX_RW_COUNT.

This keeps the length valid through the signed return path, including provided buffers of 2 GiB or larger, while following the existing transfer-size limit. It strengthens receive-buffer handling for applications using large reusable regions.

Better-coordinated asynchronous worker shutdown

The io-wq exit path applies a memory barrier after publishing its exit flag. Shutdown and concurrent worker-creation task work observe the required ordering, including on weakly ordered architectures.

This strengthens orderly teardown and restart of services that use io_uring worker pools.

Cancellation of IORING_OP_WAITID requests is also idempotent: repeated attempts recognize the existing cancellation state without accumulating additional references. This keeps asynchronous process-supervision requests consistent during cancellation.

Less unnecessary work during PID-namespace teardown

During namespace cleanup, the process reaper masks task-work notification wakeups while waiting for child termination and PID release.

It can sleep until the relevant lifecycle event occurs rather than repeatedly re-entering its wait path. This reduces avoidable CPU activity in the affected container-shutdown and livepatch interactions.

Reliable per-CPU IRQ visibility on large hosts

/proc/interrupts now emits its CPU header whenever the first record is rendered, including retries after the sequence buffer grows.

The CPU-to-counter layout remains intact on high-core-count systems. This supports dependable IRQ parsing, placement verification, and monitoring of isolated and housekeeping CPUs.

Cleaner tracing configuration and teardown

Histogram setup now removes automatically created field-variable triggers when the overall command fails. Active tracing matches the accepted configuration, with temporary instrumentation cleaned up rather than left counting events.

Field-variable histogram cleanup retains the stable event-file reference instead of depending on another histogram's lifetime. This improves repeated creation, modification, and removal of diagnostic sessions.

Event-filter parsing also rejects incomplete logical expressions before they reach execution. This strengthens automated tracefs and perf tracepoint configuration.

More complete postmortem diagnostics

Core-dump collection is protected from TIF_NOTIFY_SIGNAL interruptions while transferring data through pipes and sockets. Notifications from io_uring and other task-work producers no longer interrupt those collection paths.

This preserves diagnostic data for detailed analysis of application state, mappings, and outstanding I/O.

Consistent DAMON quota validation

DAMOS quota goals are validated in the DAMON core before being applied. Zero target values are rejected through the common commit path, and the error is propagated to callers.

For deployments using DAMON-based memory management, this provides a consistent boundary for quota-policy configuration.

Reliable out-of-tree DMA benchmark builds

dma_map_benchmark now builds in the selected output directory when O= is specified.

The benchmark fits cleanly into build pipelines that separate source trees from generated tools, supporting repeatable preparation of DMA diagnostics.

Supported operating systems and installation

HFTKernel supports 24 OS targets across Ubuntu, Debian, RHEL-compatible platforms, AlmaLinux, Rocky Linux, CentOS Stream, Fedora, Amazon Linux, Arch Linux, NixOS-compatible deployments, ALT Linux p11 / Simply Linux 11, and Astra Linux 1.8. Amazon Linux 2023 uses the Cloud profile.

Install with one command:

curl -fsSL https://hftkernel.com/install.sh | sudo bash

The installer selects the matching operating-system package and deployment profile and verifies package integrity.

Release focus

The Linux 7.3.1 baseline strengthens I/O progress, real-time timeout delivery, process lifecycle management, and diagnostic consistency. These changes support HFTKernel's goal of a predictable, measurable host around latency-sensitive applications.

HFTKernel 7.3

Prepared time reads, leaner memory management, and new CXL networking capabilities

Upstream baseline: Linux 7.3. Upstream release date: October 18, 2026.

Focus: capabilities introduced with the Linux 7.3 baseline for latency-sensitive deployments.

Prefaulted vDSO data for predictable application startup

The generic vDSO data mapping can now be populated by mlockall(). Removing its VM_IO flag allows the memory-preparation phase to establish the corresponding page-table entries before latency-sensitive processing begins.

For applications using vDSO-assisted time reads, this moves an avoidable first-touch page fault into startup preparation. The upstream author observed approximately 20 µs for the complete page-fault exception path on the test machine.

This strengthens the preparation of trading engines, timestamp consumers, and measurement processes that explicitly prefault their working sets.

Less LRU-lock contention during memory reclaim

Classic LRU reclaim now derives anonymous and file scan-balance costs from vmstat counters. Cost sampling and decay use a dedicated per-lruvec lock instead of repeatedly acquiring the lock that protects LRU list operations. Hierarchy aggregation also replaces repeated parent-level cost updates.

In the upstream 176-core, 256 GB memory-pressure test, aggregate LRU-lock wait decreased from approximately 4.23 seconds to 1.66 seconds over a 30-second recording window, a 61% reduction, with similar scan and reclaim rates.

For classic-LRU deployments, this reduces contention between reclaim bookkeeping and the operations that actually manage pages.

Stronger executable-code retention with MGLRU

MGLRU promotes mapped executable file folios after their first observed use. Both page-table aging and reference checking recognize executable mappings when updating page state.

This gives recently used application code and shared-library code stronger protection from reclaim. It supports more consistent code residency for services running with MGLRU under memory pressure.

Less unnecessary pressure-accounting work in cgroup v2

The vmpressure subsystem skips the cgroup-v1 userspace notification path when running under cgroup v2. Reclaim avoids unused accounting, locking, workqueue submission, and parent walks.

The in-kernel TCP/SCTP socket-pressure path remains active, and cgroup-v2 userspace pressure monitoring continues through PSI. This removes redundant infrastructure work while retaining the pressure signals used by networking and service management.

Shorter workqueue critical sections

Workqueue processing selects the worker to wake while holding pool->lock, then performs the wakeup after releasing it. Scheduler wakeup operations no longer extend the shared pool critical section in the affected enqueue and chained-work paths.

In an upstream NVIDIA Grace ARM64 microbenchmark using NUMA-scoped unbound workqueues, throughput increased from 719,794 to 794,049 work items per second, with 10.3% lower P95 enqueue latency.

This improves the handling of contended background work on housekeeping CPUs and in supporting infrastructure.

More responsive scheduler-managed services

Fair-class cgroup scheduling moves to a single task-selection runqueue per CPU while retaining group-weight distribution. EEVDF also improves scheduling for short-slice tasks, and NOHZ balancing prefers fully idle cores.

These changes are relevant to scheduler-managed gateways, monitoring, orchestration, and housekeeping services. Explicit CPU affinity remains the placement mechanism for dedicated trading threads.

More scalable io_uring zero-copy receive

The io_uring zero-copy receive subsystem gains dynamic memory-area provisioning and coordinated refill improvements. Large-page refill scales with the backing allocation, compatible refill entries are coalesced, and the refill-ring head and tail occupy separate cache lines. Tail caching further reduces shared-state accesses.

These changes improve receive-memory management and reduce refill overhead for applications using io_uring ZCRX, including high-rate market data and network-processing workloads.

CXL-assisted Solarflare transmit support in the upstream baseline

Linux 7.3 brings together the CXL Type-2 infrastructure and the Solarflare driver integration for compatible SFC9100-family devices. CONFIG_SFC_CXL enables the driver path for CTPIO over CXL.mem, with compatible CXL hardware and CXL-aware firmware.

The driver verifies CXL device capabilities, creates a 256 MiB CTPIO memory region, and maps it with write-combining semantics. This provides kernel enablement for a CXL-assisted host-to-NIC transmit path.

For a matching HFTKernel Hardware configuration, the integration combines CONFIG_SFC, CONFIG_CXL_BUS, and CONFIG_SFC_CXL with a compatible server, adapter, and firmware. This creates a focused hardware-optimization option for latency-sensitive transmission.

Expanded hardware-clock control

The ZL3073x DPLL driver gains PTP hardware-clock support, exposing time reads, time adjustment, frequency adjustment, and phase adjustment through the appropriate callbacks. Available operations follow the channel’s current state, including NCO operation and reference tracking.

This expands the hardware timing options available through standard Linux interfaces and makes supported timing devices easier to integrate into clock-management infrastructure.

More scalable cloud network management

Selected software network drivers, including veth, ipvlan, and tunnels, gain per-network-namespace device unregistration. Routing-rule updates also move away from the global RTNL lock. These changes reduce shared serialization during network lifecycle and routing-policy operations.

BIG TCP support extends to UDP tunnels such as VXLAN and Geneve. Larger internal segmentation batches provide an additional efficiency option for bulk data distribution and replay over supported overlays while preserving the configured on-wire MTU.

More useful multicast diagnostics

RTM_GETMULTICAST reports a per-group user count. Monitoring software can inspect multicast-group usage through netlink, improving visibility into subscription state on hosts receiving multicast market data.

More efficient allocation profiling

Memory allocation profiling gains a binary ioctl interface for /proc/allocinfo. Module, function, file, and line filters can be applied before per-CPU counters are aggregated, so diagnostic queries process only matching allocation sites.

In the upstream Intel Xeon Platinum 8481C test with 224 logical CPUs, a specific-file query reduced system CPU time from 22 ms to 1 ms. This makes targeted memory investigations lighter and better suited to automated collection.

The new pgrotate_anon and pgrotate_file counters add visibility into reclaim work that does not immediately free pages. They support both classic LRU and MGLRU diagnostics.

Included measurement tools

HFTKernel includes cpujitter for CPU execution gaps and latency tails, memjitter for allocation, first-touch, and working-set behavior, and irqjitter for IRQ and softIRQ activity analysis.

Together with application latency, network counters, hardware-clock state, and memory telemetry, these tools make the complete infrastructure observable.

Release focus

The Linux 7.3 baseline advances three priorities for HFTKernel: prepare more state before the workload starts, reduce contention in shared kernel paths, and expose better control over networking, memory, and timing.

Release philosophy

Upstream stability, workload-specific policy, and measurable outcomes

HFTKernel starts from an exact stable Linux release, records the toolchain and build identity, applies the selected Cloud or Hardware profile, packages cpujitter and memjitter with the runtime, and validates the result as an immutable release.

Exact baselineVerified stable Linux source and pinned kernel version.
Controlled profileCPU, memory, network, timekeeping, and isolation policy matched to the platform.
Native packagesDEB, RPM, or TGZ bundles for the supported production matrix.
Measured deliverycpujitter and memjitter provide repeatable evidence at the tail.

Deployment planning

Evaluate the release against your CPU, NIC, memory, and timing topology.

Package selection is only the first step. The production result depends on boot parameters, runtime affinity, queue placement, PTP/PHC design, memory policy, and a controlled measurement plan.