PURPOSE(9)
π PURPOSE(9) β the kernel API manual, but make it make sense β¨
okay bestie, so the manual name is PURPOSE(9) and it's literally the lore drop for why the auxiliary bus even exists. buckle up π
β¨ PURPOSE β¨
so here's the tea, fr fr: in some subsystems, the functionality of the core device (PCI/ACPI/other) is just too complex for a single device to be managed by a monolithic driver (think: Sound Open Firmware), or multiple devices might implement a common intersection of functionality (think: NICs + RDMA), or a driver may want to export an interface for another subsystem to drive (think: SIOV Physical Function export Virtual Function management). π
the slay move? split the functionality into child-devices that represent sub-domains of functionality β that way you can compartmentalize, layer, and distribute domain-specific concerns via a Linux device-driver model. periodt. π
a literally iconic example of this kind of requirement is the audio subsystem, where a single IP is handling multiple entities such as HDMI, Soundwire, local devices such as mics/speakers etc. π§β¨ The split for the core's functionality can be arbitrary or be defined by the DSP firmware topology, and it can include hooks for test/debug. This allows for the audio core device to be minimal and focused on hardware-specific control and communication. no cap, that's the whole vibe. π«Ά
each auxiliary_device represents a part of its parent functionality π The generic behavior can be extended and specialized as needed by encapsulating an auxiliary_device within other domain-specific structures and the use of .ops callbacks. Devices on the auxiliary bus do not share any structures, and the use of a communication channel with the parent is domain-specific. (iykyk π)
β οΈ bestie read this part twice: note thatopsare intended as a way to augment instance behavior within a class of auxiliary devices β it is not the mechanism for exporting common infrastructure from the parent. ConsiderEXPORT_SYMBOL_NSto convey infrastructure from the parent module to the auxiliary module(s). π don't do it wrong, okay?
π SEE ALSO π
- Kernel file
./drivers/base/auxiliary.c USAGE(9)EXAMPLE(9)auxiliary_device_init(9)__auxiliary_device_add(9)__auxiliary_driver_register(9)auxiliary_driver_unregister(9)auxiliary_device_create(9)auxiliary_device_destroy(9)__devm_auxiliary_device_create(9)dev_is_auxiliary(9)
go read all of those, they're all main character energy ππ
π¦ and that's the whole page, bestie! this one ships out of ./drivers/base, dated October 2026, and it's PURPOSE(9) β catch you in the next manpage ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms