USAGE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ USAGE ✨

okay bestie, this is USAGE(9) from the Kernel API Manual, and it's literally about the auxiliary bus πŸ’… no cap.

The auxiliary bus is the move when a driver and one or more kernel modules β€” the modules that share a common header file with the driver β€” need a mechanism to connect and provide access to a shared object allocated by the auxiliary_device's registering driver. The registering driver for the auxiliary_device(s) and the kernel module(s) registering auxiliary_drivers can be from the same subsystem, or from multiple subsystems. both vibes are valid ✨

The emphasis here is on a common generic interface that keeps subsystem customization out of the bus infrastructure. iconic, honestly.

One example is a PCI network device that is RDMA-capable and exports a child device to be driven by an auxiliary_driver in the RDMA subsystem. The PCI driver allocates and registers an auxiliary_device for each physical function on the NIC. The RDMA driver registers an auxiliary_driver that claims each of these auxiliary_devices. This conveys data/ops published by the parent PCI device/driver to the RDMA auxiliary_driver. slay πŸ’–

Another use case is for the PCI device to be split out into multiple sub functions. For each sub function an auxiliary_device is created. A PCI sub function driver binds to such devices and creates its own one or more class devices. A PCI sub function auxiliary device is likely to be contained in a struct with additional attributes such as user defined sub function number and optional attributes such as resources and a link to the parent device. These attributes could be used by systemd/udev; and hence should be initialized before a driver binds to an auxiliary_device. important detail 🫢

A key requirement for utilizing the auxiliary bus is that there is no dependency on a physical bus, device, register accesses or regmap support. These individual devices split from the core cannot live on the platform bus as they are not physical devices that are controlled by DT/ACPI. The same argument applies for not using MFD in this scenario as MFD relies on individual function devices being physical devices. no physical bus, no problem πŸ’€


🌈 SEE ALSO 🌈

iykyk ⭐


okay that's the whole page πŸ’– cute sign-off: source/version is ./drivers/base, dated October 2026, and the page is USAGE(9) β€” periodt πŸŽ€

πŸ“¦ where this page comes from