>The real benefits from identifying a common case is to inline
>the code for it. So the fact that the common case is still a
>full-blown function call here and not inline code means that
>there's much less benefit from rewriting an indirect call as
>an if/indirect/direct sequence.

According to your comment, this patch adds IRQ calls (irq_on, irq_ack)
to each driver and always uses these indirect calls.

For irq_on, most drivers use ata_irq_on(). Some drivers
(ahci.c, sata_sil24.c) use ata_dummy_irq_on() because they
don't have either explicit or implicit assignment (ex: ata_pci_init_one)
of ctl_addr.

For irq_ack, ata_irq_ack() is used.

Signed-off-by: Kou Ishizaki <[EMAIL PROTECTED]>
Signed-off-by: Akira Iguchi <[EMAIL PROTECTED]>
---

diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/ahci.c linux-2.6.20-rc4.mod/drivers/ata/ahci.c
--- linux-2.6.20-rc4/drivers/ata/ahci.c 2007-01-07 14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/ahci.c     2007-01-17 23:07:11.000000000 
+0900
@@ -261,6 +261,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ahci_interrupt,
        .irq_clear              = ahci_irq_clear,
+       .irq_on                 = ata_dummy_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = ahci_scr_read,
        .scr_write              = ahci_scr_write,
@@ -292,6 +294,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ahci_interrupt,
        .irq_clear              = ahci_irq_clear,
+       .irq_on                 = ata_dummy_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = ahci_scr_read,
        .scr_write              = ahci_scr_write,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/ata_generic.c 
linux-2.6.20-rc4.mod/drivers/ata/ata_generic.c
--- linux-2.6.20-rc4/drivers/ata/ata_generic.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/ata_generic.c      2007-01-17 
21:14:41.000000000 +0900
@@ -148,6 +148,8 @@ static struct ata_port_operations generi
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/ata_piix.c 
linux-2.6.20-rc4.mod/drivers/ata/ata_piix.c
--- linux-2.6.20-rc4/drivers/ata/ata_piix.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/ata_piix.c 2007-01-17 23:07:11.000000000 
+0900
@@ -306,6 +306,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -339,6 +341,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -369,6 +373,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/libata-core.c 
linux-2.6.20-rc4.mod/drivers/ata/libata-core.c
--- linux-2.6.20-rc4/drivers/ata/libata-core.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/libata-core.c      2007-01-17 
22:28:05.000000000 +0900
@@ -2754,8 +2754,7 @@ void ata_bus_reset(struct ata_port *ap)
                ap->device[1].class = ata_dev_try_classify(ap, 1, &err);
 
        /* re-enable interrupts */
-       if (ap->ioaddr.ctl_addr)        /* FIXME: hack. create a hook instead */
-               ata_irq_on(ap);
+       ap->ops->irq_on(ap);
 
        /* is double-select really necessary? */
        if (ap->device[1].class != ATA_DEV_NONE)
