ide: use PageHighMem() instead of ifdefs in ide_pio_bytes()
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 31 Mar 2009 18:14:59 +0000 (20:14 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 31 Mar 2009 18:14:59 +0000 (20:14 +0200)
Use PageHighMem() instead of ifdefs in ide_pio_bytes()
(=> local IRQs won't be disabled when not necessary).

Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-taskfile.c

index 8d7e87d04b3b550e5327d037c0c6e0f54d2d96a2..0e333ecf2ad6ac31801c66fdb85e273e9667ffe4 100644 (file)
@@ -195,9 +195,7 @@ static void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
        struct scatterlist *sg = hwif->sg_table;
        struct scatterlist *cursg = cmd->cursg;
        struct page *page;
-#ifdef CONFIG_HIGHMEM
        unsigned long flags;
-#endif
        unsigned int offset;
        u8 *buf;
 
@@ -218,9 +216,9 @@ static void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
                page = nth_page(page, (offset >> PAGE_SHIFT));
                offset %= PAGE_SIZE;
 
-#ifdef CONFIG_HIGHMEM
-               local_irq_save(flags);
-#endif
+               if (PageHighMem(page))
+                       local_irq_save(flags);
+
                buf = kmap_atomic(page, KM_BIO_SRC_IRQ) + offset;
 
                cmd->nleft -= nr_bytes;
@@ -238,9 +236,9 @@ static void ide_pio_bytes(ide_drive_t *drive, struct ide_cmd *cmd,
                        hwif->tp_ops->input_data(drive, cmd, buf, nr_bytes);
 
                kunmap_atomic(buf, KM_BIO_SRC_IRQ);
-#ifdef CONFIG_HIGHMEM
-               local_irq_restore(flags);
-#endif
+
+               if (PageHighMem(page))
+                       local_irq_restore(flags);
 
                len -= nr_bytes;
        }