On Thu, May 22, 2025 at 03:13:46PM -0700, Jakub Kicinski wrote:
On Wed, 21 May 2025 03:25:03 -0700 Saurabh Sengar wrote:
The MANA driver's probe registers netdevice via the following call chain:
mana_probe() register_netdev() register_netdevice()
register_netdevice() calls notifier callback for netvsc driver, holding the netdev mutex via netdev_lock_ops().
Further this netvsc notifier callback end up attempting to acquire the same lock again in dev_xdp_propagate() leading to deadlock.
netvsc_netdev_event() netvsc_vf_setxdp() dev_xdp_propagate()
This deadlock was not observed so far because net_shaper_ops was never set,
The lock is on the VF, I think you meant to say that no device you use in Azure is ops locked?
That's right.
There's also the call to netvsc_register_vf() on probe path, please fix or explain why it doesn't need locking in the commit message.
On rethinking I realize you were referring to the netvsc_probe() path not mana_probe(). Since this lock is effectively a no-op, it doesn't really matter whether it's there or not.
However, I think we can revisit this when we add ops for any of the VFs.
- Saurabh