aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma
diff options
context:
space:
mode:
authorMaciej Sosnowski <maciej.sosnowski@intel.com>2009-02-26 11:04:54 +0100
committerDan Williams <dan.j.williams@intel.com>2009-03-04 16:04:39 -0700
commit8b794b141c633083408d0bfb2229b3406d0ebf99 (patch)
tree767cad4cafccce7c606003088ead281b70477fe3 /drivers/dma
parentea9c717d0148d4194f9bd04ecfa6b59b20fc0a08 (diff)
downloadkernel_samsung_smdk4412-8b794b141c633083408d0bfb2229b3406d0ebf99.zip
kernel_samsung_smdk4412-8b794b141c633083408d0bfb2229b3406d0ebf99.tar.gz
kernel_samsung_smdk4412-8b794b141c633083408d0bfb2229b3406d0ebf99.tar.bz2
I/OAT: fail initialization on zero channels detection
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>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/ioat_dma.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c
index 879f4a0..9012da7 100644
--- a/drivers/dma/ioat_dma.c
+++ b/drivers/dma/ioat_dma.c
@@ -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;