mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
Char/Misc remaining patch for 3.9-rc1
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> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iEYEABECAAYFAlExO5kACgkQMUfUDdst+ylRogCfcZN5nq3gZ8bUb5CTjQF38m1h 41UAnAoFnIiV3QZhjmaf2x+mN+SEyel7 =EqqO -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
686c09407d
@ -318,7 +318,7 @@ static u32 get_vp_index(uuid_le *type_guid)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cur_cpu = (++next_vp % max_cpus);
|
cur_cpu = (++next_vp % max_cpus);
|
||||||
return 0;
|
return cur_cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -272,7 +272,7 @@ u16 hv_signal_event(void *con_id)
|
|||||||
* retrieve the initialized message and event pages. Otherwise, we create and
|
* retrieve the initialized message and event pages. Otherwise, we create and
|
||||||
* initialize the message and event pages.
|
* initialize the message and event pages.
|
||||||
*/
|
*/
|
||||||
void hv_synic_init(void *irqarg)
|
void hv_synic_init(void *arg)
|
||||||
{
|
{
|
||||||
u64 version;
|
u64 version;
|
||||||
union hv_synic_simp simp;
|
union hv_synic_simp simp;
|
||||||
@ -281,7 +281,6 @@ void hv_synic_init(void *irqarg)
|
|||||||
union hv_synic_scontrol sctrl;
|
union hv_synic_scontrol sctrl;
|
||||||
u64 vp_index;
|
u64 vp_index;
|
||||||
|
|
||||||
u32 irq_vector = *((u32 *)(irqarg));
|
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
|
|
||||||
if (!hv_context.hypercall_page)
|
if (!hv_context.hypercall_page)
|
||||||
@ -335,7 +334,7 @@ void hv_synic_init(void *irqarg)
|
|||||||
rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64);
|
rdmsrl(HV_X64_MSR_SINT0 + VMBUS_MESSAGE_SINT, shared_sint.as_uint64);
|
||||||
|
|
||||||
shared_sint.as_uint64 = 0;
|
shared_sint.as_uint64 = 0;
|
||||||
shared_sint.vector = irq_vector; /* HV_SHARED_SINT_IDT_VECTOR + 0x20; */
|
shared_sint.vector = HYPERVISOR_CALLBACK_VECTOR;
|
||||||
shared_sint.masked = false;
|
shared_sint.masked = false;
|
||||||
shared_sint.auto_eoi = true;
|
shared_sint.auto_eoi = true;
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <linux/kernel_stat.h>
|
#include <linux/kernel_stat.h>
|
||||||
#include <asm/hyperv.h>
|
#include <asm/hyperv.h>
|
||||||
#include <asm/hypervisor.h>
|
#include <asm/hypervisor.h>
|
||||||
|
#include <asm/mshyperv.h>
|
||||||
#include "hyperv_vmbus.h"
|
#include "hyperv_vmbus.h"
|
||||||
|
|
||||||
|
|
||||||
@ -528,7 +529,6 @@ static void vmbus_flow_handler(unsigned int irq, struct irq_desc *desc)
|
|||||||
static int vmbus_bus_init(int irq)
|
static int vmbus_bus_init(int irq)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
unsigned int vector;
|
|
||||||
|
|
||||||
/* Hypervisor initialization...setup hypercall page..etc */
|
/* Hypervisor initialization...setup hypercall page..etc */
|
||||||
ret = hv_init();
|
ret = hv_init();
|
||||||
@ -558,13 +558,16 @@ static int vmbus_bus_init(int irq)
|
|||||||
*/
|
*/
|
||||||
irq_set_handler(irq, vmbus_flow_handler);
|
irq_set_handler(irq, vmbus_flow_handler);
|
||||||
|
|
||||||
vector = IRQ0_VECTOR + irq;
|
/*
|
||||||
|
* Register our interrupt handler.
|
||||||
|
*/
|
||||||
|
hv_register_vmbus_handler(irq, vmbus_isr);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Notify the hypervisor of our irq and
|
* Initialize the per-cpu interrupt state and
|
||||||
* connect to the host.
|
* connect to the host.
|
||||||
*/
|
*/
|
||||||
on_each_cpu(hv_synic_init, (void *)&vector, 1);
|
on_each_cpu(hv_synic_init, NULL, 1);
|
||||||
ret = vmbus_connect();
|
ret = vmbus_connect();
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_irq;
|
goto err_irq;
|
||||||
|
Loading…
Reference in New Issue
Block a user