IB/opa_vnic: Use spinlock instead of mutex for stats_lock
authorVishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
Wed, 14 Jun 2017 19:34:42 +0000 (12:34 -0700)
committerDoug Ledford <dledford@redhat.com>
Thu, 29 Jun 2017 16:43:52 +0000 (12:43 -0400)
commita379d69f00f28063a7a1c3de235e2996c2c5a6f5
treea76985165abc913ff6e377c2445a3f853a697c90
parent0568c4640e2b12df063d1761fd4d53af24dc4018
IB/opa_vnic: Use spinlock instead of mutex for stats_lock

Stats can be read from atomic context, hence make stats_lock as
a spinlock.

Fix the following trace with debug kernel.

BUG: sleeping function called from invalid context at
kernel/locking/mutex.c:238
in_atomic(): 1, irqs_disabled(): 0, pid: 6487, name: sadc
Call Trace:
 dump_stack+0x63/0x90
 ___might_sleep+0xda/0x130
 __might_sleep+0x4a/0x90
 mutex_lock+0x20/0x50
 opa_vnic_get_stats64+0x56/0x140 [opa_vnic]
 dev_get_stats+0x74/0x130
 dev_seq_printf_stats+0x37/0x120
 dev_seq_show+0x14/0x30
 seq_read+0x26d/0x3d0

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/opa_vnic/opa_vnic_ethtool.c
drivers/infiniband/ulp/opa_vnic/opa_vnic_internal.h
drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c
drivers/infiniband/ulp/opa_vnic/opa_vnic_vema_iface.c