diff options
-rw-r--r-- | drivers/hv/channel_mgmt.c | 2 | ||||
-rw-r--r-- | drivers/hv/hv.c | 5 | ||||
-rw-r--r-- | drivers/hv/vmbus_drv.c | 11 |
3 files changed, 10 insertions, 8 deletions
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 53a8600162a5..ff1be167eb04 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c | |||
@@ -318,7 +318,7 @@ static u32 get_vp_index(uuid_le *type_guid) | |||
318 | return 0; | 318 | return 0; |
319 | } | 319 | } |
320 | cur_cpu = (++next_vp % max_cpus); | 320 | cur_cpu = (++next_vp % max_cpus); |
321 | return 0; | 321 | return cur_cpu; |
322 | } | 322 | } |
323 | 323 | ||
324 | /* | 324 | /* |
diff --git a/drivers/hv/hv.c b/drivers/hv/hv.c index 1c5481da6e4a..731158910c1e 100644 --- a/drivers/hv/hv.c +++ b/drivers/hv/hv.c | |||
@@ -272,7 +272,7 @@ u16 hv_signal_event(void *con_id) | |||
272 | * retrieve the initialized message and event pages. Otherwise, we create and | 272 | * retrieve the initialized message and event pages. Otherwise, we create and |
273 | * initialize the message and event pages. | 273 | * initialize the message and event pages. |
274 | */ | 274 | */ |
275 | void hv_synic_init(void *irqarg) | 275 | void hv_synic_init(void *arg) |
276 | { | 276 | { |
277 | u64 version; | 277 | u64 version; |
278 | union hv_synic_simp simp; | 278 | union hv_synic_simp simp; |
@@ -281,7 +281,6 @@ void hv_synic_init(void *irqarg) | |||
281 | union hv_synic_scontrol sctrl; | 281 | union hv_synic_scontrol sctrl; |
282 | u64 vp_index; | 282 | u64 vp_index; |
283 | 283 | ||
284 | u32 irq_vector = *((u32 *)(irqarg)); | ||
285 | int cpu = smp_processor_id(); | 284 | int cpu = smp_processor_id(); |
286 | 285 | ||
287 | if (!hv_context.hypercall_page) | 286 | if (!hv_context.hypercall_page) |
@@ -335,7 +334,7 @@ void hv_synic_init(void *irqarg) | |||
335 | rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64); | 334 | rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64); |
336 | 335 | ||
337 | shared_sint.as_uint64 = 0; | 336 | shared_sint.as_uint64 = 0; |
338 | shared_sint.vector = irq_vector; /* HV_SHARED_SINT_IDT_VECTOR + 0x20; */ | 337 | shared_sint.vector = HYPERVISOR_CALLBACK_VECTOR; |
339 | shared_sint.masked = false; | 338 | shared_sint.masked = false; |
340 | shared_sint.auto_eoi = true; | 339 | shared_sint.auto_eoi = true; |
341 | 340 | ||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c index cf19dfa5ead1..bf421e0efa1e 100644 --- a/drivers/hv/vmbus_drv.c +++ b/drivers/hv/vmbus_drv.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/kernel_stat.h> | 36 | #include <linux/kernel_stat.h> |
37 | #include <asm/hyperv.h> | 37 | #include <asm/hyperv.h> |
38 | #include <asm/hypervisor.h> | 38 | #include <asm/hypervisor.h> |
39 | #include <asm/mshyperv.h> | ||
39 | #include "hyperv_vmbus.h" | 40 | #include "hyperv_vmbus.h" |
40 | 41 | ||
41 | 42 | ||
@@ -528,7 +529,6 @@ static void vmbus_flow_handler(unsigned int irq, struct irq_desc *desc) | |||
528 | static int vmbus_bus_init(int irq) | 529 | static int vmbus_bus_init(int irq) |
529 | { | 530 | { |
530 | int ret; | 531 | int ret; |
531 | unsigned int vector; | ||
532 | 532 | ||
533 | /* Hypervisor initialization...setup hypercall page..etc */ | 533 | /* Hypervisor initialization...setup hypercall page..etc */ |
534 | ret = hv_init(); | 534 | ret = hv_init(); |
@@ -558,13 +558,16 @@ static int vmbus_bus_init(int irq) | |||
558 | */ | 558 | */ |
559 | irq_set_handler(irq, vmbus_flow_handler); | 559 | irq_set_handler(irq, vmbus_flow_handler); |
560 | 560 | ||
561 | vector = IRQ0_VECTOR + irq; | 561 | /* |
562 | * Register our interrupt handler. | ||
563 | */ | ||
564 | hv_register_vmbus_handler(irq, vmbus_isr); | ||
562 | 565 | ||
563 | /* | 566 | /* |
564 | * Notify the hypervisor of our irq and | 567 | * Initialize the per-cpu interrupt state and |
565 | * connect to the host. | 568 | * connect to the host. |
566 | */ | 569 | */ |
567 | on_each_cpu(hv_synic_init, (void *)&vector, 1); | 570 | on_each_cpu(hv_synic_init, NULL, 1); |
568 | ret = vmbus_connect(); | 571 | ret = vmbus_connect(); |
569 | if (ret) | 572 | if (ret) |
570 | goto err_irq; | 573 | goto err_irq; |