2017-09-08 21:56:07

by KY Srinivasan

[permalink] [raw]
Subject: [PATCH 1/1] x86/hyper-V: Allocate the IDT entry early in boot

Allocate the hypervisor callback IDT entry early in the boot sequence.

Signed-off-by: K. Y. Srinivasan <[email protected]>
---
arch/x86/kernel/cpu/mshyperv.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index 3b3f713e15e5..236324e83a3a 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -59,8 +59,6 @@ void hyperv_vector_handler(struct pt_regs *regs)
void hv_setup_vmbus_irq(void (*handler)(void))
{
vmbus_handler = handler;
- /* Setup the IDT for hypervisor callback */
- alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
}

void hv_remove_vmbus_irq(void)
@@ -251,6 +249,8 @@ static void __init ms_hyperv_init_platform(void)
*/
x86_platform.apic_post_init = hyperv_init;
hyperv_setup_mmu_ops();
+ /* Setup the IDT for hypervisor callback */
+ alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
#endif
}

--
2.14.1


2017-09-09 09:39:52

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH 1/1] x86/hyper-V: Allocate the IDT entry early in boot

On Fri, 8 Sep 2017, K. Y. Srinivasan wrote:

> Allocate the hypervisor callback IDT entry early in the boot sequence.
>
> Signed-off-by: K. Y. Srinivasan <[email protected]>
> ---
> arch/x86/kernel/cpu/mshyperv.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
> index 3b3f713e15e5..236324e83a3a 100644
> --- a/arch/x86/kernel/cpu/mshyperv.c
> +++ b/arch/x86/kernel/cpu/mshyperv.c
> @@ -59,8 +59,6 @@ void hyperv_vector_handler(struct pt_regs *regs)
> void hv_setup_vmbus_irq(void (*handler)(void))
> {
> vmbus_handler = handler;
> - /* Setup the IDT for hypervisor callback */
> - alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
> }
>
> void hv_remove_vmbus_irq(void)
> @@ -251,6 +249,8 @@ static void __init ms_hyperv_init_platform(void)
> */
> x86_platform.apic_post_init = hyperv_init;
> hyperv_setup_mmu_ops();
> + /* Setup the IDT for hypervisor callback */
> + alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR, hyperv_callback_vector);
> #endif
> }

Nice. So we can make all of that gate/idt stuff __init now.

That makes my previous fix obsolete, right?

Thanks,

tglx


2017-09-09 15:58:50

by KY Srinivasan

[permalink] [raw]
Subject: RE: [PATCH 1/1] x86/hyper-V: Allocate the IDT entry early in boot



> -----Original Message-----
> From: Thomas Gleixner [mailto:[email protected]]
> Sent: Saturday, September 9, 2017 2:40 AM
> To: KY Srinivasan <[email protected]>
> Cc: [email protected]; [email protected]; linux-
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]
> Subject: Re: [PATCH 1/1] x86/hyper-V: Allocate the IDT entry early in boot
>
> On Fri, 8 Sep 2017, K. Y. Srinivasan wrote:
>
> > Allocate the hypervisor callback IDT entry early in the boot sequence.
> >
> > Signed-off-by: K. Y. Srinivasan <[email protected]>
> > ---
> > arch/x86/kernel/cpu/mshyperv.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/x86/kernel/cpu/mshyperv.c
> b/arch/x86/kernel/cpu/mshyperv.c
> > index 3b3f713e15e5..236324e83a3a 100644
> > --- a/arch/x86/kernel/cpu/mshyperv.c
> > +++ b/arch/x86/kernel/cpu/mshyperv.c
> > @@ -59,8 +59,6 @@ void hyperv_vector_handler(struct pt_regs *regs)
> > void hv_setup_vmbus_irq(void (*handler)(void))
> > {
> > vmbus_handler = handler;
> > - /* Setup the IDT for hypervisor callback */
> > - alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR,
> hyperv_callback_vector);
> > }
> >
> > void hv_remove_vmbus_irq(void)
> > @@ -251,6 +249,8 @@ static void __init ms_hyperv_init_platform(void)
> > */
> > x86_platform.apic_post_init = hyperv_init;
> > hyperv_setup_mmu_ops();
> > + /* Setup the IDT for hypervisor callback */
> > + alloc_intr_gate(HYPERVISOR_CALLBACK_VECTOR,
> hyperv_callback_vector);
> > #endif
> > }
>
> Nice. So we can make all of that gate/idt stuff __init now.
>
> That makes my previous fix obsolete, right?

Yes.

K. Y
>
> Thanks,
>
> tglx
>