diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c
index 386080ee4608e46d389c5a4887c056d588989386..44ad03bf9cb4256c114be237999540e8c0ca868a 100644
--- a/drivers/ide/ide-iops.c
+++ b/drivers/ide/ide-iops.c
@@ -503,7 +503,8 @@ static int __ide_wait_stat(ide_drive_t *drive, u8 good, u8 bad, unsigned long ti
 	stat = tp_ops->read_status(hwif);
 
 	if (stat & ATA_BUSY) {
-		local_irq_set(flags);
+		local_irq_save(flags);
+		local_irq_enable_in_hardirq();
 		timeout += jiffies;
 		while ((stat = tp_ops->read_status(hwif)) & ATA_BUSY) {
 			if (time_after(jiffies, timeout)) {
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 9dfa99f062aa577308c7a320ac1f93ff3b865bac..2fca32ed576f64c18d174d852428aa66f0187288 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -796,7 +796,8 @@ static int ide_probe_port(ide_hwif_t *hwif)
 	if (irqd)
 		disable_irq(hwif->irq);
 
-	local_irq_set(flags);
+	local_irq_save(flags);
+	local_irq_enable_in_hardirq();
 
 	if (ide_port_wait_ready(hwif) == -EBUSY)
 		printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name);
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 58b9c99482cda9d055fbbf96a1dfac5b515556d3..82d500c5a847a5f1c5e5160f577b1d876dffa1f1 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1586,8 +1586,6 @@ static inline void ide_set_max_pio(ide_drive_t *drive)
 	ide_set_pio(drive, 255);
 }
 
-#define local_irq_set(flags)	do { local_save_flags((flags)); local_irq_enable_in_hardirq(); } while (0)
-
 char *ide_media_string(ide_drive_t *);
 
 extern struct device_attribute ide_dev_attrs[];