@@ -3147,11 +3146,8 @@ void ata_std_postreset(struct ata_port *
                sata_scr_write(ap, SCR_ERROR, serror);
 
        /* re-enable interrupts */
-       if (!ap->ops->error_handler) {
-               /* FIXME: hack. create a hook instead */
-               if (ap->ioaddr.ctl_addr)
-                       ata_irq_on(ap);
-       }
+       if (!ap->ops->error_handler)
+               ap->ops->irq_on(ap);
 
        /* is double-select really necessary? */
        if (classes[0] != ATA_DEV_NONE)
@@ -4329,7 +4325,7 @@ static void ata_hsm_qc_complete(struct a
                        qc = ata_qc_from_tag(ap, qc->tag);
                        if (qc) {
                                if (likely(!(qc->err_mask & AC_ERR_HSM))) {
-                                       ata_irq_on(ap);
+                                       ap->ops->irq_on(ap);
                                        ata_qc_complete(qc);
                                } else
                                        ata_port_freeze(ap);
@@ -4345,7 +4341,7 @@ static void ata_hsm_qc_complete(struct a
        } else {
                if (in_wq) {
                        spin_lock_irqsave(ap->lock, flags);
-                       ata_irq_on(ap);
+                       ap->ops->irq_on(ap);
                        ata_qc_complete(qc);
                        spin_unlock_irqrestore(ap->lock, flags);
                } else
@@ -5170,7 +5166,7 @@ idle_irq:
 
 #ifdef ATA_IRQ_TRAP
        if ((ap->stats.idle_irq % 1000) == 0) {
-               ata_irq_ack(ap, 0); /* debug trap */
+               ap->ops->irq_ack(ap, 0); /* debug trap */
                ata_port_printk(ap, KERN_WARNING, "irq trap\n");
                return 1;
        }
@@ -6500,3 +6496,4 @@ EXPORT_SYMBOL_GPL(ata_eh_thaw_port);
 EXPORT_SYMBOL_GPL(ata_eh_qc_complete);
 EXPORT_SYMBOL_GPL(ata_eh_qc_retry);
 EXPORT_SYMBOL_GPL(ata_do_eh);
+EXPORT_SYMBOL_GPL(ata_irq_on);
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/libata-sff.c 
linux-2.6.20-rc4.mod/drivers/ata/libata-sff.c
--- linux-2.6.20-rc4/drivers/ata/libata-sff.c   2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/libata-sff.c       2007-01-17 
21:14:41.000000000 +0900
@@ -724,8 +724,7 @@ void ata_bmdma_thaw(struct ata_port *ap)
        /* clear & re-enable interrupts */
        ata_chk_status(ap);
        ap->ops->irq_clear(ap);
-       if (ap->ioaddr.ctl_addr)        /* FIXME: hack. create a hook instead */
-               ata_irq_on(ap);
+       ap->ops->irq_on(ap);
 }
 
 /**
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_ali.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_ali.c
--- linux-2.6.20-rc4/drivers/ata/pata_ali.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_ali.c 2007-01-17 21:14:41.000000000 
+0900
@@ -374,6 +374,8 @@ static struct ata_port_operations ali_ea
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -415,6 +417,8 @@ static struct ata_port_operations ali_20
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -453,6 +457,8 @@ static struct ata_port_operations ali_c2
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -490,6 +496,8 @@ static struct ata_port_operations ali_c5
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_amd.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_amd.c
--- linux-2.6.20-rc4/drivers/ata/pata_amd.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_amd.c 2007-01-17 21:14:41.000000000 
+0900
@@ -366,6 +366,8 @@ static struct ata_port_operations amd33_
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -400,6 +402,8 @@ static struct ata_port_operations amd66_
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -434,6 +438,8 @@ static struct ata_port_operations amd100
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -468,6 +474,8 @@ static struct ata_port_operations amd133
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -502,6 +510,8 @@ static struct ata_port_operations nv100_
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -536,6 +546,8 @@ static struct ata_port_operations nv133_
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_artop.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_artop.c
--- linux-2.6.20-rc4/drivers/ata/pata_artop.c   2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_artop.c       2007-01-17 
21:14:41.000000000 +0900
@@ -345,6 +345,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -377,6 +379,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_atiixp.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_atiixp.c
--- linux-2.6.20-rc4/drivers/ata/pata_atiixp.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_atiixp.c      2007-01-17 
21:14:41.000000000 +0900
@@ -249,6 +249,8 @@ static struct ata_port_operations atiixp
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_cmd64x.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_cmd64x.c
--- linux-2.6.20-rc4/drivers/ata/pata_cmd64x.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_cmd64x.c      2007-01-17 
21:14:41.000000000 +0900
@@ -308,6 +308,8 @@ static struct ata_port_operations cmd64x
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -342,6 +344,8 @@ static struct ata_port_operations cmd646
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -376,6 +380,8 @@ static struct ata_port_operations cmd648
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_cs5520.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_cs5520.c
--- linux-2.6.20-rc4/drivers/ata/pata_cs5520.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_cs5520.c      2007-01-17 
21:14:41.000000000 +0900
@@ -197,6 +197,8 @@ static struct ata_port_operations cs5520
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_cs5530.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_cs5530.c
--- linux-2.6.20-rc4/drivers/ata/pata_cs5530.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_cs5530.c      2007-01-17 
21:14:41.000000000 +0900
@@ -214,6 +214,8 @@ static struct ata_port_operations cs5530
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_cs5535.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_cs5535.c
--- linux-2.6.20-rc4/drivers/ata/pata_cs5535.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_cs5535.c      2007-01-17 
21:14:41.000000000 +0900
@@ -218,6 +218,8 @@ static struct ata_port_operations cs5535
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_cypress.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_cypress.c
--- linux-2.6.20-rc4/drivers/ata/pata_cypress.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_cypress.c     2007-01-17 
21:14:41.000000000 +0900
@@ -169,6 +169,8 @@ static struct ata_port_operations cy82c6
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_efar.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_efar.c
--- linux-2.6.20-rc4/drivers/ata/pata_efar.c    2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_efar.c        2007-01-17 
21:14:41.000000000 +0900
@@ -265,6 +265,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_hpt366.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_hpt366.c
--- linux-2.6.20-rc4/drivers/ata/pata_hpt366.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_hpt366.c      2007-01-17 
21:14:41.000000000 +0900
@@ -375,6 +375,8 @@ static struct ata_port_operations hpt366
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_hpt37x.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_hpt37x.c
--- linux-2.6.20-rc4/drivers/ata/pata_hpt37x.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_hpt37x.c      2007-01-17 
23:07:11.000000000 +0900
@@ -811,6 +811,8 @@ static struct ata_port_operations hpt370
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -850,6 +852,8 @@ static struct ata_port_operations hpt370
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -890,6 +894,8 @@ static struct ata_port_operations hpt372
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -930,6 +936,8 @@ static struct ata_port_operations hpt374
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_hpt3x2n.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_hpt3x2n.c
--- linux-2.6.20-rc4/drivers/ata/pata_hpt3x2n.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_hpt3x2n.c     2007-01-17 
21:14:41.000000000 +0900
@@ -377,6 +377,8 @@ static struct ata_port_operations hpt3x2
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_hpt3x3.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_hpt3x3.c
--- linux-2.6.20-rc4/drivers/ata/pata_hpt3x3.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_hpt3x3.c      2007-01-17 
21:14:41.000000000 +0900
@@ -152,6 +152,8 @@ static struct ata_port_operations hpt3x3
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_isapnp.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_isapnp.c
--- linux-2.6.20-rc4/drivers/ata/pata_isapnp.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_isapnp.c      2007-01-17 
21:14:41.000000000 +0900
@@ -57,6 +57,8 @@ static struct ata_port_operations isapnp
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_it821x.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_it821x.c
--- linux-2.6.20-rc4/drivers/ata/pata_it821x.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_it821x.c      2007-01-17 
21:14:41.000000000 +0900
@@ -708,6 +708,8 @@ static struct ata_port_operations it821x
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = it821x_port_start,
        .port_stop      = it821x_port_stop,
@@ -744,6 +746,8 @@ static struct ata_port_operations it821x
 
        .irq_clear      = ata_bmdma_irq_clear,
        .irq_handler    = ata_interrupt,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = it821x_port_start,
        .port_stop      = it821x_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_ixp4xx_cf.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_ixp4xx_cf.c
--- linux-2.6.20-rc4/drivers/ata/pata_ixp4xx_cf.c       2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_ixp4xx_cf.c   2007-01-17 
21:14:41.000000000 +0900
@@ -138,6 +138,8 @@ static struct ata_port_operations ixp4xx
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ixp4xx_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_jmicron.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_jmicron.c
--- linux-2.6.20-rc4/drivers/ata/pata_jmicron.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_jmicron.c     2007-01-17 
21:14:41.000000000 +0900
@@ -166,6 +166,8 @@ static const struct ata_port_operations 
        /* IRQ-related hooks */
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        /* Generic PATA PCI ATA helpers */
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_legacy.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_legacy.c
--- linux-2.6.20-rc4/drivers/ata/pata_legacy.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_legacy.c      2007-01-17 
21:14:41.000000000 +0900
@@ -166,6 +166,8 @@ static struct ata_port_operations simple
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -191,6 +193,8 @@ static struct ata_port_operations legacy
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -301,6 +305,8 @@ static struct ata_port_operations pdc202
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -353,6 +359,8 @@ static struct ata_port_operations ht6560
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -416,6 +424,8 @@ static struct ata_port_operations ht6560
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -534,6 +544,8 @@ static struct ata_port_operations opti82
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -664,6 +676,8 @@ static struct ata_port_operations opti82
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_marvell.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_marvell.c
--- linux-2.6.20-rc4/drivers/ata/pata_marvell.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_marvell.c     2007-01-17 
21:14:41.000000000 +0900
@@ -134,6 +134,8 @@ static const struct ata_port_operations 
        /* Timeout handling */
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        /* Generic PATA PCI ATA helpers */
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_mpiix.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_mpiix.c
--- linux-2.6.20-rc4/drivers/ata/pata_mpiix.c   2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_mpiix.c       2007-01-17 
21:14:41.000000000 +0900
@@ -192,6 +192,8 @@ static struct ata_port_operations mpiix_
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_netcell.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_netcell.c
--- linux-2.6.20-rc4/drivers/ata/pata_netcell.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_netcell.c     2007-01-17 
21:14:41.000000000 +0900
@@ -94,6 +94,8 @@ static const struct ata_port_operations 
        /* IRQ-related hooks */
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        /* Generic PATA PCI ATA helpers */
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_ns87410.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_ns87410.c
--- linux-2.6.20-rc4/drivers/ata/pata_ns87410.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_ns87410.c     2007-01-17 
21:14:41.000000000 +0900
@@ -183,6 +183,8 @@ static struct ata_port_operations ns8741
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_oldpiix.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_oldpiix.c
--- linux-2.6.20-rc4/drivers/ata/pata_oldpiix.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_oldpiix.c     2007-01-17 
21:14:41.000000000 +0900
@@ -263,6 +263,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_opti.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_opti.c
--- linux-2.6.20-rc4/drivers/ata/pata_opti.c    2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_opti.c        2007-01-17 
21:14:41.000000000 +0900
@@ -209,6 +209,8 @@ static struct ata_port_operations opti_p
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_optidma.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_optidma.c
--- linux-2.6.20-rc4/drivers/ata/pata_optidma.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_optidma.c     2007-01-17 
21:14:41.000000000 +0900
@@ -393,6 +393,8 @@ static struct ata_port_operations optidm
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -428,6 +430,8 @@ static struct ata_port_operations optipl
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_pcmcia.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_pcmcia.c
--- linux-2.6.20-rc4/drivers/ata/pata_pcmcia.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_pcmcia.c      2007-01-17 
21:14:41.000000000 +0900
@@ -92,6 +92,8 @@ static struct ata_port_operations pcmcia
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_pdc2027x.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_pdc2027x.c
--- linux-2.6.20-rc4/drivers/ata/pata_pdc2027x.c        2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_pdc2027x.c    2007-01-17 
21:14:41.000000000 +0900
@@ -169,6 +169,8 @@ static struct ata_port_operations pdc202
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -203,6 +205,8 @@ static struct ata_port_operations pdc202
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_pdc202xx_old.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_pdc202xx_old.c
--- linux-2.6.20-rc4/drivers/ata/pata_pdc202xx_old.c    2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_pdc202xx_old.c        2007-01-17 
21:14:41.000000000 +0900
@@ -301,6 +301,8 @@ static struct ata_port_operations pdc202
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -335,6 +337,8 @@ static struct ata_port_operations pdc202
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_platform.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_platform.c
--- linux-2.6.20-rc4/drivers/ata/pata_platform.c        2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_platform.c    2007-01-17 
21:14:41.000000000 +0900
@@ -103,6 +103,8 @@ static struct ata_port_operations pata_p
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_qdi.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_qdi.c
--- linux-2.6.20-rc4/drivers/ata/pata_qdi.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_qdi.c 2007-01-17 21:14:41.000000000 
+0900
@@ -189,6 +189,8 @@ static struct ata_port_operations qdi650
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -217,6 +219,8 @@ static struct ata_port_operations qdi658
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_radisys.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_radisys.c
--- linux-2.6.20-rc4/drivers/ata/pata_radisys.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_radisys.c     2007-01-17 
21:14:41.000000000 +0900
@@ -259,6 +259,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_rz1000.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_rz1000.c
--- linux-2.6.20-rc4/drivers/ata/pata_rz1000.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_rz1000.c      2007-01-17 
21:14:41.000000000 +0900
@@ -122,6 +122,8 @@ static struct ata_port_operations rz1000
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_sc1200.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_sc1200.c
--- linux-2.6.20-rc4/drivers/ata/pata_sc1200.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_sc1200.c      2007-01-17 
21:14:41.000000000 +0900
@@ -224,6 +224,8 @@ static struct ata_port_operations sc1200
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_serverworks.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_serverworks.c
--- linux-2.6.20-rc4/drivers/ata/pata_serverworks.c     2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_serverworks.c 2007-01-17 
21:14:41.000000000 +0900
@@ -359,6 +359,8 @@ static struct ata_port_operations server
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -394,6 +396,8 @@ static struct ata_port_operations server
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_sil680.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_sil680.c
--- linux-2.6.20-rc4/drivers/ata/pata_sil680.c  2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_sil680.c      2007-01-17 
21:14:41.000000000 +0900
@@ -256,6 +256,8 @@ static struct ata_port_operations sil680
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_sis.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_sis.c
--- linux-2.6.20-rc4/drivers/ata/pata_sis.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_sis.c 2007-01-17 21:14:41.000000000 
+0900
@@ -577,6 +577,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -610,6 +612,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -644,6 +648,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -677,6 +683,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -710,6 +718,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_sl82c105.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_sl82c105.c
--- linux-2.6.20-rc4/drivers/ata/pata_sl82c105.c        2007-01-07 
14:45:51.000000000 +0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_sl82c105.c    2007-01-17 
21:14:41.000000000 +0900
@@ -266,6 +266,8 @@ static struct ata_port_operations sl82c1
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_triflex.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_triflex.c
--- linux-2.6.20-rc4/drivers/ata/pata_triflex.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_triflex.c     2007-01-17 
21:14:41.000000000 +0900
@@ -225,6 +225,8 @@ static struct ata_port_operations trifle
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_via.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_via.c
--- linux-2.6.20-rc4/drivers/ata/pata_via.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_via.c 2007-01-17 21:14:41.000000000 
+0900
@@ -336,6 +336,8 @@ static struct ata_port_operations via_po
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
@@ -371,6 +373,8 @@ static struct ata_port_operations via_po
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pata_winbond.c 
linux-2.6.20-rc4.mod/drivers/ata/pata_winbond.c
--- linux-2.6.20-rc4/drivers/ata/pata_winbond.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pata_winbond.c     2007-01-17 
21:14:41.000000000 +0900
@@ -158,6 +158,8 @@ static struct ata_port_operations winbon
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
        .port_stop      = ata_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/pdc_adma.c 
linux-2.6.20-rc4.mod/drivers/ata/pdc_adma.c
--- linux-2.6.20-rc4/drivers/ata/pdc_adma.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/pdc_adma.c 2007-01-17 21:14:41.000000000 
+0900
@@ -170,6 +170,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_mmio_data_xfer,
        .irq_handler            = adma_intr,
        .irq_clear              = adma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .port_start             = adma_port_start,
        .port_stop              = adma_port_stop,
        .host_stop              = adma_host_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_mv.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_mv.c
--- linux-2.6.20-rc4/drivers/ata/sata_mv.c      2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_mv.c  2007-01-17 23:07:11.000000000 
+0900
@@ -412,6 +412,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = mv_interrupt,
        .irq_clear              = mv_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = mv5_scr_read,
        .scr_write              = mv5_scr_write,
@@ -440,6 +442,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = mv_interrupt,
        .irq_clear              = mv_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = mv_scr_read,
        .scr_write              = mv_scr_write,
@@ -468,6 +472,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = mv_interrupt,
        .irq_clear              = mv_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = mv_scr_read,
        .scr_write              = mv_scr_write,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_nv.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_nv.c
--- linux-2.6.20-rc4/drivers/ata/sata_nv.c      2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_nv.c  2007-01-17 21:14:41.000000000 
+0900
@@ -343,6 +343,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_pio_data_xfer,
        .irq_handler            = nv_generic_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = nv_scr_read,
        .scr_write              = nv_scr_write,
        .port_start             = ata_port_start,
@@ -370,6 +372,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_pio_data_xfer,
        .irq_handler            = nv_nf2_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = nv_scr_read,
        .scr_write              = nv_scr_write,
        .port_start             = ata_port_start,
@@ -397,6 +401,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_pio_data_xfer,
        .irq_handler            = nv_ck804_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = nv_scr_read,
        .scr_write              = nv_scr_write,
        .port_start             = ata_port_start,
@@ -425,6 +431,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_mmio_data_xfer,
        .irq_handler            = nv_adma_interrupt,
        .irq_clear              = nv_adma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = nv_scr_read,
        .scr_write              = nv_scr_write,
        .port_start             = nv_adma_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_promise.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_promise.c
--- linux-2.6.20-rc4/drivers/ata/sata_promise.c 2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_promise.c     2007-01-17 
23:07:11.000000000 +0900
@@ -149,6 +149,8 @@ static const struct ata_port_operations 
        .data_xfer              = ata_mmio_data_xfer,
        .irq_handler            = pdc_interrupt,
        .irq_clear              = pdc_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = pdc_sata_scr_read,
        .scr_write              = pdc_sata_scr_write,
@@ -173,6 +175,8 @@ static const struct ata_port_operations 
        .eng_timeout            = pdc_eng_timeout,
        .irq_handler            = pdc_interrupt,
        .irq_clear              = pdc_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = pdc_port_start,
        .port_stop              = pdc_port_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_qstor.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_qstor.c
--- linux-2.6.20-rc4/drivers/ata/sata_qstor.c   2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_qstor.c       2007-01-17 
21:14:41.000000000 +0900
@@ -161,6 +161,8 @@ static const struct ata_port_operations 
        .eng_timeout            = qs_eng_timeout,
        .irq_handler            = qs_intr,
        .irq_clear              = qs_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = qs_scr_read,
        .scr_write              = qs_scr_write,
        .port_start             = qs_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_sil.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_sil.c
--- linux-2.6.20-rc4/drivers/ata/sata_sil.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_sil.c 2007-01-17 21:14:41.000000000 
+0900
@@ -207,6 +207,8 @@ static const struct ata_port_operations 
        .post_internal_cmd      = ata_bmdma_post_internal_cmd,
        .irq_handler            = sil_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = sil_scr_read,
        .scr_write              = sil_scr_write,
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_sil24.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_sil24.c
--- linux-2.6.20-rc4/drivers/ata/sata_sil24.c   2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_sil24.c       2007-01-17 
21:14:41.000000000 +0900
@@ -406,6 +406,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = sil24_interrupt,
        .irq_clear              = sil24_irq_clear,
+       .irq_on                 = ata_dummy_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = sil24_scr_read,
        .scr_write              = sil24_scr_write,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_sis.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_sis.c
--- linux-2.6.20-rc4/drivers/ata/sata_sis.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_sis.c 2007-01-17 21:14:41.000000000 
+0900
@@ -119,6 +119,8 @@ static const struct ata_port_operations 
        .post_internal_cmd      = ata_bmdma_post_internal_cmd,
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = sis_scr_read,
        .scr_write              = sis_scr_write,
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_svw.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_svw.c
--- linux-2.6.20-rc4/drivers/ata/sata_svw.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_svw.c 2007-01-17 21:14:41.000000000 
+0900
@@ -356,6 +356,8 @@ static const struct ata_port_operations 
        .post_internal_cmd      = ata_bmdma_post_internal_cmd,
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = k2_sata_scr_read,
        .scr_write              = k2_sata_scr_write,
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_sx4.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_sx4.c
--- linux-2.6.20-rc4/drivers/ata/sata_sx4.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_sx4.c 2007-01-17 21:14:41.000000000 
+0900
@@ -209,6 +209,8 @@ static const struct ata_port_operations 
        .eng_timeout            = pdc_eng_timeout,
        .irq_handler            = pdc20621_interrupt,
        .irq_clear              = pdc20621_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .port_start             = pdc_port_start,
        .port_stop              = pdc_port_stop,
        .host_stop              = pdc20621_host_stop,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_uli.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_uli.c
--- linux-2.6.20-rc4/drivers/ata/sata_uli.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_uli.c 2007-01-17 21:14:41.000000000 
+0900
@@ -117,6 +117,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = uli_scr_read,
        .scr_write              = uli_scr_write,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_via.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_via.c
--- linux-2.6.20-rc4/drivers/ata/sata_via.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_via.c 2007-01-17 21:14:41.000000000 
+0900
@@ -134,6 +134,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .port_start             = ata_port_start,
        .port_stop              = ata_port_stop,
@@ -165,6 +167,8 @@ static const struct ata_port_operations 
 
        .irq_handler            = ata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
 
        .scr_read               = svia_scr_read,
        .scr_write              = svia_scr_write,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/drivers/ata/sata_vsc.c 
linux-2.6.20-rc4.mod/drivers/ata/sata_vsc.c
--- linux-2.6.20-rc4/drivers/ata/sata_vsc.c     2007-01-07 14:45:51.000000000 
+0900
+++ linux-2.6.20-rc4.mod/drivers/ata/sata_vsc.c 2007-01-17 21:14:41.000000000 
+0900
@@ -308,6 +308,8 @@ static const struct ata_port_operations 
        .post_internal_cmd      = ata_bmdma_post_internal_cmd,
        .irq_handler            = vsc_sata_interrupt,
        .irq_clear              = ata_bmdma_irq_clear,
+       .irq_on                 = ata_irq_on,
+       .irq_ack                = ata_irq_ack,
        .scr_read               = vsc_sata_scr_read,
        .scr_write              = vsc_sata_scr_write,
        .port_start             = ata_port_start,
diff -uprN -X linux-2.6.20-rc4/Documentation/dontdiff 
linux-2.6.20-rc4/include/linux/libata.h 
linux-2.6.20-rc4.mod/include/linux/libata.h
--- linux-2.6.20-rc4/include/linux/libata.h     2007-01-17 23:23:27.000000000 
+0900
+++ linux-2.6.20-rc4.mod/include/linux/libata.h 2007-01-17 23:24:49.000000000 
+0900
@@ -638,6 +638,8 @@ struct ata_port_operations {
 
        irq_handler_t irq_handler;
        void (*irq_clear) (struct ata_port *);
+       u8 (*irq_on) (struct ata_port *);
+       u8 (*irq_ack) (struct ata_port *ap, unsigned int chk_drq);
 
        u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg);
        void (*scr_write) (struct ata_port *ap, unsigned int sc_reg,
@@ -761,6 +763,7 @@ extern void ata_port_queue_task(struct a
 extern u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
                             unsigned long interval_msec,
                             unsigned long timeout_msec);
+u8 ata_irq_on(struct ata_port *ap);
 
 /*
  * Default driver ops implementations
@@ -1202,6 +1205,8 @@ static inline u8 ata_irq_ack(struct ata_
        return status;
 }
 
+static inline u8 ata_dummy_irq_on (struct ata_port *ap)        { return 0; }
+
 static inline int ata_try_flush_cache(const struct ata_device *dev)
 {
        return ata_id_wcache_enabled(dev->id) ||

-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to