Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=29a002776ba5ef170446910b1f93c480cdd43706
Commit:     29a002776ba5ef170446910b1f93c480cdd43706
Parent:     dee11c2364f51cac53df17d742a0c69097e29a4e
Author:     Magnus Damm <[EMAIL PROTECTED]>
AuthorDate: Sat Feb 3 01:13:48 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Sat Feb 3 11:26:06 2007 -0800

    [PATCH] kexec: Avoid migration of already disabled irqs (ia64)
    
    This patch fixes up ia64 kexec support for HP rx2620 hardware.  It does
    this by skipping migration of already disabled irqs.  This is most likely a
    problem on other ia64 platforms as well, but I've only been able to
    reproduce it on one machine so far.
    
    The full story is that handle_bad_irq() gets invoked before starting the
    new kernel without this patch.  This seems to happen when fixup_irqs()
    calls generic_handle_irq() on already migrated (and disabled) irqs.  So by
    avoiding migration of disabled irqs we stay away of handle_bad_irq().
    
    The code has been tested on three different ia64 machines, all with good
    results.  It is possible to trigger the same bug by offlining a processor
    using echo 0 > /sys/devices/system/cpu/cpuX/online.
    
    More detailed information is available in the following mail thread:
    http://lists.osdl.org/pipermail/fastboot/2007-January/thread.html#5774
    
    Signed-off-by: Magnus Damm <[EMAIL PROTECTED]>
    Acked-by: Simon Horman <[EMAIL PROTECTED]>
    Acked-by: Zou, Nanhai <[EMAIL PROTECTED]>
    Acked-by: Jay Lan <[EMAIL PROTECTED]>
    Acked-by: "Luck, Tony" <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 arch/ia64/kernel/irq.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c
index 54d55e4..ce49c85 100644
--- a/arch/ia64/kernel/irq.c
+++ b/arch/ia64/kernel/irq.c
@@ -122,6 +122,9 @@ static void migrate_irqs(void)
        for (irq=0; irq < NR_IRQS; irq++) {
                desc = irq_desc + irq;
 
+               if (desc->status == IRQ_DISABLED)
+                       continue;
+
                /*
                 * No handling for now.
                 * TBD: Implement a disable function so we can now
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to