Merge branch 'iop-raid6' into async-tx-next
authorDan Williams <dan.j.williams@intel.com>
Wed, 9 Sep 2009 00:53:57 +0000 (17:53 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 9 Sep 2009 00:53:57 +0000 (17:53 -0700)
1  2 
drivers/dma/iop-adma.c

@@@ -1255,13 -1589,31 +1589,28 @@@ static int __devinit iop_adma_probe(str
                        goto err_free_iop_chan;
        }
  
+       if (dma_has_cap(DMA_PQ, dma_dev->cap_mask) &&
+           dma_has_cap(DMA_PQ_VAL, dma_dev->cap_mask)) {
+               #ifdef CONFIG_MD_RAID6_PQ
+               ret = iop_adma_pq_zero_sum_self_test(adev);
+               dev_dbg(&pdev->dev, "pq self test returned %d\n", ret);
+               #else
+               /* can not test raid6, so do not publish capability */
+               dma_cap_clear(DMA_PQ, dma_dev->cap_mask);
+               dma_cap_clear(DMA_PQ_VAL, dma_dev->cap_mask);
+               ret = 0;
+               #endif
+               if (ret)
+                       goto err_free_iop_chan;
+       }
        dev_printk(KERN_INFO, &pdev->dev, "Intel(R) IOP: "
 -        "( %s%s%s%s%s%s%s%s%s%s)\n",
 +        "( %s%s%s%s%s%s%s)\n",
          dma_has_cap(DMA_PQ, dma_dev->cap_mask) ? "pq " : "",
 -        dma_has_cap(DMA_PQ_UPDATE, dma_dev->cap_mask) ? "pq_update " : "",
          dma_has_cap(DMA_PQ_VAL, dma_dev->cap_mask) ? "pq_val " : "",
          dma_has_cap(DMA_XOR, dma_dev->cap_mask) ? "xor " : "",
 -        dma_has_cap(DMA_DUAL_XOR, dma_dev->cap_mask) ? "dual_xor " : "",
          dma_has_cap(DMA_XOR_VAL, dma_dev->cap_mask) ? "xor_val " : "",
          dma_has_cap(DMA_MEMSET, dma_dev->cap_mask)  ? "fill " : "",
 -        dma_has_cap(DMA_MEMCPY_CRC32C, dma_dev->cap_mask) ? "cpy+crc " : "",
          dma_has_cap(DMA_MEMCPY, dma_dev->cap_mask) ? "cpy " : "",
          dma_has_cap(DMA_INTERRUPT, dma_dev->cap_mask) ? "intr " : "");