Patch 1/10: After checking, it seems calling irq_on() in ata_bus_reset() and ata_std_postreset() are leftover of the EDD reset. Remove them. Signed-off-by: Albert Lee <albertcc@xxxxxxxxxx> --- diff -Nrup 00_libata-dev/drivers/ata/libata-core.c 01_remove_leftover_irqon/drivers/ata/libata-core.c --- 00_libata-dev/drivers/ata/libata-core.c 2007-07-04 11:26:30.000000000 +0800 +++ 01_remove_leftover_irqon/drivers/ata/libata-core.c 2007-07-04 11:43:30.000000000 +0800 @@ -3194,9 +3194,6 @@ void ata_bus_reset(struct ata_port *ap) if ((slave_possible) && (err != 0x81)) ap->device[1].class = ata_dev_try_classify(ap, 1, &err); - /* re-enable interrupts */ - ap->ops->irq_on(ap); - /* is double-select really necessary? */ if (ap->device[1].class != ATA_DEV_NONE) ap->ops->dev_select(ap, 1); @@ -3581,10 +3578,6 @@ void ata_std_postreset(struct ata_port * if (sata_scr_read(ap, SCR_ERROR, &serror) == 0) sata_scr_write(ap, SCR_ERROR, serror); - /* re-enable interrupts */ - if (!ap->ops->error_handler) - ap->ops->irq_on(ap); - /* is double-select really necessary? */ if (classes[0] != ATA_DEV_NONE) ap->ops->dev_select(ap, 1); diff -Nrup 00_libata-dev/drivers/ata/pata_scc.c 01_remove_leftover_irqon/drivers/ata/pata_scc.c --- 00_libata-dev/drivers/ata/pata_scc.c 2007-07-04 11:26:30.000000000 +0800 +++ 01_remove_leftover_irqon/drivers/ata/pata_scc.c 2007-07-04 11:43:30.000000000 +0800 @@ -892,10 +892,6 @@ static void scc_std_postreset (struct at { DPRINTK("ENTER\n"); - /* re-enable interrupts */ - if (!ap->ops->error_handler) - ap->ops->irq_on(ap); - /* is double-select really necessary? */ if (classes[0] != ATA_DEV_NONE) ap->ops->dev_select(ap, 1); - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html