|
@@ -1229,6 +1229,26 @@ static bool is_snb_ioat(struct pci_dev *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static bool is_ivb_ioat(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ switch (pdev->device) {
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB0:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB1:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB2:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB3:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB4:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB5:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB6:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB7:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB8:
|
|
|
+ case PCI_DEVICE_ID_INTEL_IOAT_IVB9:
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
|
|
|
{
|
|
|
struct pci_dev *pdev = device->pdev;
|
|
@@ -1249,7 +1269,7 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
|
|
|
dma->device_alloc_chan_resources = ioat2_alloc_chan_resources;
|
|
|
dma->device_free_chan_resources = ioat2_free_chan_resources;
|
|
|
|
|
|
- if (is_jf_ioat(pdev) || is_snb_ioat(pdev))
|
|
|
+ if (is_jf_ioat(pdev) || is_snb_ioat(pdev) || is_ivb_ioat(pdev))
|
|
|
dma->copy_align = 6;
|
|
|
|
|
|
dma_cap_set(DMA_INTERRUPT, dma->cap_mask);
|