linux/drivers/hv
Vitaly Kuznetsov eece30b9f0 Drivers: hv: balloon: replace ha_region_mutex with spinlock
lockdep reports possible circular locking dependency when udev is used
for memory onlining:

 systemd-udevd/3996 is trying to acquire lock:
  ((memory_chain).rwsem){++++.+}, at: [<ffffffff810d137e>] __blocking_notifier_call_chain+0x4e/0xc0

 but task is already holding lock:
  (&dm_device.ha_region_mutex){+.+.+.}, at: [<ffffffffa015382e>] hv_memory_notifier+0x5e/0xc0 [hv_balloon]
 ...

which is probably a false positive because we take and release
ha_region_mutex from memory notifier chain depending on the arg. No real
deadlocks were reported so far (though I'm not really sure about
preemptible kernels...) but we don't really need to hold the mutex
for so long. We use it to protect ha_region_list (and its members) and the
num_pages_onlined counter. None of these operations require us to sleep
and nothing is slow, switch to using spinlock with interrupts disabled.

While on it, replace list_for_each -> list_for_each_entry as we actually
need entries in all these cases, drop meaningless list_empty() checks.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-08-31 13:05:41 +02:00
..
channel_mgmt.c Drivers: hv: vmbus: Enable explicit signaling policy for NIC channels 2016-08-31 13:05:41 +02:00
channel.c Drivers: hv: vmbus: Implement a mechanism to tag the channel for low latency 2016-08-31 13:05:41 +02:00
connection.c Drivers: hv: vmbus: Reduce the delay between retries in vmbus_post_msg() 2016-08-31 13:05:41 +02:00
hv_balloon.c Drivers: hv: balloon: replace ha_region_mutex with spinlock 2016-08-31 13:05:41 +02:00
hv_fcopy.c Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv_kvp.c Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv_snapshot.c Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv_util.c Drivers: hv: util: Pass the channel information during the init call 2016-03-01 16:57:20 -08:00
hv_utils_transport.c Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv_utils_transport.h Drivers: hv: utils: fix a race on userspace daemons registration 2016-08-31 13:05:41 +02:00
hv.c Drivers: hv: avoid vfree() on crash 2016-08-31 13:05:40 +02:00
hyperv_vmbus.h Drivers: hv: vmbus: Enable explicit signaling policy for NIC channels 2016-08-31 13:05:41 +02:00
Kconfig x86: Make Linux guest support optional 2013-03-04 13:14:25 -08:00
Makefile Drivers: hv: util: introduce hv_utils_transport abstraction 2015-05-24 12:17:41 -07:00
ring_buffer.c Drivers: hv: vmbus: Enable explicit signaling policy for NIC channels 2016-08-31 13:05:41 +02:00
vmbus_drv.c Drivers: hv: avoid vfree() on crash 2016-08-31 13:05:40 +02:00