diff options
author | K. Y. Srinivasan <kys@microsoft.com> | 2014-04-08 21:45:54 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-05-03 19:24:26 -0400 |
commit | 3a28fa35d6658703cd26f9c16aaea0eae06afd40 (patch) | |
tree | bcc8f07bbd9365e0a270c85af0e50ce3e1682987 /include/linux/hyperv.h | |
parent | d3ba720dd58cdf6630fee4b89482c465d5ad0d0f (diff) |
Drivers: hv: vmbus: Implement per-CPU mapping of relid to channel
Currently the mapping of the relID to channel is done under the protection of a
single spin lock. Starting with ws2012, each channel is bound to a specific VCPU
in the guest. Use this binding to eliminate the spin lock by setting up
per-cpu state for mapping relId to the channel.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/hyperv.h')
-rw-r--r-- | include/linux/hyperv.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index a274e089df78..08cfaff8a072 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h | |||
@@ -734,6 +734,11 @@ struct vmbus_channel { | |||
734 | * Support per-channel state for use by vmbus drivers. | 734 | * Support per-channel state for use by vmbus drivers. |
735 | */ | 735 | */ |
736 | void *per_channel_state; | 736 | void *per_channel_state; |
737 | /* | ||
738 | * To support per-cpu lookup mapping of relid to channel, | ||
739 | * link up channels based on their CPU affinity. | ||
740 | */ | ||
741 | struct list_head percpu_list; | ||
737 | }; | 742 | }; |
738 | 743 | ||
739 | static inline void set_channel_read_state(struct vmbus_channel *c, bool state) | 744 | static inline void set_channel_read_state(struct vmbus_channel *c, bool state) |