Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=7b5da4be3718c6b4cd771fb82e3e481b04790f0e
Commit:     7b5da4be3718c6b4cd771fb82e3e481b04790f0e
Parent:     d26805fd025abe1ab8785b23a7942cfb6ceffd75
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Fri Jan 25 22:17:08 2008 +0100
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Fri Jan 25 22:17:08 2008 +0100

    ide: remove IRQF_DISABLED from IRQ flags for IDE IRQ handler
    
    IRQF_DISABLED is not needed because the first thing that ide_intr()
    (IDE IRQ handler) does is calling spin_lock_irqsave() which disables
    local IRQs (IRQ unmasking is later handled by drive->unmask).
    
    kernel/irq/handle.c:
    
    irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
    ...
        if (!(action->flags & IRQF_DISABLED))
                local_irq_enable_in_hardirq();
    
        do {
                ret = action->handler(irq, action->dev_id);
                if (ret == IRQ_HANDLED)
                        status |= action->flags;
                retval |= ret;
                action = action->next;
        } while (action);
    ...
    
    drivers/ide/ide-io.c:
    
    irqreturn_t ide_intr (int irq, void *dev_id)
    ...
        spin_lock_irqsave(&ide_lock, flags);
    ...
        spin_unlock(&ide_lock);
    ...
        if (drive->unmask)
                local_irq_enable_in_hardirq();
    ...
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/ide-probe.c |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 0cb3d2b..0dda7ac 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -968,11 +968,6 @@ static int ide_init_queue(ide_drive_t *drive)
  * Much of the code is for correctly detecting/handling irq sharing
  * and irq serialization situations.  This is somewhat complex because
  * it handles static as well as dynamic (PCMCIA) IDE interfaces.
- *
- * The IRQF_DISABLED in sa_flags means ide_intr() is always entered with
- * interrupts completely disabled.  This can be bad for interrupt latency,
- * but anything else has led to problems on some machines.  We re-enable
- * interrupts as much as we can safely do in most places.
  */
 static int init_irq (ide_hwif_t *hwif)
 {
@@ -1055,17 +1050,13 @@ static int init_irq (ide_hwif_t *hwif)
         * Allocate the irq, if not already obtained for another hwif
         */
        if (!match || match->irq != hwif->irq) {
-               int sa = IRQF_DISABLED;
+               int sa = 0;
 #if defined(__mc68000__) || defined(CONFIG_APUS)
                sa = IRQF_SHARED;
 #endif /* __mc68000__ || CONFIG_APUS */
 
-               if (IDE_CHIPSET_IS_PCI(hwif->chipset)) {
+               if (IDE_CHIPSET_IS_PCI(hwif->chipset))
                        sa = IRQF_SHARED;
-#ifndef CONFIG_IDEPCI_SHARE_IRQ
-                       sa |= IRQF_DISABLED;
-#endif /* CONFIG_IDEPCI_SHARE_IRQ */
-               }
 
                if (hwif->io_ports[IDE_CONTROL_OFFSET])
                        /* clear nIEN */
-
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