]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitbc1f6652ac29c1fb32a067e56c0e137593fc419d
treea76985165abc913ff6e377c2445a3f853a697c90
parentbdd6da45fe551c5509c7dcee085cf7d2935ed5db
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