Speaker
Description
Every devlink instance today is scoped to a single function - one PF, VF, or SF. That breaks for state belonging to the physical device rather than
any one function: siblings must coordinate on shared resources, but there is no standard mechanism to do so. The result is per-vendor workarounds, brittle cross-function locking, and latent deadlock risk baked into every driver that tries.
We fix this at the infrastructure level with the shared devlink instance (shd): a reference-counted object that all PFs of the same NIC join, providing a single lock domain per physical device while keeping per-function instances nested underneath - so existing tooling, namespacing, and uAPI contracts are undisturbed. Merged in Linux 7.1.
The first feature built on top is cross-function devlink-rate. TX scheduling hierarchies have always been confined to a single devlink instance; modern NICs can schedule across VFs and SFs spanning multiple PFs in a LAG. We extend devlink-rate to cross instance boundaries, serializing QoS hierarchy changes on the common ancestor lock. Merged for Linux 7.3.
The talk covers the design rationale, the mlx5 implementation, and a live cross-eswitch demo. We'll close by mapping out what else the shared devlink infrastructure unlocks - PTP synchronization, eswitch coordination, and other problems that have been quietly waiting for exactly this primitive.