summaryrefslogtreecommitdiff
path: root/drivers/dma/ioat/dma.h
diff options
context:
space:
mode:
authorDave Jiang <dave.jiang@intel.com>2016-03-11 02:18:40 +0300
committerVinod Koul <vinod.koul@intel.com>2016-03-11 05:25:08 +0300
commitc997e30e7f65f00832abc5d92f7fd3d6ca325402 (patch)
treefc26ea33c4176b5fe81af07a8e4ff8f8e6171dfd /drivers/dma/ioat/dma.h
parentdd4645ebb7d100bb04ba38ec58b499cbe95322fa (diff)
downloadlinux-c997e30e7f65f00832abc5d92f7fd3d6ca325402.tar.xz
dmaengine: IOATDMA: revise channel reset workaround on CB3.3 platforms
Previously we unloaded the interrupts and reloaded in order to work around a channel reset bug that cleared the MSIX table. This approach just isn't practical when a reset needs to happen in the error handler that just happens to be running in interrupt context (bottom half). It looks like we can work around the hardware issue by just storing a shadow copy of the MSIX table and restore it after reset. Signed-off-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/ioat/dma.h')
-rw-r--r--drivers/dma/ioat/dma.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
index 57a9b83db455..a9bc1a15b0d1 100644
--- a/drivers/dma/ioat/dma.h
+++ b/drivers/dma/ioat/dma.h
@@ -86,6 +86,11 @@ struct ioatdma_device {
struct dca_provider *dca;
enum ioat_irq_mode irq_mode;
u32 cap;
+
+ /* shadow version for CB3.3 chan reset errata workaround */
+ u64 msixtba0;
+ u64 msixdata0;
+ u32 msixpba;
};
struct ioat_descs {