linux/drivers/net/ethernet/netronome/nfp
Jakub Kicinski bcc93a23ca 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: 2406e7e546 ("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>
2018-01-19 15:44:18 -05:00
..
bpf nfp: bpf: reject program on instructions unknown to the JIT compiler 2018-01-17 01:15:06 +01:00
flower nfp: flower: implement the PORT_REIFY message 2018-01-03 12:17:49 -05:00
nfpcore nfp: core: make scalar CPP helpers fail on short accesses 2018-01-19 15:44:18 -05:00
nic nfp: separate app vNIC init/clean from alloc/free 2017-09-03 21:22:04 -07:00
Makefile nfp: bpf: add basic control channel communication 2018-01-14 23:36:30 +01:00
nfp_app_nic.c nfp: separate app vNIC init/clean from alloc/free 2017-09-03 21:22:04 -07:00
nfp_app.c nfp: refactor nfp_app_reprs_set 2017-11-05 23:23:26 +09:00
nfp_app.h nfp: bpf: add basic control channel communication 2018-01-14 23:36:30 +01:00
nfp_asm.c nfp: bpf: add helpers for updating immediate instructions 2018-01-14 23:36:30 +01:00
nfp_asm.h nfp: bpf: add helpers for updating immediate instructions 2018-01-14 23:36:30 +01:00
nfp_devlink.c nfp: register devlink after app is created 2018-01-19 15:44:18 -05:00
nfp_hwmon.c nfp: add hwmon support 2017-05-30 11:27:06 -04:00
nfp_main.c nfp: register devlink after app is created 2018-01-19 15:44:18 -05:00
nfp_main.h nfp: debug dump ethtool ops 2017-12-05 15:01:01 -05:00
nfp_net_common.c nfp: bpf: add basic control channel communication 2018-01-14 23:36:30 +01:00
nfp_net_ctrl.h nfp: fix incumbent kdoc warnings 2018-01-10 13:49:35 +01:00
nfp_net_debugdump.c nfp: core: make scalar CPP helpers fail on short accesses 2018-01-19 15:44:18 -05:00
nfp_net_debugfs.c nfp: don't reuse pointers in ring dumping 2017-08-18 22:39:28 -07:00
nfp_net_ethtool.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-17 00:10:42 -05:00
nfp_net_main.c nfp: register devlink after app is created 2018-01-19 15:44:18 -05:00
nfp_net_repr.c nfp: bpf: don't allow changing MTU above BPF offload limit when active 2018-01-10 13:49:35 +01:00
nfp_net_repr.h nfp: fix incumbent kdoc warnings 2018-01-10 13:49:35 +01:00
nfp_net_sriov.c nfp: inform the VF driver needs to be restarted after changing the MAC 2017-10-28 18:59:48 +09:00
nfp_net_sriov.h nfp: add basic SR-IOV ndo functions 2017-08-25 19:24:58 -07:00
nfp_net.h nfp: bpf: add basic control channel communication 2018-01-14 23:36:30 +01:00
nfp_netvf_main.c nfp: advertise support for NFD ABI 0.5 2017-06-07 12:51:42 -04:00
nfp_port.c nfp: store pointer to MAC statistics in nfp_port 2017-08-18 22:39:28 -07:00
nfp_port.h nfp: fix vlan receive MAC statistics typo 2017-11-17 14:09:35 +09:00