Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Tesarik <ptesarik@suse.cz>2019-06-14 15:06:29 +0200
committerPetr Tesarik <ptesarik@suse.cz>2019-06-14 15:06:29 +0200
commita94601fa56e89c97efbd10dde5a82581eb0b36b8 (patch)
tree6bb135f9d8bc1ac760ac7e4c46b2d718df5e57bd
parent0abd039792795379f4a5c4c0806249a5e6d2c3ac (diff)
parentfa6e2b1d7d164f042a00ed30b86b3f35854001f4 (diff)
Merge branch 'users/tiwai/SLE15-SP1/for-next' into SLE15-SP1
Pull assorted fixes from Takashi Iwai
-rw-r--r--patches.drivers/dmaengine-Replace-WARN_TAINT_ONCE-with-pr_warn_once.patch48
-rw-r--r--patches.drivers/dmaengine-ioat-constify-pci_device_id.patch44
-rw-r--r--patches.drivers/dmaengine-ioat-don-t-use-DMA_ERROR_CODE.patch80
-rw-r--r--patches.drivers/dmaengine-ioat-fix-prototype-of-ioat_enumerate_chann.patch58
-rw-r--r--patches.drivers/dmaengine-ioatdma-Add-Snow-Ridge-ioatdma-device-id.patch65
-rw-r--r--patches.drivers/dmaengine-ioatdma-Add-intr_coalesce-sysfs-entry.patch142
-rw-r--r--patches.drivers/dmaengine-ioatdma-add-descriptor-pre-fetch-support-f.patch108
-rw-r--r--patches.drivers/dmaengine-ioatdma-disable-DCA-enabling-on-IOATDMA-v3.patch47
-rw-r--r--patches.drivers/dmaengine-ioatdma-set-the-completion-address-registe.patch40
-rw-r--r--patches.drivers/dmaengine-ioatdma-support-latency-tolerance-report-L.patch93
-rw-r--r--patches.drivers/drivers-dma-ioat-Remove-now-redundant-smp_read_barri.patch49
-rw-r--r--series.conf11
12 files changed, 785 insertions, 0 deletions
diff --git a/patches.drivers/dmaengine-Replace-WARN_TAINT_ONCE-with-pr_warn_once.patch b/patches.drivers/dmaengine-Replace-WARN_TAINT_ONCE-with-pr_warn_once.patch
new file mode 100644
index 0000000000..4e0167c3db
--- /dev/null
+++ b/patches.drivers/dmaengine-Replace-WARN_TAINT_ONCE-with-pr_warn_once.patch
@@ -0,0 +1,48 @@
+From 036e9ef8becde736e693be4f4bef56d5b56fc298 Mon Sep 17 00:00:00 2001
+From: Prarit Bhargava <prarit@redhat.com>
+Date: Tue, 13 Jun 2017 12:56:34 -0400
+Subject: [PATCH] dmaengine: Replace WARN_TAINT_ONCE() with pr_warn_once()
+Git-commit: 036e9ef8becde736e693be4f4bef56d5b56fc298
+Patch-mainline: v4.13-rc1
+References: jsc#SLE-5442
+
+The WARN_TAINT_ONCE() prints out a loud stack trace on broken BIOSes.
+The systems that have this problem are several years out of support and
+no longer have BIOS updates available. The stack trace isn't necessary
+and a pr_warn_once() will do.
+
+Change WARN_TAINT_ONCE() to pr_warn_once() and taint.
+
+Signed-off-by: Prarit Bhargava <prarit@redhat.com>
+Cc: Dan Williams <dan.j.williams@intel.com>
+Cc: Vinod Koul <vinod.koul@intel.com>
+Cc: Duyck, Alexander H <alexander.h.duyck@intel.com>
+Signed-off-by: Vinod Koul <vinod.koul@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dca.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/dma/ioat/dca.c b/drivers/dma/ioat/dca.c
+index 0b9b6b07db9e..eab2fdda29ec 100644
+--- a/drivers/dma/ioat/dca.c
++++ b/drivers/dma/ioat/dca.c
+@@ -336,10 +336,10 @@ struct dca_provider *ioat_dca_init(struct pci_dev *pdev, void __iomem *iobase)
+ }
+
+ if (dca3_tag_map_invalid(ioatdca->tag_map)) {
+- WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
+- "%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
+- dev_driver_string(&pdev->dev),
+- dev_name(&pdev->dev));
++ add_taint(TAINT_FIRMWARE_WORKAROUND, LOCKDEP_STILL_OK);
++ pr_warn_once("%s %s: APICID_TAG_MAP set incorrectly by BIOS, disabling DCA\n",
++ dev_driver_string(&pdev->dev),
++ dev_name(&pdev->dev));
+ free_dca_provider(dca);
+ return NULL;
+ }
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioat-constify-pci_device_id.patch b/patches.drivers/dmaengine-ioat-constify-pci_device_id.patch
new file mode 100644
index 0000000000..930ffe8994
--- /dev/null
+++ b/patches.drivers/dmaengine-ioat-constify-pci_device_id.patch
@@ -0,0 +1,44 @@
+From 01fa2fae5a0b0f1c7c7c4afb336fff0278161432 Mon Sep 17 00:00:00 2001
+From: Arvind Yadav <arvind.yadav.cs@gmail.com>
+Date: Mon, 17 Jul 2017 21:39:00 +0530
+Subject: [PATCH] dmaengine: ioat: constify pci_device_id.
+Git-commit: 01fa2fae5a0b0f1c7c7c4afb336fff0278161432
+Patch-mainline: v4.14-rc1
+References: jsc#SLE-5442
+
+pci_device_id are not supposed to change at runtime. All functions
+working with pci_device_id provided by <linux/pci.h> work with
+const pci_device_id. So mark the non-const structs as const.
+
+File size before:
+ text data bss dec hex filename
+ 12582 3056 16 15654 3d26 drivers/dma/ioat/init.o
+
+File size After adding 'const':
+ text data bss dec hex filename
+ 14773 865 16 15654 3d26 drivers/dma/ioat/init.o
+
+Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
+Signed-off-by: Vinod Koul <vinod.koul@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/init.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index ed8ed1192775..93e006c3441d 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -39,7 +39,7 @@ MODULE_VERSION(IOAT_DMA_VERSION);
+ MODULE_LICENSE("Dual BSD/GPL");
+ MODULE_AUTHOR("Intel Corporation");
+
+-static struct pci_device_id ioat_pci_tbl[] = {
++static const struct pci_device_id ioat_pci_tbl[] = {
+ /* I/OAT v3 platforms */
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_TBG0) },
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_TBG1) },
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioat-don-t-use-DMA_ERROR_CODE.patch b/patches.drivers/dmaengine-ioat-don-t-use-DMA_ERROR_CODE.patch
new file mode 100644
index 0000000000..49a53296be
--- /dev/null
+++ b/patches.drivers/dmaengine-ioat-don-t-use-DMA_ERROR_CODE.patch
@@ -0,0 +1,80 @@
+From e4734b3f5ffc42d821a316383222d71dce7d5c9e Mon Sep 17 00:00:00 2001
+From: Christoph Hellwig <hch@lst.de>
+Date: Sun, 21 May 2017 12:54:31 +0200
+Subject: [PATCH] dmaengine: ioat: don't use DMA_ERROR_CODE
+Git-commit: e4734b3f5ffc42d821a316383222d71dce7d5c9e
+Patch-mainline: v4.13-rc1
+References: jsc#SLE-5442
+
+DMA_ERROR_CODE is not a public API and will go away. Instead properly
+unwind based on the loop counter.
+
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Acked-by: Dave Jiang <dave.jiang@intel.com>
+Acked-by: Vinod Koul <vinod.koul@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/init.c | 24 +++++++-----------------
+ 1 file changed, 7 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 6ad4384b3fa8..ed8ed1192775 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -839,8 +839,6 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
+ goto free_resources;
+ }
+
+- for (i = 0; i < IOAT_NUM_SRC_TEST; i++)
+- dma_srcs[i] = DMA_ERROR_CODE;
+ for (i = 0; i < IOAT_NUM_SRC_TEST; i++) {
+ dma_srcs[i] = dma_map_page(dev, xor_srcs[i], 0, PAGE_SIZE,
+ DMA_TO_DEVICE);
+@@ -910,8 +908,6 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
+
+ xor_val_result = 1;
+
+- for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++)
+- dma_srcs[i] = DMA_ERROR_CODE;
+ for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) {
+ dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE,
+ DMA_TO_DEVICE);
+@@ -965,8 +961,6 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
+ op = IOAT_OP_XOR_VAL;
+
+ xor_val_result = 0;
+- for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++)
+- dma_srcs[i] = DMA_ERROR_CODE;
+ for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++) {
+ dma_srcs[i] = dma_map_page(dev, xor_val_srcs[i], 0, PAGE_SIZE,
+ DMA_TO_DEVICE);
+@@ -1017,18 +1011,14 @@ static int ioat_xor_val_self_test(struct ioatdma_device *ioat_dma)
+ goto free_resources;
+ dma_unmap:
+ if (op == IOAT_OP_XOR) {
+- if (dest_dma != DMA_ERROR_CODE)
+- dma_unmap_page(dev, dest_dma, PAGE_SIZE,
+- DMA_FROM_DEVICE);
+- for (i = 0; i < IOAT_NUM_SRC_TEST; i++)
+- if (dma_srcs[i] != DMA_ERROR_CODE)
+- dma_unmap_page(dev, dma_srcs[i], PAGE_SIZE,
+- DMA_TO_DEVICE);
++ while (--i >= 0)
++ dma_unmap_page(dev, dma_srcs[i], PAGE_SIZE,
++ DMA_TO_DEVICE);
++ dma_unmap_page(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE);
+ } else if (op == IOAT_OP_XOR_VAL) {
+- for (i = 0; i < IOAT_NUM_SRC_TEST + 1; i++)
+- if (dma_srcs[i] != DMA_ERROR_CODE)
+- dma_unmap_page(dev, dma_srcs[i], PAGE_SIZE,
+- DMA_TO_DEVICE);
++ while (--i >= 0)
++ dma_unmap_page(dev, dma_srcs[i], PAGE_SIZE,
++ DMA_TO_DEVICE);
+ }
+ free_resources:
+ dma->device_free_chan_resources(dma_chan);
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioat-fix-prototype-of-ioat_enumerate_chann.patch b/patches.drivers/dmaengine-ioat-fix-prototype-of-ioat_enumerate_chann.patch
new file mode 100644
index 0000000000..876c9167d2
--- /dev/null
+++ b/patches.drivers/dmaengine-ioat-fix-prototype-of-ioat_enumerate_chann.patch
@@ -0,0 +1,58 @@
+From f4d34aa8c887a8a2d23ef546da0efa10e3f77241 Mon Sep 17 00:00:00 2001
+From: Rami Rosen <ramirose@gmail.com>
+Date: Fri, 5 Oct 2018 00:03:10 +0300
+Subject: [PATCH] dmaengine: ioat: fix prototype of ioat_enumerate_channels
+Git-commit: f4d34aa8c887a8a2d23ef546da0efa10e3f77241
+Patch-mainline: v4.20-rc1
+References: jsc#SLE-5442
+
+Signed-off-by: Rami Rosen <ramirose@gmail.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/init.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 21a5708985bc..0fec3c554fe3 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -129,7 +129,7 @@ static void
+ ioat_init_channel(struct ioatdma_device *ioat_dma,
+ struct ioatdma_chan *ioat_chan, int idx);
+ static void ioat_intr_quirk(struct ioatdma_device *ioat_dma);
+-static int ioat_enumerate_channels(struct ioatdma_device *ioat_dma);
++static void ioat_enumerate_channels(struct ioatdma_device *ioat_dma);
+ static int ioat3_dma_self_test(struct ioatdma_device *ioat_dma);
+
+ static int ioat_dca_enabled = 1;
+@@ -575,7 +575,7 @@ static void ioat_dma_remove(struct ioatdma_device *ioat_dma)
+ * ioat_enumerate_channels - find and initialize the device's channels
+ * @ioat_dma: the ioat dma device to be enumerated
+ */
+-static int ioat_enumerate_channels(struct ioatdma_device *ioat_dma)
++static void ioat_enumerate_channels(struct ioatdma_device *ioat_dma)
+ {
+ struct ioatdma_chan *ioat_chan;
+ struct device *dev = &ioat_dma->pdev->dev;
+@@ -594,7 +594,7 @@ static int ioat_enumerate_channels(struct ioatdma_device *ioat_dma)
+ xfercap_log = readb(ioat_dma->reg_base + IOAT_XFERCAP_OFFSET);
+ xfercap_log &= 0x1f; /* bits [4:0] valid */
+ if (xfercap_log == 0)
+- return 0;
++ return;
+ dev_dbg(dev, "%s: xfercap = %d\n", __func__, 1 << xfercap_log);
+
+ for (i = 0; i < dma->chancnt; i++) {
+@@ -611,7 +611,6 @@ static int ioat_enumerate_channels(struct ioatdma_device *ioat_dma)
+ }
+ }
+ dma->chancnt = i;
+- return i;
+ }
+
+ /**
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-Add-Snow-Ridge-ioatdma-device-id.patch b/patches.drivers/dmaengine-ioatdma-Add-Snow-Ridge-ioatdma-device-id.patch
new file mode 100644
index 0000000000..a0377409ca
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-Add-Snow-Ridge-ioatdma-device-id.patch
@@ -0,0 +1,65 @@
+From 4d75873f814055359bb6722c4e35a185d02157a8 Mon Sep 17 00:00:00 2001
+From: Dave Jiang <dave.jiang@intel.com>
+Date: Fri, 22 Feb 2019 09:59:54 -0700
+Subject: [PATCH] dmaengine: ioatdma: Add Snow Ridge ioatdma device id
+Git-commit: 4d75873f814055359bb6722c4e35a185d02157a8
+Patch-mainline: v5.1-rc1
+References: jsc#SLE-5442
+
+Add Snowridge Xeon-D ioatdma PCI device id. Also applies for Icelake
+SP Xeon. This introduces ioatdma v3.4 platform. Also bumping driver version
+to 5.0 since we are adding additional code for 3.4 support.
+
+Signed-off-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dma.h | 2 +-
+ drivers/dma/ioat/hw.h | 2 ++
+ drivers/dma/ioat/init.c | 3 +++
+ 3 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
+index 1ab42ec2b7ff..aaafd0e882b5 100644
+--- a/drivers/dma/ioat/dma.h
++++ b/drivers/dma/ioat/dma.h
+@@ -27,7 +27,7 @@
+ #include "registers.h"
+ #include "hw.h"
+
+-#define IOAT_DMA_VERSION "4.00"
++#define IOAT_DMA_VERSION "5.00"
+
+ #define IOAT_DMA_DCA_ANY_CPU ~0
+
+diff --git a/drivers/dma/ioat/hw.h b/drivers/dma/ioat/hw.h
+index abcc51b343ce..3e38877cae6b 100644
+--- a/drivers/dma/ioat/hw.h
++++ b/drivers/dma/ioat/hw.h
+@@ -66,6 +66,8 @@
+
+ #define PCI_DEVICE_ID_INTEL_IOAT_SKX 0x2021
+
++#define PCI_DEVICE_ID_INTEL_IOAT_ICX 0x0b00
++
+ #define IOAT_VER_1_2 0x12 /* Version 1.2 */
+ #define IOAT_VER_2_0 0x20 /* Version 2.0 */
+ #define IOAT_VER_3_0 0x30 /* Version 3.0 */
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 2d810dfcdc48..3161dfbca505 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -119,6 +119,9 @@ static const struct pci_device_id ioat_pci_tbl[] = {
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_BDXDE2) },
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_BDXDE3) },
+
++ /* I/OAT v3.4 platforms */
++ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_ICX) },
++
+ { 0, }
+ };
+ MODULE_DEVICE_TABLE(pci, ioat_pci_tbl);
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-Add-intr_coalesce-sysfs-entry.patch b/patches.drivers/dmaengine-ioatdma-Add-intr_coalesce-sysfs-entry.patch
new file mode 100644
index 0000000000..393ea09d5e
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-Add-intr_coalesce-sysfs-entry.patch
@@ -0,0 +1,142 @@
+From 268e2519f5b7101d707a0df32e628e9990bc0da6 Mon Sep 17 00:00:00 2001
+From: Ujjal Singh <ujjal.singh@intel.com>
+Date: Tue, 22 Aug 2017 20:31:18 -0400
+Subject: [PATCH] dmaengine: ioatdma: Add intr_coalesce sysfs entry
+Git-commit: 268e2519f5b7101d707a0df32e628e9990bc0da6
+Patch-mainline: v4.14-rc1
+References: jsc#SLE-5442
+
+We observed performance increase with DMA copy from memory
+to MMIO by changing the interrupt coalescing value to 0.
+The previous set value was projected on the C5xxx Xeon
+platform and no longer holds true. Removing hard coded
+value and providing a tune-able in sysfs in order to allow
+user to tune this on a per channel basis. By default this
+value will be set to 0.
+Example of sysfs variable importing for interrupt coalescing
+value from command line:
+echo 5> /sys/devices/pci0000:00/0000:00:04.0/dma/dma0chan0/
+quickdata/intr_coalesce
+
+Reported-by: Nithin Sujir <nsujir@tintri.com>
+Signed-off-by: Ujjal Singh <ujjal.singh@intel.com>
+Acked-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vinod.koul@intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dma.c | 10 +++++++---
+ drivers/dma/ioat/dma.h | 3 +++
+ drivers/dma/ioat/sysfs.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 52 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
+index a371b07a0981..f70cc74032ea 100644
+--- a/drivers/dma/ioat/dma.c
++++ b/drivers/dma/ioat/dma.c
+@@ -644,9 +644,13 @@ static void __cleanup(struct ioatdma_chan *ioat_chan, dma_addr_t phys_complete)
+ mod_timer(&ioat_chan->timer, jiffies + IDLE_TIMEOUT);
+ }
+
+- /* 5 microsecond delay per pending descriptor */
+- writew(min((5 * (active - i)), IOAT_INTRDELAY_MASK),
+- ioat_chan->ioat_dma->reg_base + IOAT_INTRDELAY_OFFSET);
++ /* microsecond delay by sysfs variable per pending descriptor */
++ if (ioat_chan->intr_coalesce != ioat_chan->prev_intr_coalesce) {
++ writew(min((ioat_chan->intr_coalesce * (active - i)),
++ IOAT_INTRDELAY_MASK),
++ ioat_chan->ioat_dma->reg_base + IOAT_INTRDELAY_OFFSET);
++ ioat_chan->prev_intr_coalesce = ioat_chan->intr_coalesce;
++ }
+ }
+
+ static void ioat_cleanup(struct ioatdma_chan *ioat_chan)
+diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
+index a9bc1a15b0d1..56200eefcf5e 100644
+--- a/drivers/dma/ioat/dma.h
++++ b/drivers/dma/ioat/dma.h
+@@ -142,11 +142,14 @@ struct ioatdma_chan {
+ spinlock_t prep_lock;
+ struct ioat_descs descs[2];
+ int desc_chunks;
++ int intr_coalesce;
++ int prev_intr_coalesce;
+ };
+
+ struct ioat_sysfs_entry {
+ struct attribute attr;
+ ssize_t (*show)(struct dma_chan *, char *);
++ ssize_t (*store)(struct dma_chan *, const char *, size_t);
+ };
+
+ /**
+diff --git a/drivers/dma/ioat/sysfs.c b/drivers/dma/ioat/sysfs.c
+index cb4a857ee21b..3ac677f29e8f 100644
+--- a/drivers/dma/ioat/sysfs.c
++++ b/drivers/dma/ioat/sysfs.c
+@@ -64,8 +64,24 @@ ioat_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
+ return entry->show(&ioat_chan->dma_chan, page);
+ }
+
++static ssize_t
++ioat_attr_store(struct kobject *kobj, struct attribute *attr,
++const char *page, size_t count)
++{
++ struct ioat_sysfs_entry *entry;
++ struct ioatdma_chan *ioat_chan;
++
++ entry = container_of(attr, struct ioat_sysfs_entry, attr);
++ ioat_chan = container_of(kobj, struct ioatdma_chan, kobj);
++
++ if (!entry->store)
++ return -EIO;
++ return entry->store(&ioat_chan->dma_chan, page, count);
++}
++
+ const struct sysfs_ops ioat_sysfs_ops = {
+ .show = ioat_attr_show,
++ .store = ioat_attr_store,
+ };
+
+ void ioat_kobject_add(struct ioatdma_device *ioat_dma, struct kobj_type *type)
+@@ -121,11 +137,37 @@ static ssize_t ring_active_show(struct dma_chan *c, char *page)
+ }
+ static struct ioat_sysfs_entry ring_active_attr = __ATTR_RO(ring_active);
+
++static ssize_t intr_coalesce_show(struct dma_chan *c, char *page)
++{
++ struct ioatdma_chan *ioat_chan = to_ioat_chan(c);
++
++ return sprintf(page, "%d\n", ioat_chan->intr_coalesce);
++}
++
++static ssize_t intr_coalesce_store(struct dma_chan *c, const char *page,
++size_t count)
++{
++ int intr_coalesce = 0;
++ struct ioatdma_chan *ioat_chan = to_ioat_chan(c);
++
++ if (sscanf(page, "%du", &intr_coalesce) != -1) {
++ if ((intr_coalesce < 0) ||
++ (intr_coalesce > IOAT_INTRDELAY_MASK))
++ return -EINVAL;
++ ioat_chan->intr_coalesce = intr_coalesce;
++ }
++
++ return count;
++}
++
++static struct ioat_sysfs_entry intr_coalesce_attr = __ATTR_RW(intr_coalesce);
++
+ static struct attribute *ioat_attrs[] = {
+ &ring_size_attr.attr,
+ &ring_active_attr.attr,
+ &ioat_cap_attr.attr,
+ &ioat_version_attr.attr,
++ &intr_coalesce_attr.attr,
+ NULL,
+ };
+
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-add-descriptor-pre-fetch-support-f.patch b/patches.drivers/dmaengine-ioatdma-add-descriptor-pre-fetch-support-f.patch
new file mode 100644
index 0000000000..88dc5e6d40
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-add-descriptor-pre-fetch-support-f.patch
@@ -0,0 +1,108 @@
+From e0100d40906d5dbe6d09d31083c1a5aaccc947fa Mon Sep 17 00:00:00 2001
+From: Dave Jiang <dave.jiang@intel.com>
+Date: Fri, 22 Feb 2019 10:00:05 -0700
+Subject: [PATCH] dmaengine: ioatdma: add descriptor pre-fetch support for v3.4
+Git-commit: e0100d40906d5dbe6d09d31083c1a5aaccc947fa
+Patch-mainline: v5.1-rc1
+References: jsc#SLE-5442
+
+Adding support for new feature on ioatdma 3.4 hardware that provides
+descriptor pre-fetching in order to reduce small DMA latencies.
+
+Signed-off-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dma.c | 12 ++++++++++++
+ drivers/dma/ioat/init.c | 8 ++++++--
+ drivers/dma/ioat/registers.h | 10 ++++++++++
+ 3 files changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
+index 23fb2fa04000..f373a139e0c3 100644
+--- a/drivers/dma/ioat/dma.c
++++ b/drivers/dma/ioat/dma.c
+@@ -372,6 +372,7 @@ struct ioat_ring_ent **
+ ioat_alloc_ring(struct dma_chan *c, int order, gfp_t flags)
+ {
+ struct ioatdma_chan *ioat_chan = to_ioat_chan(c);
++ struct ioatdma_device *ioat_dma = ioat_chan->ioat_dma;
+ struct ioat_ring_ent **ring;
+ int total_descs = 1 << order;
+ int i, chunks;
+@@ -437,6 +438,17 @@ ioat_alloc_ring(struct dma_chan *c, int order, gfp_t flags)
+ }
+ ring[i]->hw->next = ring[0]->txd.phys;
+
++ /* setup descriptor pre-fetching for v3.4 */
++ if (ioat_dma->cap & IOAT_CAP_DPS) {
++ u16 drsctl = IOAT_CHAN_DRSZ_2MB | IOAT_CHAN_DRS_EN;
++
++ if (chunks == 1)
++ drsctl |= IOAT_CHAN_DRS_AUTOWRAP;
++
++ writew(drsctl, ioat_chan->reg_base + IOAT_CHAN_DRSCTL_OFFSET);
++
++ }
++
+ return ring;
+ }
+
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 58dd1bfd3edd..020bcdecb3fb 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -138,10 +138,10 @@ static int ioat3_dma_self_test(struct ioatdma_device *ioat_dma);
+ static int ioat_dca_enabled = 1;
+ module_param(ioat_dca_enabled, int, 0644);
+ MODULE_PARM_DESC(ioat_dca_enabled, "control support of dca service (default: 1)");
+-int ioat_pending_level = 4;
++int ioat_pending_level = 7;
+ module_param(ioat_pending_level, int, 0644);
+ MODULE_PARM_DESC(ioat_pending_level,
+- "high-water mark for pushing ioat descriptors (default: 4)");
++ "high-water mark for pushing ioat descriptors (default: 7)");
+ static char ioat_interrupt_style[32] = "msix";
+ module_param_string(ioat_interrupt_style, ioat_interrupt_style,
+ sizeof(ioat_interrupt_style), 0644);
+@@ -1188,6 +1188,10 @@ static int ioat3_dma_probe(struct ioatdma_device *ioat_dma, int dca)
+ if (err)
+ return err;
+
++ if (ioat_dma->cap & IOAT_CAP_DPS)
++ writeb(ioat_pending_level + 1,
++ ioat_dma->reg_base + IOAT_PREFETCH_LIMIT_OFFSET);
++
+ return 0;
+ }
+
+diff --git a/drivers/dma/ioat/registers.h b/drivers/dma/ioat/registers.h
+index 2f3bbc88ff2a..2b517d6db5fd 100644
+--- a/drivers/dma/ioat/registers.h
++++ b/drivers/dma/ioat/registers.h
+@@ -84,6 +84,9 @@
+ #define IOAT_CAP_PQ 0x00000200
+ #define IOAT_CAP_DWBES 0x00002000
+ #define IOAT_CAP_RAID16SS 0x00020000
++#define IOAT_CAP_DPS 0x00800000
++
++#define IOAT_PREFETCH_LIMIT_OFFSET 0x4C /* CHWPREFLMT */
+
+ #define IOAT_CHANNEL_MMIO_SIZE 0x80 /* Each Channel MMIO space is this size */
+
+@@ -243,4 +246,11 @@
+
+ #define IOAT_CHANERR_MASK_OFFSET 0x2C /* 32-bit Channel Error Register */
+
++#define IOAT_CHAN_DRSCTL_OFFSET 0xB6
++#define IOAT_CHAN_DRSZ_4KB 0x0000
++#define IOAT_CHAN_DRSZ_8KB 0x0001
++#define IOAT_CHAN_DRSZ_2MB 0x0009
++#define IOAT_CHAN_DRS_EN 0x0100
++#define IOAT_CHAN_DRS_AUTOWRAP 0x0200
++
+ #endif /* _IOAT_REGISTERS_H_ */
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-disable-DCA-enabling-on-IOATDMA-v3.patch b/patches.drivers/dmaengine-ioatdma-disable-DCA-enabling-on-IOATDMA-v3.patch
new file mode 100644
index 0000000000..0c0250ae01
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-disable-DCA-enabling-on-IOATDMA-v3.patch
@@ -0,0 +1,47 @@
+From 11e31e281bd8f482a9277268f7b0d9c213584271 Mon Sep 17 00:00:00 2001
+From: Dave Jiang <dave.jiang@intel.com>
+Date: Fri, 22 Feb 2019 09:59:59 -0700
+Subject: [PATCH] dmaengine: ioatdma: disable DCA enabling on IOATDMA v3.4
+Git-commit: 11e31e281bd8f482a9277268f7b0d9c213584271
+Patch-mainline: v5.1-rc1
+References: jsc#SLE-5442
+
+IOATDMA v3.4 does not support DCA. Disable
+
+Signed-off-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/hw.h | 1 +
+ drivers/dma/ioat/init.c | 2 ++
+ 2 files changed, 3 insertions(+)
+
+diff --git a/drivers/dma/ioat/hw.h b/drivers/dma/ioat/hw.h
+index 3e38877cae6b..781c94de8e81 100644
+--- a/drivers/dma/ioat/hw.h
++++ b/drivers/dma/ioat/hw.h
+@@ -73,6 +73,7 @@
+ #define IOAT_VER_3_0 0x30 /* Version 3.0 */
+ #define IOAT_VER_3_2 0x32 /* Version 3.2 */
+ #define IOAT_VER_3_3 0x33 /* Version 3.3 */
++#define IOAT_VER_3_4 0x34 /* Version 3.4 */
+
+
+ int system_has_dca_enabled(struct pci_dev *pdev);
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 3161dfbca505..58dd1bfd3edd 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -1353,6 +1353,8 @@ static int ioat_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ pci_set_drvdata(pdev, device);
+
+ device->version = readb(device->reg_base + IOAT_VER_OFFSET);
++ if (device->version >= IOAT_VER_3_4)
++ ioat_dca_enabled = 0;
+ if (device->version >= IOAT_VER_3_0) {
+ if (is_skx_ioat(pdev))
+ device->version = IOAT_VER_3_2;
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-set-the-completion-address-registe.patch b/patches.drivers/dmaengine-ioatdma-set-the-completion-address-registe.patch
new file mode 100644
index 0000000000..1c90490519
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-set-the-completion-address-registe.patch
@@ -0,0 +1,40 @@
+From 4cb0e60112168594da2ac8a7752b0250c4387733 Mon Sep 17 00:00:00 2001
+From: Dave Jiang <dave.jiang@intel.com>
+Date: Mon, 11 Jun 2018 12:49:03 -0700
+Subject: [PATCH] dmaengine: ioatdma: set the completion address register after channel reset
+Git-commit: 4cb0e60112168594da2ac8a7752b0250c4387733
+Patch-mainline: v4.19-rc1
+References: jsc#SLE-5442
+
+It seems that starting with Skylake Xeon, channel reset clears the
+completion address register. Make sure the completion address register is
+set again after reset.
+
+Signed-off-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dma.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
+index 8b5b23a8ace9..23fb2fa04000 100644
+--- a/drivers/dma/ioat/dma.c
++++ b/drivers/dma/ioat/dma.c
+@@ -688,6 +688,12 @@ static void ioat_restart_channel(struct ioatdma_chan *ioat_chan)
+ {
+ u64 phys_complete;
+
++ /* set the completion address register again */
++ writel(lower_32_bits(ioat_chan->completion_dma),
++ ioat_chan->reg_base + IOAT_CHANCMP_OFFSET_LOW);
++ writel(upper_32_bits(ioat_chan->completion_dma),
++ ioat_chan->reg_base + IOAT_CHANCMP_OFFSET_HIGH);
++
+ ioat_quiesce(ioat_chan, 0);
+ if (ioat_cleanup_preamble(ioat_chan, &phys_complete))
+ __cleanup(ioat_chan, phys_complete);
+--
+2.16.4
+
diff --git a/patches.drivers/dmaengine-ioatdma-support-latency-tolerance-report-L.patch b/patches.drivers/dmaengine-ioatdma-support-latency-tolerance-report-L.patch
new file mode 100644
index 0000000000..f4ded1ce78
--- /dev/null
+++ b/patches.drivers/dmaengine-ioatdma-support-latency-tolerance-report-L.patch
@@ -0,0 +1,93 @@
+From 528314b503f855b268ae7861ea4e206fbbfb8356 Mon Sep 17 00:00:00 2001
+From: Dave Jiang <dave.jiang@intel.com>
+Date: Fri, 22 Feb 2019 10:00:10 -0700
+Subject: [PATCH] dmaengine: ioatdma: support latency tolerance report (LTR) for v3.4
+Git-commit: 528314b503f855b268ae7861ea4e206fbbfb8356
+Patch-mainline: v5.1-rc1
+References: jsc#SLE-5442
+
+IOATDMA 3.4 supports PCIe LTR mechanism. The registers are non-standard
+PCIe LTR support. This needs to be setup in order to not suffer performance
+impact and provide proper power management. The channel is set to active
+when it is allocated, and to passive when it's freed.
+
+Signed-off-by: Dave Jiang <dave.jiang@intel.com>
+Signed-off-by: Vinod Koul <vkoul@kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/init.c | 27 +++++++++++++++++++++++++++
+ drivers/dma/ioat/registers.h | 14 ++++++++++++++
+ 2 files changed, 41 insertions(+)
+
+diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
+index 020bcdecb3fb..d41dc9a9ff68 100644
+--- a/drivers/dma/ioat/init.c
++++ b/drivers/dma/ioat/init.c
+@@ -638,6 +638,11 @@ static void ioat_free_chan_resources(struct dma_chan *c)
+ ioat_stop(ioat_chan);
+ ioat_reset_hw(ioat_chan);
+
++ /* Put LTR to idle */
++ if (ioat_dma->version >= IOAT_VER_3_4)
++ writeb(IOAT_CHAN_LTR_SWSEL_IDLE,
++ ioat_chan->reg_base + IOAT_CHAN_LTR_SWSEL_OFFSET);
++
+ spin_lock_bh(&ioat_chan->cleanup_lock);
+ spin_lock_bh(&ioat_chan->prep_lock);
+ descs = ioat_ring_space(ioat_chan);
+@@ -727,6 +732,28 @@ static int ioat_alloc_chan_resources(struct dma_chan *c)
+ spin_unlock_bh(&ioat_chan->prep_lock);
+ spin_unlock_bh(&ioat_chan->cleanup_lock);
+
++ /* Setting up LTR values for 3.4 or later */
++ if (ioat_chan->ioat_dma->version >= IOAT_VER_3_4) {
++ u32 lat_val;
++
++ lat_val = IOAT_CHAN_LTR_ACTIVE_SNVAL |
++ IOAT_CHAN_LTR_ACTIVE_SNLATSCALE |
++ IOAT_CHAN_LTR_ACTIVE_SNREQMNT;
++ writel(lat_val, ioat_chan->reg_base +
++ IOAT_CHAN_LTR_ACTIVE_OFFSET);
++
++ lat_val = IOAT_CHAN_LTR_IDLE_SNVAL |
++ IOAT_CHAN_LTR_IDLE_SNLATSCALE |
++ IOAT_CHAN_LTR_IDLE_SNREQMNT;
++ writel(lat_val, ioat_chan->reg_base +
++ IOAT_CHAN_LTR_IDLE_OFFSET);
++
++ /* Select to active */
++ writeb(IOAT_CHAN_LTR_SWSEL_ACTIVE,
++ ioat_chan->reg_base +
++ IOAT_CHAN_LTR_SWSEL_OFFSET);
++ }
++
+ ioat_start_null_desc(ioat_chan);
+
+ /* check that we got off the ground */
+diff --git a/drivers/dma/ioat/registers.h b/drivers/dma/ioat/registers.h
+index 2b517d6db5fd..99c1c24d465d 100644
+--- a/drivers/dma/ioat/registers.h
++++ b/drivers/dma/ioat/registers.h
+@@ -253,4 +253,18 @@
+ #define IOAT_CHAN_DRS_EN 0x0100
+ #define IOAT_CHAN_DRS_AUTOWRAP 0x0200
+
++#define IOAT_CHAN_LTR_SWSEL_OFFSET 0xBC
++#define IOAT_CHAN_LTR_SWSEL_ACTIVE 0x0
++#define IOAT_CHAN_LTR_SWSEL_IDLE 0x1
++
++#define IOAT_CHAN_LTR_ACTIVE_OFFSET 0xC0
++#define IOAT_CHAN_LTR_ACTIVE_SNVAL 0x0000 /* 0 us */
++#define IOAT_CHAN_LTR_ACTIVE_SNLATSCALE 0x0800 /* 1us scale */
++#define IOAT_CHAN_LTR_ACTIVE_SNREQMNT 0x8000 /* snoop req enable */
++
++#define IOAT_CHAN_LTR_IDLE_OFFSET 0xC4
++#define IOAT_CHAN_LTR_IDLE_SNVAL 0x0258 /* 600 us */
++#define IOAT_CHAN_LTR_IDLE_SNLATSCALE 0x0800 /* 1us scale */
++#define IOAT_CHAN_LTR_IDLE_SNREQMNT 0x8000 /* snoop req enable */
++
+ #endif /* _IOAT_REGISTERS_H_ */
+--
+2.16.4
+
diff --git a/patches.drivers/drivers-dma-ioat-Remove-now-redundant-smp_read_barri.patch b/patches.drivers/drivers-dma-ioat-Remove-now-redundant-smp_read_barri.patch
new file mode 100644
index 0000000000..d4602bab6a
--- /dev/null
+++ b/patches.drivers/drivers-dma-ioat-Remove-now-redundant-smp_read_barri.patch
@@ -0,0 +1,49 @@
+From 98c1ec7cefaadbf65680d116c3d8612b93a841a0 Mon Sep 17 00:00:00 2001
+From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
+Date: Fri, 1 Dec 2017 17:04:39 -0800
+Subject: [PATCH] drivers/dma/ioat: Remove now-redundant smp_read_barrier_depends()
+Git-commit: 98c1ec7cefaadbf65680d116c3d8612b93a841a0
+Patch-mainline: v4.16-rc1
+References: jsc#SLE-5442
+
+Now that READ_ONCE() implies smp_read_barrier_depends(), the
+__cleanup() and ioat_abort_descs() functions no longer need their
+smp_read_barrier_depends() calls, which this commit removes.
+It is actually not entirely clear why this driver ever included
+smp_read_barrier_depends() given that it appears to be x86-only and
+given that smp_read_barrier_depends() has no effect whatsoever except
+on DEC Alpha.
+
+Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
+Cc: Vinod Koul <vinod.koul@intel.com>
+Cc: Dan Williams <dan.j.williams@intel.com>
+Cc: <dmaengine@vger.kernel.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/dma/ioat/dma.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
+index 58d4ccd33672..8b5b23a8ace9 100644
+--- a/drivers/dma/ioat/dma.c
++++ b/drivers/dma/ioat/dma.c
+@@ -597,7 +597,6 @@ static void __cleanup(struct ioatdma_chan *ioat_chan, dma_addr_t phys_complete)
+ for (i = 0; i < active && !seen_current; i++) {
+ struct dma_async_tx_descriptor *tx;
+
+- smp_read_barrier_depends();
+ prefetch(ioat_get_ring_ent(ioat_chan, idx + i + 1));
+ desc = ioat_get_ring_ent(ioat_chan, idx + i);
+ dump_desc_dbg(ioat_chan, desc);
+@@ -715,7 +714,6 @@ static void ioat_abort_descs(struct ioatdma_chan *ioat_chan)
+ for (i = 1; i < active; i++) {
+ struct dma_async_tx_descriptor *tx;
+
+- smp_read_barrier_depends();
+ prefetch(ioat_get_ring_ent(ioat_chan, idx + i + 1));
+ desc = ioat_get_ring_ent(ioat_chan, idx + i);
+
+--
+2.16.4
+
diff --git a/series.conf b/series.conf
index 7fd8838fa3..4469d7692e 100644
--- a/series.conf
+++ b/series.conf
@@ -3658,6 +3658,7 @@
patches.arch/s390-dasd-Make-raw-I-O-usable-without-prefix-support.patch
patches.arch/s390-crash-Remove-unused-KEXEC_NOTE_BYTES.patch
patches.arch/ibmveth-properly-unwind-on-init-errors.patch
+ patches.drivers/dmaengine-ioat-don-t-use-DMA_ERROR_CODE.patch
patches.drm/0004-drm-exynos-don-t-use-dma_error_code
patches.drm/0005-drm-armada-don-t-abuse-dma_error_code
patches.drivers/0001-crypto-qat-avoid-an-uninitialized-variable-warning.patch
@@ -3909,6 +3910,7 @@
patches.drivers/bonding-avoid-NETDEV_CHANGEMTU-event-when-unregister.patch
patches.fixes/doc-SKB_GSO_-IPIP-SIT-have-been-replaced
patches.suse/0001-kernel-locking-Fix-compile-error-with-qrwlock.c.patch
+ patches.drivers/dmaengine-Replace-WARN_TAINT_ONCE-with-pr_warn_once.patch
patches.drivers/dmaengine-tegra-apb-Really-fix-runtime-pm-usage
patches.suse/0001-lib-raid6-Add-log-of-2-table-for-RAID6-HW-requiring-.patch
patches.drivers/dt-bindings-rcar-dmac-document-missing-error-interrupt.patch
@@ -9684,6 +9686,8 @@
patches.drivers/mfd-intel_soc_pmic-Differentiate-between-Bay-and-Che
patches.drivers/backlight-lm3630a-Bump-REG_MAX-value-to-0x50-instead
patches.drivers/dmaengine-xilinx_dma-Fix-error-code-format-specifier
+ patches.drivers/dmaengine-ioat-constify-pci_device_id.patch
+ patches.drivers/dmaengine-ioatdma-Add-intr_coalesce-sysfs-entry.patch
patches.drm/drm-i915-Quietly-cancel-FBC-activation-if-CRTC-is-tu
patches.drm/drm-i915-Recreate-vmapping-even-when-the-object-is-p
patches.drm/drm-i915-Always-wake-the-device-to-flush-the-GTT
@@ -19622,6 +19626,7 @@
patches.drivers/drivers-net-ethernet-qlogic-qed-Fix-__qed_spq_block-.patch
patches.suse/0001-locking-Remove-smp_read_barrier_depends-from-queued_.patch
patches.drivers/drivers-infiniband-Remove-now-redundant-smp_read_bar.patch
+ patches.drivers/drivers-dma-ioat-Remove-now-redundant-smp_read_barri.patch
patches.fixes/tools-lib-traceevent-Simplify-pointer-print-logic-an.patch
patches.fixes/tools-lib-traceevent-Fix-get_field_str-for-dynamic-s.patch
patches.arch/x86-mce-amd-define-a-function-to-get-smca-bank-type
@@ -39001,6 +39006,7 @@
patches.drivers/0010-mmc-core-improve-reasonableness-of-bus-width-setting.patch
patches.drivers/dmaengine-hsu-Support-dmaengine_terminate_sync
patches.drivers/dmaengine-idma64-Support-dmaengine_terminate_sync
+ patches.drivers/dmaengine-ioatdma-set-the-completion-address-registe.patch
patches.drivers/dmaengine-mv_xor_v2-kill-the-tasklets-upon-exit
patches.drivers/dmaengine-pl330-fix-irq-race-with-terminate_all.patch
patches.drivers/0023-watchdog-sp805-add-timeout-sec-DT-property-support.patch
@@ -41290,6 +41296,7 @@
patches.drivers/0417-dmaengine-fsl-edma-extract-common-fsl-edma-code-no-c.patch
patches.drivers/0418-dmaengine-fsl-edma-add-edma-version-and-configurable.patch
patches.drivers/driver-dma-ioat-Call-del_timer_sync-without-holding-.patch
+ patches.drivers/dmaengine-ioat-fix-prototype-of-ioat_enumerate_chann.patch
patches.fixes/dmaengine-dma-jz4780-Return-error-if-not-probed-from.patch
patches.drivers/PCI-ASPM-Fix-link_state-teardown-on-device-removal.patch
patches.drivers/PCI-ASPM-Do-not-initialize-link-state-when-aspm_disa.patch
@@ -45752,6 +45759,10 @@
patches.drivers/dmaengine-sa11x0-drop-useless-LIST_HEAD.patch
patches.drivers/dmaengine-qcom_hidma-assign-channel-cookie-correctly.patch
patches.drivers/dmaengine-mv_xor-Use-correct-device-for-DMA-API.patch
+ patches.drivers/dmaengine-ioatdma-Add-Snow-Ridge-ioatdma-device-id.patch
+ patches.drivers/dmaengine-ioatdma-disable-DCA-enabling-on-IOATDMA-v3.patch
+ patches.drivers/dmaengine-ioatdma-add-descriptor-pre-fetch-support-f.patch
+ patches.drivers/dmaengine-ioatdma-support-latency-tolerance-report-L.patch
patches.drivers/dmaengine-imx-dma-fix-warning-comparison-of-distinct.patch
patches.drivers/dmaengine-tegra-avoid-overflow-of-byte-tracking.patch
patches.suse/net-sit-fix-UBSAN-Undefined-behaviour-in-check_6rd.patch