diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2018-01-17 18:50:57 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-19 15:44:18 -0500 |
commit | bcc93a23ca595fb1d7d7540bec68196a3715da13 (patch) | |
tree | 5ae832c9fcd7069aa7b97b9ae9db4dba04428ad3 /lib/mpi/mpi-internal.h | |
parent | e1a2599db564340f1bee1536177e3dfb2461e75a (diff) | |
download | linux-bcc93a23ca595fb1d7d7540bec68196a3715da13.tar.bz2 |
nfp: register devlink after app is created
Devlink used to have two global locks: devlink lock and port lock,
our lock ordering looked like this:
devlink lock -> driver's pf->lock -> devlink port lock
After recent changes port lock was replaced with per-instance
lock. Unfortunately, new per-instance lock is taken on most
operations now. This means we can only grab the pf->lock from
the port split/unsplit ops. Lock ordering looks like this:
devlink lock -> driver's pf->lock -> devlink instance lock
Since we can't take pf->lock from most devlink ops, make sure
nfp_apps are prepared to service them as soon as devlink is
registered. Locking the pf must be pushed down after
nfp_app_init() callback.
The init order looks like this:
nfp_app_init
devlink_register
nfp_app_start
netdev/port_register
As soon as app_init is done nfp_apps must be ready to service
devlink-related callbacks. apps can only register their own
devlink objects from nfp_app_start.
Fixes: 2406e7e546b2 ("devlink: Add per devlink instance lock")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'lib/mpi/mpi-internal.h')
0 files changed, 0 insertions, 0 deletions