lkml.org 
[lkml]   [2009]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH -tip] x86: do_IRQ - send EOI for x86-32 on irq without handler v2
    If IRQ has no handler it remains non-Ack'ed even if APIC is not
    requested for being disabled. Fix it.

    Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
    ---

    |more stuff needs fixing here first:
    |
    |arch/x86/kernel/irq.c: In function ‘do_IRQ’:
    |arch/x86/kernel/irq.c:226: error: ‘disable_apic’ undeclared (first use in this
    |function)
    |arch/x86/kernel/irq.c:226: error: (Each undeclared identifier is reported only
    |once
    |arch/x86/kernel/irq.c:226: error: for each function it appears in.)
    |
    |like making 'disable_apic' available everywhere.
    |
    |Or better yet: introduce a dummy apic->write() method in the
    |disable_apic=1 case so we can call a straight ack_APIC_irq().
    |
    | Ingo

    Ingo, I think introducing additional dummy here would be a bit
    expencive -- a number of callers of ack_APIC_irq just should not
    check for disable_apic since it's not needed. disable_apic is to
    depend on CONFIG_X86_LOCAL_APIC rather then CONFIG_X86_64 actually.
    So make it then. Or you mean something else? Like new apic->write_eoi
    operation? (I'm a bit tired so brain is a half functional now :)

    arch/x86/kernel/irq.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    Index: linux-2.6.git/arch/x86/kernel/irq.c
    =====================================================================
    --- linux-2.6.git.orig/arch/x86/kernel/irq.c
    +++ linux-2.6.git/arch/x86/kernel/irq.c
    @@ -223,10 +223,10 @@ unsigned int __irq_entry do_IRQ(struct p
    irq = __get_cpu_var(vector_irq)[vector];

    if (!handle_irq(irq, regs)) {
    -#ifdef CONFIG_X86_64
    +#ifdef CONFIG_X86_LOCAL_APIC
    if (!disable_apic)
    - ack_APIC_irq();
    #endif
    + ack_APIC_irq();

    if (printk_ratelimit())
    printk(KERN_EMERG "%s: %d.%d No irq handler for vector (irq %d)\n",
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2009-04-08 16:53    [W:0.025 / U:0.696 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site