lkml.org 
[lkml]   [2009]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 4/6] x86: irqinit - merge native_init_IRQ

    * Cyrill Gorcunov <gorcunov@openvz.org> wrote:

    > For this purpose init_ISA_irqs is called indirectly
    > by x86_quirk_pre_intr_init.
    >
    > Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
    > ---
    > arch/x86/kernel/irqinit_32.c | 4 +++-
    > arch/x86/kernel/irqinit_64.c | 22 +++++++++++++++++++++-
    > arch/x86/kernel/setup.c | 8 ++++++++
    > 3 files changed, 32 insertions(+), 2 deletions(-)
    >
    > Index: linux-2.6.git/arch/x86/kernel/irqinit_32.c
    > ===================================================================
    > --- linux-2.6.git.orig/arch/x86/kernel/irqinit_32.c
    > +++ linux-2.6.git/arch/x86/kernel/irqinit_32.c
    > @@ -215,7 +215,7 @@ void __init native_init_IRQ(void)
    > */
    > for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
    > int vector = FIRST_EXTERNAL_VECTOR + i;
    > - /* SYSCALL_VECTOR was reserved in trap_init. */
    > + /* X86-32: SYSCALL_VECTOR was reserved in trap_init. */
    > if (!test_bit(vector, used_vectors))
    > set_intr_gate(vector, interrupt[i]);
    > }
    > @@ -229,6 +229,7 @@ void __init native_init_IRQ(void)
    > */
    > x86_quirk_intr_init();
    >
    > +#ifdef CONFIG_X86_32
    > /*
    > * External FPU? Set up irq13 if so, for
    > * original braindamaged IBM FERR coupling.
    > @@ -237,4 +238,5 @@ void __init native_init_IRQ(void)
    > setup_irq(FPU_IRQ, &fpu_irq);
    >
    > irq_ctx_init(smp_processor_id());
    > +#endif
    > }
    > Index: linux-2.6.git/arch/x86/kernel/irqinit_64.c
    > ===================================================================
    > --- linux-2.6.git.orig/arch/x86/kernel/irqinit_64.c
    > +++ linux-2.6.git/arch/x86/kernel/irqinit_64.c
    > @@ -21,6 +21,7 @@
    > #include <asm/pgtable.h>
    > #include <asm/desc.h>
    > #include <asm/apic.h>
    > +#include <asm/setup.h>
    > #include <asm/i8259.h>
    >
    > /*
    > @@ -174,7 +175,8 @@ void __init native_init_IRQ(void)
    > {
    > int i;
    >
    > - init_ISA_irqs();
    > + /* Execute any quirks before the call gates are initialised: */
    > + x86_quirk_pre_intr_init();
    >
    > apic_intr_init();
    >
    > @@ -185,10 +187,28 @@ void __init native_init_IRQ(void)
    > */
    > for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) {
    > int vector = FIRST_EXTERNAL_VECTOR + i;
    > + /* X86-32: SYSCALL_VECTOR was reserved in trap_init. */
    > if (!test_bit(vector, used_vectors))
    > set_intr_gate(vector, interrupt[i]);
    > }
    >
    > if (!acpi_ioapic)
    > setup_irq(2, &irq2);
    > +
    > + /*
    > + * Call quirks after call gates are initialised (usually add in
    > + * the architecture specific gates):
    > + */
    > + x86_quirk_intr_init();
    > +
    > +#ifdef CONFIG_X86_32
    > + /*
    > + * External FPU? Set up irq13 if so, for
    > + * original braindamaged IBM FERR coupling.
    > + */
    > + if (boot_cpu_data.hard_math && !cpu_has_fpu)
    > + setup_irq(FPU_IRQ, &fpu_irq);
    > +
    > + irq_ctx_init(smp_processor_id());
    > +#endif
    > }
    > Index: linux-2.6.git/arch/x86/kernel/setup.c
    > ===================================================================
    > --- linux-2.6.git.orig/arch/x86/kernel/setup.c
    > +++ linux-2.6.git/arch/x86/kernel/setup.c
    > @@ -1087,3 +1087,11 @@ void __init x86_quirk_time_init(void)
    > setup_irq(0, &irq0);
    > }
    > #endif /* CONFIG_X86_32 */
    > +
    > +#ifdef CONFIG_X86_64
    > +void x86_quirk_pre_intr_init(void)
    > +{
    > + init_ISA_irqs();
    > +}
    > +void x86_quirk_intr_init(void) { }
    > +#endif

    Hm, wouldnt it be cleaner to add it as a new quirk function vector
    in struct x86_quirks? See arch/x86/include/asm/setup.h.

    Ingo


    \
     
     \ /
      Last update: 2009-04-01 16:57    [W:0.031 / U:33.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site