diff options
author | 2014-04-08 18:45:54 -0700 | |
---|---|---|
committer | 2014-05-03 19:24:26 -0400 | |
commit | 3a28fa35d6658703cd26f9c16aaea0eae06afd40 (patch) | |
tree | bcc8f07bbd9365e0a270c85af0e50ce3e1682987 /drivers/hv/hv.c | |
parent | Drivers: hv: Eliminate the channel spinlock in the callback path (diff) | |
download | linux-3a28fa35d6658703cd26f9c16aaea0eae06afd40.tar.gz linux-3a28fa35d6658703cd26f9c16aaea0eae06afd40.tar.bz2 linux-3a28fa35d6658703cd26f9c16aaea0eae06afd40.zip |
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 'drivers/hv/hv.c')
-rw-r--r-- | drivers/hv/hv.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index bcb49502c3bf..edfc8488cb03 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c @@ -383,6 +383,8 @@ void hv_synic_init(void *arg) */ rdmsrl(HV_X64_MSR_VP_INDEX, vp_index); hv_context.vp_index[cpu] = (u32)vp_index; + + INIT_LIST_HEAD(&hv_context.percpu_list[cpu]); return; } |