Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'char-misc-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc patch from Greg Kroah-Hartman:
"Here is one remaining patch for 3.9-rc1. It is for the hyper-v
drivers, and had to wait until some other patches went in through the
x86 tree."

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

* tag 'char-misc-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
Drivers: hv: vmbus: Use the new infrastructure for delivering VMBUS interrupts

+10 -8
+1 -1
drivers/hv/channel_mgmt.c
··· 318 318 return 0; 319 319 } 320 320 cur_cpu = (++next_vp % max_cpus); 321 - return 0; 321 + return cur_cpu; 322 322 } 323 323 324 324 /*
+2 -3
drivers/hv/hv.c
··· 272 272 * retrieve the initialized message and event pages. Otherwise, we create and 273 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 277 u64 version; 278 278 union hv_synic_simp simp; ··· 281 281 union hv_synic_scontrol sctrl; 282 282 u64 vp_index; 283 283 284 - u32 irq_vector = *((u32 *)(irqarg)); 285 284 int cpu = smp_processor_id(); 286 285 287 286 if (!hv_context.hypercall_page) ··· 334 335 rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64); 335 336 336 337 shared_sint.as_uint64 = 0; 337 - shared_sint.vector = irq_vector; /* HV_SHARED_SINT_IDT_VECTOR + 0x20; */ 338 + shared_sint.vector = HYPERVISOR_CALLBACK_VECTOR; 338 339 shared_sint.masked = false; 339 340 shared_sint.auto_eoi = true; 340 341
+7 -4
drivers/hv/vmbus_drv.c
··· 36 36 #include <linux/kernel_stat.h> 37 37 #include <asm/hyperv.h> 38 38 #include <asm/hypervisor.h> 39 + #include <asm/mshyperv.h> 39 40 #include "hyperv_vmbus.h" 40 41 41 42 ··· 529 528 static int vmbus_bus_init(int irq) 530 529 { 531 530 int ret; 532 - unsigned int vector; 533 531 534 532 /* Hypervisor initialization...setup hypercall page..etc */ 535 533 ret = hv_init(); ··· 558 558 */ 559 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 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 571 ret = vmbus_connect(); 569 572 if (ret) 570 573 goto err_irq;