diff options
author | Stephen Hemminger <stephen@networkplumber.org> | 2017-02-05 17:20:31 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-02-10 15:43:30 +0100 |
commit | 5c1bec61fdfcd056df909a712e2a86bbaeb0f942 (patch) | |
tree | 625f0c6561886c50334e81042e0d267390e485fc /drivers/hv/channel.c | |
parent | bb6a4db92f8345a210b369b791e6920253b10437 (diff) | |
download | op-kernel-dev-5c1bec61fdfcd056df909a712e2a86bbaeb0f942.zip op-kernel-dev-5c1bec61fdfcd056df909a712e2a86bbaeb0f942.tar.gz |
vmbus: use kernel bitops for traversing interrupt mask
Use standard kernel operations for find first set bit to traverse
the channel bit array. This has added benefit of speeding up
lookup on 64 bit and because it uses find first set instruction.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/hv/channel.c')
-rw-r--r-- | drivers/hv/channel.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index be34547..a016c5c 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c @@ -47,12 +47,8 @@ void vmbus_setevent(struct vmbus_channel *channel) * For channels marked as in "low latency" mode * bypass the monitor page mechanism. */ - if ((channel->offermsg.monitor_allocated) && - (!channel->low_latency)) { - /* Each u32 represents 32 channels */ - sync_set_bit(channel->offermsg.child_relid & 31, - (unsigned long *) vmbus_connection.send_int_page + - (channel->offermsg.child_relid >> 5)); + if (channel->offermsg.monitor_allocated && !channel->low_latency) { + vmbus_send_interrupt(channel->offermsg.child_relid); /* Get the child to parent monitor page */ monitorpage = vmbus_connection.monitor_pages[1]; |