[PATCH] ide: fix ide_toggle_bounce() to not try to bounce if we have an IOMMU
authorJames Bottomley <jejb@parisc-linux.org>
Fri, 18 Nov 2005 22:13:33 +0000 (23:13 +0100)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Fri, 18 Nov 2005 22:13:33 +0000 (23:13 +0100)
The following patch fixes a crash caused by attempting to bounce buffer
when an IDE CD-ROM is used on a machine with an IO-MMU. [At least, this
patch fixes things so I can use my IDE CD-ROM behind an ns87415 on a
HP PA-RISC workstation.]

Signed-off-by: James Bottomley <jejb@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-lib.c

index b09a6537c7a8a9b2d975026b38d4edcae53757d5..41d46dbe6c24c0e68ee546633100caf93839d9d0 100644 (file)
@@ -410,10 +410,10 @@ void ide_toggle_bounce(ide_drive_t *drive, int on)
 {
        u64 addr = BLK_BOUNCE_HIGH;     /* dma64_addr_t */
 
 {
        u64 addr = BLK_BOUNCE_HIGH;     /* dma64_addr_t */
 
-       if (on && drive->media == ide_disk) {
-               if (!PCI_DMA_BUS_IS_PHYS)
-                       addr = BLK_BOUNCE_ANY;
-               else if (HWIF(drive)->pci_dev)
+       if (!PCI_DMA_BUS_IS_PHYS) {
+               addr = BLK_BOUNCE_ANY;
+       } else if (on && drive->media == ide_disk) {
+               if (HWIF(drive)->pci_dev)
                        addr = HWIF(drive)->pci_dev->dma_mask;
        }
 
                        addr = HWIF(drive)->pci_dev->dma_mask;
        }