diff options
Diffstat (limited to 'drivers/ide/ide-io.c')
| -rw-r--r-- | drivers/ide/ide-io.c | 15 | 
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 030b0ea1a1e..7007c48e27a 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c @@ -841,6 +841,7 @@ static void unexpected_intr(int irq, ide_hwif_t *hwif)  irqreturn_t ide_intr (int irq, void *dev_id)  {  	ide_hwif_t *hwif = (ide_hwif_t *)dev_id; +	struct ide_host *host = hwif->host;  	ide_drive_t *uninitialized_var(drive);  	ide_handler_t *handler;  	unsigned long flags; @@ -848,8 +849,8 @@ irqreturn_t ide_intr (int irq, void *dev_id)  	irqreturn_t irq_ret = IRQ_NONE;  	int plug_device = 0; -	if (hwif->host->host_flags & IDE_HFLAG_SERIALIZE) { -		if (hwif != hwif->host->cur_port) +	if (host->host_flags & IDE_HFLAG_SERIALIZE) { +		if (hwif != host->cur_port)  			goto out_early;  	} @@ -872,27 +873,19 @@ irqreturn_t ide_intr (int irq, void *dev_id)  		 *  		 * For PCI, we cannot tell the difference,  		 * so in that case we just ignore it and hope it goes away. -		 * -		 * FIXME: unexpected_intr should be hwif-> then we can -		 * remove all the ifdef PCI crap  		 */ -#ifdef CONFIG_BLK_DEV_IDEPCI -		if (hwif->chipset != ide_pci) -#endif	/* CONFIG_BLK_DEV_IDEPCI */ -		{ +		if ((host->irq_flags & IRQF_SHARED) == 0) {  			/*  			 * Probably not a shared PCI interrupt,  			 * so we can safely try to do something about it:  			 */  			unexpected_intr(irq, hwif); -#ifdef CONFIG_BLK_DEV_IDEPCI  		} else {  			/*  			 * Whack the status register, just in case  			 * we have a leftover pending IRQ.  			 */  			(void)hwif->tp_ops->read_status(hwif); -#endif /* CONFIG_BLK_DEV_IDEPCI */  		}  		goto out;  	}  |