I/OAT: fail initialization on zero channels detection
authorMaciej Sosnowski <maciej.sosnowski@intel.com>
Thu, 26 Feb 2009 10:04:54 +0000 (11:04 +0100)
committerDan Williams <dan.j.williams@intel.com>
Wed, 4 Mar 2009 23:04:39 +0000 (16:04 -0700)
On some systems with I/OAT ver.2 when DCA is disabled in BIOS
situations have been observed
that zero DMA channels are detected instead of four.
To avoid kernel panic driver should fail gracefully with appropriate message.

Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/ioat_dma.c

index 879f4a06e3ca234558cb3202b2fb20bb377de8fc..9012da7908f52b05f54ca68c7fba5325dac401c9 100644 (file)
@@ -1659,6 +1659,13 @@ struct ioatdma_device *ioat_dma_probe(struct pci_dev *pdev,
                " %d channels, device version 0x%02x, driver version %s\n",
                device->common.chancnt, device->version, IOAT_DMA_VERSION);
 
+       if (!device->common.chancnt) {
+               dev_err(&device->pdev->dev,
+                       "Intel(R) I/OAT DMA Engine problem found: "
+                       "zero channels detected\n");
+               goto err_setup_interrupts;
+       }
+
        err = ioat_dma_setup_interrupts(device);
        if (err)
                goto err_setup_interrupts;