Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2019-07-17 07:13:44 +0200
committerKernel Build Daemon <kbuild@suse.de>2019-07-17 07:13:44 +0200
commita7d694a6189c77a7576a142523db521e6984a5b2 (patch)
treed116db9d81ba33f0da4e4d00e2eb1b346d21f6cb
parent8aa4c4bd4b6a9f7f72b447f402a913f0fbaa4084 (diff)
parentf9796f8e4bc3fcfd3c95b6aa341f0a29e0479cba (diff)
Merge branch 'SLE15' into openSUSE-15.0
-rw-r--r--blacklist.conf8
-rw-r--r--patches.arch/0002-efi-arm-libstub-add-a-root-memreserve-config-table.patch (renamed from patches.drivers/0001-efi-arm-libstub-add-a-root-memreserve-config-table.patch)0
-rw-r--r--patches.arch/0003-efi-add-API-to-reserve-memory-persistently-across-ke.patch (renamed from patches.drivers/0001-efi-add-API-to-reserve-memory-persistently-across-ke.patch)0
-rw-r--r--patches.arch/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch (renamed from patches.drivers/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch)0
-rw-r--r--patches.arch/mm-nvdimm-add-is_ioremap_addr-and-use-that-to-check-.patch88
-rw-r--r--patches.arch/mm-replace-all-open-encodings-for-NUMA_NO_NODE.patch962
-rw-r--r--patches.arch/platform-x86-intel_turbo_max_3-Remove-restriction-fo.patch37
-rw-r--r--patches.arch/powerpc-mm-Consolidate-numa_enable-check-and-min_com.patch83
-rw-r--r--patches.arch/powerpc-mm-Fix-node-look-up-with-numa-off-boot.patch91
-rw-r--r--patches.arch/powerpc-mm-drconf-Use-NUMA_NO_NODE-on-failures-inste.patch52
-rw-r--r--patches.drivers/ALSA-usb-audio-Add-quirk-for-Focusrite-Scarlett-Solo.patch131
-rw-r--r--patches.drivers/ALSA-usb-audio-Add-quirk-for-MOTU-MicroBook-II.patch254
-rw-r--r--patches.drivers/ALSA-usb-audio-Cleanup-DSD-whitelist.patch74
-rw-r--r--patches.drivers/ALSA-usb-audio-Enable-.product_name-override-for-Ema.patch40
-rw-r--r--patches.drivers/ALSA-usb-audio-Sanity-checks-for-each-pipe-and-EP-ty.patch133
-rw-r--r--patches.drivers/PCI-Always-allow-probing-with-driver_override.patch55
-rw-r--r--patches.drivers/PCI-Return-error-if-cannot-probe-VF.patch58
-rw-r--r--patches.drivers/Revert-serial-8250-Don-t-service-RX-FIFO-if-interrup.patch44
-rw-r--r--patches.drivers/bnxt_en-Fix-aggregation-buffer-leak-under-OOM-condit.patch35
-rw-r--r--patches.drivers/bnxt_en-Improve-multicast-address-setup-logic.patch (renamed from patches.suse/bnxt_en-Improve-multicast-address-setup-logic.patch)0
-rw-r--r--patches.drivers/mfd-intel-lpss-Release-IDA-resources.patch36
-rw-r--r--patches.drivers/net-make-skb_partial_csum_set-more-robust-against-ov.patch (renamed from patches.fixes/0001-net-make-skb_partial_csum_set-more-robust-against-ov.patch)0
-rw-r--r--patches.drivers/nvme-rdma-fix-double-freeing-of-async-event-data.patch (renamed from patches.fixes/nvme-rdma-fix-double-freeing-of-async-event-data.patch)0
-rw-r--r--patches.drivers/nvme-rdma-fix-possible-double-free-of-controller-asy.patch (renamed from patches.fixes/nvme-rdma-fix-possible-double-free-of-controller-asy.patch)0
-rw-r--r--patches.drivers/nvme-rdma-fix-possible-free-of-a-non-allocated-async.patch (renamed from patches.fixes/nvme-rdma-fix-possible-free-of-a-non-allocated-async-event-buffer.patch)0
-rw-r--r--patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeo.patch (renamed from patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeout)0
-rw-r--r--patches.drivers/serial-uartps-Do-not-add-a-trailing-semicolon-to-mac.patch39
-rw-r--r--patches.drivers/serial-uartps-Fix-long-line-over-80-chars.patch40
-rw-r--r--patches.drivers/serial-uartps-Fix-multiple-line-dereference.patch41
-rw-r--r--patches.drivers/serial-uartps-Remove-useless-return-from-cdns_uart_p.patch42
-rw-r--r--patches.drivers/tty-rocket-fix-incorrect-forward-declaration-of-rp_i.patch38
-rw-r--r--patches.drivers/tty-serial-cpm_uart-fix-init-when-SMC-is-relocated.patch78
-rw-r--r--patches.drivers/tty-serial_core-Set-port-active-bit-in-uart_port_act.patch73
-rw-r--r--patches.drivers/usb-gadget-ether-Fix-race-between-gether_disconnect-.patch54
-rw-r--r--patches.drm/drm-meson-Add-support-for-XBGR8888-ABGR8888-formats.patch65
-rw-r--r--patches.drm/drm-msm-a3xx-remove-TPL1-regs-from-snapshot.patch60
-rw-r--r--patches.drm/drm-rockchip-Properly-adjust-to-a-true-clock-in-adju.patch48
-rw-r--r--patches.fixes/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch (renamed from patches.kernel.org/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch)0
-rw-r--r--patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch (renamed from patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-ide-.patch)0
-rw-r--r--patches.fixes/crypto-arm64-sha1-ce-correct-digest-for-empty-data-i.patch40
-rw-r--r--patches.fixes/crypto-arm64-sha2-ce-correct-digest-for-empty-data-i.patch40
-rw-r--r--patches.fixes/crypto-ccp-Fix-3DES-complaint-from-ccp-crypto-module.patch72
-rw-r--r--patches.fixes/crypto-ccp-Validate-the-the-error-value-used-to-inde.patch152
-rw-r--r--patches.fixes/crypto-ccp-fix-AES-CFB-error-exposed-by-new-test-vec.patch63
-rw-r--r--patches.fixes/crypto-chacha20poly1305-fix-atomic-sleep-when-using-.patch199
-rw-r--r--patches.fixes/crypto-ghash-fix-unaligned-memory-access-in-ghash_se.patch61
-rw-r--r--patches.fixes/crypto-talitos-Align-SEC1-accesses-to-32-bits-bounda.patch44
-rw-r--r--patches.fixes/crypto-talitos-HMAC-SNOOP-NO-AFEU-mode-requires-SW-i.patch36
-rw-r--r--patches.fixes/crypto-talitos-check-data-blocksize-in-ablkcipher.patch62
-rw-r--r--patches.fixes/crypto-talitos-fix-CTR-alg-blocksize.patch35
-rw-r--r--patches.fixes/crypto-talitos-properly-handle-split-ICV.patch94
-rw-r--r--patches.fixes/crypto-talitos-reduce-max-key-size-for-SEC1.patch42
-rw-r--r--patches.fixes/crypto-talitos-rename-alternative-AEAD-algos.patch102
-rw-r--r--patches.fixes/team-Always-enable-vlan-tx-offload.patch37
-rw-r--r--patches.suse/0091-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch (renamed from patches.suse/0001-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch)0
-rw-r--r--patches.suse/ipv4-igmp-fix-another-memory-leak-in-igmpv3_del_delr.patch158
-rw-r--r--patches.suse/ipv4-igmp-fix-build-error-if-CONFIG_IP_MULTICAST.patch56
-rw-r--r--patches.suse/ipv6-Consider-sk_bound_dev_if-when-binding-a-raw-soc.patch36
-rw-r--r--patches.suse/llc-fix-skb-leak-in-llc_build_and_send_ui_pkt.patch82
-rw-r--r--patches.suse/net-fec-fix-the-clk-mismatch-in-failed_reset-path.patch32
-rw-r--r--patches.suse/net-gro-fix-use-after-free-read-in-napi_gro_frags.patch67
-rw-r--r--patches.suse/net-mlx5-Allocate-root-ns-memory-using-kzalloc-to-ma.patch36
-rw-r--r--patches.suse/net-mlx5-Avoid-double-free-in-fs-init-error-unwindin.patch69
-rw-r--r--patches.suse/net-mvneta-Fix-err-code-path-of-probe.patch46
-rw-r--r--patches.suse/net-mvpp2-fix-bad-MVPP2_TXQ_SCHED_TOKEN_CNTR_REG-que.patch55
-rw-r--r--patches.suse/net-stmmac-fix-reset-gpio-free-missing.patch34
-rwxr-xr-xscripts/git_sort/git_sort.py1
-rw-r--r--series.conf79
68 files changed, 4577 insertions, 12 deletions
diff --git a/blacklist.conf b/blacklist.conf
index 0fa7df697c..702a0e3e2e 100644
--- a/blacklist.conf
+++ b/blacklist.conf
@@ -1275,3 +1275,11 @@ c6975e4196549c18c5277a55e30b2d6d1b80abf2 # compiler.h: reverted above in 4.14.x
8a4db13ccc079b762123d04a7270d6d2cb3398d7 # drm/i915: Already cherry-picked
600d3712ae122be3ceab0d7ac8246caa3d87dcea # drm/i915: Already cherry-picked
c3ad2c3b02e953ead2b8d52a0c9e70312930c3d0 # kABI breaker, cause unlikely to happen (bsc#1107003)
+e153abc0739ff77bd89c9ba1688cdb963464af97 # context missing
+e9919a24d3022f72bcadc407e73a6ef17093a849 # fib_rules: reverted in below
+4970b42d5c362bf873982db7d93245c5281e58f4 # fib_rules: reverting above
+691306ebd18f945e44b4552a4bfcca3475e5d957 # fib_rules: reverted in below
+7e2b5c2cb610f4333d79430b571511c26022f070 # fib_rules: reverting above
+d057dc4e35e16050befa3dda943876dab39cbf80 # seccomp: reverted in below
+c3ca9064273c3d7bc1654d685d42f41ccf3744d7 # seccomp: reverting above
+
diff --git a/patches.drivers/0001-efi-arm-libstub-add-a-root-memreserve-config-table.patch b/patches.arch/0002-efi-arm-libstub-add-a-root-memreserve-config-table.patch
index 62ec8e3c76..62ec8e3c76 100644
--- a/patches.drivers/0001-efi-arm-libstub-add-a-root-memreserve-config-table.patch
+++ b/patches.arch/0002-efi-arm-libstub-add-a-root-memreserve-config-table.patch
diff --git a/patches.drivers/0001-efi-add-API-to-reserve-memory-persistently-across-ke.patch b/patches.arch/0003-efi-add-API-to-reserve-memory-persistently-across-ke.patch
index 24ee2b7c1c..24ee2b7c1c 100644
--- a/patches.drivers/0001-efi-add-API-to-reserve-memory-persistently-across-ke.patch
+++ b/patches.arch/0003-efi-add-API-to-reserve-memory-persistently-across-ke.patch
diff --git a/patches.drivers/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch b/patches.arch/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch
index 357a3cd3f9..357a3cd3f9 100644
--- a/patches.drivers/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch
+++ b/patches.arch/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch
diff --git a/patches.arch/mm-nvdimm-add-is_ioremap_addr-and-use-that-to-check-.patch b/patches.arch/mm-nvdimm-add-is_ioremap_addr-and-use-that-to-check-.patch
new file mode 100644
index 0000000000..1fc3953ec2
--- /dev/null
+++ b/patches.arch/mm-nvdimm-add-is_ioremap_addr-and-use-that-to-check-.patch
@@ -0,0 +1,88 @@
+From cbd156bedf70b059f53a493332bd9ba2ad97c142 Mon Sep 17 00:00:00 2001
+From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
+Date: Sun, 7 Jul 2019 06:10:21 +0000
+Subject: [PATCH] mm/nvdimm: add is_ioremap_addr and use that to check ioremap
+ address
+
+References: bsc#1140322 LTC#176270
+Patch-mainline: queued
+Git-repo: git://git.cmpxchg.org/linux-mmots.git
+Git-commit: 5d61685fe1a3cf52269f94b2a28af64c616a0ea9
+
+Architectures like powerpc use different address range to map ioremap and
+vmalloc range. The memunmap() check used by the nvdimm layer was wrongly
+using is_vmalloc_addr() to check for ioremap range which fails for ppc64.
+This result in ppc64 not freeing the ioremap mapping. The side effect of
+this is an unbind failure during module unload with papr_scm nvdimm driver
+
+Link: http://lkml.kernel.org/r/20190701134038.14165-1-aneesh.kumar@linux.ibm.com
+Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+Fixes: b5beae5e224f ("powerpc/pseries: Add driver for PAPR SCM regions")
+Cc: Dan Williams <dan.j.williams@intel.com>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/include/asm/pgtable.h | 15 +++++++++++++++
+ include/linux/mm.h | 5 +++++
+ kernel/memremap.c | 2 +-
+ 3 files changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
+index 9fa263ad7cb3..b4e538f3e6fd 100644
+--- a/arch/powerpc/include/asm/pgtable.h
++++ b/arch/powerpc/include/asm/pgtable.h
+@@ -72,6 +72,21 @@ unsigned long vmalloc_to_phys(void *vmalloc_addr);
+
+ void pgtable_cache_add(unsigned shift, void (*ctor)(void *));
+ void pgtable_cache_init(void);
++
++#ifdef CONFIG_PPC64
++#define is_ioremap_addr is_ioremap_addr
++static inline bool is_ioremap_addr(const void *x)
++{
++#ifdef CONFIG_MMU
++ unsigned long addr = (unsigned long)x;
++
++ return addr >= IOREMAP_BASE && addr < IOREMAP_END;
++#else
++ return false;
++#endif
++}
++#endif /* CONFIG_PPC64 */
++
+ #endif /* __ASSEMBLY__ */
+
+ #endif /* _ASM_POWERPC_PGTABLE_H */
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index a147764e56d1..974e8a003a58 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -522,6 +522,11 @@ static inline bool is_vmalloc_addr(const void *x)
+ return false;
+ #endif
+ }
++
++#ifndef is_ioremap_addr
++#define is_ioremap_addr(x) is_vmalloc_addr(x)
++#endif
++
+ #ifdef CONFIG_MMU
+ extern int is_vmalloc_or_module_addr(const void *x);
+ #else
+diff --git a/kernel/memremap.c b/kernel/memremap.c
+index 944b2f30c29a..a68276b465b5 100644
+--- a/kernel/memremap.c
++++ b/kernel/memremap.c
+@@ -137,7 +137,7 @@ EXPORT_SYMBOL(memremap);
+
+ void memunmap(void *addr)
+ {
+- if (is_vmalloc_addr(addr))
++ if (is_ioremap_addr(addr))
+ iounmap((void __iomem *) addr);
+ }
+ EXPORT_SYMBOL(memunmap);
+--
+2.22.0
+
diff --git a/patches.arch/mm-replace-all-open-encodings-for-NUMA_NO_NODE.patch b/patches.arch/mm-replace-all-open-encodings-for-NUMA_NO_NODE.patch
new file mode 100644
index 0000000000..979c0d6247
--- /dev/null
+++ b/patches.arch/mm-replace-all-open-encodings-for-NUMA_NO_NODE.patch
@@ -0,0 +1,962 @@
+From 49d4a8213fadf3fdbfc5d82a44e311c2c8593abf Mon Sep 17 00:00:00 2001
+From: Anshuman Khandual <anshuman.khandual@arm.com>
+Date: Tue, 5 Mar 2019 15:42:58 -0800
+Subject: [PATCH] mm: replace all open encodings for NUMA_NO_NODE
+
+References: bsc#1140322 LTC#176270
+Patch-mainline: v5.1-rc1
+Git-commit: 98fa15f34cb379864757670b8e8743b21456a20e
+
+Patch series "Replace all open encodings for NUMA_NO_NODE", v3.
+
+All these places for replacement were found by running the following
+grep patterns on the entire kernel code. Please let me know if this
+might have missed some instances. This might also have replaced some
+false positives. I will appreciate suggestions, inputs and review.
+
+1. git grep "nid == -1"
+2. git grep "node == -1"
+3. git grep "nid = -1"
+4. git grep "node = -1"
+
+This patch (of 2):
+
+At present there are multiple places where invalid node number is
+encoded as -1. Even though implicitly understood it is always better to
+have macros in there. Replace these open encodings for an invalid node
+number with the global macro NUMA_NO_NODE. This helps remove NUMA
+related assumptions like 'invalid node' from various places redirecting
+them to a common definition.
+
+Link: http://lkml.kernel.org/r/1545127933-10711-2-git-send-email-anshuman.khandual@arm.com
+Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
+Reviewed-by: David Hildenbrand <david@redhat.com>
+Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> [ixgbe]
+Acked-by: Jens Axboe <axboe@kernel.dk> [mtip32xx]
+Acked-by: Vinod Koul <vkoul@kernel.org> [dmaengine.c]
+Acked-by: Michael Ellerman <mpe@ellerman.id.au> [powerpc]
+Acked-by: Doug Ledford <dledford@redhat.com> [drivers/infiniband]
+Cc: Joseph Qi <jiangqi903@gmail.com>
+Cc: Hans Verkuil <hverkuil@xs4all.nl>
+Cc: Stephen Rothwell <sfr@canb.auug.org.au>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/alpha/include/asm/topology.h | 3 ++-
+ arch/ia64/kernel/numa.c | 2 +-
+ arch/ia64/mm/discontig.c | 6 +++---
+ arch/powerpc/include/asm/pci-bridge.h | 3 ++-
+ arch/powerpc/kernel/pci-common.c | 3 ++-
+ arch/powerpc/mm/numa.c | 14 +++++++-------
+ arch/sparc/kernel/pci_fire.c | 3 ++-
+ arch/sparc/kernel/pci_schizo.c | 3 ++-
+ arch/sparc/kernel/psycho_common.c | 3 ++-
+ arch/sparc/kernel/sbus.c | 3 ++-
+ arch/sparc/mm/init_64.c | 6 +++---
+ arch/x86/include/asm/pci.h | 3 ++-
+ arch/x86/kernel/apic/x2apic_uv_x.c | 7 ++++---
+ arch/x86/kernel/smpboot.c | 3 ++-
+ drivers/block/mtip32xx/mtip32xx.c | 5 +++--
+ drivers/dma/dmaengine.c | 4 +++-
+ drivers/iommu/dmar.c | 5 +++--
+ drivers/iommu/intel-iommu.c | 3 ++-
+ drivers/misc/sgi-xp/xpc_uv.c | 3 ++-
+ drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 5 +++--
+ include/linux/device.h | 2 +-
+ include/linux/init_task.h | 2 +-
+ init/init_task.c | 1 +
+ kernel/kthread.c | 3 ++-
+ kernel/sched/fair.c | 15 ++++++++-------
+ lib/cpumask.c | 3 ++-
+ mm/huge_memory.c | 13 +++++++------
+ mm/memory.c | 7 ++++---
+ mm/memory_hotplug.c | 4 ++--
+ mm/mempolicy.c | 2 +-
+ mm/page_alloc.c | 4 ++--
+ mm/page_ext.c | 2 +-
+ net/core/pktgen.c | 3 ++-
+ net/qrtr/qrtr.c | 3 ++-
+ 34 files changed, 88 insertions(+), 63 deletions(-)
+
+diff --git a/arch/alpha/include/asm/topology.h b/arch/alpha/include/asm/topology.h
+index 9251e13e144f..dbbdf1d19ee6 100644
+--- a/arch/alpha/include/asm/topology.h
++++ b/arch/alpha/include/asm/topology.h
+@@ -3,6 +3,7 @@
+
+ #include <linux/smp.h>
+ #include <linux/threads.h>
++#include <linux/numa.h>
+ #include <asm/machvec.h>
+
+ #ifdef CONFIG_NUMA
+@@ -28,7 +29,7 @@ static const struct cpumask *cpumask_of_node(int node)
+ {
+ int cpu;
+
+- if (node == -1)
++ if (node == NUMA_NO_NODE)
+ return cpu_all_mask;
+
+ cpumask_clear(&node_to_cpumask_map[node]);
+diff --git a/arch/ia64/kernel/numa.c b/arch/ia64/kernel/numa.c
+index 92c376279c6d..1315da6c7aeb 100644
+--- a/arch/ia64/kernel/numa.c
++++ b/arch/ia64/kernel/numa.c
+@@ -74,7 +74,7 @@ void __init build_cpu_to_node_map(void)
+ cpumask_clear(&node_to_cpu_mask[node]);
+
+ for_each_possible_early_cpu(cpu) {
+- node = -1;
++ node = NUMA_NO_NODE;
+ for (i = 0; i < NR_CPUS; ++i)
+ if (cpu_physical_id(cpu) == node_cpuid[i].phys_id) {
+ node = node_cpuid[i].nid;
+diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c
+index 878626805369..874cced96aab 100644
+--- a/arch/ia64/mm/discontig.c
++++ b/arch/ia64/mm/discontig.c
+@@ -231,7 +231,7 @@ void __init setup_per_cpu_areas(void)
+ * CPUs are put into groups according to node. Walk cpu_map
+ * and create new groups at node boundaries.
+ */
+- prev_node = -1;
++ prev_node = NUMA_NO_NODE;
+ ai->nr_groups = 0;
+ for (unit = 0; unit < nr_units; unit++) {
+ cpu = cpu_map[unit];
+@@ -476,7 +476,7 @@ static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize)
+ {
+ void *ptr = NULL;
+ u8 best = 0xff;
+- int bestnode = -1, node, anynode = 0;
++ int bestnode = NUMA_NO_NODE, node, anynode = 0;
+
+ for_each_online_node(node) {
+ if (node_isset(node, memory_less_mask))
+@@ -488,7 +488,7 @@ static void __init *memory_less_node_alloc(int nid, unsigned long pernodesize)
+ anynode = node;
+ }
+
+- if (bestnode == -1)
++ if (bestnode == NUMA_NO_NODE)
+ bestnode = anynode;
+
+ ptr = __alloc_bootmem_node(pgdat_list[bestnode], pernodesize,
+diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
+index fd579c9b464a..f149ccc1818f 100644
+--- a/arch/powerpc/include/asm/pci-bridge.h
++++ b/arch/powerpc/include/asm/pci-bridge.h
+@@ -10,6 +10,7 @@
+ #include <linux/pci.h>
+ #include <linux/list.h>
+ #include <linux/ioport.h>
++#include <linux/numa.h>
+
+ struct device_node;
+
+@@ -266,7 +267,7 @@ extern int pcibios_map_io_space(struct pci_bus *bus);
+ #ifdef CONFIG_NUMA
+ #define PHB_SET_NODE(PHB, NODE) ((PHB)->node = (NODE))
+ #else
+-#define PHB_SET_NODE(PHB, NODE) ((PHB)->node = -1)
++#define PHB_SET_NODE(PHB, NODE) ((PHB)->node = NUMA_NO_NODE)
+ #endif
+
+ #endif /* CONFIG_PPC64 */
+diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
+index 4f79ec43964e..c85c1170fa0e 100644
+--- a/arch/powerpc/kernel/pci-common.c
++++ b/arch/powerpc/kernel/pci-common.c
+@@ -32,6 +32,7 @@
+ #include <linux/vmalloc.h>
+ #include <linux/slab.h>
+ #include <linux/vgaarb.h>
++#include <linux/numa.h>
+
+ #include <asm/processor.h>
+ #include <asm/io.h>
+@@ -130,7 +131,7 @@ struct pci_controller *pcibios_alloc_controller(struct device_node *dev)
+ int nid = of_node_to_nid(dev);
+
+ if (nid < 0 || !node_online(nid))
+- nid = -1;
++ nid = NUMA_NO_NODE;
+
+ PHB_SET_NODE(phb, nid);
+ }
+diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
+index b31d4428f5dc..7b5728914ff9 100644
+--- a/arch/powerpc/mm/numa.c
++++ b/arch/powerpc/mm/numa.c
+@@ -216,7 +216,7 @@ static void initialize_distance_lookup_table(int nid,
+ */
+ static int associativity_to_nid(const __be32 *associativity)
+ {
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+
+ if (min_common_depth == -1)
+ goto out;
+@@ -226,7 +226,7 @@ static int associativity_to_nid(const __be32 *associativity)
+
+ /* POWER4 LPAR uses 0xffff as invalid node */
+ if (nid == 0xffff || nid >= MAX_NUMNODES)
+- nid = -1;
++ nid = NUMA_NO_NODE;
+
+ if (nid > 0 &&
+ of_read_number(associativity, 1) >= distance_ref_points_depth) {
+@@ -245,7 +245,7 @@ static int associativity_to_nid(const __be32 *associativity)
+ */
+ static int of_node_to_nid_single(struct device_node *device)
+ {
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+ const __be32 *tmp;
+
+ tmp = of_get_associativity(device);
+@@ -257,7 +257,7 @@ static int of_node_to_nid_single(struct device_node *device)
+ /* Walk the device tree upwards, looking for an associativity id */
+ int of_node_to_nid(struct device_node *device)
+ {
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+
+ of_node_get(device);
+ while (device) {
+@@ -455,7 +455,7 @@ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
+ */
+ static int numa_setup_cpu(unsigned long lcpu)
+ {
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+ struct device_node *cpu;
+
+ /*
+@@ -925,7 +925,7 @@ static int hot_add_drconf_scn_to_nid(unsigned long scn_addr)
+ {
+ struct drmem_lmb *lmb;
+ unsigned long lmb_size;
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+
+ lmb_size = drmem_lmb_size();
+
+@@ -955,7 +955,7 @@ static int hot_add_drconf_scn_to_nid(unsigned long scn_addr)
+ static int hot_add_node_scn_to_nid(unsigned long scn_addr)
+ {
+ struct device_node *memory;
+- int nid = -1;
++ int nid = NUMA_NO_NODE;
+
+ for_each_node_by_type(memory, "memory") {
+ unsigned long start, size;
+diff --git a/arch/sparc/kernel/pci_fire.c b/arch/sparc/kernel/pci_fire.c
+index 11a1f0d289d2..3de217b5c3e2 100644
+--- a/arch/sparc/kernel/pci_fire.c
++++ b/arch/sparc/kernel/pci_fire.c
+@@ -10,6 +10,7 @@
+ #include <linux/export.h>
+ #include <linux/irq.h>
+ #include <linux/of_device.h>
++#include <linux/numa.h>
+
+ #include <asm/prom.h>
+ #include <asm/irq.h>
+@@ -415,7 +416,7 @@ static int pci_fire_pbm_init(struct pci_pbm_info *pbm,
+ struct device_node *dp = op->dev.of_node;
+ int err;
+
+- pbm->numa_node = -1;
++ pbm->numa_node = NUMA_NO_NODE;
+
+ pbm->pci_ops = &sun4u_pci_ops;
+ pbm->config_space_reg_bits = 12;
+diff --git a/arch/sparc/kernel/pci_schizo.c b/arch/sparc/kernel/pci_schizo.c
+index c664d3e3aa8d..3b722a8d2d63 100644
+--- a/arch/sparc/kernel/pci_schizo.c
++++ b/arch/sparc/kernel/pci_schizo.c
+@@ -11,6 +11,7 @@
+ #include <linux/export.h>
+ #include <linux/interrupt.h>
+ #include <linux/of_device.h>
++#include <linux/numa.h>
+
+ #include <asm/iommu.h>
+ #include <asm/irq.h>
+@@ -1346,7 +1347,7 @@ static int schizo_pbm_init(struct pci_pbm_info *pbm,
+ pbm->next = pci_pbm_root;
+ pci_pbm_root = pbm;
+
+- pbm->numa_node = -1;
++ pbm->numa_node = NUMA_NO_NODE;
+
+ pbm->pci_ops = &sun4u_pci_ops;
+ pbm->config_space_reg_bits = 8;
+diff --git a/arch/sparc/kernel/psycho_common.c b/arch/sparc/kernel/psycho_common.c
+index 8db48e808ed4..a068464177e7 100644
+--- a/arch/sparc/kernel/psycho_common.c
++++ b/arch/sparc/kernel/psycho_common.c
+@@ -4,6 +4,7 @@
+ */
+ #include <linux/kernel.h>
+ #include <linux/interrupt.h>
++#include <linux/numa.h>
+
+ #include <asm/upa.h>
+
+@@ -453,7 +454,7 @@ void psycho_pbm_init_common(struct pci_pbm_info *pbm, struct platform_device *op
+ struct device_node *dp = op->dev.of_node;
+
+ pbm->name = dp->full_name;
+- pbm->numa_node = -1;
++ pbm->numa_node = NUMA_NO_NODE;
+ pbm->chip_type = chip_type;
+ pbm->chip_version = of_getintprop_default(dp, "version#", 0);
+ pbm->chip_revision = of_getintprop_default(dp, "module-revision#", 0);
+diff --git a/arch/sparc/kernel/sbus.c b/arch/sparc/kernel/sbus.c
+index be5bdf93c767..41eaed068e5f 100644
+--- a/arch/sparc/kernel/sbus.c
++++ b/arch/sparc/kernel/sbus.c
+@@ -14,6 +14,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/of.h>
+ #include <linux/of_device.h>
++#include <linux/numa.h>
+
+ #include <asm/page.h>
+ #include <asm/io.h>
+@@ -560,7 +561,7 @@ static void __init sbus_iommu_init(struct platform_device *op)
+
+ op->dev.archdata.iommu = iommu;
+ op->dev.archdata.stc = strbuf;
+- op->dev.archdata.numa_node = -1;
++ op->dev.archdata.numa_node = NUMA_NO_NODE;
+
+ reg_base = regs + SYSIO_IOMMUREG_BASE;
+ iommu->iommu_control = reg_base + IOMMU_CONTROL;
+diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
+index 0248a6fbc01c..144bdac595cf 100644
+--- a/arch/sparc/mm/init_64.c
++++ b/arch/sparc/mm/init_64.c
+@@ -936,13 +936,13 @@ static u64 __init memblock_nid_range_sun4u(u64 start, u64 end, int *nid)
+ {
+ int prev_nid, new_nid;
+
+- prev_nid = -1;
++ prev_nid = NUMA_NO_NODE;
+ for ( ; start < end; start += PAGE_SIZE) {
+ for (new_nid = 0; new_nid < num_node_masks; new_nid++) {
+ struct node_mem_mask *p = &node_masks[new_nid];
+
+ if ((start & p->mask) == p->match) {
+- if (prev_nid == -1)
++ if (prev_nid == NUMA_NO_NODE)
+ prev_nid = new_nid;
+ break;
+ }
+@@ -1167,7 +1167,7 @@ int of_node_to_nid(struct device_node *dp)
+ md = mdesc_grab();
+
+ count = 0;
+- nid = -1;
++ nid = NUMA_NO_NODE;
+ mdesc_for_each_node_by_name(md, grp, "group") {
+ if (!scan_arcs_for_cfg_handle(md, grp, cfg_handle)) {
+ nid = count;
+diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
+index f513cc231151..4bb56ad26da5 100644
+--- a/arch/x86/include/asm/pci.h
++++ b/arch/x86/include/asm/pci.h
+@@ -6,6 +6,7 @@
+ #include <linux/slab.h>
+ #include <linux/string.h>
+ #include <linux/scatterlist.h>
++#include <linux/numa.h>
+ #include <asm/io.h>
+ #include <asm/pat.h>
+ #include <asm/x86_init.h>
+@@ -151,7 +152,7 @@ cpumask_of_pcibus(const struct pci_bus *bus)
+ int node;
+
+ node = __pcibus_to_node(bus);
+- return (node == -1) ? cpu_online_mask :
++ return (node == NUMA_NO_NODE) ? cpu_online_mask :
+ cpumask_of_node(node);
+ }
+ #endif
+diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
+index b6ecac7671ee..08ede5b768e0 100644
+--- a/arch/x86/kernel/apic/x2apic_uv_x.c
++++ b/arch/x86/kernel/apic/x2apic_uv_x.c
+@@ -27,6 +27,7 @@
+ #include <linux/crash_dump.h>
+ #include <linux/reboot.h>
+ #include <linux/memory.h>
++#include <linux/numa.h>
+
+ #include <asm/uv/uv_mmrs.h>
+ #include <asm/uv/uv_hub.h>
+@@ -1411,7 +1412,7 @@ static void __init build_socket_tables(void)
+ }
+
+ /* Set socket -> node values: */
+- lnid = -1;
++ lnid = NUMA_NO_NODE;
+ for_each_present_cpu(cpu) {
+ int nid = cpu_to_node(cpu);
+ int apicid, sockid;
+@@ -1542,7 +1543,7 @@ static void __init uv_system_init_hub(void)
+ new_hub->pnode = 0xffff;
+
+ new_hub->numa_blade_id = uv_node_to_blade_id(nodeid);
+- new_hub->memory_nid = -1;
++ new_hub->memory_nid = NUMA_NO_NODE;
+ new_hub->nr_possible_cpus = 0;
+ new_hub->nr_online_cpus = 0;
+ }
+@@ -1559,7 +1560,7 @@ static void __init uv_system_init_hub(void)
+
+ uv_cpu_info_per(cpu)->p_uv_hub_info = uv_hub_info_list(nodeid);
+ uv_cpu_info_per(cpu)->blade_cpu_id = uv_cpu_hub_info(cpu)->nr_possible_cpus++;
+- if (uv_cpu_hub_info(cpu)->memory_nid == -1)
++ if (uv_cpu_hub_info(cpu)->memory_nid == NUMA_NO_NODE)
+ uv_cpu_hub_info(cpu)->memory_nid = cpu_to_node(cpu);
+
+ /* Init memoryless node: */
+diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
+index fa017ec5409e..cb4b24e37d05 100644
+--- a/arch/x86/kernel/smpboot.c
++++ b/arch/x86/kernel/smpboot.c
+@@ -56,6 +56,7 @@
+ #include <linux/stackprotector.h>
+ #include <linux/gfp.h>
+ #include <linux/cpuidle.h>
++#include <linux/numa.h>
+
+ #include <asm/acpi.h>
+ #include <asm/desc.h>
+@@ -840,7 +841,7 @@ wakeup_secondary_cpu_via_init(int phys_apicid, unsigned long start_eip)
+ /* reduce the number of lines printed when booting a large cpu count system */
+ static void announce_cpu(int cpu, int apicid)
+ {
+- static int current_node = -1;
++ static int current_node = NUMA_NO_NODE;
+ int node = early_cpu_to_node(cpu);
+ static int width, node_width;
+
+diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
+index 4a3cfc7940de..493e9dc33c2f 100644
+--- a/drivers/block/mtip32xx/mtip32xx.c
++++ b/drivers/block/mtip32xx/mtip32xx.c
+@@ -40,6 +40,7 @@
+ #include <linux/export.h>
+ #include <linux/debugfs.h>
+ #include <linux/prefetch.h>
++#include <linux/numa.h>
+ #include "mtip32xx.h"
+
+ #define HW_CMD_SLOT_SZ (MTIP_MAX_COMMAND_SLOTS * 32)
+@@ -4121,9 +4122,9 @@ static int get_least_used_cpu_on_node(int node)
+ /* Helper for selecting a node in round robin mode */
+ static inline int mtip_get_next_rr_node(void)
+ {
+- static int next_node = -1;
++ static int next_node = NUMA_NO_NODE;
+
+- if (next_node == -1) {
++ if (next_node == NUMA_NO_NODE) {
+ next_node = first_online_node;
+ return next_node;
+ }
+diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
+index d9118ec23025..c251d46a3d46 100644
+--- a/drivers/dma/dmaengine.c
++++ b/drivers/dma/dmaengine.c
+@@ -63,6 +63,7 @@
+ #include <linux/acpi_dma.h>
+ #include <linux/of_dma.h>
+ #include <linux/mempool.h>
++#include <linux/numa.h>
+
+ static DEFINE_MUTEX(dma_list_mutex);
+ static DEFINE_IDA(dma_ida);
+@@ -388,7 +389,8 @@ EXPORT_SYMBOL(dma_issue_pending_all);
+ static bool dma_chan_is_local(struct dma_chan *chan, int cpu)
+ {
+ int node = dev_to_node(chan->device->dev);
+- return node == -1 || cpumask_test_cpu(cpu, cpumask_of_node(node));
++ return node == NUMA_NO_NODE ||
++ cpumask_test_cpu(cpu, cpumask_of_node(node));
+ }
+
+ /**
+diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
+index 68c9201b0677..a069926a3ff8 100644
+--- a/drivers/iommu/dmar.c
++++ b/drivers/iommu/dmar.c
+@@ -39,6 +39,7 @@
+ #include <linux/dmi.h>
+ #include <linux/slab.h>
+ #include <linux/iommu.h>
++#include <linux/numa.h>
+ #include <asm/irq_remapping.h>
+ #include <asm/iommu_table.h>
+
+@@ -477,7 +478,7 @@ static int dmar_parse_one_rhsa(struct acpi_dmar_header *header, void *arg)
+ int node = acpi_map_pxm_to_node(rhsa->proximity_domain);
+
+ if (!node_online(node))
+- node = -1;
++ node = NUMA_NO_NODE;
+ drhd->iommu->node = node;
+ return 0;
+ }
+@@ -1062,7 +1063,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
+ iommu->msagaw = msagaw;
+ iommu->segment = drhd->segment;
+
+- iommu->node = -1;
++ iommu->node = NUMA_NO_NODE;
+
+ ver = readl(iommu->reg + DMAR_VER_REG);
+ pr_info("%s: reg_base_addr %llx ver %d:%d cap %llx ecap %llx\n",
+diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
+index cc54621bcd66..5b78890db25a 100644
+--- a/drivers/iommu/intel-iommu.c
++++ b/drivers/iommu/intel-iommu.c
+@@ -46,6 +46,7 @@
+ #include <linux/memblock.h>
+ #include <linux/dma-contiguous.h>
+ #include <linux/crash_dump.h>
++#include <linux/numa.h>
+ #include <asm/irq_remapping.h>
+ #include <asm/cacheflush.h>
+ #include <asm/iommu.h>
+@@ -1815,7 +1816,7 @@ static struct dmar_domain *alloc_domain(int flags)
+ return NULL;
+
+ memset(domain, 0, sizeof(*domain));
+- domain->nid = -1;
++ domain->nid = NUMA_NO_NODE;
+ domain->flags = flags;
+ domain->has_iotlb_device = false;
+ INIT_LIST_HEAD(&domain->devices);
+diff --git a/drivers/misc/sgi-xp/xpc_uv.c b/drivers/misc/sgi-xp/xpc_uv.c
+index 340b44d9e8cf..ae2be9194a62 100644
+--- a/drivers/misc/sgi-xp/xpc_uv.c
++++ b/drivers/misc/sgi-xp/xpc_uv.c
+@@ -22,6 +22,7 @@
+ #include <linux/module.h>
+ #include <linux/err.h>
+ #include <linux/slab.h>
++#include <linux/numa.h>
+ #include <asm/uv/uv_hub.h>
+ #if defined CONFIG_X86_64
+ #include <asm/uv/bios.h>
+@@ -61,7 +62,7 @@ static struct xpc_heartbeat_uv *xpc_heartbeat_uv;
+ XPC_NOTIFY_MSG_SIZE_UV)
+ #define XPC_NOTIFY_IRQ_NAME "xpc_notify"
+
+-static int xpc_mq_node = -1;
++static int xpc_mq_node = NUMA_NO_NODE;
+
+ static struct xpc_gru_mq_uv *xpc_activate_mq_uv;
+ static struct xpc_gru_mq_uv *xpc_notify_mq_uv;
+diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+index 7e0efebde5aa..213efdf6bb46 100644
+--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
++++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+@@ -52,6 +52,7 @@
+ #include <linux/bpf.h>
+ #include <linux/bpf_trace.h>
+ #include <linux/atomic.h>
++#include <linux/numa.h>
+ #include <scsi/fc/fc_fcoe.h>
+ #include <net/udp_tunnel.h>
+ #include <net/pkt_cls.h>
+@@ -6350,7 +6351,7 @@ int ixgbe_setup_tx_resources(struct ixgbe_ring *tx_ring)
+ {
+ struct device *dev = tx_ring->dev;
+ int orig_node = dev_to_node(dev);
+- int ring_node = -1;
++ int ring_node = NUMA_NO_NODE;
+ int size;
+
+ size = sizeof(struct ixgbe_tx_buffer) * tx_ring->count;
+@@ -6444,7 +6445,7 @@ int ixgbe_setup_rx_resources(struct ixgbe_adapter *adapter,
+ {
+ struct device *dev = rx_ring->dev;
+ int orig_node = dev_to_node(dev);
+- int ring_node = -1;
++ int ring_node = NUMA_NO_NODE;
+ int size;
+
+ size = sizeof(struct ixgbe_rx_buffer) * rx_ring->count;
+diff --git a/include/linux/device.h b/include/linux/device.h
+index bc84d88a37a4..046df7e05ded 100644
+--- a/include/linux/device.h
++++ b/include/linux/device.h
+@@ -1002,7 +1002,7 @@ static inline void set_dev_node(struct device *dev, int node)
+ #else
+ static inline int dev_to_node(struct device *dev)
+ {
+- return -1;
++ return NUMA_NO_NODE;
+ }
+ static inline void set_dev_node(struct device *dev, int node)
+ {
+diff --git a/include/linux/init_task.h b/include/linux/init_task.h
+index 2008de121705..22b3b47e7a66 100644
+--- a/include/linux/init_task.h
++++ b/include/linux/init_task.h
+@@ -189,7 +189,7 @@ extern struct cred init_cred;
+
+ #ifdef CONFIG_NUMA_BALANCING
+ # define INIT_NUMA_BALANCING(tsk) \
+- .numa_preferred_nid = -1, \
++ .numa_preferred_nid = NUMA_NO_NODE, \
+ .numa_group = NULL, \
+ .numa_faults = NULL,
+ #else
+diff --git a/init/init_task.c b/init/init_task.c
+index 66787e30a419..5cf3cf79d983 100644
+--- a/init/init_task.c
++++ b/init/init_task.c
+@@ -8,6 +8,7 @@
+ #include <linux/init.h>
+ #include <linux/fs.h>
+ #include <linux/mm.h>
++#include <linux/numa.h>
+
+ #include <asm/pgtable.h>
+ #include <linux/uaccess.h>
+diff --git a/kernel/kthread.c b/kernel/kthread.c
+index fceb71c819cf..95f1a38145af 100644
+--- a/kernel/kthread.c
++++ b/kernel/kthread.c
+@@ -21,6 +21,7 @@
+ #include <linux/ptrace.h>
+ #include <linux/uaccess.h>
+ #include <linux/cgroup.h>
++#include <linux/numa.h>
+ #include <trace/events/sched.h>
+
+ static DEFINE_SPINLOCK(kthread_create_lock);
+@@ -653,7 +654,7 @@ __kthread_create_worker(int cpu, unsigned int flags,
+ {
+ struct kthread_worker *worker;
+ struct task_struct *task;
+- int node = -1;
++ int node = NUMA_NO_NODE;
+
+ worker = kzalloc(sizeof(*worker), GFP_KERNEL);
+ if (!worker)
+diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
+index 6bf01e800b72..1f002b852d04 100644
+--- a/kernel/sched/fair.c
++++ b/kernel/sched/fair.c
+@@ -1187,7 +1187,7 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
+
+ /* New address space, reset the preferred nid */
+ if (!(clone_flags & CLONE_VM)) {
+- p->numa_preferred_nid = -1;
++ p->numa_preferred_nid = NUMA_NO_NODE;
+ return;
+ }
+
+@@ -1207,13 +1207,13 @@ void init_numa_balancing(unsigned long clone_flags, struct task_struct *p)
+
+ static void account_numa_enqueue(struct rq *rq, struct task_struct *p)
+ {
+- rq->nr_numa_running += (p->numa_preferred_nid != -1);
++ rq->nr_numa_running += (p->numa_preferred_nid != NUMA_NO_NODE);
+ rq->nr_preferred_running += (p->numa_preferred_nid == task_node(p));
+ }
+
+ static void account_numa_dequeue(struct rq *rq, struct task_struct *p)
+ {
+- rq->nr_numa_running -= (p->numa_preferred_nid != -1);
++ rq->nr_numa_running -= (p->numa_preferred_nid != NUMA_NO_NODE);
+ rq->nr_preferred_running -= (p->numa_preferred_nid == task_node(p));
+ }
+
+@@ -1427,7 +1427,7 @@ bool should_numa_migrate_memory(struct task_struct *p, struct page * page,
+ * two full passes of the "multi-stage node selection" test that is
+ * executed below.
+ */
+- if ((p->numa_preferred_nid == -1 || p->numa_scan_seq <= 4) &&
++ if ((p->numa_preferred_nid == NUMA_NO_NODE || p->numa_scan_seq <= 4) &&
+ (cpupid_pid_unset(last_cpupid) || cpupid_match_pid(p, last_cpupid)))
+ return true;
+
+@@ -1876,7 +1876,7 @@ static void numa_migrate_preferred(struct task_struct *p)
+ unsigned long interval = HZ;
+
+ /* This task has no NUMA fault statistics yet */
+- if (unlikely(p->numa_preferred_nid == -1 || !p->numa_faults))
++ if (unlikely(p->numa_preferred_nid == NUMA_NO_NODE || !p->numa_faults))
+ return;
+
+ /* Periodically retry migrating the task to the preferred node */
+@@ -2123,7 +2123,7 @@ static int preferred_group_nid(struct task_struct *p, int nid)
+
+ static void task_numa_placement(struct task_struct *p)
+ {
+- int seq, nid, max_nid = -1;
++ int seq, nid, max_nid = NUMA_NO_NODE;
+ unsigned long max_faults = 0;
+ unsigned long fault_types[2] = { 0, 0 };
+ unsigned long total_faults;
+@@ -2666,7 +2666,8 @@ static void update_scan_period(struct task_struct *p, int new_cpu)
+ * the preferred node.
+ */
+ if (dst_nid == p->numa_preferred_nid ||
+- (p->numa_preferred_nid != -1 && src_nid != p->numa_preferred_nid))
++ (p->numa_preferred_nid != NUMA_NO_NODE &&
++ src_nid != p->numa_preferred_nid))
+ return;
+ }
+
+diff --git a/lib/cpumask.c b/lib/cpumask.c
+index 4731a0895760..017a6488e817 100644
+--- a/lib/cpumask.c
++++ b/lib/cpumask.c
+@@ -4,6 +4,7 @@
+ #include <linux/cpumask.h>
+ #include <linux/export.h>
+ #include <linux/bootmem.h>
++#include <linux/numa.h>
+
+ /**
+ * cpumask_next_and - get the next cpu in *src1p & *src2p
+@@ -188,7 +189,7 @@ unsigned int cpumask_local_spread(unsigned int i, int node)
+ /* Wrap: we always want a cpu. */
+ i %= num_online_cpus();
+
+- if (node == -1) {
++ if (node == NUMA_NO_NODE) {
+ for_each_cpu(cpu, cpu_online_mask)
+ if (i-- == 0)
+ return cpu;
+diff --git a/mm/huge_memory.c b/mm/huge_memory.c
+index 10ba5cfa3c59..b319cf457b6b 100644
+--- a/mm/huge_memory.c
++++ b/mm/huge_memory.c
+@@ -33,6 +33,7 @@
+ #include <linux/page_idle.h>
+ #include <linux/shmem_fs.h>
+ #include <linux/oom.h>
++#include <linux/numa.h>
+
+ #include <asm/tlb.h>
+ #include <asm/pgalloc.h>
+@@ -1422,7 +1423,7 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
+ struct anon_vma *anon_vma = NULL;
+ struct page *page;
+ unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
+- int page_nid = -1, this_nid = numa_node_id();
++ int page_nid = NUMA_NO_NODE, this_nid = numa_node_id();
+ int target_nid, last_cpupid = -1;
+ bool page_locked;
+ bool migrated = false;
+@@ -1467,7 +1468,7 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
+ */
+ page_locked = trylock_page(page);
+ target_nid = mpol_misplaced(page, vma, haddr);
+- if (target_nid == -1) {
++ if (target_nid == NUMA_NO_NODE) {
+ /* If the page was locked, there are no parallel migrations */
+ if (page_locked)
+ goto clear_pmdnuma;
+@@ -1475,7 +1476,7 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
+
+ /* Migration could have started since the pmd_trans_migrating check */
+ if (!page_locked) {
+- page_nid = -1;
++ page_nid = NUMA_NO_NODE;
+ if (!get_page_unless_zero(page))
+ goto out_unlock;
+ spin_unlock(vmf->ptl);
+@@ -1496,14 +1497,14 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
+ if (unlikely(!pmd_same(pmd, *vmf->pmd))) {
+ unlock_page(page);
+ put_page(page);
+- page_nid = -1;
++ page_nid = NUMA_NO_NODE;
+ goto out_unlock;
+ }
+
+ /* Bail if we fail to protect against THP splits for any reason */
+ if (unlikely(!anon_vma)) {
+ put_page(page);
+- page_nid = -1;
++ page_nid = NUMA_NO_NODE;
+ goto clear_pmdnuma;
+ }
+
+@@ -1545,7 +1546,7 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
+ if (anon_vma)
+ page_unlock_anon_vma_read(anon_vma);
+
+- if (page_nid != -1)
++ if (page_nid != NUMA_NO_NODE)
+ task_numa_fault(last_cpupid, page_nid, HPAGE_PMD_NR,
+ flags);
+
+diff --git a/mm/memory.c b/mm/memory.c
+index e6a4bd8c4d3e..eb46be5bbb03 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -70,6 +70,7 @@
+ #include <linux/userfaultfd_k.h>
+ #include <linux/dax.h>
+ #include <linux/oom.h>
++#include <linux/numa.h>
+
+ #include <asm/io.h>
+ #include <asm/mmu_context.h>
+@@ -3726,7 +3727,7 @@ static int do_numa_page(struct vm_fault *vmf)
+ {
+ struct vm_area_struct *vma = vmf->vma;
+ struct page *page = NULL;
+- int page_nid = -1;
++ int page_nid = NUMA_NO_NODE;
+ int last_cpupid;
+ int target_nid;
+ bool migrated = false;
+@@ -3793,7 +3794,7 @@ static int do_numa_page(struct vm_fault *vmf)
+ target_nid = numa_migrate_prep(page, vma, vmf->address, page_nid,
+ &flags);
+ pte_unmap_unlock(vmf->pte, vmf->ptl);
+- if (target_nid == -1) {
++ if (target_nid == NUMA_NO_NODE) {
+ put_page(page);
+ goto out;
+ }
+@@ -3807,7 +3808,7 @@ static int do_numa_page(struct vm_fault *vmf)
+ flags |= TNF_MIGRATE_FAIL;
+
+ out:
+- if (page_nid != -1)
++ if (page_nid != NUMA_NO_NODE)
+ task_numa_fault(last_cpupid, page_nid, 1, flags);
+ return 0;
+ }
+diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
+index cac138eb30f6..f7a5a14d0e37 100644
+--- a/mm/memory_hotplug.c
++++ b/mm/memory_hotplug.c
+@@ -845,7 +845,7 @@ static void node_states_check_changes_online(unsigned long nr_pages,
+ if (!node_state(nid, N_MEMORY))
+ arg->status_change_nid = nid;
+ else
+- arg->status_change_nid = -1;
++ arg->status_change_nid = NUMA_NO_NODE;
+ }
+
+ static void node_states_set_node(int node, struct memory_notify *arg)
+@@ -1739,7 +1739,7 @@ static void node_states_check_changes_offline(unsigned long nr_pages,
+ if (nr_pages >= present_pages)
+ arg->status_change_nid = zone_to_nid(zone);
+ else
+- arg->status_change_nid = -1;
++ arg->status_change_nid = NUMA_NO_NODE;
+ }
+
+ static void node_states_clear_node(int node, struct memory_notify *arg)
+diff --git a/mm/mempolicy.c b/mm/mempolicy.c
+index 01c24c75d0e4..cb3ef6c5f0c4 100644
+--- a/mm/mempolicy.c
++++ b/mm/mempolicy.c
+@@ -2295,7 +2295,7 @@ int mpol_misplaced(struct page *page, struct vm_area_struct *vma, unsigned long
+ unsigned long pgoff;
+ int thiscpu = raw_smp_processor_id();
+ int thisnid = cpu_to_node(thiscpu);
+- int polnid = -1;
++ int polnid = NUMA_NO_NODE;
+ int ret = -1;
+
+ BUG_ON(!vma);
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 8f1faaf50740..92a282c8171c 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -5635,7 +5635,7 @@ int __meminit __early_pfn_to_nid(unsigned long pfn,
+ return state->last_nid;
+
+ nid = memblock_search_pfn_nid(pfn, &start_pfn, &end_pfn);
+- if (nid != -1) {
++ if (nid != NUMA_NO_NODE) {
+ state->last_start = start_pfn;
+ state->last_end = end_pfn;
+ state->last_nid = nid;
+@@ -6277,7 +6277,7 @@ unsigned long __init node_map_pfn_alignment(void)
+ {
+ unsigned long accl_mask = 0, last_end = 0;
+ unsigned long start, end, mask;
+- int last_nid = -1;
++ int last_nid = NUMA_NO_NODE;
+ int i, nid;
+
+ for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) {
+diff --git a/mm/page_ext.c b/mm/page_ext.c
+index 9dbabbfc4557..d5ed3dce8dc3 100644
+--- a/mm/page_ext.c
++++ b/mm/page_ext.c
+@@ -300,7 +300,7 @@ static int __meminit online_page_ext(unsigned long start_pfn,
+ start = SECTION_ALIGN_DOWN(start_pfn);
+ end = SECTION_ALIGN_UP(start_pfn + nr_pages);
+
+- if (nid == -1) {
++ if (nid == NUMA_NO_NODE) {
+ /*
+ * In this case, "nid" already exists and contains valid memory.
+ * "start_pfn" passed to us is a pfn which is an arg for
+diff --git a/net/core/pktgen.c b/net/core/pktgen.c
+index 3b2034f6d49d..8390b3ae716f 100644
+--- a/net/core/pktgen.c
++++ b/net/core/pktgen.c
+@@ -158,6 +158,7 @@
+ #include <linux/etherdevice.h>
+ #include <linux/kthread.h>
+ #include <linux/prefetch.h>
++#include <linux/mmzone.h>
+ #include <net/net_namespace.h>
+ #include <net/checksum.h>
+ #include <net/ipv6.h>
+@@ -3708,7 +3709,7 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
+ pkt_dev->svlan_cfi = 0;
+ pkt_dev->svlan_id = 0xffff;
+ pkt_dev->burst = 1;
+- pkt_dev->node = -1;
++ pkt_dev->node = NUMA_NO_NODE;
+
+ err = pktgen_setup_dev(t->net, pkt_dev, ifname);
+ if (err)
+diff --git a/net/qrtr/qrtr.c b/net/qrtr/qrtr.c
+index 5586609afa27..1628975ff70a 100644
+--- a/net/qrtr/qrtr.c
++++ b/net/qrtr/qrtr.c
+@@ -15,6 +15,7 @@
+ #include <linux/netlink.h>
+ #include <linux/qrtr.h>
+ #include <linux/termios.h> /* For TIOCINQ/OUTQ */
++#include <linux/numa.h>
+
+ #include <net/sock.h>
+
+@@ -77,7 +78,7 @@ static inline struct qrtr_sock *qrtr_sk(struct sock *sk)
+ return container_of(sk, struct qrtr_sock, sk);
+ }
+
+-static unsigned int qrtr_local_nid = -1;
++static unsigned int qrtr_local_nid = NUMA_NO_NODE;
+
+ /* for node ids */
+ static RADIX_TREE(qrtr_nodes, GFP_KERNEL);
+--
+2.22.0
+
diff --git a/patches.arch/platform-x86-intel_turbo_max_3-Remove-restriction-fo.patch b/patches.arch/platform-x86-intel_turbo_max_3-Remove-restriction-fo.patch
new file mode 100644
index 0000000000..0c7228f4af
--- /dev/null
+++ b/patches.arch/platform-x86-intel_turbo_max_3-Remove-restriction-fo.patch
@@ -0,0 +1,37 @@
+From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
+Date: Mon, 12 Feb 2018 11:50:47 -0800
+Subject: platform/x86: intel_turbo_max_3: Remove restriction for HWP platforms
+Patch-mainline: v4.17-rc1
+Git-commit: 04e4e888558ebe5d9701e31bba61d4e256ab71a8
+References: jsc#SLE-5439
+
+On systems supporting HWP (Hardware P-States) mode, we expected to
+enumerate core priority via ACPI-CPPC tables. Unfortunately deployment of
+TURBO 3.0 didn't use this method to show core priority. So users are not
+able to utilize this feature in HWP mode.
+
+So remove the loading restriction of this driver for HWP enabled systems.
+Even if there are some systems, which are providing the core priority via
+ACPI CPPC, this shouldn't cause any conflict as the source of priority
+definition is same.
+
+Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
+Reported-and-tested-and-reviewed-by: Arjan van de Ven <arjan@linux.intel.com>
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Acked-by: Giovanni Gherdovich <ggherdovich@suse.cz>
+---
+ drivers/platform/x86/intel_turbo_max_3.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/platform/x86/intel_turbo_max_3.c
++++ b/drivers/platform/x86/intel_turbo_max_3.c
+@@ -137,9 +137,6 @@ static int __init itmt_legacy_init(void)
+ if (!id)
+ return -ENODEV;
+
+- if (boot_cpu_has(X86_FEATURE_HWP))
+- return -ENODEV;
+-
+ ret = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
+ "platform/x86/turbo_max_3:online",
+ itmt_legacy_cpu_online, NULL);
diff --git a/patches.arch/powerpc-mm-Consolidate-numa_enable-check-and-min_com.patch b/patches.arch/powerpc-mm-Consolidate-numa_enable-check-and-min_com.patch
new file mode 100644
index 0000000000..f87ca8beca
--- /dev/null
+++ b/patches.arch/powerpc-mm-Consolidate-numa_enable-check-and-min_com.patch
@@ -0,0 +1,83 @@
+From 495c2ff4c88108d1f7730dd0966d4f8b03f0046e Mon Sep 17 00:00:00 2001
+From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
+Date: Mon, 1 Jul 2019 20:06:26 +0530
+Subject: [PATCH] powerpc/mm: Consolidate numa_enable check and
+ min_common_depth check
+
+References: bsc#1140322 LTC#176270
+Patch-mainline: v5.3-rc1
+Git-commit: 495c2ff4c88108d1f7730dd0966d4f8b03f0046e
+
+If we fail to parse min_common_depth from device tree we boot with
+numa disabled. Reflect the same by updating numa_enabled variable
+to false. Also, switch all min_common_depth failure check to
+if (!numa_enabled) check.
+
+This helps us to avoid checking for both in different code paths.
+
+Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/mm/numa.c | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
+index a62bc9861e4e..9ff2987c13cf 100644
+--- a/arch/powerpc/mm/numa.c
++++ b/arch/powerpc/mm/numa.c
+@@ -232,7 +232,7 @@ static int associativity_to_nid(const __be32 *associativity)
+ {
+ int nid = NUMA_NO_NODE;
+
+- if (min_common_depth == -1 || !numa_enabled)
++ if (!numa_enabled)
+ goto out;
+
+ if (of_read_number(associativity, 1) >= min_common_depth)
+@@ -648,8 +648,14 @@ static int __init parse_numa_properties(void)
+
+ min_common_depth = find_min_common_depth();
+
+- if (min_common_depth < 0)
++ if (min_common_depth < 0) {
++ /*
++ * if we fail to parse min_common_depth from device tree
++ * mark the numa disabled, boot with numa disabled.
++ */
++ numa_enabled = false;
+ return min_common_depth;
++ }
+
+ dbg("NUMA associativity depth for CPU/Memory: %d\n", min_common_depth);
+
+@@ -765,7 +771,7 @@ void __init dump_numa_cpu_topology(void)
+ unsigned int node;
+ unsigned int cpu, count;
+
+- if (min_common_depth == -1 || !numa_enabled)
++ if (!numa_enabled)
+ return;
+
+ for_each_online_node(node) {
+@@ -830,7 +836,7 @@ static void __init find_possible_nodes(void)
+ struct device_node *rtas;
+ u32 numnodes, i;
+
+- if (min_common_depth <= 0 || !numa_enabled)
++ if (!numa_enabled)
+ return;
+
+ rtas = of_find_node_by_path("/rtas");
+@@ -1032,7 +1038,7 @@ int hot_add_scn_to_nid(unsigned long scn_addr)
+ struct device_node *memory = NULL;
+ int nid;
+
+- if (!numa_enabled || (min_common_depth < 0))
++ if (!numa_enabled)
+ return first_online_node;
+
+ memory = of_find_node_by_path("/ibm,dynamic-reconfiguration-memory");
+--
+2.22.0
+
diff --git a/patches.arch/powerpc-mm-Fix-node-look-up-with-numa-off-boot.patch b/patches.arch/powerpc-mm-Fix-node-look-up-with-numa-off-boot.patch
new file mode 100644
index 0000000000..2e5900e6e7
--- /dev/null
+++ b/patches.arch/powerpc-mm-Fix-node-look-up-with-numa-off-boot.patch
@@ -0,0 +1,91 @@
+From f52741c410cfb76582df21f02e4c062ee732b882 Mon Sep 17 00:00:00 2001
+From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
+Date: Mon, 1 Jul 2019 20:06:25 +0530
+Subject: [PATCH] powerpc/mm: Fix node look up with numa=off boot
+
+References: bsc#1140322 LTC#176270
+Patch-mainline: v5.3-rc1
+Git-commit: f52741c410cfb76582df21f02e4c062ee732b882
+
+If we boot with numa=off, we need to make sure we return NUMA_NO_NODE when
+looking up associativity details of resources. Without this, we hit crash
+like below
+
+BUG: Unable to handle kernel data access at 0x40000000008
+Faulting instruction address: 0xc000000008f31704
+cpu 0x1b: Vector: 380 (Data SLB Access) at [c00000000b9bb320]
+ pc: c000000008f31704: _raw_spin_lock+0x14/0x100
+ lr: c0000000083f41fc: ____cache_alloc_node+0x5c/0x290
+ sp: c00000000b9bb5b0
+ msr: 800000010280b033
+ dar: 40000000008
+ current = 0xc00000000b9a2700
+ paca = 0xc00000000a740c00 irqmask: 0x03 irq_happened: 0x01
+ pid = 1, comm = swapper/27
+Linux version 5.2.0-rc4-00925-g74e188c620b1 (root@linux-d8ip) (gcc version 7.4.1 20190424 [gcc-7-branch revision 270538] (SUSE Linux)) #34 SMP Sat Jun 29 00:41:02 EDT 2019
+enter ? for help
+[link register ] c0000000083f41fc ____cache_alloc_node+0x5c/0x290
+[c00000000b9bb5b0] 0000000000000dc0 (unreliable)
+[c00000000b9bb5f0] c0000000083f48c8 kmem_cache_alloc_node_trace+0x138/0x360
+[c00000000b9bb670] c000000008aa789c devres_alloc_node+0x4c/0xa0
+[c00000000b9bb6a0] c000000008337218 devm_memremap+0x58/0x130
+[c00000000b9bb6f0] c000000008aed00c devm_nsio_enable+0xdc/0x170
+[c00000000b9bb780] c000000008af3b6c nd_pmem_probe+0x4c/0x180
+[c00000000b9bb7b0] c000000008ad84cc nvdimm_bus_probe+0xac/0x260
+[c00000000b9bb840] c000000008aa0628 really_probe+0x148/0x500
+[c00000000b9bb8d0] c000000008aa0d7c driver_probe_device+0x19c/0x1d0
+[c00000000b9bb950] c000000008aa11bc device_driver_attach+0xcc/0x100
+[c00000000b9bb990] c000000008aa12ec __driver_attach+0xfc/0x1e0
+[c00000000b9bba10] c000000008a9d0a4 bus_for_each_dev+0xb4/0x130
+[c00000000b9bba70] c000000008a9fc04 driver_attach+0x34/0x50
+[c00000000b9bba90] c000000008a9f118 bus_add_driver+0x1d8/0x300
+[c00000000b9bbb20] c000000008aa2358 driver_register+0x98/0x1a0
+[c00000000b9bbb90] c000000008ad7e6c __nd_driver_register+0x5c/0x100
+[c00000000b9bbbf0] c0000000093efbac nd_pmem_driver_init+0x34/0x48
+[c00000000b9bbc10] c0000000080106c0 do_one_initcall+0x60/0x2d0
+[c00000000b9bbce0] c00000000938463c kernel_init_freeable+0x384/0x48c
+[c00000000b9bbdb0] c000000008010a5c kernel_init+0x2c/0x160
+[c00000000b9bbe20] c00000000800ba54 ret_from_kernel_thread+0x5c/0x68
+
+Reported-and-debugged-by: Vaibhav Jain <vaibhav@linux.ibm.com>
+Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/mm/numa.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
+index b1ecfb850b5a..a62bc9861e4e 100644
+--- a/arch/powerpc/mm/numa.c
++++ b/arch/powerpc/mm/numa.c
+@@ -232,7 +232,7 @@ static int associativity_to_nid(const __be32 *associativity)
+ {
+ int nid = NUMA_NO_NODE;
+
+- if (min_common_depth == -1)
++ if (min_common_depth == -1 || !numa_enabled)
+ goto out;
+
+ if (of_read_number(associativity, 1) >= min_common_depth)
+@@ -440,7 +440,7 @@ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
+ int nid = default_nid;
+ int rc, index;
+
+- if (min_common_depth < 0)
++ if ((min_common_depth < 0) || !numa_enabled)
+ return default_nid;
+
+ rc = of_get_assoc_arrays(&aa);
+@@ -830,7 +830,7 @@ static void __init find_possible_nodes(void)
+ struct device_node *rtas;
+ u32 numnodes, i;
+
+- if (min_common_depth <= 0)
++ if (min_common_depth <= 0 || !numa_enabled)
+ return;
+
+ rtas = of_find_node_by_path("/rtas");
+--
+2.22.0
+
diff --git a/patches.arch/powerpc-mm-drconf-Use-NUMA_NO_NODE-on-failures-inste.patch b/patches.arch/powerpc-mm-drconf-Use-NUMA_NO_NODE-on-failures-inste.patch
new file mode 100644
index 0000000000..fa7fef7355
--- /dev/null
+++ b/patches.arch/powerpc-mm-drconf-Use-NUMA_NO_NODE-on-failures-inste.patch
@@ -0,0 +1,52 @@
+From ea9f5b702fe0215188fba2eda117419e4ae90a67 Mon Sep 17 00:00:00 2001
+From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
+Date: Mon, 1 Jul 2019 20:06:24 +0530
+Subject: [PATCH] powerpc/mm/drconf: Use NUMA_NO_NODE on failures instead of
+ node 0
+
+References: bsc#1140322 LTC#176270
+Patch-mainline: v5.3-rc1
+Git-commit: ea9f5b702fe0215188fba2eda117419e4ae90a67
+
+If we fail to parse the associativity array we should default to
+NUMA_NO_NODE instead of NODE 0. Rest of the code fallback to the
+right default if we find the numa node value NUMA_NO_NODE.
+
+Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Acked-by: Michal Suchanek <msuchanek@suse.de>
+---
+ arch/powerpc/mm/numa.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
+index 26f479e6c8ed..b1ecfb850b5a 100644
+--- a/arch/powerpc/mm/numa.c
++++ b/arch/powerpc/mm/numa.c
+@@ -436,17 +436,19 @@ static int of_get_assoc_arrays(struct assoc_arrays *aa)
+ static int of_drconf_to_nid_single(struct drmem_lmb *lmb)
+ {
+ struct assoc_arrays aa = { .arrays = NULL };
+- int default_nid = 0;
++ int default_nid = NUMA_NO_NODE;
+ int nid = default_nid;
+ int rc, index;
+
++ if (min_common_depth < 0)
++ return default_nid;
++
+ rc = of_get_assoc_arrays(&aa);
+ if (rc)
+ return default_nid;
+
+- if (min_common_depth > 0 && min_common_depth <= aa.array_sz &&
+- !(lmb->flags & DRCONF_MEM_AI_INVALID) &&
+- lmb->aa_index < aa.n_arrays) {
++ if (min_common_depth <= aa.array_sz &&
++ !(lmb->flags & DRCONF_MEM_AI_INVALID) && lmb->aa_index < aa.n_arrays) {
+ index = lmb->aa_index * aa.array_sz + min_common_depth - 1;
+ nid = of_read_number(&aa.arrays[index], 1);
+
+--
+2.22.0
+
diff --git a/patches.drivers/ALSA-usb-audio-Add-quirk-for-Focusrite-Scarlett-Solo.patch b/patches.drivers/ALSA-usb-audio-Add-quirk-for-Focusrite-Scarlett-Solo.patch
new file mode 100644
index 0000000000..668e2bc4a5
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-Add-quirk-for-Focusrite-Scarlett-Solo.patch
@@ -0,0 +1,131 @@
+From 46f5710f0b8829882faea735149d86250db5d0e5 Mon Sep 17 00:00:00 2001
+From: Roope Salmi <rpsalmi@gmail.com>
+Date: Sun, 14 Apr 2019 14:13:06 +0300
+Subject: [PATCH] ALSA: usb-audio: Add quirk for Focusrite Scarlett Solo
+Git-commit: 46f5710f0b8829882faea735149d86250db5d0e5
+Patch-mainline: v5.2-rc1
+References: bsc#1051510
+
+The device reports Synch: Synchronous on the playback interface.
+This causes regular audible napping on sample rates that are not multiples
+of 1 kHz. Fix to Synch: Asynchronous.
+
+Specifically observed on Focusrite Scarlett Solo 2nd generation. I assume
+the first generation model has a different device ID. A first generation
+Scarlett 2i2 I was able to test advertised Synch: Asynchronous by default.
+
+For example, with a sample rate of 44100 Hz, a silent sample is played
+every 40.96 seconds (likely 44.0 samples instead of 44.1 transmitted per
+USB frame on average, 4096 being the size of some internal buffer).
+There may be some other bug at play here since this doesn't happen
+on other platforms. However, a feedback endpoint is listed and using it
+fixes the issue. That is the only change in the quirk,
+but I didn't find a way to declare only it.
+
+Tested on two units and on two different computers.
+
+Signed-off-by: Roope Salmi <rpsalmi@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/quirks-table.h | 84 ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 84 insertions(+)
+
+diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
+index 86e80916a029..629b84532648 100644
+--- a/sound/usb/quirks-table.h
++++ b/sound/usb/quirks-table.h
+@@ -2770,6 +2770,90 @@ YAMAHA_DEVICE(0x7010, "UB99"),
+ .type = QUIRK_MIDI_NOVATION
+ }
+ },
++{
++ /*
++ * Focusrite Scarlett Solo 2nd generation
++ * Reports that playback should use Synch: Synchronous
++ * while still providing a feedback endpoint. Synchronous causes
++ * snapping on some sample rates.
++ * Force it to use Synch: Asynchronous.
++ */
++ USB_DEVICE(0x1235, 0x8205),
++ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
++ .ifnum = QUIRK_ANY_INTERFACE,
++ .type = QUIRK_COMPOSITE,
++ .data = (const struct snd_usb_audio_quirk[]) {
++ {
++ .ifnum = 1,
++ .type = QUIRK_AUDIO_FIXED_ENDPOINT,
++ .data = & (const struct audioformat) {
++ .formats = SNDRV_PCM_FMTBIT_S32_LE,
++ .channels = 2,
++ .iface = 1,
++ .altsetting = 1,
++ .altset_idx = 1,
++ .attributes = 0,
++ .endpoint = 0x01,
++ .ep_attr = USB_ENDPOINT_XFER_ISOC |
++ USB_ENDPOINT_SYNC_ASYNC,
++ .protocol = UAC_VERSION_2,
++ .rates = SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000 |
++ SNDRV_PCM_RATE_88200 |
++ SNDRV_PCM_RATE_96000 |
++ SNDRV_PCM_RATE_176400 |
++ SNDRV_PCM_RATE_192000,
++ .rate_min = 44100,
++ .rate_max = 192000,
++ .nr_rates = 6,
++ .rate_table = (unsigned int[]) {
++ 44100, 48000, 88200,
++ 96000, 176400, 192000
++ },
++ .clock = 41
++ }
++ },
++ {
++ .ifnum = 2,
++ .type = QUIRK_AUDIO_FIXED_ENDPOINT,
++ .data = & (const struct audioformat) {
++ .formats = SNDRV_PCM_FMTBIT_S32_LE,
++ .channels = 2,
++ .iface = 2,
++ .altsetting = 1,
++ .altset_idx = 1,
++ .attributes = 0,
++ .endpoint = 0x82,
++ .ep_attr = USB_ENDPOINT_XFER_ISOC |
++ USB_ENDPOINT_SYNC_ASYNC |
++ USB_ENDPOINT_USAGE_IMPLICIT_FB,
++ .protocol = UAC_VERSION_2,
++ .rates = SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000 |
++ SNDRV_PCM_RATE_88200 |
++ SNDRV_PCM_RATE_96000 |
++ SNDRV_PCM_RATE_176400 |
++ SNDRV_PCM_RATE_192000,
++ .rate_min = 44100,
++ .rate_max = 192000,
++ .nr_rates = 6,
++ .rate_table = (unsigned int[]) {
++ 44100, 48000, 88200,
++ 96000, 176400, 192000
++ },
++ .clock = 41
++ }
++ },
++ {
++ .ifnum = 3,
++ .type = QUIRK_IGNORE_INTERFACE
++ },
++ {
++ .ifnum = -1
++ }
++ }
++ }
++},
+
+ /* Access Music devices */
+ {
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-usb-audio-Add-quirk-for-MOTU-MicroBook-II.patch b/patches.drivers/ALSA-usb-audio-Add-quirk-for-MOTU-MicroBook-II.patch
new file mode 100644
index 0000000000..aa3cfc8e10
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-Add-quirk-for-MOTU-MicroBook-II.patch
@@ -0,0 +1,254 @@
+From a634090a0f242caa8ebc91967b118995a80eb13b Mon Sep 17 00:00:00 2001
+From: Manuel Reinhardt <manuel.rhdt@gmail.com>
+Date: Thu, 28 Feb 2019 20:34:04 +0100
+Subject: [PATCH] ALSA: usb-audio: Add quirk for MOTU MicroBook II
+Git-commit: a634090a0f242caa8ebc91967b118995a80eb13b
+Patch-mainline: v5.1-rc1
+References: bsc#1051510
+
+Add an entry to the quirks-table to for usb-audio to recognize the
+Microbook II (although it only exposes vendor interfaces). A simple boot
+quirk is also implemented to set up the sample rate and make sure that
+no audio urbs are sent before the device is ready.
+
+This patch only provides audio playback and capture at 96kHz sample
+rate. Notice the following shortcomings:
+
+- The sample rate is currently hardcoded to 96k although the device also
+ supports 48k and 44.1k.
+
+- The various mixer controls of the MicroBook are not made available.
+
+- The keep-iface control should be on by default because the device
+ shuts down whenever the altsetting is reset which is usually unwanted.
+ (I don't know the best way to do this)
+
+- The communication format used by the MicroBook for sample rate setting
+ and also other setup has been reverse engineered by looking at the
+ usbmon output while running the windows driver through virtualbox. In
+ this patch the first byte of every message is set to \0 while in the
+ observed communications the first byte acts as a "message-counter"
+ increasing its value with every message sent. Leaving it at \0 does
+ not seem to affect the device.
+
+Signed-off-by: Manuel Reinhardt <manuel.rhdt@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/pcm.c | 4 ++
+ sound/usb/quirks-table.h | 65 ++++++++++++++++++++++++++++++
+ sound/usb/quirks.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 170 insertions(+)
+
+diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
+index db114f3977e0..056af0a57b22 100644
+--- a/sound/usb/pcm.c
++++ b/sound/usb/pcm.c
+@@ -354,6 +354,10 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
+ ep = 0x81;
+ ifnum = 1;
+ goto add_sync_ep_from_ifnum;
++ case USB_ID(0x07fd, 0x0004): /* MOTU MicroBook II */
++ ep = 0x84;
++ ifnum = 0;
++ goto add_sync_ep_from_ifnum;
+ }
+
+ if (attr == USB_ENDPOINT_SYNC_ASYNC &&
+diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
+index b345beb447bd..86e80916a029 100644
+--- a/sound/usb/quirks-table.h
++++ b/sound/usb/quirks-table.h
+@@ -3398,5 +3398,70 @@ AU0828_DEVICE(0x2040, 0x7270, "Hauppauge", "HVR-950Q"),
+ .ifnum = QUIRK_NO_INTERFACE
+ }
+ },
++/* MOTU Microbook II */
++{
++ USB_DEVICE(0x07fd, 0x0004),
++ .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
++ .vendor_name = "MOTU",
++ .product_name = "MicroBookII",
++ .ifnum = QUIRK_ANY_INTERFACE,
++ .type = QUIRK_COMPOSITE,
++ .data = (const struct snd_usb_audio_quirk[]) {
++ {
++ .ifnum = 0,
++ .type = QUIRK_AUDIO_STANDARD_MIXER,
++ },
++ {
++ .ifnum = 0,
++ .type = QUIRK_AUDIO_FIXED_ENDPOINT,
++ .data = &(const struct audioformat) {
++ .formats = SNDRV_PCM_FMTBIT_S24_3BE,
++ .channels = 6,
++ .iface = 0,
++ .altsetting = 1,
++ .altset_idx = 1,
++ .attributes = 0,
++ .endpoint = 0x84,
++ .rates = SNDRV_PCM_RATE_96000,
++ .ep_attr = USB_ENDPOINT_XFER_ISOC |
++ USB_ENDPOINT_SYNC_ASYNC,
++ .rate_min = 96000,
++ .rate_max = 96000,
++ .nr_rates = 1,
++ .maxpacksize = 0x00d8,
++ .rate_table = (unsigned int[]) {
++ 96000
++ }
++ }
++ },
++ {
++ .ifnum = 0,
++ .type = QUIRK_AUDIO_FIXED_ENDPOINT,
++ .data = &(const struct audioformat) {
++ .formats = SNDRV_PCM_FMTBIT_S24_3BE,
++ .channels = 8,
++ .iface = 0,
++ .altsetting = 1,
++ .altset_idx = 1,
++ .attributes = 0,
++ .endpoint = 0x03,
++ .rates = SNDRV_PCM_RATE_96000,
++ .ep_attr = USB_ENDPOINT_XFER_ISOC |
++ USB_ENDPOINT_SYNC_ASYNC,
++ .rate_min = 96000,
++ .rate_max = 96000,
++ .nr_rates = 1,
++ .maxpacksize = 0x0120,
++ .rate_table = (unsigned int[]) {
++ 96000
++ }
++ }
++ },
++ {
++ .ifnum = -1
++ }
++ }
++ }
++},
+
+ #undef USB_DEVICE_VENDOR_SPEC
+diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
+index f372c624bbf4..e6ce1bbe6ca6 100644
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1000,6 +1000,105 @@ static int snd_usb_axefx3_boot_quirk(struct usb_device *dev)
+ return 0;
+ }
+
++
++#define MICROBOOK_BUF_SIZE 128
++
++static int snd_usb_motu_microbookii_communicate(struct usb_device *dev, u8 *buf,
++ int buf_size, int *length)
++{
++ int err, actual_length;
++
++ err = usb_interrupt_msg(dev, usb_sndintpipe(dev, 0x01), buf, *length,
++ &actual_length, 1000);
++ if (err < 0)
++ return err;
++
++ print_hex_dump(KERN_DEBUG, "MicroBookII snd: ", DUMP_PREFIX_NONE, 16, 1,
++ buf, actual_length, false);
++
++ memset(buf, 0, buf_size);
++
++ err = usb_interrupt_msg(dev, usb_rcvintpipe(dev, 0x82), buf, buf_size,
++ &actual_length, 1000);
++ if (err < 0)
++ return err;
++
++ print_hex_dump(KERN_DEBUG, "MicroBookII rcv: ", DUMP_PREFIX_NONE, 16, 1,
++ buf, actual_length, false);
++
++ *length = actual_length;
++ return 0;
++}
++
++static int snd_usb_motu_microbookii_boot_quirk(struct usb_device *dev)
++{
++ int err, actual_length, poll_attempts = 0;
++ static const u8 set_samplerate_seq[] = { 0x00, 0x00, 0x00, 0x00,
++ 0x00, 0x00, 0x0b, 0x14,
++ 0x00, 0x00, 0x00, 0x01 };
++ static const u8 poll_ready_seq[] = { 0x00, 0x04, 0x00, 0x00,
++ 0x00, 0x00, 0x0b, 0x18 };
++ u8 *buf = kzalloc(MICROBOOK_BUF_SIZE, GFP_KERNEL);
++
++ if (!buf)
++ return -ENOMEM;
++
++ dev_info(&dev->dev, "Waiting for MOTU Microbook II to boot up...\n");
++
++ /* First we tell the device which sample rate to use. */
++ memcpy(buf, set_samplerate_seq, sizeof(set_samplerate_seq));
++ actual_length = sizeof(set_samplerate_seq);
++ err = snd_usb_motu_microbookii_communicate(dev, buf, MICROBOOK_BUF_SIZE,
++ &actual_length);
++
++ if (err < 0) {
++ dev_err(&dev->dev,
++ "failed setting the sample rate for Motu MicroBook II: %d\n",
++ err);
++ goto free_buf;
++ }
++
++ /* Then we poll every 100 ms until the device informs of its readiness. */
++ while (true) {
++ if (++poll_attempts > 100) {
++ dev_err(&dev->dev,
++ "failed booting Motu MicroBook II: timeout\n");
++ err = -ENODEV;
++ goto free_buf;
++ }
++
++ memset(buf, 0, MICROBOOK_BUF_SIZE);
++ memcpy(buf, poll_ready_seq, sizeof(poll_ready_seq));
++
++ actual_length = sizeof(poll_ready_seq);
++ err = snd_usb_motu_microbookii_communicate(
++ dev, buf, MICROBOOK_BUF_SIZE, &actual_length);
++ if (err < 0) {
++ dev_err(&dev->dev,
++ "failed booting Motu MicroBook II: communication error %d\n",
++ err);
++ goto free_buf;
++ }
++
++ /* the device signals its readiness through a message of the
++ * form
++ * XX 06 00 00 00 00 0b 18 00 00 00 01
++ * If the device is not yet ready to accept audio data, the
++ * last byte of that sequence is 00.
++ */
++ if (actual_length == 12 && buf[actual_length - 1] == 1)
++ break;
++
++ msleep(100);
++ }
++
++ dev_info(&dev->dev, "MOTU MicroBook II ready\n");
++
++free_buf:
++ kfree(buf);
++ return err;
++}
++
+ /*
+ * Setup quirks
+ */
+@@ -1177,6 +1276,8 @@ int snd_usb_apply_boot_quirk(struct usb_device *dev,
+ return snd_usb_gamecon780_boot_quirk(dev);
+ case USB_ID(0x2466, 0x8010): /* Fractal Audio Axe-Fx 3 */
+ return snd_usb_axefx3_boot_quirk(dev);
++ case USB_ID(0x07fd, 0x0004): /* MOTU MicroBook II */
++ return snd_usb_motu_microbookii_boot_quirk(dev);
+ }
+
+ return 0;
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-usb-audio-Cleanup-DSD-whitelist.patch b/patches.drivers/ALSA-usb-audio-Cleanup-DSD-whitelist.patch
new file mode 100644
index 0000000000..51b45de55b
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-Cleanup-DSD-whitelist.patch
@@ -0,0 +1,74 @@
+From 202e69e645545e8dcec5e239658125276a7a315a Mon Sep 17 00:00:00 2001
+From: Jussi Laako <jussi@sonarnerd.net>
+Date: Tue, 29 Jan 2019 00:47:01 +0200
+Subject: [PATCH] ALSA: usb-audio: Cleanup DSD whitelist
+Git-commit: 202e69e645545e8dcec5e239658125276a7a315a
+Patch-mainline: v5.1-rc1
+References: bsc#1051510
+
+XMOS/Thesycon family of USB Audio Class firmware flags DSD altsetting
+separate from the PCM ones. Thus the DSD altsetting can be auto-detected
+based on the flag and doesn't need maintaining specific altsetting
+whitelist.
+
+In addition, static VID:PID-to-altsetting whitelisting causes problems
+when firmware update changes the altsetting, or same VID:PID is reused
+for another device that has different kind of firmware.
+
+This patch removes existing explicit whitelist mappings for XMOS VID
+(0x20b1) and Thesycon VID (0x152a).
+
+Also corrects placement of Hegel HD12 and NuPrime DAC-10 to keep list
+sorted based on VID.
+
+Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/quirks.c | 18 ++----------------
+ 1 file changed, 2 insertions(+), 16 deletions(-)
+
+diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
+index bb8372833fc2..ef67d19117c4 100644
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1479,10 +1479,6 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
+ /* XMOS based USB DACs */
+ switch (chip->usb_id) {
+ case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */
+- case USB_ID(0x20b1, 0x0002): /* Wyred 4 Sound DAC-2 DSD */
+- case USB_ID(0x20b1, 0x2004): /* Matrix Audio X-SPDIF 2 */
+- case USB_ID(0x20b1, 0x2008): /* Matrix Audio X-Sabre */
+- case USB_ID(0x20b1, 0x300a): /* Matrix Audio Mini-i Pro */
+ case USB_ID(0x22d9, 0x0416): /* OPPO HA-1 */
+ case USB_ID(0x22d9, 0x0436): /* OPPO Sonica */
+ case USB_ID(0x22d9, 0x0461): /* OPPO UDP-205 */
+@@ -1492,23 +1488,13 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
+ return SNDRV_PCM_FMTBIT_DSD_U32_BE;
+ break;
+
+- case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */
+- case USB_ID(0x152a, 0x85de): /* SMSL D1 DAC */
+- case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
+ case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */
++ case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */
+ case USB_ID(0x16b0, 0x06b2): /* NuPrime DAC-10 */
++ case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
+ case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */
+ case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */
+ case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */
+- case USB_ID(0x20b1, 0x000a): /* Gustard DAC-X20U */
+- case USB_ID(0x20b1, 0x2005): /* Denafrips Ares DAC */
+- case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
+- case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
+- case USB_ID(0x20b1, 0x3021): /* Eastern El. MiniMax Tube DAC Supreme */
+- case USB_ID(0x20b1, 0x3023): /* Aune X1S 32BIT/384 DSD DAC */
+- case USB_ID(0x20b1, 0x302d): /* Unison Research Unico CD Due */
+- case USB_ID(0x20b1, 0x307b): /* CH Precision C1 DAC */
+- case USB_ID(0x20b1, 0x3086): /* Singxer F-1 converter board */
+ case USB_ID(0x22d9, 0x0426): /* OPPO HA-2 */
+ case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */
+ case USB_ID(0x249c, 0x9326): /* M2Tech Young MkIII */
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-usb-audio-Enable-.product_name-override-for-Ema.patch b/patches.drivers/ALSA-usb-audio-Enable-.product_name-override-for-Ema.patch
new file mode 100644
index 0000000000..fee7e3ff0b
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-Enable-.product_name-override-for-Ema.patch
@@ -0,0 +1,40 @@
+From 861bee5adc8be511a93e949a338d35974fbdf10b Mon Sep 17 00:00:00 2001
+From: Stefan Sauer <ensonic@google.com>
+Date: Mon, 10 Jun 2019 11:51:46 +0200
+Subject: [PATCH] ALSA: usb-audio: Enable .product_name override for Emagic, Unitor 8.
+Git-commit: 861bee5adc8be511a93e949a338d35974fbdf10b
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The Emagic Unitor 8 does not provide iManufacturer and iProduct fields
+in its device descriptor. These fields are used by alsa to make build the
+device name. Thus uncomment the .product-name in the quirks-table.
+
+Without this change the device shows up as 'USB Device 0x86a:0x01'.
+
+Output of lsusb and amidi:
+https://gist.github.com/ensonic/7820a102e91f31575be355da2b6b33bc
+
+Signed-off-by: Stefan Sauer <ensonic@google.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/quirks-table.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
+index 5600143ff660..5fd748c4eb30 100644
+--- a/sound/usb/quirks-table.h
++++ b/sound/usb/quirks-table.h
+@@ -2422,7 +2422,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
+ USB_DEVICE(0x086a, 0x0001),
+ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
+ .vendor_name = "Emagic",
+- /* .product_name = "Unitor8", */
++ .product_name = "Unitor8",
+ .ifnum = 2,
+ .type = QUIRK_MIDI_EMAGIC,
+ .data = & (const struct snd_usb_midi_endpoint_info) {
+--
+2.16.4
+
diff --git a/patches.drivers/ALSA-usb-audio-Sanity-checks-for-each-pipe-and-EP-ty.patch b/patches.drivers/ALSA-usb-audio-Sanity-checks-for-each-pipe-and-EP-ty.patch
new file mode 100644
index 0000000000..13f2a88c01
--- /dev/null
+++ b/patches.drivers/ALSA-usb-audio-Sanity-checks-for-each-pipe-and-EP-ty.patch
@@ -0,0 +1,133 @@
+From 801ebf1043ae7b182588554cc9b9ad3c14bc2ab5 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 24 Jun 2019 15:08:28 +0200
+Subject: [PATCH] ALSA: usb-audio: Sanity checks for each pipe and EP types
+Git-commit: 801ebf1043ae7b182588554cc9b9ad3c14bc2ab5
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The recent USB core code performs sanity checks for the given pipe and
+EP types, and it can be hit by manipulated USB descriptors by syzbot.
+For making syzbot happier, this patch introduces a local helper for a
+sanity check in the driver side and calls it at each place before the
+message handling, so that we can avoid the WARNING splats.
+
+Reported-by: syzbot+d952e5e28f5fb7718d23@syzkaller.appspotmail.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ sound/usb/helper.c | 17 +++++++++++++++++
+ sound/usb/helper.h | 1 +
+ sound/usb/quirks.c | 18 +++++++++++++++---
+ 3 files changed, 33 insertions(+), 3 deletions(-)
+
+diff --git a/sound/usb/helper.c b/sound/usb/helper.c
+index 7712e2b84183..b1cc9499c57e 100644
+--- a/sound/usb/helper.c
++++ b/sound/usb/helper.c
+@@ -76,6 +76,20 @@ void *snd_usb_find_csint_desc(void *buffer, int buflen, void *after, u8 dsubtype
+ return NULL;
+ }
+
++/* check the validity of pipe and EP types */
++int snd_usb_pipe_sanity_check(struct usb_device *dev, unsigned int pipe)
++{
++ static const int pipetypes[4] = {
++ PIPE_CONTROL, PIPE_ISOCHRONOUS, PIPE_BULK, PIPE_INTERRUPT
++ };
++ struct usb_host_endpoint *ep;
++
++ ep = usb_pipe_endpoint(dev, pipe);
++ if (usb_pipetype(pipe) != pipetypes[usb_endpoint_type(&ep->desc)])
++ return -EINVAL;
++ return 0;
++}
++
+ /*
+ * Wrapper for usb_control_msg().
+ * Allocates a temp buffer to prevent dmaing from/to the stack.
+@@ -88,6 +102,9 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
+ void *buf = NULL;
+ int timeout;
+
++ if (snd_usb_pipe_sanity_check(dev, pipe))
++ return -EINVAL;
++
+ if (size > 0) {
+ buf = kmemdup(data, size, GFP_KERNEL);
+ if (!buf)
+diff --git a/sound/usb/helper.h b/sound/usb/helper.h
+index d338bd0e0ca6..6afb70156ec4 100644
+--- a/sound/usb/helper.h
++++ b/sound/usb/helper.h
+@@ -7,6 +7,7 @@ unsigned int snd_usb_combine_bytes(unsigned char *bytes, int size);
+ void *snd_usb_find_desc(void *descstart, int desclen, void *after, u8 dtype);
+ void *snd_usb_find_csint_desc(void *descstart, int desclen, void *after, u8 dsubtype);
+
++int snd_usb_pipe_sanity_check(struct usb_device *dev, unsigned int pipe);
+ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe,
+ __u8 request, __u8 requesttype, __u16 value, __u16 index,
+ void *data, __u16 size);
+diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
+index e6ce1bbe6ca6..057143330a28 100644
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -840,11 +840,13 @@ static int snd_usb_novation_boot_quirk(struct usb_device *dev)
+ static int snd_usb_accessmusic_boot_quirk(struct usb_device *dev)
+ {
+ int err, actual_length;
+-
+ /* "midi send" enable */
+ static const u8 seq[] = { 0x4e, 0x73, 0x52, 0x01 };
++ void *buf;
+
+- void *buf = kmemdup(seq, ARRAY_SIZE(seq), GFP_KERNEL);
++ if (snd_usb_pipe_sanity_check(dev, usb_sndintpipe(dev, 0x05)))
++ return -EINVAL;
++ buf = kmemdup(seq, ARRAY_SIZE(seq), GFP_KERNEL);
+ if (!buf)
+ return -ENOMEM;
+ err = usb_interrupt_msg(dev, usb_sndintpipe(dev, 0x05), buf,
+@@ -869,7 +871,11 @@ static int snd_usb_accessmusic_boot_quirk(struct usb_device *dev)
+
+ static int snd_usb_nativeinstruments_boot_quirk(struct usb_device *dev)
+ {
+- int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
++ int ret;
++
++ if (snd_usb_pipe_sanity_check(dev, usb_sndctrlpipe(dev, 0)))
++ return -EINVAL;
++ ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+ 0xaf, USB_TYPE_VENDOR | USB_RECIP_DEVICE,
+ 1, 0, NULL, 0, 1000);
+
+@@ -976,6 +982,8 @@ static int snd_usb_axefx3_boot_quirk(struct usb_device *dev)
+
+ dev_dbg(&dev->dev, "Waiting for Axe-Fx III to boot up...\n");
+
++ if (snd_usb_pipe_sanity_check(dev, usb_sndctrlpipe(dev, 0)))
++ return -EINVAL;
+ /* If the Axe-Fx III has not fully booted, it will timeout when trying
+ * to enable the audio streaming interface. A more generous timeout is
+ * used here to detect when the Axe-Fx III has finished booting as the
+@@ -1008,6 +1016,8 @@ static int snd_usb_motu_microbookii_communicate(struct usb_device *dev, u8 *buf,
+ {
+ int err, actual_length;
+
++ if (snd_usb_pipe_sanity_check(dev, usb_sndintpipe(dev, 0x01)))
++ return -EINVAL;
+ err = usb_interrupt_msg(dev, usb_sndintpipe(dev, 0x01), buf, *length,
+ &actual_length, 1000);
+ if (err < 0)
+@@ -1018,6 +1028,8 @@ static int snd_usb_motu_microbookii_communicate(struct usb_device *dev, u8 *buf,
+
+ memset(buf, 0, buf_size);
+
++ if (snd_usb_pipe_sanity_check(dev, usb_rcvintpipe(dev, 0x82)))
++ return -EINVAL;
+ err = usb_interrupt_msg(dev, usb_rcvintpipe(dev, 0x82), buf, buf_size,
+ &actual_length, 1000);
+ if (err < 0)
+--
+2.16.4
+
diff --git a/patches.drivers/PCI-Always-allow-probing-with-driver_override.patch b/patches.drivers/PCI-Always-allow-probing-with-driver_override.patch
new file mode 100644
index 0000000000..0c4f93a9f0
--- /dev/null
+++ b/patches.drivers/PCI-Always-allow-probing-with-driver_override.patch
@@ -0,0 +1,55 @@
+From 2d2f4273cbe9058d1f5a518e5e880d27d7b3b30f Mon Sep 17 00:00:00 2001
+From: Alex Williamson <alex.williamson@redhat.com>
+Date: Thu, 9 May 2019 13:27:22 -0600
+Subject: [PATCH] PCI: Always allow probing with driver_override
+Git-commit: 2d2f4273cbe9058d1f5a518e5e880d27d7b3b30f
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Commit 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control
+VF driver binding") introduced the sriov_drivers_autoprobe attribute
+which allows users to prevent the kernel from automatically probing a
+driver for new VFs as they are created. This allows VFs to be spawned
+without automatically binding the new device to a host driver, such as
+in cases where the user intends to use the device only with a meta
+driver like vfio-pci. However, the current implementation prevents any
+use of drivers_probe with the VF while sriov_drivers_autoprobe=0. This
+blocks the now current general practice of setting driver_override
+followed by using drivers_probe to bind a device to a specified driver.
+
+The kernel never automatically sets a driver_override therefore it seems
+we can assume a driver_override reflects the intent of the user. Also,
+probing a device using a driver_override match seems outside the scope
+of the 'auto' part of sriov_drivers_autoprobe. Therefore, let's allow
+driver_override matches regardless of sriov_drivers_autoprobe, which we
+can do by simply testing if a driver_override is set for a device as a
+'can probe' condition.
+
+Fixes: 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding")
+Link: https://lore.kernel.org/lkml/155742996741.21878.569845487290798703.stgit@gimli.home
+Link: https://lore.kernel.org/linux-pci/155672991496.20698.4279330795743262888.stgit@gimli.home/T/#u
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/pci/pci-driver.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
+index 53874aae3873..b6a3a51801f0 100644
+--- a/drivers/pci/pci-driver.c
++++ b/drivers/pci/pci-driver.c
+@@ -399,7 +399,8 @@ void __weak pcibios_free_irq(struct pci_dev *dev)
+ #ifdef CONFIG_PCI_IOV
+ static inline bool pci_device_can_probe(struct pci_dev *pdev)
+ {
+- return (!pdev->is_virtfn || pdev->physfn->sriov->drivers_autoprobe);
++ return (!pdev->is_virtfn || pdev->physfn->sriov->drivers_autoprobe ||
++ pdev->driver_override);
+ }
+ #else
+ static inline bool pci_device_can_probe(struct pci_dev *pdev)
+--
+2.16.4
+
diff --git a/patches.drivers/PCI-Return-error-if-cannot-probe-VF.patch b/patches.drivers/PCI-Return-error-if-cannot-probe-VF.patch
new file mode 100644
index 0000000000..c625a7bfb2
--- /dev/null
+++ b/patches.drivers/PCI-Return-error-if-cannot-probe-VF.patch
@@ -0,0 +1,58 @@
+From 76002d8b48c4b08c9bd414517dd295e132ad910b Mon Sep 17 00:00:00 2001
+From: Alex Williamson <alex.williamson@redhat.com>
+Date: Wed, 1 May 2019 11:00:16 -0600
+Subject: [PATCH] PCI: Return error if cannot probe VF
+Git-commit: 76002d8b48c4b08c9bd414517dd295e132ad910b
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Commit 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control
+VF driver binding") allows the user to specify that drivers for VFs of
+a PF should not be probed, but it actually causes pci_device_probe() to
+return success back to the driver core in this case. Therefore by all
+sysfs appearances the device is bound to a driver, the driver link from
+the device exists as does the device link back from the driver, yet the
+driver's probe function is never called on the device. We also fail to
+do any sort of cleanup when we're prohibited from probing the device,
+the IRQ setup remains in place and we even hold a device reference.
+
+Instead, abort with errno before any setup or references are taken when
+pci_device_can_probe() prevents us from trying to probe the device.
+
+Link: https://lore.kernel.org/lkml/155672991496.20698.4279330795743262888.stgit@gimli.home
+Fixes: 0e7df22401a3 ("PCI: Add sysfs sriov_drivers_autoprobe to control VF driver binding")
+Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/pci/pci-driver.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+--- a/drivers/pci/pci-driver.c
++++ b/drivers/pci/pci-driver.c
+@@ -412,17 +412,18 @@ static int pci_device_probe(struct devic
+ struct pci_dev *pci_dev = to_pci_dev(dev);
+ struct pci_driver *drv = to_pci_driver(dev->driver);
+
++ if (!pci_device_can_probe(pci_dev))
++ return -ENODEV;
++
+ error = pcibios_alloc_irq(pci_dev);
+ if (error < 0)
+ return error;
+
+ pci_dev_get(pci_dev);
+- if (pci_device_can_probe(pci_dev)) {
+- error = __pci_device_probe(drv, pci_dev);
+- if (error) {
+- pcibios_free_irq(pci_dev);
+- pci_dev_put(pci_dev);
+- }
++ error = __pci_device_probe(drv, pci_dev);
++ if (error) {
++ pcibios_free_irq(pci_dev);
++ pci_dev_put(pci_dev);
+ }
+
+ return error;
diff --git a/patches.drivers/Revert-serial-8250-Don-t-service-RX-FIFO-if-interrup.patch b/patches.drivers/Revert-serial-8250-Don-t-service-RX-FIFO-if-interrup.patch
new file mode 100644
index 0000000000..4fb65e1f90
--- /dev/null
+++ b/patches.drivers/Revert-serial-8250-Don-t-service-RX-FIFO-if-interrup.patch
@@ -0,0 +1,44 @@
+From 3f2640ed7be838c3f05c0d2b0f7c7508e7431e48 Mon Sep 17 00:00:00 2001
+From: Oliver Barta <o.barta89@gmail.com>
+Date: Wed, 19 Jun 2019 10:16:39 +0200
+Subject: [PATCH] Revert "serial: 8250: Don't service RX FIFO if interrupts are disabled"
+Git-commit: 3f2640ed7be838c3f05c0d2b0f7c7508e7431e48
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+This reverts commit 2e9fe539108320820016f78ca7704a7342788380.
+
+Reading LSR unconditionally but processing the error flags only if
+UART_IIR_RDI bit was set before in IIR may lead to a loss of transmission
+error information on UARTs where the transmission error flags are cleared
+by a read of LSR. Information are lost in case an error is detected right
+before the read of LSR while processing e.g. an UART_IIR_THRI interrupt.
+
+Signed-off-by: Oliver Barta <o.barta89@gmail.com>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Fixes: 2e9fe5391083 ("serial: 8250: Don't service RX FIFO if interrupts are disabled")
+Cc: stable <stable@vger.kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/8250/8250_port.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
+index a6fabc7e3b13..c1cec808571b 100644
+--- a/drivers/tty/serial/8250/8250_port.c
++++ b/drivers/tty/serial/8250/8250_port.c
+@@ -1867,8 +1867,7 @@ int serial8250_handle_irq(struct uart_port *port, unsigned int iir)
+
+ status = serial_port_in(port, UART_LSR);
+
+- if (status & (UART_LSR_DR | UART_LSR_BI) &&
+- iir & UART_IIR_RDI) {
++ if (status & (UART_LSR_DR | UART_LSR_BI)) {
+ if (!up->dma || handle_rx_dma(up, iir))
+ status = serial8250_rx_chars(up, status);
+ }
+--
+2.16.4
+
diff --git a/patches.drivers/bnxt_en-Fix-aggregation-buffer-leak-under-OOM-condit.patch b/patches.drivers/bnxt_en-Fix-aggregation-buffer-leak-under-OOM-condit.patch
new file mode 100644
index 0000000000..3cf0973ac3
--- /dev/null
+++ b/patches.drivers/bnxt_en-Fix-aggregation-buffer-leak-under-OOM-condit.patch
@@ -0,0 +1,35 @@
+From: Michael Chan <michael.chan@broadcom.com>
+Date: Wed, 22 May 2019 19:12:54 -0400
+Subject: bnxt_en: Fix aggregation buffer leak under OOM condition.
+Git-commit: 296d5b54163964b7ae536b8b57dfbd21d4e868e1
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+For every RX packet, the driver replenishes all buffers used for that
+packet and puts them back into the RX ring and RX aggregation ring.
+In one code path where the RX packet has one RX buffer and one or more
+aggregation buffers, we missed recycling the aggregation buffer(s) if
+we are unable to allocate a new SKB buffer. This leads to the
+aggregation ring slowly running out of buffers over time. Fix it
+by properly recycling the aggregation buffers.
+
+Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
+Reported-by: Rakesh Hemnani <rhemnani@fb.com>
+Signed-off-by: Michael Chan <michael.chan@broadcom.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
++++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+@@ -1596,6 +1596,8 @@ static int bnxt_rx_pkt(struct bnxt *bp,
+ skb = bnxt_copy_skb(bnapi, data_ptr, len, dma_addr);
+ bnxt_reuse_rx_data(rxr, cons, data);
+ if (!skb) {
++ if (agg_bufs)
++ bnxt_reuse_rx_agg_bufs(bnapi, cp_cons, agg_bufs);
+ rc = -ENOMEM;
+ goto next_rx;
+ }
diff --git a/patches.suse/bnxt_en-Improve-multicast-address-setup-logic.patch b/patches.drivers/bnxt_en-Improve-multicast-address-setup-logic.patch
index 28aea619db..28aea619db 100644
--- a/patches.suse/bnxt_en-Improve-multicast-address-setup-logic.patch
+++ b/patches.drivers/bnxt_en-Improve-multicast-address-setup-logic.patch
diff --git a/patches.drivers/mfd-intel-lpss-Release-IDA-resources.patch b/patches.drivers/mfd-intel-lpss-Release-IDA-resources.patch
new file mode 100644
index 0000000000..9fe345118f
--- /dev/null
+++ b/patches.drivers/mfd-intel-lpss-Release-IDA-resources.patch
@@ -0,0 +1,36 @@
+From 02f36911c1b41fcd8779fa0c135aab0554333fa5 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Fri, 21 Jun 2019 15:56:31 +0300
+Subject: [PATCH] mfd: intel-lpss: Release IDA resources
+Git-commit: 02f36911c1b41fcd8779fa0c135aab0554333fa5
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+ida instances allocate some internal memory for ->free_bitmap
+in addition to the base 'struct ida'. Use ida_destroy() to release
+that memory at module_exit().
+
+Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/mfd/intel-lpss.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/mfd/intel-lpss.c b/drivers/mfd/intel-lpss.c
+index fc6aa4c50144..2ba6df9d83af 100644
+--- a/drivers/mfd/intel-lpss.c
++++ b/drivers/mfd/intel-lpss.c
+@@ -546,6 +546,7 @@ module_init(intel_lpss_init);
+
+ static void __exit intel_lpss_exit(void)
+ {
++ ida_destroy(&intel_lpss_devid_ida);
+ debugfs_remove(intel_lpss_debugfs);
+ }
+ module_exit(intel_lpss_exit);
+--
+2.16.4
+
diff --git a/patches.fixes/0001-net-make-skb_partial_csum_set-more-robust-against-ov.patch b/patches.drivers/net-make-skb_partial_csum_set-more-robust-against-ov.patch
index e5d9aa2124..e5d9aa2124 100644
--- a/patches.fixes/0001-net-make-skb_partial_csum_set-more-robust-against-ov.patch
+++ b/patches.drivers/net-make-skb_partial_csum_set-more-robust-against-ov.patch
diff --git a/patches.fixes/nvme-rdma-fix-double-freeing-of-async-event-data.patch b/patches.drivers/nvme-rdma-fix-double-freeing-of-async-event-data.patch
index 934ecb17ac..934ecb17ac 100644
--- a/patches.fixes/nvme-rdma-fix-double-freeing-of-async-event-data.patch
+++ b/patches.drivers/nvme-rdma-fix-double-freeing-of-async-event-data.patch
diff --git a/patches.fixes/nvme-rdma-fix-possible-double-free-of-controller-asy.patch b/patches.drivers/nvme-rdma-fix-possible-double-free-of-controller-asy.patch
index 4b11164015..4b11164015 100644
--- a/patches.fixes/nvme-rdma-fix-possible-double-free-of-controller-asy.patch
+++ b/patches.drivers/nvme-rdma-fix-possible-double-free-of-controller-asy.patch
diff --git a/patches.fixes/nvme-rdma-fix-possible-free-of-a-non-allocated-async-event-buffer.patch b/patches.drivers/nvme-rdma-fix-possible-free-of-a-non-allocated-async.patch
index b4d1658c50..b4d1658c50 100644
--- a/patches.fixes/nvme-rdma-fix-possible-free-of-a-non-allocated-async-event-buffer.patch
+++ b/patches.drivers/nvme-rdma-fix-possible-free-of-a-non-allocated-async.patch
diff --git a/patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeout b/patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeo.patch
index b23a2ed403..b23a2ed403 100644
--- a/patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeout
+++ b/patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeo.patch
diff --git a/patches.drivers/serial-uartps-Do-not-add-a-trailing-semicolon-to-mac.patch b/patches.drivers/serial-uartps-Do-not-add-a-trailing-semicolon-to-mac.patch
new file mode 100644
index 0000000000..ae29af6cce
--- /dev/null
+++ b/patches.drivers/serial-uartps-Do-not-add-a-trailing-semicolon-to-mac.patch
@@ -0,0 +1,39 @@
+From 7be7a0145f01393e487aef8123902e08e7286a45 Mon Sep 17 00:00:00 2001
+From: Nava kishore Manne <nava.manne@xilinx.com>
+Date: Wed, 12 Jun 2019 13:14:42 +0200
+Subject: [PATCH] serial: uartps: Do not add a trailing semicolon to macro
+Git-commit: 7be7a0145f01393e487aef8123902e08e7286a45
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+This patch fixes this checkpatch warning:
+Warning: macros should not use a trailing semicolon
++#define to_cdns_uart(_nb) container_of(_nb, struct cdns_uart, \
++ clk_rate_change_nb);
+
+Fixes: d9bb3fb12685 ("tty: xuartps: Rebrand driver as Cadence UART")
+Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/xilinx_uartps.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
+index 69ed81d1338b..e6f23fbf077a 100644
+--- a/drivers/tty/serial/xilinx_uartps.c
++++ b/drivers/tty/serial/xilinx_uartps.c
+@@ -201,7 +201,7 @@ struct cdns_platform_data {
+ u32 quirks;
+ };
+ #define to_cdns_uart(_nb) container_of(_nb, struct cdns_uart, \
+- clk_rate_change_nb);
++ clk_rate_change_nb)
+
+ /**
+ * cdns_uart_handle_rx - Handle the received bytes along with Rx errors.
+--
+2.16.4
+
diff --git a/patches.drivers/serial-uartps-Fix-long-line-over-80-chars.patch b/patches.drivers/serial-uartps-Fix-long-line-over-80-chars.patch
new file mode 100644
index 0000000000..23a7e24d05
--- /dev/null
+++ b/patches.drivers/serial-uartps-Fix-long-line-over-80-chars.patch
@@ -0,0 +1,40 @@
+From a53f82d6ccb5199ba4f3b54ae3ff0298ffe1c91d Mon Sep 17 00:00:00 2001
+From: Nava kishore Manne <nava.manne@xilinx.com>
+Date: Wed, 12 Jun 2019 13:14:41 +0200
+Subject: [PATCH] serial: uartps: Fix long line over 80 chars
+Git-commit: a53f82d6ccb5199ba4f3b54ae3ff0298ffe1c91d
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Trivial patch which fixes one checkpatch warning:
+Warning: line over 80 characters
++ !(readl(port->membase + CDNS_UART_SR)
+ & CDNS_UART_SR_TXFULL)) {
+
+Fixes: c8dbdc842d30 ("serial: xuartps: Rewrite the interrupt handling logic")
+Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/xilinx_uartps.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
+index 2dff879f988e..69ed81d1338b 100644
+--- a/drivers/tty/serial/xilinx_uartps.c
++++ b/drivers/tty/serial/xilinx_uartps.c
+@@ -314,7 +314,8 @@ static void cdns_uart_handle_tx(void *dev_id)
+ } else {
+ numbytes = port->fifosize;
+ while (numbytes && !uart_circ_empty(&port->state->xmit) &&
+- !(readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXFULL)) {
++ !(readl(port->membase + CDNS_UART_SR) &
++ CDNS_UART_SR_TXFULL)) {
+ /*
+ * Get the data from the UART circular buffer
+ * and write it to the cdns_uart's TX_FIFO
+--
+2.16.4
+
diff --git a/patches.drivers/serial-uartps-Fix-multiple-line-dereference.patch b/patches.drivers/serial-uartps-Fix-multiple-line-dereference.patch
new file mode 100644
index 0000000000..44f37e3518
--- /dev/null
+++ b/patches.drivers/serial-uartps-Fix-multiple-line-dereference.patch
@@ -0,0 +1,41 @@
+From b6415f243919703c97483a29ff918872f66f165c Mon Sep 17 00:00:00 2001
+From: Nava kishore Manne <nava.manne@xilinx.com>
+Date: Wed, 12 Jun 2019 13:14:40 +0200
+Subject: [PATCH] serial: uartps: Fix multiple line dereference
+Git-commit: b6415f243919703c97483a29ff918872f66f165c
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Trivial patch which fixes this checkpatch warning:
+Warning: Avoid multiple line dereference - prefer 'port->state->xmit.tail'
++ port->state->xmit.buf[port->state->xmit.
++ tail], port->membase + CDNS_UART_FIFO);
+
+Fixes: c8dbdc842d30 ("serial: xuartps: Rewrite the interrupt handling logic")
+Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/xilinx_uartps.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
+index 32cf67598bc3..2dff879f988e 100644
+--- a/drivers/tty/serial/xilinx_uartps.c
++++ b/drivers/tty/serial/xilinx_uartps.c
+@@ -321,8 +321,8 @@ static void cdns_uart_handle_tx(void *dev_id)
+ * register.
+ */
+ writel(
+- port->state->xmit.buf[port->state->xmit.
+- tail], port->membase + CDNS_UART_FIFO);
++ port->state->xmit.buf[port->state->xmit.tail],
++ port->membase + CDNS_UART_FIFO);
+
+ port->icount.tx++;
+
+--
+2.16.4
+
diff --git a/patches.drivers/serial-uartps-Remove-useless-return-from-cdns_uart_p.patch b/patches.drivers/serial-uartps-Remove-useless-return-from-cdns_uart_p.patch
new file mode 100644
index 0000000000..c4d6db5f0d
--- /dev/null
+++ b/patches.drivers/serial-uartps-Remove-useless-return-from-cdns_uart_p.patch
@@ -0,0 +1,42 @@
+From 8d53935d9beb4b9b51fdae9296e4a7840214a64a Mon Sep 17 00:00:00 2001
+From: Nava kishore Manne <nava.manne@xilinx.com>
+Date: Wed, 12 Jun 2019 13:14:43 +0200
+Subject: [PATCH] serial: uartps: Remove useless return from cdns_uart_poll_put_char
+Git-commit: 8d53935d9beb4b9b51fdae9296e4a7840214a64a
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+There is no reason to call return at the end of function which should
+return void.
+
+The patch is also remove one checkpatch warning:
+Warning: void function return statements are not generally useful
++ return;
++}
+
+Fixes: 6ee04c6c5488 ("tty: xuartps: Add polled mode support for xuartps")
+Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/xilinx_uartps.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
+index e6f23fbf077a..f145946f659b 100644
+--- a/drivers/tty/serial/xilinx_uartps.c
++++ b/drivers/tty/serial/xilinx_uartps.c
+@@ -1079,8 +1079,6 @@ static void cdns_uart_poll_put_char(struct uart_port *port, unsigned char c)
+ cpu_relax();
+
+ spin_unlock_irqrestore(&port->lock, flags);
+-
+- return;
+ }
+ #endif
+
+--
+2.16.4
+
diff --git a/patches.drivers/tty-rocket-fix-incorrect-forward-declaration-of-rp_i.patch b/patches.drivers/tty-rocket-fix-incorrect-forward-declaration-of-rp_i.patch
new file mode 100644
index 0000000000..e6a05966ce
--- /dev/null
+++ b/patches.drivers/tty-rocket-fix-incorrect-forward-declaration-of-rp_i.patch
@@ -0,0 +1,38 @@
+From 423ea3255424b954947d167681b71ded1b8fca53 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Mon, 6 May 2019 11:28:23 -0700
+Subject: [PATCH] tty: rocket: fix incorrect forward declaration of 'rp_init()'
+Git-commit: 423ea3255424b954947d167681b71ded1b8fca53
+Patch-mainline: v5.2-rc1
+References: bsc#1051510
+
+Make the forward declaration actually match the real function
+definition, something that previous versions of gcc had just ignored.
+
+This is another patch to fix new warnings from gcc-9 before I start the
+merge window pulls. I don't want to miss legitimate new warnings just
+because my system update brought a new compiler with new warnings.
+
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/rocket.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
+index b121d8f8f3d7..27aeca30eeae 100644
+--- a/drivers/tty/rocket.c
++++ b/drivers/tty/rocket.c
+@@ -266,7 +266,7 @@ MODULE_PARM_DESC(pc104_3, "set interface types for ISA(PC104) board #3 (e.g. pc1
+ module_param_array(pc104_4, ulong, NULL, 0);
+ MODULE_PARM_DESC(pc104_4, "set interface types for ISA(PC104) board #4 (e.g. pc104_4=232,232,485,485,...");
+
+-static int rp_init(void);
++static int __init rp_init(void);
+ static void rp_cleanup_module(void);
+
+ module_init(rp_init);
+--
+2.16.4
+
diff --git a/patches.drivers/tty-serial-cpm_uart-fix-init-when-SMC-is-relocated.patch b/patches.drivers/tty-serial-cpm_uart-fix-init-when-SMC-is-relocated.patch
new file mode 100644
index 0000000000..04cb4ce395
--- /dev/null
+++ b/patches.drivers/tty-serial-cpm_uart-fix-init-when-SMC-is-relocated.patch
@@ -0,0 +1,78 @@
+From 06aaa3d066db87e8478522d910285141d44b1e58 Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Wed, 22 May 2019 12:17:11 +0000
+Subject: [PATCH] tty: serial: cpm_uart - fix init when SMC is relocated
+Git-commit: 06aaa3d066db87e8478522d910285141d44b1e58
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+SMC relocation can also be activated earlier by the bootloader,
+so the driver's behaviour cannot rely on selected kernel config.
+
+When the SMC is relocated, CPM_CR_INIT_TRX cannot be used.
+
+But the only thing CPM_CR_INIT_TRX does is to clear the
+rstate and tstate registers, so this can be done manually,
+even when SMC is not relocated.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 9ab921201444 ("cpm_uart: fix non-console port startup bug")
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/cpm_uart/cpm_uart_core.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+index b929c7ae3a27..7bab9a3eda92 100644
+--- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
++++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
+@@ -407,7 +407,16 @@ static int cpm_uart_startup(struct uart_port *port)
+ clrbits16(&pinfo->sccp->scc_sccm, UART_SCCM_RX);
+ }
+ cpm_uart_initbd(pinfo);
+- cpm_line_cr_cmd(pinfo, CPM_CR_INIT_TRX);
++ if (IS_SMC(pinfo)) {
++ out_be32(&pinfo->smcup->smc_rstate, 0);
++ out_be32(&pinfo->smcup->smc_tstate, 0);
++ out_be16(&pinfo->smcup->smc_rbptr,
++ in_be16(&pinfo->smcup->smc_rbase));
++ out_be16(&pinfo->smcup->smc_tbptr,
++ in_be16(&pinfo->smcup->smc_tbase));
++ } else {
++ cpm_line_cr_cmd(pinfo, CPM_CR_INIT_TRX);
++ }
+ }
+ /* Install interrupt handler. */
+ retval = request_irq(port->irq, cpm_uart_int, 0, "cpm_uart", port);
+@@ -861,16 +870,14 @@ static void cpm_uart_init_smc(struct uart_cpm_port *pinfo)
+ (u8 __iomem *)pinfo->tx_bd_base - DPRAM_BASE);
+
+ /*
+- * In case SMC1 is being relocated...
++ * In case SMC is being relocated...
+ */
+-#if defined (CONFIG_I2C_SPI_SMC1_UCODE_PATCH)
+ out_be16(&up->smc_rbptr, in_be16(&pinfo->smcup->smc_rbase));
+ out_be16(&up->smc_tbptr, in_be16(&pinfo->smcup->smc_tbase));
+ out_be32(&up->smc_rstate, 0);
+ out_be32(&up->smc_tstate, 0);
+ out_be16(&up->smc_brkcr, 1); /* number of break chars */
+ out_be16(&up->smc_brkec, 0);
+-#endif
+
+ /* Set up the uart parameters in the
+ * parameter ram.
+@@ -884,8 +891,6 @@ static void cpm_uart_init_smc(struct uart_cpm_port *pinfo)
+ out_be16(&up->smc_brkec, 0);
+ out_be16(&up->smc_brkcr, 1);
+
+- cpm_line_cr_cmd(pinfo, CPM_CR_INIT_TRX);
+-
+ /* Set UART mode, 8 bit, no parity, one stop.
+ * Enable receive and transmit.
+ */
+--
+2.16.4
+
diff --git a/patches.drivers/tty-serial_core-Set-port-active-bit-in-uart_port_act.patch b/patches.drivers/tty-serial_core-Set-port-active-bit-in-uart_port_act.patch
new file mode 100644
index 0000000000..9d43cc9041
--- /dev/null
+++ b/patches.drivers/tty-serial_core-Set-port-active-bit-in-uart_port_act.patch
@@ -0,0 +1,73 @@
+From 13b18d35909707571af9539f7731389fbf0feb31 Mon Sep 17 00:00:00 2001
+From: Serge Semin <fancer.lancer@gmail.com>
+Date: Wed, 8 May 2019 13:44:41 +0300
+Subject: [PATCH] tty: serial_core: Set port active bit in uart_port_activate
+Git-commit: 13b18d35909707571af9539f7731389fbf0feb31
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+A bug was introduced by commit b3b576461864 ("tty: serial_core: convert
+uart_open to use tty_port_open"). It caused a constant warning printed
+into the system log regarding the tty and port counter mismatch:
+
+[ 21.644197] ttyS ttySx: tty_port_close_start: tty->count = 1 port count = 2
+
+in case if session hangup was detected so the warning is printed starting
+from the second open-close iteration.
+
+Particularly the problem was discovered in situation when there is a
+serial tty device without hardware back-end being setup. It is considered
+by the tty-serial subsystems as a hardware problem with session hang up.
+In this case uart_startup() will return a positive value with TTY_IO_ERROR
+flag set in corresponding tty_struct instance. The same value will get
+passed to be returned from the activate() callback and then being returned
+from tty_port_open(). But since in this case tty_port_block_til_ready()
+isn't called the TTY_PORT_ACTIVE flag isn't set (while the method had been
+called before tty_port_open conversion was introduced and the rest of the
+subsystem code expected the bit being set in this case), which prevents the
+uart_hangup() method to perform any cleanups including the tty port
+counter setting to zero. So the next attempt to open/close the tty device
+will discover the counters mismatch.
+
+In order to fix the problem we need to manually set the TTY_PORT_ACTIVE
+flag in case if uart_startup() returned a positive value. In this case
+the hang up procedure will perform a full set of cleanup actions including
+the port ref-counter resetting.
+
+Fixes: b3b576461864 "tty: serial_core: convert uart_open to use tty_port_open"
+Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/tty/serial/serial_core.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
+index 83f4dd0bfd74..4223cb496764 100644
+--- a/drivers/tty/serial/serial_core.c
++++ b/drivers/tty/serial/serial_core.c
+@@ -1777,6 +1777,7 @@ static int uart_port_activate(struct tty_port *port, struct tty_struct *tty)
+ {
+ struct uart_state *state = container_of(port, struct uart_state, port);
+ struct uart_port *uport;
++ int ret;
+
+ uport = uart_port_check(state);
+ if (!uport || uport->flags & UPF_DEAD)
+@@ -1787,7 +1788,11 @@ static int uart_port_activate(struct tty_port *port, struct tty_struct *tty)
+ /*
+ * Start up the serial port.
+ */
+- return uart_startup(tty, state, 0);
++ ret = uart_startup(tty, state, 0);
++ if (ret > 0)
++ tty_port_set_active(port, 1);
++
++ return ret;
+ }
+
+ static const char *uart_type(struct uart_port *port)
+--
+2.16.4
+
diff --git a/patches.drivers/usb-gadget-ether-Fix-race-between-gether_disconnect-.patch b/patches.drivers/usb-gadget-ether-Fix-race-between-gether_disconnect-.patch
new file mode 100644
index 0000000000..f8245d0ee2
--- /dev/null
+++ b/patches.drivers/usb-gadget-ether-Fix-race-between-gether_disconnect-.patch
@@ -0,0 +1,54 @@
+From d29fcf7078bc8be2b6366cbd4418265b53c94fac Mon Sep 17 00:00:00 2001
+From: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
+Date: Tue, 18 Jun 2019 08:39:06 +0000
+Subject: [PATCH] usb: gadget: ether: Fix race between gether_disconnect and rx_submit
+Git-commit: d29fcf7078bc8be2b6366cbd4418265b53c94fac
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+On spin lock release in rx_submit, gether_disconnect get a chance to
+run, it makes port_usb NULL, rx_submit access NULL port USB, hence null
+pointer crash.
+
+Fixed by releasing the lock in rx_submit after port_usb is used.
+
+Fixes: 2b3d942c4878 ("usb ethernet gadget: split out network core")
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/usb/gadget/function/u_ether.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c
+index 737bd77a575d..2929bb47a618 100644
+--- a/drivers/usb/gadget/function/u_ether.c
++++ b/drivers/usb/gadget/function/u_ether.c
+@@ -186,11 +186,12 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
+ out = dev->port_usb->out_ep;
+ else
+ out = NULL;
+- spin_unlock_irqrestore(&dev->lock, flags);
+
+ if (!out)
++ {
++ spin_unlock_irqrestore(&dev->lock, flags);
+ return -ENOTCONN;
+-
++ }
+
+ /* Padding up to RX_EXTRA handles minor disagreements with host.
+ * Normally we use the USB "terminate on short read" convention;
+@@ -214,6 +215,7 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
+
+ if (dev->port_usb->is_fixed)
+ size = max_t(size_t, size, dev->port_usb->fixed_out_len);
++ spin_unlock_irqrestore(&dev->lock, flags);
+
+ skb = __netdev_alloc_skb(dev->net, size + NET_IP_ALIGN, gfp_flags);
+ if (skb == NULL) {
+--
+2.16.4
+
diff --git a/patches.drm/drm-meson-Add-support-for-XBGR8888-ABGR8888-formats.patch b/patches.drm/drm-meson-Add-support-for-XBGR8888-ABGR8888-formats.patch
new file mode 100644
index 0000000000..0fbdd80aae
--- /dev/null
+++ b/patches.drm/drm-meson-Add-support-for-XBGR8888-ABGR8888-formats.patch
@@ -0,0 +1,65 @@
+From 5ffff4415f9eeae834960226770963e2947e17eb Mon Sep 17 00:00:00 2001
+From: Neil Armstrong <narmstrong@baylibre.com>
+Date: Mon, 29 Apr 2019 09:52:38 +0200
+Subject: [PATCH] drm/meson: Add support for XBGR8888 & ABGR8888 formats
+Git-commit: 5ffff4415f9eeae834960226770963e2947e17eb
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Add missing XBGR8888 & ABGR8888 formats variants from the primary plane.
+
+Fixes: bbbe775ec5b5 ("drm: Add support for Amlogic Meson Graphic Controller")
+Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
+Reviewed-by: Kevin Hilman <khilman@baylibre.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20190429075238.7884-1-narmstrong@baylibre.com
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/meson/meson_plane.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c
+index 97fdf6b4600c..5c7d39d1cde9 100644
+--- a/drivers/gpu/drm/meson/meson_plane.c
++++ b/drivers/gpu/drm/meson/meson_plane.c
+@@ -153,6 +153,13 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
+ priv->viu.osd1_blk0_cfg[0] |= OSD_BLK_MODE_32 |
+ OSD_COLOR_MATRIX_32_ARGB;
+ break;
++ case DRM_FORMAT_XBGR8888:
++ /* For XRGB, replace the pixel's alpha by 0xFF */
++ writel_bits_relaxed(OSD_REPLACE_EN, OSD_REPLACE_EN,
++ priv->io_base + _REG(VIU_OSD1_CTRL_STAT2));
++ priv->viu.osd1_blk0_cfg[0] |= OSD_BLK_MODE_32 |
++ OSD_COLOR_MATRIX_32_ABGR;
++ break;
+ case DRM_FORMAT_ARGB8888:
+ /* For ARGB, use the pixel's alpha */
+ writel_bits_relaxed(OSD_REPLACE_EN, 0,
+@@ -160,6 +167,13 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
+ priv->viu.osd1_blk0_cfg[0] |= OSD_BLK_MODE_32 |
+ OSD_COLOR_MATRIX_32_ARGB;
+ break;
++ case DRM_FORMAT_ABGR8888:
++ /* For ARGB, use the pixel's alpha */
++ writel_bits_relaxed(OSD_REPLACE_EN, 0,
++ priv->io_base + _REG(VIU_OSD1_CTRL_STAT2));
++ priv->viu.osd1_blk0_cfg[0] |= OSD_BLK_MODE_32 |
++ OSD_COLOR_MATRIX_32_ABGR;
++ break;
+ case DRM_FORMAT_RGB888:
+ priv->viu.osd1_blk0_cfg[0] |= OSD_BLK_MODE_24 |
+ OSD_COLOR_MATRIX_24_RGB;
+@@ -344,7 +358,9 @@ static const struct drm_plane_funcs meson_plane_funcs = {
+
+ static const uint32_t supported_drm_formats[] = {
+ DRM_FORMAT_ARGB8888,
++ DRM_FORMAT_ABGR8888,
+ DRM_FORMAT_XRGB8888,
++ DRM_FORMAT_XBGR8888,
+ DRM_FORMAT_RGB888,
+ DRM_FORMAT_RGB565,
+ };
+--
+2.16.4
+
diff --git a/patches.drm/drm-msm-a3xx-remove-TPL1-regs-from-snapshot.patch b/patches.drm/drm-msm-a3xx-remove-TPL1-regs-from-snapshot.patch
new file mode 100644
index 0000000000..fd0dddf3f5
--- /dev/null
+++ b/patches.drm/drm-msm-a3xx-remove-TPL1-regs-from-snapshot.patch
@@ -0,0 +1,60 @@
+From f47bee2ba447bebc304111c16ef1e1a73a9744dd Mon Sep 17 00:00:00 2001
+From: Rob Clark <robdclark@chromium.org>
+Date: Mon, 24 Jun 2019 09:09:47 -0700
+Subject: [PATCH] drm/msm/a3xx: remove TPL1 regs from snapshot
+Git-commit: f47bee2ba447bebc304111c16ef1e1a73a9744dd
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+These regs are write-only, and the hw throws a hissy-fit (ie. reboots)
+when we try to read them for GPU state snapshot, in response to a GPU
+hang. It is rather impolite when GPU recovery triggers an insta-
+reboot, so lets remove the TPL1 registers from the snapshot.
+
+Fixes: 7198e6b03155 drm/msm: add a3xx gpu support
+Signed-off-by: Rob Clark <robdclark@chromium.org>
+Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 24 +++++++++++-------------
+ 1 file changed, 11 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c
+index c3b4bc6e4155..13078c4975ff 100644
+--- a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c
++++ b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c
+@@ -395,19 +395,17 @@ static const unsigned int a3xx_registers[] = {
+ 0x2200, 0x2212, 0x2214, 0x2217, 0x221a, 0x221a, 0x2240, 0x227e,
+ 0x2280, 0x228b, 0x22c0, 0x22c0, 0x22c4, 0x22ce, 0x22d0, 0x22d8,
+ 0x22df, 0x22e6, 0x22e8, 0x22e9, 0x22ec, 0x22ec, 0x22f0, 0x22f7,
+- 0x22ff, 0x22ff, 0x2340, 0x2343, 0x2348, 0x2349, 0x2350, 0x2356,
+- 0x2360, 0x2360, 0x2440, 0x2440, 0x2444, 0x2444, 0x2448, 0x244d,
+- 0x2468, 0x2469, 0x246c, 0x246d, 0x2470, 0x2470, 0x2472, 0x2472,
+- 0x2474, 0x2475, 0x2479, 0x247a, 0x24c0, 0x24d3, 0x24e4, 0x24ef,
+- 0x2500, 0x2509, 0x250c, 0x250c, 0x250e, 0x250e, 0x2510, 0x2511,
+- 0x2514, 0x2515, 0x25e4, 0x25e4, 0x25ea, 0x25ea, 0x25ec, 0x25ed,
+- 0x25f0, 0x25f0, 0x2600, 0x2612, 0x2614, 0x2617, 0x261a, 0x261a,
+- 0x2640, 0x267e, 0x2680, 0x268b, 0x26c0, 0x26c0, 0x26c4, 0x26ce,
+- 0x26d0, 0x26d8, 0x26df, 0x26e6, 0x26e8, 0x26e9, 0x26ec, 0x26ec,
+- 0x26f0, 0x26f7, 0x26ff, 0x26ff, 0x2740, 0x2743, 0x2748, 0x2749,
+- 0x2750, 0x2756, 0x2760, 0x2760, 0x300c, 0x300e, 0x301c, 0x301d,
+- 0x302a, 0x302a, 0x302c, 0x302d, 0x3030, 0x3031, 0x3034, 0x3036,
+- 0x303c, 0x303c, 0x305e, 0x305f,
++ 0x22ff, 0x22ff, 0x2340, 0x2343, 0x2440, 0x2440, 0x2444, 0x2444,
++ 0x2448, 0x244d, 0x2468, 0x2469, 0x246c, 0x246d, 0x2470, 0x2470,
++ 0x2472, 0x2472, 0x2474, 0x2475, 0x2479, 0x247a, 0x24c0, 0x24d3,
++ 0x24e4, 0x24ef, 0x2500, 0x2509, 0x250c, 0x250c, 0x250e, 0x250e,
++ 0x2510, 0x2511, 0x2514, 0x2515, 0x25e4, 0x25e4, 0x25ea, 0x25ea,
++ 0x25ec, 0x25ed, 0x25f0, 0x25f0, 0x2600, 0x2612, 0x2614, 0x2617,
++ 0x261a, 0x261a, 0x2640, 0x267e, 0x2680, 0x268b, 0x26c0, 0x26c0,
++ 0x26c4, 0x26ce, 0x26d0, 0x26d8, 0x26df, 0x26e6, 0x26e8, 0x26e9,
++ 0x26ec, 0x26ec, 0x26f0, 0x26f7, 0x26ff, 0x26ff, 0x2740, 0x2743,
++ 0x300c, 0x300e, 0x301c, 0x301d, 0x302a, 0x302a, 0x302c, 0x302d,
++ 0x3030, 0x3031, 0x3034, 0x3036, 0x303c, 0x303c, 0x305e, 0x305f,
+ ~0 /* sentinel */
+ };
+
+--
+2.16.4
+
diff --git a/patches.drm/drm-rockchip-Properly-adjust-to-a-true-clock-in-adju.patch b/patches.drm/drm-rockchip-Properly-adjust-to-a-true-clock-in-adju.patch
new file mode 100644
index 0000000000..b21335679a
--- /dev/null
+++ b/patches.drm/drm-rockchip-Properly-adjust-to-a-true-clock-in-adju.patch
@@ -0,0 +1,48 @@
+From 99b9683f2142b20bad78e61f7f829e8714e45685 Mon Sep 17 00:00:00 2001
+From: Douglas Anderson <dianders@chromium.org>
+Date: Fri, 14 Jun 2019 15:47:29 -0700
+Subject: [PATCH] drm/rockchip: Properly adjust to a true clock in adjusted_mode
+Git-commit: 99b9683f2142b20bad78e61f7f829e8714e45685
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+When fixing up the clock in vop_crtc_mode_fixup() we're not doing it
+quite correctly. Specifically if we've got the true clock 266666667 Hz,
+we'll perform this calculation:
+ 266666667 / 1000 => 266666
+
+Later when we try to set the clock we'll do clk_set_rate(266666 *
+1000). The common clock framework won't actually pick the proper clock
+in this case since it always wants clocks <= the specified one.
+
+Let's solve this by using DIV_ROUND_UP.
+
+Fixes: b59b8de31497 ("drm/rockchip: return a true clock rate to adjusted_mode")
+Signed-off-by: Douglas Anderson <dianders@chromium.org>
+Signed-off-by: Sean Paul <seanpaul@chromium.org>
+Reviewed-by: Yakir Yang <ykk@rock-chips.com>
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Link: https://patchwork.freedesktop.org/patch/msgid/20190614224730.98622-1-dianders@chromium.org
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+index 4189ca17f381..771bf5d53cf0 100644
+--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
++++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+@@ -1013,7 +1013,8 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
+ struct vop *vop = to_vop(crtc);
+
+ adjusted_mode->clock =
+- clk_round_rate(vop->dclk, mode->clock * 1000) / 1000;
++ DIV_ROUND_UP(clk_round_rate(vop->dclk, mode->clock * 1000),
++ 1000);
+
+ return true;
+ }
+--
+2.16.4
+
diff --git a/patches.kernel.org/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch b/patches.fixes/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch
index 6565d723e5..6565d723e5 100644
--- a/patches.kernel.org/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch
+++ b/patches.fixes/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch
diff --git a/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-ide-.patch b/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
index df616f4224..df616f4224 100644
--- a/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-ide-.patch
+++ b/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
diff --git a/patches.fixes/crypto-arm64-sha1-ce-correct-digest-for-empty-data-i.patch b/patches.fixes/crypto-arm64-sha1-ce-correct-digest-for-empty-data-i.patch
new file mode 100644
index 0000000000..a63d8b0f59
--- /dev/null
+++ b/patches.fixes/crypto-arm64-sha1-ce-correct-digest-for-empty-data-i.patch
@@ -0,0 +1,40 @@
+From 1d4aaf16defa86d2665ae7db0259d6cb07e2091f Mon Sep 17 00:00:00 2001
+From: Elena Petrova <lenaptr@google.com>
+Date: Tue, 28 May 2019 13:41:52 +0100
+Subject: [PATCH] crypto: arm64/sha1-ce - correct digest for empty data in finup
+Git-commit: 1d4aaf16defa86d2665ae7db0259d6cb07e2091f
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The sha1-ce finup implementation for ARM64 produces wrong digest
+for empty input (len=0). Expected: da39a3ee..., result: 67452301...
+(initial value of SHA internal state). The error is in sha1_ce_finup:
+for empty data `finalize` will be 1, so the code is relying on
+sha1_ce_transform to make the final round. However, in
+sha1_base_do_update, the block function will not be called when
+len == 0.
+
+Fix it by setting finalize to 0 if data is empty.
+
+Fixes: 07eb54d306f4 ("crypto: arm64/sha1-ce - move SHA-1 ARMv8 implementation to base layer")
+Cc: stable@vger.kernel.org
+Signed-off-by: Elena Petrova <lenaptr@google.com>
+Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ arch/arm64/crypto/sha1-ce-glue.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/crypto/sha1-ce-glue.c
++++ b/arch/arm64/crypto/sha1-ce-glue.c
+@@ -50,7 +50,7 @@ static int sha1_ce_finup(struct shash_de
+ unsigned int len, u8 *out)
+ {
+ struct sha1_ce_state *sctx = shash_desc_ctx(desc);
+- bool finalize = !sctx->sst.count && !(len % SHA1_BLOCK_SIZE);
++ bool finalize = !sctx->sst.count && !(len % SHA1_BLOCK_SIZE) && len;
+
+ ASM_EXPORT(sha1_ce_offsetof_count,
+ offsetof(struct sha1_ce_state, sst.count));
diff --git a/patches.fixes/crypto-arm64-sha2-ce-correct-digest-for-empty-data-i.patch b/patches.fixes/crypto-arm64-sha2-ce-correct-digest-for-empty-data-i.patch
new file mode 100644
index 0000000000..b28f23de72
--- /dev/null
+++ b/patches.fixes/crypto-arm64-sha2-ce-correct-digest-for-empty-data-i.patch
@@ -0,0 +1,40 @@
+From 6bd934de1e393466b319d29c4427598fda096c57 Mon Sep 17 00:00:00 2001
+From: Elena Petrova <lenaptr@google.com>
+Date: Tue, 28 May 2019 15:35:06 +0100
+Subject: [PATCH] crypto: arm64/sha2-ce - correct digest for empty data in finup
+Git-commit: 6bd934de1e393466b319d29c4427598fda096c57
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The sha256-ce finup implementation for ARM64 produces wrong digest
+for empty input (len=0). Expected: the actual digest, result: initial
+value of SHA internal state. The error is in sha256_ce_finup:
+for empty data `finalize` will be 1, so the code is relying on
+sha2_ce_transform to make the final round. However, in
+sha256_base_do_update, the block function will not be called when
+len == 0.
+
+Fix it by setting finalize to 0 if data is empty.
+
+Fixes: 03802f6a80b3a ("crypto: arm64/sha2-ce - move SHA-224/256 ARMv8 implementation to base layer")
+Cc: stable@vger.kernel.org
+Signed-off-by: Elena Petrova <lenaptr@google.com>
+Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ arch/arm64/crypto/sha2-ce-glue.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/crypto/sha2-ce-glue.c
++++ b/arch/arm64/crypto/sha2-ce-glue.c
+@@ -50,7 +50,7 @@ static int sha256_ce_finup(struct shash_
+ unsigned int len, u8 *out)
+ {
+ struct sha256_ce_state *sctx = shash_desc_ctx(desc);
+- bool finalize = !sctx->sst.count && !(len % SHA256_BLOCK_SIZE);
++ bool finalize = !sctx->sst.count && !(len % SHA256_BLOCK_SIZE) && len;
+
+ ASM_EXPORT(sha256_ce_offsetof_count,
+ offsetof(struct sha256_ce_state, sst.count));
diff --git a/patches.fixes/crypto-ccp-Fix-3DES-complaint-from-ccp-crypto-module.patch b/patches.fixes/crypto-ccp-Fix-3DES-complaint-from-ccp-crypto-module.patch
new file mode 100644
index 0000000000..dbd56525c1
--- /dev/null
+++ b/patches.fixes/crypto-ccp-Fix-3DES-complaint-from-ccp-crypto-module.patch
@@ -0,0 +1,72 @@
+From 89646fdda4cae203185444ac7988835f36a21ee1 Mon Sep 17 00:00:00 2001
+From: "Hook, Gary" <Gary.Hook@amd.com>
+Date: Tue, 14 May 2019 21:53:30 +0000
+Subject: [PATCH] crypto: ccp - Fix 3DES complaint from ccp-crypto module
+Git-commit: 89646fdda4cae203185444ac7988835f36a21ee1
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Crypto self-tests reveal an error:
+
+Alg: skcipher: cbc-des3-ccp encryption test failed (wrong output IV) on test vector 0, cfg="in-place"
+
+The offset value should not be recomputed when retrieving the context.
+Also, a code path exists which makes decisions based on older (version 3)
+hardware; a v3 device deosn't support 3DES so remove this check.
+
+Fixes: 990672d48515 ('crypto: ccp - Enable 3DES function on v5 CCPs')
+
+Signed-off-by: Gary R Hook <gary.hook@amd.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/ccp/ccp-ops.c | 15 ++++-----------
+ 1 file changed, 4 insertions(+), 11 deletions(-)
+
+--- a/drivers/crypto/ccp/ccp-ops.c
++++ b/drivers/crypto/ccp/ccp-ops.c
+@@ -1230,6 +1230,9 @@ static int ccp_run_des3_cmd(struct ccp_c
+ int ret;
+
+ /* Error checks */
++ if (cmd_q->ccp->vdata->version < CCP_VERSION(5, 0))
++ return -EINVAL;
++
+ if (!cmd_q->ccp->vdata->perform->des3)
+ return -EINVAL;
+
+@@ -1306,8 +1309,6 @@ static int ccp_run_des3_cmd(struct ccp_c
+ * passthru option to convert from big endian to little endian.
+ */
+ if (des3->mode != CCP_DES3_MODE_ECB) {
+- u32 load_mode;
+-
+ op.sb_ctx = cmd_q->sb_ctx;
+
+ ret = ccp_init_dm_workarea(&ctx, cmd_q,
+@@ -1320,12 +1321,8 @@ static int ccp_run_des3_cmd(struct ccp_c
+ dm_offset = CCP_SB_BYTES - des3->iv_len;
+ ccp_set_dm_area(&ctx, dm_offset, des3->iv, 0, des3->iv_len);
+
+- if (cmd_q->ccp->vdata->version == CCP_VERSION(3, 0))
+- load_mode = CCP_PASSTHRU_BYTESWAP_NOOP;
+- else
+- load_mode = CCP_PASSTHRU_BYTESWAP_256BIT;
+ ret = ccp_copy_to_sb(cmd_q, &ctx, op.jobid, op.sb_ctx,
+- load_mode);
++ CCP_PASSTHRU_BYTESWAP_256BIT);
+ if (ret) {
+ cmd->engine_error = cmd_q->cmd_error;
+ goto e_ctx;
+@@ -1387,10 +1384,6 @@ static int ccp_run_des3_cmd(struct ccp_c
+ }
+
+ /* ...but we only need the last DES3_EDE_BLOCK_SIZE bytes */
+- if (cmd_q->ccp->vdata->version == CCP_VERSION(3, 0))
+- dm_offset = CCP_SB_BYTES - des3->iv_len;
+- else
+- dm_offset = 0;
+ ccp_get_dm_area(&ctx, dm_offset, des3->iv, 0,
+ DES3_EDE_BLOCK_SIZE);
+ }
diff --git a/patches.fixes/crypto-ccp-Validate-the-the-error-value-used-to-inde.patch b/patches.fixes/crypto-ccp-Validate-the-the-error-value-used-to-inde.patch
new file mode 100644
index 0000000000..ccfd65dc5d
--- /dev/null
+++ b/patches.fixes/crypto-ccp-Validate-the-the-error-value-used-to-inde.patch
@@ -0,0 +1,152 @@
+From 52393d617af7b554f03531e6756facf2ea687d2e Mon Sep 17 00:00:00 2001
+From: "Hook, Gary" <Gary.Hook@amd.com>
+Date: Thu, 27 Jun 2019 16:16:23 +0000
+Subject: [PATCH] crypto: ccp - Validate the the error value used to index error messages
+Git-commit: 52393d617af7b554f03531e6756facf2ea687d2e
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The error code read from the queue status register is only 6 bits wide,
+but we need to verify its value is within range before indexing the error
+messages.
+
+Fixes: 81422badb3907 ("crypto: ccp - Make syslog errors human-readable")
+Cc: <stable@vger.kernel.org>
+Reported-by: Cfir Cohen <cfir@google.com>
+Signed-off-by: Gary R Hook <gary.hook@amd.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/ccp/ccp-dev.c | 96 +++++++++++++++++++++++---------------------
+ drivers/crypto/ccp/ccp-dev.h | 2 +-
+ 2 files changed, 52 insertions(+), 46 deletions(-)
+
+diff --git a/drivers/crypto/ccp/ccp-dev.c b/drivers/crypto/ccp/ccp-dev.c
+index 1b5035d56288..9b6d8972a565 100644
+--- a/drivers/crypto/ccp/ccp-dev.c
++++ b/drivers/crypto/ccp/ccp-dev.c
+@@ -35,56 +35,62 @@ struct ccp_tasklet_data {
+ };
+
+ /* Human-readable error strings */
++#define CCP_MAX_ERROR_CODE 64
+ static char *ccp_error_codes[] = {
+ "",
+- "ERR 01: ILLEGAL_ENGINE",
+- "ERR 02: ILLEGAL_KEY_ID",
+- "ERR 03: ILLEGAL_FUNCTION_TYPE",
+- "ERR 04: ILLEGAL_FUNCTION_MODE",
+- "ERR 05: ILLEGAL_FUNCTION_ENCRYPT",
+- "ERR 06: ILLEGAL_FUNCTION_SIZE",
+- "ERR 07: Zlib_MISSING_INIT_EOM",
+- "ERR 08: ILLEGAL_FUNCTION_RSVD",
+- "ERR 09: ILLEGAL_BUFFER_LENGTH",
+- "ERR 10: VLSB_FAULT",
+- "ERR 11: ILLEGAL_MEM_ADDR",
+- "ERR 12: ILLEGAL_MEM_SEL",
+- "ERR 13: ILLEGAL_CONTEXT_ID",
+- "ERR 14: ILLEGAL_KEY_ADDR",
+- "ERR 15: 0xF Reserved",
+- "ERR 16: Zlib_ILLEGAL_MULTI_QUEUE",
+- "ERR 17: Zlib_ILLEGAL_JOBID_CHANGE",
+- "ERR 18: CMD_TIMEOUT",
+- "ERR 19: IDMA0_AXI_SLVERR",
+- "ERR 20: IDMA0_AXI_DECERR",
+- "ERR 21: 0x15 Reserved",
+- "ERR 22: IDMA1_AXI_SLAVE_FAULT",
+- "ERR 23: IDMA1_AIXI_DECERR",
+- "ERR 24: 0x18 Reserved",
+- "ERR 25: ZLIBVHB_AXI_SLVERR",
+- "ERR 26: ZLIBVHB_AXI_DECERR",
+- "ERR 27: 0x1B Reserved",
+- "ERR 27: ZLIB_UNEXPECTED_EOM",
+- "ERR 27: ZLIB_EXTRA_DATA",
+- "ERR 30: ZLIB_BTYPE",
+- "ERR 31: ZLIB_UNDEFINED_SYMBOL",
+- "ERR 32: ZLIB_UNDEFINED_DISTANCE_S",
+- "ERR 33: ZLIB_CODE_LENGTH_SYMBOL",
+- "ERR 34: ZLIB _VHB_ILLEGAL_FETCH",
+- "ERR 35: ZLIB_UNCOMPRESSED_LEN",
+- "ERR 36: ZLIB_LIMIT_REACHED",
+- "ERR 37: ZLIB_CHECKSUM_MISMATCH0",
+- "ERR 38: ODMA0_AXI_SLVERR",
+- "ERR 39: ODMA0_AXI_DECERR",
+- "ERR 40: 0x28 Reserved",
+- "ERR 41: ODMA1_AXI_SLVERR",
+- "ERR 42: ODMA1_AXI_DECERR",
+- "ERR 43: LSB_PARITY_ERR",
++ "ILLEGAL_ENGINE",
++ "ILLEGAL_KEY_ID",
++ "ILLEGAL_FUNCTION_TYPE",
++ "ILLEGAL_FUNCTION_MODE",
++ "ILLEGAL_FUNCTION_ENCRYPT",
++ "ILLEGAL_FUNCTION_SIZE",
++ "Zlib_MISSING_INIT_EOM",
++ "ILLEGAL_FUNCTION_RSVD",
++ "ILLEGAL_BUFFER_LENGTH",
++ "VLSB_FAULT",
++ "ILLEGAL_MEM_ADDR",
++ "ILLEGAL_MEM_SEL",
++ "ILLEGAL_CONTEXT_ID",
++ "ILLEGAL_KEY_ADDR",
++ "0xF Reserved",
++ "Zlib_ILLEGAL_MULTI_QUEUE",
++ "Zlib_ILLEGAL_JOBID_CHANGE",
++ "CMD_TIMEOUT",
++ "IDMA0_AXI_SLVERR",
++ "IDMA0_AXI_DECERR",
++ "0x15 Reserved",
++ "IDMA1_AXI_SLAVE_FAULT",
++ "IDMA1_AIXI_DECERR",
++ "0x18 Reserved",
++ "ZLIBVHB_AXI_SLVERR",
++ "ZLIBVHB_AXI_DECERR",
++ "0x1B Reserved",
++ "ZLIB_UNEXPECTED_EOM",
++ "ZLIB_EXTRA_DATA",
++ "ZLIB_BTYPE",
++ "ZLIB_UNDEFINED_SYMBOL",
++ "ZLIB_UNDEFINED_DISTANCE_S",
++ "ZLIB_CODE_LENGTH_SYMBOL",
++ "ZLIB _VHB_ILLEGAL_FETCH",
++ "ZLIB_UNCOMPRESSED_LEN",
++ "ZLIB_LIMIT_REACHED",
++ "ZLIB_CHECKSUM_MISMATCH0",
++ "ODMA0_AXI_SLVERR",
++ "ODMA0_AXI_DECERR",
++ "0x28 Reserved",
++ "ODMA1_AXI_SLVERR",
++ "ODMA1_AXI_DECERR",
+ };
+
+-void ccp_log_error(struct ccp_device *d, int e)
++void ccp_log_error(struct ccp_device *d, unsigned int e)
+ {
+- dev_err(d->dev, "CCP error: %s (0x%x)\n", ccp_error_codes[e], e);
++ if (WARN_ON(e >= CCP_MAX_ERROR_CODE))
++ return;
++
++ if (e < ARRAY_SIZE(ccp_error_codes))
++ dev_err(d->dev, "CCP error %d: %s\n", e, ccp_error_codes[e]);
++ else
++ dev_err(d->dev, "CCP error %d: Unknown Error\n", e);
+ }
+
+ /* List of CCPs, CCP count, read-write access lock, and access functions
+diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h
+index 6810b65c1939..7442b0422f8a 100644
+--- a/drivers/crypto/ccp/ccp-dev.h
++++ b/drivers/crypto/ccp/ccp-dev.h
+@@ -632,7 +632,7 @@ struct ccp5_desc {
+ void ccp_add_device(struct ccp_device *ccp);
+ void ccp_del_device(struct ccp_device *ccp);
+
+-extern void ccp_log_error(struct ccp_device *, int);
++extern void ccp_log_error(struct ccp_device *, unsigned int);
+
+ struct ccp_device *ccp_alloc_struct(struct sp_device *sp);
+ bool ccp_queues_suspended(struct ccp_device *ccp);
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-ccp-fix-AES-CFB-error-exposed-by-new-test-vec.patch b/patches.fixes/crypto-ccp-fix-AES-CFB-error-exposed-by-new-test-vec.patch
new file mode 100644
index 0000000000..752d703a46
--- /dev/null
+++ b/patches.fixes/crypto-ccp-fix-AES-CFB-error-exposed-by-new-test-vec.patch
@@ -0,0 +1,63 @@
+From c3b359d6567c0b8f413e924feb37cf025067d55a Mon Sep 17 00:00:00 2001
+From: "Hook, Gary" <Gary.Hook@amd.com>
+Date: Tue, 14 May 2019 21:53:23 +0000
+Subject: [PATCH] crypto: ccp - fix AES CFB error exposed by new test vectors
+Git-commit: c3b359d6567c0b8f413e924feb37cf025067d55a
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Updated testmgr will exhibit this error message when loading the
+ccp-crypto module:
+
+Alg: skcipher: cfb-aes-ccp encryption failed with err -22 on test vector 3, cfg="in-place"
+
+Update the CCP crypto driver to correctly treat CFB as a streaming mode
+cipher (instead of block mode). Update the configuration for CFB to
+specify the block size as a single byte;
+
+Fixes: 2b789435d7f3 ('crypto: ccp - CCP AES crypto API support')
+
+Signed-off-by: Gary R Hook <gary.hook@amd.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/ccp/ccp-crypto-aes.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/crypto/ccp/ccp-crypto-aes.c b/drivers/crypto/ccp/ccp-crypto-aes.c
+index 89291c15015c..3f768699332b 100644
+--- a/drivers/crypto/ccp/ccp-crypto-aes.c
++++ b/drivers/crypto/ccp/ccp-crypto-aes.c
+@@ -1,7 +1,8 @@
++// SPDX-License-Identifier: GPL-2.0
+ /*
+ * AMD Cryptographic Coprocessor (CCP) AES crypto API support
+ *
+- * Copyright (C) 2013,2016 Advanced Micro Devices, Inc.
++ * Copyright (C) 2013-2019 Advanced Micro Devices, Inc.
+ *
+ * Author: Tom Lendacky <thomas.lendacky@amd.com>
+ *
+@@ -79,8 +80,7 @@ static int ccp_aes_crypt(struct ablkcipher_request *req, bool encrypt)
+ return -EINVAL;
+
+ if (((ctx->u.aes.mode == CCP_AES_MODE_ECB) ||
+- (ctx->u.aes.mode == CCP_AES_MODE_CBC) ||
+- (ctx->u.aes.mode == CCP_AES_MODE_CFB)) &&
++ (ctx->u.aes.mode == CCP_AES_MODE_CBC)) &&
+ (req->nbytes & (AES_BLOCK_SIZE - 1)))
+ return -EINVAL;
+
+@@ -291,7 +291,7 @@ static struct ccp_aes_def aes_algs[] = {
+ .version = CCP_VERSION(3, 0),
+ .name = "cfb(aes)",
+ .driver_name = "cfb-aes-ccp",
+- .blocksize = AES_BLOCK_SIZE,
++ .blocksize = 1,
+ .ivsize = AES_BLOCK_SIZE,
+ .alg_defaults = &ccp_aes_defaults,
+ },
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-chacha20poly1305-fix-atomic-sleep-when-using-.patch b/patches.fixes/crypto-chacha20poly1305-fix-atomic-sleep-when-using-.patch
new file mode 100644
index 0000000000..26beeca78c
--- /dev/null
+++ b/patches.fixes/crypto-chacha20poly1305-fix-atomic-sleep-when-using-.patch
@@ -0,0 +1,199 @@
+From 7545b6c2087f4ef0287c8c9b7eba6a728c67ff8e Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Fri, 31 May 2019 11:12:30 -0700
+Subject: [PATCH] crypto: chacha20poly1305 - fix atomic sleep when using async algorithm
+Git-commit: 7545b6c2087f4ef0287c8c9b7eba6a728c67ff8e
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Clear the CRYPTO_TFM_REQ_MAY_SLEEP flag when the chacha20poly1305
+operation is being continued from an async completion callback, since
+sleeping may not be allowed in that context.
+
+This is basically the same bug that was recently fixed in the xts and
+lrw templates. But, it's always been broken in chacha20poly1305 too.
+This was found using syzkaller in combination with the updated crypto
+self-tests which actually test the MAY_SLEEP flag now.
+
+Reproducer:
+
+ python -c 'import socket; socket.socket(socket.AF_ALG, 5, 0).bind(
+ ("aead", "rfc7539(cryptd(chacha20-generic),poly1305-generic)"))'
+
+Kernel output:
+
+ BUG: sleeping function called from invalid context at include/crypto/algapi.h:426
+ in_atomic(): 1, irqs_disabled(): 0, pid: 1001, name: kworker/2:2
+ [...]
+ CPU: 2 PID: 1001 Comm: kworker/2:2 Not tainted 5.2.0-rc2 #5
+ Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-20181126_142135-anatol 04/01/2014
+ Workqueue: crypto cryptd_queue_worker
+ Call Trace:
+ __dump_stack lib/dump_stack.c:77 [inline]
+ dump_stack+0x4d/0x6a lib/dump_stack.c:113
+ ___might_sleep kernel/sched/core.c:6138 [inline]
+ ___might_sleep.cold.19+0x8e/0x9f kernel/sched/core.c:6095
+ crypto_yield include/crypto/algapi.h:426 [inline]
+ crypto_hash_walk_done+0xd6/0x100 crypto/ahash.c:113
+ shash_ahash_update+0x41/0x60 crypto/shash.c:251
+ shash_async_update+0xd/0x10 crypto/shash.c:260
+ crypto_ahash_update include/crypto/hash.h:539 [inline]
+ poly_setkey+0xf6/0x130 crypto/chacha20poly1305.c:337
+ poly_init+0x51/0x60 crypto/chacha20poly1305.c:364
+ async_done_continue crypto/chacha20poly1305.c:78 [inline]
+ poly_genkey_done+0x15/0x30 crypto/chacha20poly1305.c:369
+ cryptd_skcipher_complete+0x29/0x70 crypto/cryptd.c:279
+ cryptd_skcipher_decrypt+0xcd/0x110 crypto/cryptd.c:339
+ cryptd_queue_worker+0x70/0xa0 crypto/cryptd.c:184
+ process_one_work+0x1ed/0x420 kernel/workqueue.c:2269
+ worker_thread+0x3e/0x3a0 kernel/workqueue.c:2415
+ kthread+0x11f/0x140 kernel/kthread.c:255
+ ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352
+
+Fixes: 71ebc4d1b27d ("crypto: chacha20poly1305 - Add a ChaCha20-Poly1305 AEAD construction, RFC7539")
+Cc: <stable@vger.kernel.org> # v4.2+
+Cc: Martin Willi <martin@strongswan.org>
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ crypto/chacha20poly1305.c | 30 +++++++++++++++++++-----------
+ 1 file changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/crypto/chacha20poly1305.c b/crypto/chacha20poly1305.c
+index e38a2d61819a..acbbf010222e 100644
+--- a/crypto/chacha20poly1305.c
++++ b/crypto/chacha20poly1305.c
+@@ -65,6 +65,8 @@ struct chachapoly_req_ctx {
+ unsigned int cryptlen;
+ /* Actual AD, excluding IV */
+ unsigned int assoclen;
++ /* request flags, with MAY_SLEEP cleared if needed */
++ u32 flags;
+ union {
+ struct poly_req poly;
+ struct chacha_req chacha;
+@@ -74,8 +76,12 @@ struct chachapoly_req_ctx {
+ static inline void async_done_continue(struct aead_request *req, int err,
+ int (*cont)(struct aead_request *))
+ {
+- if (!err)
++ if (!err) {
++ struct chachapoly_req_ctx *rctx = aead_request_ctx(req);
++
++ rctx->flags &= ~CRYPTO_TFM_REQ_MAY_SLEEP;
+ err = cont(req);
++ }
+
+ if (err != -EINPROGRESS && err != -EBUSY)
+ aead_request_complete(req, err);
+@@ -142,7 +148,7 @@ static int chacha_decrypt(struct aead_request *req)
+ dst = scatterwalk_ffwd(rctx->dst, req->dst, req->assoclen);
+ }
+
+- skcipher_request_set_callback(&creq->req, aead_request_flags(req),
++ skcipher_request_set_callback(&creq->req, rctx->flags,
+ chacha_decrypt_done, req);
+ skcipher_request_set_tfm(&creq->req, ctx->chacha);
+ skcipher_request_set_crypt(&creq->req, src, dst,
+@@ -186,7 +192,7 @@ static int poly_tail(struct aead_request *req)
+ memcpy(&preq->tail.cryptlen, &len, sizeof(len));
+ sg_set_buf(preq->src, &preq->tail, sizeof(preq->tail));
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_tail_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, preq->src,
+@@ -217,7 +223,7 @@ static int poly_cipherpad(struct aead_request *req)
+ sg_init_table(preq->src, 1);
+ sg_set_buf(preq->src, &preq->pad, padlen);
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_cipherpad_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, preq->src, NULL, padlen);
+@@ -248,7 +254,7 @@ static int poly_cipher(struct aead_request *req)
+ sg_init_table(rctx->src, 2);
+ crypt = scatterwalk_ffwd(rctx->src, crypt, req->assoclen);
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_cipher_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, crypt, NULL, rctx->cryptlen);
+@@ -278,7 +284,7 @@ static int poly_adpad(struct aead_request *req)
+ sg_init_table(preq->src, 1);
+ sg_set_buf(preq->src, preq->pad, padlen);
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_adpad_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, preq->src, NULL, padlen);
+@@ -302,7 +308,7 @@ static int poly_ad(struct aead_request *req)
+ struct poly_req *preq = &rctx->u.poly;
+ int err;
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_ad_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, req->src, NULL, rctx->assoclen);
+@@ -329,7 +335,7 @@ static int poly_setkey(struct aead_request *req)
+ sg_init_table(preq->src, 1);
+ sg_set_buf(preq->src, rctx->key, sizeof(rctx->key));
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_setkey_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+ ahash_request_set_crypt(&preq->req, preq->src, NULL, sizeof(rctx->key));
+@@ -353,7 +359,7 @@ static int poly_init(struct aead_request *req)
+ struct poly_req *preq = &rctx->u.poly;
+ int err;
+
+- ahash_request_set_callback(&preq->req, aead_request_flags(req),
++ ahash_request_set_callback(&preq->req, rctx->flags,
+ poly_init_done, req);
+ ahash_request_set_tfm(&preq->req, ctx->poly);
+
+@@ -391,7 +397,7 @@ static int poly_genkey(struct aead_request *req)
+
+ chacha_iv(creq->iv, req, 0);
+
+- skcipher_request_set_callback(&creq->req, aead_request_flags(req),
++ skcipher_request_set_callback(&creq->req, rctx->flags,
+ poly_genkey_done, req);
+ skcipher_request_set_tfm(&creq->req, ctx->chacha);
+ skcipher_request_set_crypt(&creq->req, creq->src, creq->src,
+@@ -431,7 +437,7 @@ static int chacha_encrypt(struct aead_request *req)
+ dst = scatterwalk_ffwd(rctx->dst, req->dst, req->assoclen);
+ }
+
+- skcipher_request_set_callback(&creq->req, aead_request_flags(req),
++ skcipher_request_set_callback(&creq->req, rctx->flags,
+ chacha_encrypt_done, req);
+ skcipher_request_set_tfm(&creq->req, ctx->chacha);
+ skcipher_request_set_crypt(&creq->req, src, dst,
+@@ -449,6 +455,7 @@ static int chachapoly_encrypt(struct aead_request *req)
+ struct chachapoly_req_ctx *rctx = aead_request_ctx(req);
+
+ rctx->cryptlen = req->cryptlen;
++ rctx->flags = aead_request_flags(req);
+
+ /* encrypt call chain:
+ * - chacha_encrypt/done()
+@@ -470,6 +477,7 @@ static int chachapoly_decrypt(struct aead_request *req)
+ struct chachapoly_req_ctx *rctx = aead_request_ctx(req);
+
+ rctx->cryptlen = req->cryptlen - POLY1305_DIGEST_SIZE;
++ rctx->flags = aead_request_flags(req);
+
+ /* decrypt call chain:
+ * - poly_genkey/done()
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-ghash-fix-unaligned-memory-access-in-ghash_se.patch b/patches.fixes/crypto-ghash-fix-unaligned-memory-access-in-ghash_se.patch
new file mode 100644
index 0000000000..b7c17315be
--- /dev/null
+++ b/patches.fixes/crypto-ghash-fix-unaligned-memory-access-in-ghash_se.patch
@@ -0,0 +1,61 @@
+From 5c6bc4dfa515738149998bb0db2481a4fdead979 Mon Sep 17 00:00:00 2001
+From: Eric Biggers <ebiggers@google.com>
+Date: Thu, 30 May 2019 10:50:39 -0700
+Subject: [PATCH] crypto: ghash - fix unaligned memory access in ghash_setkey()
+Git-commit: 5c6bc4dfa515738149998bb0db2481a4fdead979
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+Changing ghash_mod_init() to be subsys_initcall made it start running
+before the alignment fault handler has been installed on ARM. In kernel
+builds where the keys in the ghash test vectors happened to be
+misaligned in the kernel image, this exposed the longstanding bug that
+ghash_setkey() is incorrectly casting the key buffer (which can have any
+alignment) to be128 for passing to gf128mul_init_4k_lle().
+
+Fix this by memcpy()ing the key to a temporary buffer.
+
+Don't fix it by setting an alignmask on the algorithm instead because
+that would unnecessarily force alignment of the data too.
+
+Fixes: 2cdc6899a88e ("crypto: ghash - Add GHASH digest algorithm for GCM")
+Reported-by: Peter Robinson <pbrobinson@gmail.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Eric Biggers <ebiggers@google.com>
+Tested-by: Peter Robinson <pbrobinson@gmail.com>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ crypto/ghash-generic.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
+index e6307935413c..c8a347798eae 100644
+--- a/crypto/ghash-generic.c
++++ b/crypto/ghash-generic.c
+@@ -34,6 +34,7 @@ static int ghash_setkey(struct crypto_shash *tfm,
+ const u8 *key, unsigned int keylen)
+ {
+ struct ghash_ctx *ctx = crypto_shash_ctx(tfm);
++ be128 k;
+
+ if (keylen != GHASH_BLOCK_SIZE) {
+ crypto_shash_set_flags(tfm, CRYPTO_TFM_RES_BAD_KEY_LEN);
+@@ -42,7 +43,12 @@ static int ghash_setkey(struct crypto_shash *tfm,
+
+ if (ctx->gf128)
+ gf128mul_free_4k(ctx->gf128);
+- ctx->gf128 = gf128mul_init_4k_lle((be128 *)key);
++
++ BUILD_BUG_ON(sizeof(k) != GHASH_BLOCK_SIZE);
++ memcpy(&k, key, GHASH_BLOCK_SIZE); /* avoid violating alignment rules */
++ ctx->gf128 = gf128mul_init_4k_lle(&k);
++ memzero_explicit(&k, GHASH_BLOCK_SIZE);
++
+ if (!ctx->gf128)
+ return -ENOMEM;
+
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-Align-SEC1-accesses-to-32-bits-bounda.patch b/patches.fixes/crypto-talitos-Align-SEC1-accesses-to-32-bits-bounda.patch
new file mode 100644
index 0000000000..d0609ce42f
--- /dev/null
+++ b/patches.fixes/crypto-talitos-Align-SEC1-accesses-to-32-bits-bounda.patch
@@ -0,0 +1,44 @@
+From c9cca7034b34a2d82e9a03b757de2485c294851c Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:18 +0000
+Subject: [PATCH] crypto: talitos - Align SEC1 accesses to 32 bits boundaries.
+Git-commit: c9cca7034b34a2d82e9a03b757de2485c294851c
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The MPC885 reference manual states:
+
+SEC Lite-initiated 8xx writes can occur only on 32-bit-word boundaries, but
+reads can occur on any byte boundary. Writing back a header read from a
+non-32-bit-word boundary will yield unpredictable results.
+
+In order to ensure that, cra_alignmask is set to 3 for SEC1.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index 7c8a3a717b91..750b0159e654 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -3327,7 +3327,10 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
+ alg->cra_priority = t_alg->algt.priority;
+ else
+ alg->cra_priority = TALITOS_CRA_PRIORITY;
+- alg->cra_alignmask = 0;
++ if (has_ftr_sec1(priv))
++ alg->cra_alignmask = 3;
++ else
++ alg->cra_alignmask = 0;
+ alg->cra_ctxsize = sizeof(struct talitos_ctx);
+ alg->cra_flags |= CRYPTO_ALG_KERN_DRIVER_ONLY;
+
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-HMAC-SNOOP-NO-AFEU-mode-requires-SW-i.patch b/patches.fixes/crypto-talitos-HMAC-SNOOP-NO-AFEU-mode-requires-SW-i.patch
new file mode 100644
index 0000000000..ad38def116
--- /dev/null
+++ b/patches.fixes/crypto-talitos-HMAC-SNOOP-NO-AFEU-mode-requires-SW-i.patch
@@ -0,0 +1,36 @@
+From 4bbfb839259a9c96a0be872e16f7471b7136aee5 Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:15 +0000
+Subject: [PATCH] crypto: talitos - HMAC SNOOP NO AFEU mode requires SW icv checking.
+Git-commit: 4bbfb839259a9c96a0be872e16f7471b7136aee5
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+In that mode, hardware ICV verification is not supported.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 7405c8d7ff97 ("crypto: talitos - templates for AEAD using HMAC_SNOOP_NO_AFEU")
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index a15aa6d6ec33..e35581d67315 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -1545,7 +1545,8 @@ static int aead_decrypt(struct aead_request *req)
+ if (IS_ERR(edesc))
+ return PTR_ERR(edesc);
+
+- if ((priv->features & TALITOS_FTR_HW_AUTH_CHECK) &&
++ if ((edesc->desc.hdr & DESC_HDR_TYPE_IPSEC_ESP) &&
++ (priv->features & TALITOS_FTR_HW_AUTH_CHECK) &&
+ ((!edesc->src_nents && !edesc->dst_nents) ||
+ priv->features & TALITOS_FTR_SRC_LINK_TBL_LEN_INCLUDES_EXTENT)) {
+
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-check-data-blocksize-in-ablkcipher.patch b/patches.fixes/crypto-talitos-check-data-blocksize-in-ablkcipher.patch
new file mode 100644
index 0000000000..4ac40cadc7
--- /dev/null
+++ b/patches.fixes/crypto-talitos-check-data-blocksize-in-ablkcipher.patch
@@ -0,0 +1,62 @@
+From ee483d32ee1a1a7f7d7e918fbc350c790a5af64a Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:12 +0000
+Subject: [PATCH] crypto: talitos - check data blocksize in ablkcipher.
+Git-commit: ee483d32ee1a1a7f7d7e918fbc350c790a5af64a
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+When data size is not a multiple of the alg's block size,
+the SEC generates an error interrupt and dumps the registers.
+And for NULL size, the SEC does just nothing and the interrupt
+is awaited forever.
+
+This patch ensures the data size is correct before submitting
+the request to the SEC engine.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index 8b9a529f1b66..1e5410f92166 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -1756,6 +1756,14 @@ static int ablkcipher_encrypt(struct ablkcipher_request *areq)
+ struct crypto_ablkcipher *cipher = crypto_ablkcipher_reqtfm(areq);
+ struct talitos_ctx *ctx = crypto_ablkcipher_ctx(cipher);
+ struct talitos_edesc *edesc;
++ unsigned int blocksize =
++ crypto_tfm_alg_blocksize(crypto_ablkcipher_tfm(cipher));
++
++ if (!areq->nbytes)
++ return 0;
++
++ if (areq->nbytes % blocksize)
++ return -EINVAL;
+
+ /* allocate extended descriptor */
+ edesc = ablkcipher_edesc_alloc(areq, true);
+@@ -1773,6 +1781,14 @@ static int ablkcipher_decrypt(struct ablkcipher_request *areq)
+ struct crypto_ablkcipher *cipher = crypto_ablkcipher_reqtfm(areq);
+ struct talitos_ctx *ctx = crypto_ablkcipher_ctx(cipher);
+ struct talitos_edesc *edesc;
++ unsigned int blocksize =
++ crypto_tfm_alg_blocksize(crypto_ablkcipher_tfm(cipher));
++
++ if (!areq->nbytes)
++ return 0;
++
++ if (areq->nbytes % blocksize)
++ return -EINVAL;
+
+ /* allocate extended descriptor */
+ edesc = ablkcipher_edesc_alloc(areq, false);
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-fix-CTR-alg-blocksize.patch b/patches.fixes/crypto-talitos-fix-CTR-alg-blocksize.patch
new file mode 100644
index 0000000000..dd2a40ef59
--- /dev/null
+++ b/patches.fixes/crypto-talitos-fix-CTR-alg-blocksize.patch
@@ -0,0 +1,35 @@
+From b9a05b6041cb9810a291315569b2af0d63c3680a Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:11 +0000
+Subject: [PATCH] crypto: talitos - fix CTR alg blocksize
+Git-commit: b9a05b6041cb9810a291315569b2af0d63c3680a
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+CTR has a blocksize of 1.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 5e75ae1b3cef ("crypto: talitos - add new crypto modes")
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index 95f71e18bf55..8b9a529f1b66 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -2822,7 +2822,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .alg.crypto = {
+ .cra_name = "ctr(aes)",
+ .cra_driver_name = "ctr-aes-talitos",
+- .cra_blocksize = AES_BLOCK_SIZE,
++ .cra_blocksize = 1,
+ .cra_flags = CRYPTO_ALG_TYPE_ABLKCIPHER |
+ CRYPTO_ALG_ASYNC,
+ .cra_ablkcipher = {
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-properly-handle-split-ICV.patch b/patches.fixes/crypto-talitos-properly-handle-split-ICV.patch
new file mode 100644
index 0000000000..ad4f579b94
--- /dev/null
+++ b/patches.fixes/crypto-talitos-properly-handle-split-ICV.patch
@@ -0,0 +1,94 @@
+From eae55a586c3c8b50982bad3c3426e9c9dd7a0075 Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:17 +0000
+Subject: [PATCH] crypto: talitos - properly handle split ICV.
+Git-commit: eae55a586c3c8b50982bad3c3426e9c9dd7a0075
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The driver assumes that the ICV is as a single piece in the last
+element of the scatterlist. This assumption is wrong.
+
+This patch ensures that the ICV is properly handled regardless of
+the scatterlist layout.
+
+Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -988,7 +988,6 @@ static void ipsec_esp_encrypt_done(struc
+ struct crypto_aead *authenc = crypto_aead_reqtfm(areq);
+ unsigned int authsize = crypto_aead_authsize(authenc);
+ struct talitos_edesc *edesc;
+- struct scatterlist *sg;
+ void *icvdata;
+
+ edesc = container_of(desc, struct talitos_edesc, desc);
+@@ -1002,9 +1001,8 @@ static void ipsec_esp_encrypt_done(struc
+ else
+ icvdata = &edesc->link_tbl[edesc->src_nents +
+ edesc->dst_nents + 2];
+- sg = sg_last(areq->dst, edesc->dst_nents);
+- memcpy((char *)sg_virt(sg) + sg->length - authsize,
+- icvdata, authsize);
++ sg_pcopy_from_buffer(areq->dst, edesc->dst_nents ? : 1, icvdata,
++ authsize, areq->assoclen + areq->cryptlen);
+ }
+
+ kfree(edesc);
+@@ -1020,7 +1018,6 @@ static void ipsec_esp_decrypt_swauth_don
+ struct crypto_aead *authenc = crypto_aead_reqtfm(req);
+ unsigned int authsize = crypto_aead_authsize(authenc);
+ struct talitos_edesc *edesc;
+- struct scatterlist *sg;
+ char *oicv, *icv;
+ struct talitos_private *priv = dev_get_drvdata(dev);
+ bool is_sec1 = has_ftr_sec1(priv);
+@@ -1030,9 +1027,18 @@ static void ipsec_esp_decrypt_swauth_don
+ ipsec_esp_unmap(dev, edesc, req);
+
+ if (!err) {
++ char icvdata[SHA512_DIGEST_SIZE];
++ int nents = edesc->dst_nents ? : 1;
++ unsigned int len = req->assoclen + req->cryptlen;
++
+ /* auth check */
+- sg = sg_last(req->dst, edesc->dst_nents ? : 1);
+- icv = (char *)sg_virt(sg) + sg->length - authsize;
++ if (nents > 1) {
++ sg_pcopy_to_buffer(req->dst, nents, icvdata, authsize,
++ len - authsize);
++ icv = icvdata;
++ } else {
++ icv = (char *)sg_virt(req->dst) + len - authsize;
++ }
+
+ if (edesc->dma_len) {
+ if (is_sec1)
+@@ -1469,7 +1475,6 @@ static int aead_decrypt(struct aead_requ
+ struct talitos_ctx *ctx = crypto_aead_ctx(authenc);
+ struct talitos_private *priv = dev_get_drvdata(ctx->dev);
+ struct talitos_edesc *edesc;
+- struct scatterlist *sg;
+ void *icvdata;
+
+ req->cryptlen -= authsize;
+@@ -1505,9 +1510,8 @@ static int aead_decrypt(struct aead_requ
+ else
+ icvdata = &edesc->link_tbl[0];
+
+- sg = sg_last(req->src, edesc->src_nents ? : 1);
+-
+- memcpy(icvdata, (char *)sg_virt(sg) + sg->length - authsize, authsize);
++ sg_pcopy_to_buffer(req->src, edesc->src_nents ? : 1, icvdata, authsize,
++ req->assoclen + req->cryptlen - authsize);
+
+ return ipsec_esp(edesc, req, ipsec_esp_decrypt_swauth_done);
+ }
diff --git a/patches.fixes/crypto-talitos-reduce-max-key-size-for-SEC1.patch b/patches.fixes/crypto-talitos-reduce-max-key-size-for-SEC1.patch
new file mode 100644
index 0000000000..fa701ea6ae
--- /dev/null
+++ b/patches.fixes/crypto-talitos-reduce-max-key-size-for-SEC1.patch
@@ -0,0 +1,42 @@
+From b8fbdc2bc4e71b62646031d5df5f08aafe15d5ad Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:09 +0000
+Subject: [PATCH] crypto: talitos - reduce max key size for SEC1
+Git-commit: b8fbdc2bc4e71b62646031d5df5f08aafe15d5ad
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+SEC1 doesn't support SHA384/512, so it doesn't require
+longer keys.
+
+This patch reduces the max key size when the driver
+is built for SEC1 only.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 03d2c5114c95 ("crypto: talitos - Extend max key length for SHA384/512-HMAC and AEAD")
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index 6f8bc6467706..6312f8d501b1 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -837,7 +837,11 @@ static void talitos_unregister_rng(struct device *dev)
+ * HMAC_SNOOP_NO_AFEA (HSNA) instead of type IPSEC_ESP
+ */
+ #define TALITOS_CRA_PRIORITY_AEAD_HSNA (TALITOS_CRA_PRIORITY - 1)
++#ifdef CONFIG_CRYPTO_DEV_TALITOS_SEC2
+ #define TALITOS_MAX_KEY_SIZE (AES_MAX_KEY_SIZE + SHA512_BLOCK_SIZE)
++#else
++#define TALITOS_MAX_KEY_SIZE (AES_MAX_KEY_SIZE + SHA256_BLOCK_SIZE)
++#endif
+ #define TALITOS_MAX_IV_LENGTH 16 /* max of AES_BLOCK_SIZE, DES3_EDE_BLOCK_SIZE */
+
+ struct talitos_ctx {
+--
+2.16.4
+
diff --git a/patches.fixes/crypto-talitos-rename-alternative-AEAD-algos.patch b/patches.fixes/crypto-talitos-rename-alternative-AEAD-algos.patch
new file mode 100644
index 0000000000..89c8f5fdfe
--- /dev/null
+++ b/patches.fixes/crypto-talitos-rename-alternative-AEAD-algos.patch
@@ -0,0 +1,102 @@
+From a1a42f84011fae6ff08441a91aefeb7febc984fc Mon Sep 17 00:00:00 2001
+From: Christophe Leroy <christophe.leroy@c-s.fr>
+Date: Tue, 21 May 2019 13:34:08 +0000
+Subject: [PATCH] crypto: talitos - rename alternative AEAD algos.
+Git-commit: a1a42f84011fae6ff08441a91aefeb7febc984fc
+Patch-mainline: v5.3-rc1
+References: bsc#1051510
+
+The talitos driver has two ways to perform AEAD depending on the
+HW capability. Some HW support both. It is needed to give them
+different names to distingish which one it is for instance when
+a test fails.
+
+Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
+Fixes: 7405c8d7ff97 ("crypto: talitos - templates for AEAD using HMAC_SNOOP_NO_AFEU")
+Cc: stable@vger.kernel.org
+Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/crypto/talitos.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c
+index f443cbe7da80..6f8bc6467706 100644
+--- a/drivers/crypto/talitos.c
++++ b/drivers/crypto/talitos.c
+@@ -2356,7 +2356,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .base = {
+ .cra_name = "authenc(hmac(sha1),cbc(aes))",
+ .cra_driver_name = "authenc-hmac-sha1-"
+- "cbc-aes-talitos",
++ "cbc-aes-talitos-hsna",
+ .cra_blocksize = AES_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2401,7 +2401,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .cra_name = "authenc(hmac(sha1),"
+ "cbc(des3_ede))",
+ .cra_driver_name = "authenc-hmac-sha1-"
+- "cbc-3des-talitos",
++ "cbc-3des-talitos-hsna",
+ .cra_blocksize = DES3_EDE_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2444,7 +2444,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .base = {
+ .cra_name = "authenc(hmac(sha224),cbc(aes))",
+ .cra_driver_name = "authenc-hmac-sha224-"
+- "cbc-aes-talitos",
++ "cbc-aes-talitos-hsna",
+ .cra_blocksize = AES_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2489,7 +2489,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .cra_name = "authenc(hmac(sha224),"
+ "cbc(des3_ede))",
+ .cra_driver_name = "authenc-hmac-sha224-"
+- "cbc-3des-talitos",
++ "cbc-3des-talitos-hsna",
+ .cra_blocksize = DES3_EDE_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2532,7 +2532,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .base = {
+ .cra_name = "authenc(hmac(sha256),cbc(aes))",
+ .cra_driver_name = "authenc-hmac-sha256-"
+- "cbc-aes-talitos",
++ "cbc-aes-talitos-hsna",
+ .cra_blocksize = AES_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2577,7 +2577,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .cra_name = "authenc(hmac(sha256),"
+ "cbc(des3_ede))",
+ .cra_driver_name = "authenc-hmac-sha256-"
+- "cbc-3des-talitos",
++ "cbc-3des-talitos-hsna",
+ .cra_blocksize = DES3_EDE_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2706,7 +2706,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .base = {
+ .cra_name = "authenc(hmac(md5),cbc(aes))",
+ .cra_driver_name = "authenc-hmac-md5-"
+- "cbc-aes-talitos",
++ "cbc-aes-talitos-hsna",
+ .cra_blocksize = AES_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+@@ -2749,7 +2749,7 @@ static struct talitos_alg_template driver_algs[] = {
+ .base = {
+ .cra_name = "authenc(hmac(md5),cbc(des3_ede))",
+ .cra_driver_name = "authenc-hmac-md5-"
+- "cbc-3des-talitos",
++ "cbc-3des-talitos-hsna",
+ .cra_blocksize = DES3_EDE_BLOCK_SIZE,
+ .cra_flags = CRYPTO_ALG_ASYNC,
+ },
+--
+2.16.4
+
diff --git a/patches.fixes/team-Always-enable-vlan-tx-offload.patch b/patches.fixes/team-Always-enable-vlan-tx-offload.patch
new file mode 100644
index 0000000000..ba181672bf
--- /dev/null
+++ b/patches.fixes/team-Always-enable-vlan-tx-offload.patch
@@ -0,0 +1,37 @@
+From ee4297420d56a0033a8593e80b33fcc93fda8509 Mon Sep 17 00:00:00 2001
+From: YueHaibing <yuehaibing@huawei.com>
+Date: Thu, 27 Jun 2019 00:03:39 +0800
+Subject: [PATCH] team: Always enable vlan tx offload
+Git-commit: ee4297420d56a0033a8593e80b33fcc93fda8509
+Patch-mainline: v5.2-rc7
+References: bsc#1051510
+
+We should rather have vlan_tci filled all the way down
+to the transmitting netdevice and let it do the hw/sw
+vlan implementation.
+
+Suggested-by: Jiri Pirko <jiri@resnulli.us>
+Signed-off-by: YueHaibing <yuehaibing@huawei.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Acked-by: Takashi Iwai <tiwai@suse.de>
+
+---
+ drivers/net/team/team.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/team/team.c
++++ b/drivers/net/team/team.c
+@@ -2137,12 +2137,12 @@ static void team_setup(struct net_device
+ dev->features |= NETIF_F_NETNS_LOCAL;
+
+ dev->hw_features = TEAM_VLAN_FEATURES |
+- NETIF_F_HW_VLAN_CTAG_TX |
+ NETIF_F_HW_VLAN_CTAG_RX |
+ NETIF_F_HW_VLAN_CTAG_FILTER;
+
+ dev->hw_features |= NETIF_F_GSO_ENCAP_ALL;
+ dev->features |= dev->hw_features;
++ dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX;
+ }
+
+ static int team_newlink(struct net *src_net, struct net_device *dev,
diff --git a/patches.suse/0001-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch b/patches.suse/0091-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch
index a04346ff07..a04346ff07 100644
--- a/patches.suse/0001-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch
+++ b/patches.suse/0091-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch
diff --git a/patches.suse/ipv4-igmp-fix-another-memory-leak-in-igmpv3_del_delr.patch b/patches.suse/ipv4-igmp-fix-another-memory-leak-in-igmpv3_del_delr.patch
new file mode 100644
index 0000000000..54454dae7a
--- /dev/null
+++ b/patches.suse/ipv4-igmp-fix-another-memory-leak-in-igmpv3_del_delr.patch
@@ -0,0 +1,158 @@
+From: Eric Dumazet <edumazet@google.com>
+Date: Wed, 22 May 2019 16:51:22 -0700
+Subject: ipv4/igmp: fix another memory leak in igmpv3_del_delrec()
+Git-commit: 3580d04aa674383c42de7b635d28e52a1e5bc72c
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+syzbot reported memory leaks [1] that I have back tracked to
+a missing cleanup from igmpv3_del_delrec() when
+(im->sfmode != MCAST_INCLUDE)
+
+Add ip_sf_list_clear_all() and kfree_pmc() helpers to explicitely
+handle the cleanups before freeing.
+
+[1]
+
+BUG: memory leak
+unreferenced object 0xffff888123e32b00 (size 64):
+ comm "softirq", pid 0, jiffies 4294942968 (age 8.010s)
+ hex dump (first 32 bytes):
+ 00 00 00 00 00 00 00 00 e0 00 00 01 00 00 00 00 ................
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ backtrace:
+ [<000000006105011b>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
+ [<000000006105011b>] slab_post_alloc_hook mm/slab.h:439 [inline]
+ [<000000006105011b>] slab_alloc mm/slab.c:3326 [inline]
+ [<000000006105011b>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
+ [<000000004bba8073>] kmalloc include/linux/slab.h:547 [inline]
+ [<000000004bba8073>] kzalloc include/linux/slab.h:742 [inline]
+ [<000000004bba8073>] ip_mc_add1_src net/ipv4/igmp.c:1961 [inline]
+ [<000000004bba8073>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2085
+ [<00000000a46a65a0>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2475
+ [<000000005956ca89>] do_ip_setsockopt.isra.0+0x1795/0x1930 net/ipv4/ip_sockglue.c:957
+ [<00000000848e2d2f>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1246
+ [<00000000b9db185c>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2616
+ [<000000003028e438>] sock_common_setsockopt+0x38/0x50 net/core/sock.c:3130
+ [<0000000015b65589>] __sys_setsockopt+0x98/0x120 net/socket.c:2078
+ [<00000000ac198ef0>] __do_sys_setsockopt net/socket.c:2089 [inline]
+ [<00000000ac198ef0>] __se_sys_setsockopt net/socket.c:2086 [inline]
+ [<00000000ac198ef0>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2086
+ [<000000000a770437>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
+ [<00000000d3adb93b>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
+
+Fixes: 9c8bb163ae78 ("igmp, mld: Fix memory leak in igmpv3/mld_del_delrec()")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Cc: Hangbin Liu <liuhangbin@gmail.com>
+Reported-by: syzbot <syzkaller@googlegroups.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/ipv4/igmp.c | 47 ++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 30 insertions(+), 17 deletions(-)
+
+--- a/net/ipv4/igmp.c
++++ b/net/ipv4/igmp.c
+@@ -635,6 +635,24 @@ static void igmpv3_clear_zeros(struct ip
+ }
+ }
+
++static void ip_sf_list_clear_all(struct ip_sf_list *psf)
++{
++ struct ip_sf_list *next;
++
++ while (psf) {
++ next = psf->sf_next;
++ kfree(psf);
++ psf = next;
++ }
++}
++
++static void kfree_pmc(struct ip_mc_list *pmc)
++{
++ ip_sf_list_clear_all(pmc->sources);
++ ip_sf_list_clear_all(pmc->tomb);
++ kfree(pmc);
++}
++
+ static void igmpv3_send_cr(struct in_device *in_dev)
+ {
+ struct ip_mc_list *pmc, *pmc_prev, *pmc_next;
+@@ -671,7 +689,7 @@ static void igmpv3_send_cr(struct in_dev
+ else
+ in_dev->mc_tomb = pmc_next;
+ in_dev_put(pmc->interface);
+- kfree(pmc);
++ kfree_pmc(pmc);
+ } else
+ pmc_prev = pmc;
+ }
+@@ -1203,12 +1221,16 @@ static void igmpv3_del_delrec(struct in_
+ im->sfmode = pmc->sfmode;
+ if (pmc->sfmode == MCAST_INCLUDE) {
+ im->tomb = pmc->tomb;
++ pmc->tomb = NULL;
++
+ im->sources = pmc->sources;
++ pmc->sources = NULL;
++
+ for (psf = im->sources; psf; psf = psf->sf_next)
+ psf->sf_crcount = im->crcount;
+ }
+ in_dev_put(pmc->interface);
+- kfree(pmc);
++ kfree_pmc(pmc);
+ }
+ spin_unlock_bh(&im->lock);
+ }
+@@ -1229,21 +1251,18 @@ static void igmpv3_clear_delrec(struct i
+ nextpmc = pmc->next;
+ ip_mc_clear_src(pmc);
+ in_dev_put(pmc->interface);
+- kfree(pmc);
++ kfree_pmc(pmc);
+ }
+ /* clear dead sources, too */
+ rcu_read_lock();
+ for_each_pmc_rcu(in_dev, pmc) {
+- struct ip_sf_list *psf, *psf_next;
++ struct ip_sf_list *psf;
+
+ spin_lock_bh(&pmc->lock);
+ psf = pmc->tomb;
+ pmc->tomb = NULL;
+ spin_unlock_bh(&pmc->lock);
+- for (; psf; psf = psf_next) {
+- psf_next = psf->sf_next;
+- kfree(psf);
+- }
++ ip_sf_list_clear_all(psf);
+ }
+ rcu_read_unlock();
+ }
+@@ -2107,7 +2126,7 @@ static int ip_mc_add_src(struct in_devic
+
+ static void ip_mc_clear_src(struct ip_mc_list *pmc)
+ {
+- struct ip_sf_list *psf, *nextpsf, *tomb, *sources;
++ struct ip_sf_list *tomb, *sources;
+
+ spin_lock_bh(&pmc->lock);
+ tomb = pmc->tomb;
+@@ -2119,14 +2138,8 @@ static void ip_mc_clear_src(struct ip_mc
+ pmc->sfcount[MCAST_EXCLUDE] = 1;
+ spin_unlock_bh(&pmc->lock);
+
+- for (psf = tomb; psf; psf = nextpsf) {
+- nextpsf = psf->sf_next;
+- kfree(psf);
+- }
+- for (psf = sources; psf; psf = nextpsf) {
+- nextpsf = psf->sf_next;
+- kfree(psf);
+- }
++ ip_sf_list_clear_all(tomb);
++ ip_sf_list_clear_all(sources);
+ }
+
+ /* Join a multicast group
diff --git a/patches.suse/ipv4-igmp-fix-build-error-if-CONFIG_IP_MULTICAST.patch b/patches.suse/ipv4-igmp-fix-build-error-if-CONFIG_IP_MULTICAST.patch
new file mode 100644
index 0000000000..e2f84fd39d
--- /dev/null
+++ b/patches.suse/ipv4-igmp-fix-build-error-if-CONFIG_IP_MULTICAST.patch
@@ -0,0 +1,56 @@
+From: Eric Dumazet <edumazet@google.com>
+Date: Wed, 22 May 2019 18:35:16 -0700
+Subject: ipv4/igmp: fix build error if !CONFIG_IP_MULTICAST
+Git-commit: 903869bd10e6719b9df6718e785be7ec725df59f
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+ip_sf_list_clear_all() needs to be defined even if !CONFIG_IP_MULTICAST
+
+Fixes: 3580d04aa674 ("ipv4/igmp: fix another memory leak in igmpv3_del_delrec()")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Reported-by: kbuild test robot <lkp@intel.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/ipv4/igmp.c | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+--- a/net/ipv4/igmp.c
++++ b/net/ipv4/igmp.c
+@@ -190,6 +190,17 @@ static void ip_ma_put(struct ip_mc_list
+ pmc != NULL; \
+ pmc = rtnl_dereference(pmc->next_rcu))
+
++static void ip_sf_list_clear_all(struct ip_sf_list *psf)
++{
++ struct ip_sf_list *next;
++
++ while (psf) {
++ next = psf->sf_next;
++ kfree(psf);
++ psf = next;
++ }
++}
++
+ #ifdef CONFIG_IP_MULTICAST
+
+ /*
+@@ -635,17 +646,6 @@ static void igmpv3_clear_zeros(struct ip
+ }
+ }
+
+-static void ip_sf_list_clear_all(struct ip_sf_list *psf)
+-{
+- struct ip_sf_list *next;
+-
+- while (psf) {
+- next = psf->sf_next;
+- kfree(psf);
+- psf = next;
+- }
+-}
+-
+ static void kfree_pmc(struct ip_mc_list *pmc)
+ {
+ ip_sf_list_clear_all(pmc->sources);
diff --git a/patches.suse/ipv6-Consider-sk_bound_dev_if-when-binding-a-raw-soc.patch b/patches.suse/ipv6-Consider-sk_bound_dev_if-when-binding-a-raw-soc.patch
new file mode 100644
index 0000000000..c97c09ff28
--- /dev/null
+++ b/patches.suse/ipv6-Consider-sk_bound_dev_if-when-binding-a-raw-soc.patch
@@ -0,0 +1,36 @@
+From: Mike Manning <mmanning@vyatta.att-mail.com>
+Date: Mon, 20 May 2019 19:57:17 +0100
+Subject: ipv6: Consider sk_bound_dev_if when binding a raw socket to an
+ address
+Git-commit: 72f7cfab6f93a8ea825fab8ccfb016d064269f7f
+Patch-mainline: 5.2-rc2
+References: networking-stable-19_05_31
+
+IPv6 does not consider if the socket is bound to a device when binding
+to an address. The result is that a socket can be bound to eth0 and
+then bound to the address of eth1. If the device is a VRF, the result
+is that a socket can only be bound to an address in the default VRF.
+
+Resolve by considering the device if sk_bound_dev_if is set.
+
+Signed-off-by: Mike Manning <mmanning@vyatta.att-mail.com>
+Reviewed-by: David Ahern <dsahern@gmail.com>
+Tested-by: David Ahern <dsahern@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/ipv6/raw.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/net/ipv6/raw.c
++++ b/net/ipv6/raw.c
+@@ -285,7 +285,9 @@ static int rawv6_bind(struct sock *sk, s
+ /* Binding to link-local address requires an interface */
+ if (!sk->sk_bound_dev_if)
+ goto out_unlock;
++ }
+
++ if (sk->sk_bound_dev_if) {
+ err = -ENODEV;
+ dev = dev_get_by_index_rcu(sock_net(sk),
+ sk->sk_bound_dev_if);
diff --git a/patches.suse/llc-fix-skb-leak-in-llc_build_and_send_ui_pkt.patch b/patches.suse/llc-fix-skb-leak-in-llc_build_and_send_ui_pkt.patch
new file mode 100644
index 0000000000..368960e44f
--- /dev/null
+++ b/patches.suse/llc-fix-skb-leak-in-llc_build_and_send_ui_pkt.patch
@@ -0,0 +1,82 @@
+From: Eric Dumazet <edumazet@google.com>
+Date: Mon, 27 May 2019 17:35:52 -0700
+Subject: llc: fix skb leak in llc_build_and_send_ui_pkt()
+Git-commit: 8fb44d60d4142cd2a440620cd291d346e23c131e
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+If llc_mac_hdr_init() returns an error, we must drop the skb
+since no llc_build_and_send_ui_pkt() caller will take care of this.
+
+BUG: memory leak
+unreferenced object 0xffff8881202b6800 (size 2048):
+ comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.590s)
+ hex dump (first 32 bytes):
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 1a 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@............
+ backtrace:
+ [<00000000e25b5abe>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
+ [<00000000e25b5abe>] slab_post_alloc_hook mm/slab.h:439 [inline]
+ [<00000000e25b5abe>] slab_alloc mm/slab.c:3326 [inline]
+ [<00000000e25b5abe>] __do_kmalloc mm/slab.c:3658 [inline]
+ [<00000000e25b5abe>] __kmalloc+0x161/0x2c0 mm/slab.c:3669
+ [<00000000a1ae188a>] kmalloc include/linux/slab.h:552 [inline]
+ [<00000000a1ae188a>] sk_prot_alloc+0xd6/0x170 net/core/sock.c:1608
+ [<00000000ded25bbe>] sk_alloc+0x35/0x2f0 net/core/sock.c:1662
+ [<000000002ecae075>] llc_sk_alloc+0x35/0x170 net/llc/llc_conn.c:950
+ [<00000000551f7c47>] llc_ui_create+0x7b/0x140 net/llc/af_llc.c:173
+ [<0000000029027f0e>] __sock_create+0x164/0x250 net/socket.c:1430
+ [<000000008bdec225>] sock_create net/socket.c:1481 [inline]
+ [<000000008bdec225>] __sys_socket+0x69/0x110 net/socket.c:1523
+ [<00000000b6439228>] __do_sys_socket net/socket.c:1532 [inline]
+ [<00000000b6439228>] __se_sys_socket net/socket.c:1530 [inline]
+ [<00000000b6439228>] __x64_sys_socket+0x1e/0x30 net/socket.c:1530
+ [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
+ [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
+
+BUG: memory leak
+unreferenced object 0xffff88811d750d00 (size 224):
+ comm "syz-executor907", pid 7074, jiffies 4294943781 (age 8.600s)
+ hex dump (first 32 bytes):
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 00 f0 0c 24 81 88 ff ff 00 68 2b 20 81 88 ff ff ...$.....h+ ....
+ backtrace:
+ [<0000000053026172>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
+ [<0000000053026172>] slab_post_alloc_hook mm/slab.h:439 [inline]
+ [<0000000053026172>] slab_alloc_node mm/slab.c:3269 [inline]
+ [<0000000053026172>] kmem_cache_alloc_node+0x153/0x2a0 mm/slab.c:3579
+ [<00000000fa8f3c30>] __alloc_skb+0x6e/0x210 net/core/skbuff.c:198
+ [<00000000d96fdafb>] alloc_skb include/linux/skbuff.h:1058 [inline]
+ [<00000000d96fdafb>] alloc_skb_with_frags+0x5f/0x250 net/core/skbuff.c:5327
+ [<000000000a34a2e7>] sock_alloc_send_pskb+0x269/0x2a0 net/core/sock.c:2225
+ [<00000000ee39999b>] sock_alloc_send_skb+0x32/0x40 net/core/sock.c:2242
+ [<00000000e034d810>] llc_ui_sendmsg+0x10a/0x540 net/llc/af_llc.c:933
+ [<00000000c0bc8445>] sock_sendmsg_nosec net/socket.c:652 [inline]
+ [<00000000c0bc8445>] sock_sendmsg+0x54/0x70 net/socket.c:671
+ [<000000003b687167>] __sys_sendto+0x148/0x1f0 net/socket.c:1964
+ [<00000000922d78d9>] __do_sys_sendto net/socket.c:1976 [inline]
+ [<00000000922d78d9>] __se_sys_sendto net/socket.c:1972 [inline]
+ [<00000000922d78d9>] __x64_sys_sendto+0x2a/0x30 net/socket.c:1972
+ [<00000000cec820c1>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
+ [<000000000c32554f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Reported-by: syzbot <syzkaller@googlegroups.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/llc/llc_output.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/net/llc/llc_output.c
++++ b/net/llc/llc_output.c
+@@ -72,6 +72,8 @@ int llc_build_and_send_ui_pkt(struct llc
+ rc = llc_mac_hdr_init(skb, skb->dev->dev_addr, dmac);
+ if (likely(!rc))
+ rc = dev_queue_xmit(skb);
++ else
++ kfree_skb(skb);
+ return rc;
+ }
+
diff --git a/patches.suse/net-fec-fix-the-clk-mismatch-in-failed_reset-path.patch b/patches.suse/net-fec-fix-the-clk-mismatch-in-failed_reset-path.patch
new file mode 100644
index 0000000000..c377dfcc23
--- /dev/null
+++ b/patches.suse/net-fec-fix-the-clk-mismatch-in-failed_reset-path.patch
@@ -0,0 +1,32 @@
+From: Andy Duan <fugang.duan@nxp.com>
+Date: Thu, 23 May 2019 01:55:28 +0000
+Subject: net: fec: fix the clk mismatch in failed_reset path
+Git-commit: ce8d24f9a5965a58c588f9342689702a1024433c
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+Fix the clk mismatch in the error path "failed_reset" because
+below error path will disable clk_ahb and clk_ipg directly, it
+should use pm_runtime_put_noidle() instead of pm_runtime_put()
+to avoid to call runtime resume callback.
+
+Reported-by: Baruch Siach <baruch@tkos.co.il>
+Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
+Tested-by: Baruch Siach <baruch@tkos.co.il>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/freescale/fec_main.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/freescale/fec_main.c
++++ b/drivers/net/ethernet/freescale/fec_main.c
+@@ -3516,7 +3516,7 @@ failed_init:
+ if (fep->reg_phy)
+ regulator_disable(fep->reg_phy);
+ failed_reset:
+- pm_runtime_put(&pdev->dev);
++ pm_runtime_put_noidle(&pdev->dev);
+ pm_runtime_disable(&pdev->dev);
+ failed_regulator:
+ failed_clk_ipg:
diff --git a/patches.suse/net-gro-fix-use-after-free-read-in-napi_gro_frags.patch b/patches.suse/net-gro-fix-use-after-free-read-in-napi_gro_frags.patch
new file mode 100644
index 0000000000..3bf178e792
--- /dev/null
+++ b/patches.suse/net-gro-fix-use-after-free-read-in-napi_gro_frags.patch
@@ -0,0 +1,67 @@
+From: Eric Dumazet <edumazet@google.com>
+Date: Wed, 29 May 2019 15:36:10 -0700
+Subject: net-gro: fix use-after-free read in napi_gro_frags()
+Git-commit: a4270d6795b0580287453ea55974d948393e66ef
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+If a network driver provides to napi_gro_frags() an
+skb with a page fragment of exactly 14 bytes, the call
+to gro_pull_from_frag0() will 'consume' the fragment
+by calling skb_frag_unref(skb, 0), and the page might
+be freed and reused.
+
+Reading eth->h_proto at the end of napi_frags_skb() might
+read mangled data, or crash under specific debugging features.
+
+BUG: KASAN: use-after-free in napi_frags_skb net/core/dev.c:5833 [inline]
+BUG: KASAN: use-after-free in napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
+Read of size 2 at addr ffff88809366840c by task syz-executor599/8957
+
+CPU: 1 PID: 8957 Comm: syz-executor599 Not tainted 5.2.0-rc1+ #32
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:77 [inline]
+ dump_stack+0x172/0x1f0 lib/dump_stack.c:113
+ print_address_description.cold+0x7c/0x20d mm/kasan/report.c:188
+ __kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
+ kasan_report+0x12/0x20 mm/kasan/common.c:614
+ __asan_report_load_n_noabort+0xf/0x20 mm/kasan/generic_report.c:142
+ napi_frags_skb net/core/dev.c:5833 [inline]
+ napi_gro_frags+0xc6f/0xd10 net/core/dev.c:5841
+ tun_get_user+0x2f3c/0x3ff0 drivers/net/tun.c:1991
+ tun_chr_write_iter+0xbd/0x156 drivers/net/tun.c:2037
+ call_write_iter include/linux/fs.h:1872 [inline]
+ do_iter_readv_writev+0x5f8/0x8f0 fs/read_write.c:693
+ do_iter_write fs/read_write.c:970 [inline]
+ do_iter_write+0x184/0x610 fs/read_write.c:951
+ vfs_writev+0x1b3/0x2f0 fs/read_write.c:1015
+ do_writev+0x15b/0x330 fs/read_write.c:1058
+
+Fixes: a50e233c50db ("net-gro: restore frag0 optimization")
+Signed-off-by: Eric Dumazet <edumazet@google.com>
+Reported-by: syzbot <syzkaller@googlegroups.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ net/core/dev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -5032,7 +5032,6 @@ static struct sk_buff *napi_frags_skb(st
+ skb_reset_mac_header(skb);
+ skb_gro_reset_offset(skb);
+
+- eth = skb_gro_header_fast(skb, 0);
+ if (unlikely(skb_gro_header_hard(skb, hlen))) {
+ eth = skb_gro_header_slow(skb, hlen, 0);
+ if (unlikely(!eth)) {
+@@ -5042,6 +5041,7 @@ static struct sk_buff *napi_frags_skb(st
+ return NULL;
+ }
+ } else {
++ eth = (const struct ethhdr *)skb->data;
+ gro_pull_from_frag0(skb, hlen);
+ NAPI_GRO_CB(skb)->frag0 += hlen;
+ NAPI_GRO_CB(skb)->frag0_len -= hlen;
diff --git a/patches.suse/net-mlx5-Allocate-root-ns-memory-using-kzalloc-to-ma.patch b/patches.suse/net-mlx5-Allocate-root-ns-memory-using-kzalloc-to-ma.patch
new file mode 100644
index 0000000000..ce35607ed7
--- /dev/null
+++ b/patches.suse/net-mlx5-Allocate-root-ns-memory-using-kzalloc-to-ma.patch
@@ -0,0 +1,36 @@
+From: Parav Pandit <parav@mellanox.com>
+Date: Fri, 10 May 2019 10:40:08 -0500
+Subject: net/mlx5: Allocate root ns memory using kzalloc to match kfree
+Git-commit: 25fa506b70cadb580c1e9cbd836d6417276d4bcd
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+root ns is yet another fs core node which is freed using kfree() by
+tree_put_node().
+Rest of the other fs core objects are also allocated using kmalloc
+variants.
+
+However, root ns memory is allocated using kvzalloc().
+Hence allocate root ns memory using kzalloc().
+
+Fixes: 2530236303d9e ("net/mlx5_core: Flow steering tree initialization")
+Signed-off-by: Parav Pandit <parav@mellanox.com>
+Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
+Reviewed-by: Mark Bloch <markb@mellanox.com>
+Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
+@@ -2015,7 +2015,7 @@ static struct mlx5_flow_root_namespace *
+ struct mlx5_flow_namespace *ns;
+
+ /* Create the root namespace */
+- root_ns = kvzalloc(sizeof(*root_ns), GFP_KERNEL);
++ root_ns = kzalloc(sizeof(*root_ns), GFP_KERNEL);
+ if (!root_ns)
+ return NULL;
+
diff --git a/patches.suse/net-mlx5-Avoid-double-free-in-fs-init-error-unwindin.patch b/patches.suse/net-mlx5-Avoid-double-free-in-fs-init-error-unwindin.patch
new file mode 100644
index 0000000000..872d67689b
--- /dev/null
+++ b/patches.suse/net-mlx5-Avoid-double-free-in-fs-init-error-unwindin.patch
@@ -0,0 +1,69 @@
+From: Parav Pandit <parav@mellanox.com>
+Date: Fri, 10 May 2019 10:26:23 -0500
+Subject: net/mlx5: Avoid double free in fs init error unwinding path
+Git-commit: 9414277a5df3669c67e818708c0f881597e0118e
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+In below code flow, for ingress acl table root ns memory leads
+to double free.
+
+mlx5_init_fs
+ init_ingress_acls_root_ns()
+ init_ingress_acl_root_ns
+ kfree(steering->esw_ingress_root_ns);
+ /* steering->esw_ingress_root_ns is not marked NULL */
+ mlx5_cleanup_fs
+ cleanup_ingress_acls_root_ns
+ steering->esw_ingress_root_ns non NULL check passes.
+ kfree(steering->esw_ingress_root_ns);
+ /* double free */
+
+Similar issue exist for other tables.
+
+Hence zero out the pointers to not process the table again.
+
+Fixes: 9b93ab981e3bf ("net/mlx5: Separate ingress/egress namespaces for each vport")
+Fixes: 40c3eebb49e51 ("net/mlx5: Add support in RDMA RX steering")
+Signed-off-by: Parav Pandit <parav@mellanox.com>
+Reviewed-by: Mark Bloch <markb@mellanox.com>
+Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
++++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
+@@ -2157,6 +2157,7 @@ static void cleanup_egress_acls_root_ns(
+ cleanup_root_ns(steering->esw_egress_root_ns[i]);
+
+ kfree(steering->esw_egress_root_ns);
++ steering->esw_egress_root_ns = NULL;
+ }
+
+ static void cleanup_ingress_acls_root_ns(struct mlx5_core_dev *dev)
+@@ -2171,6 +2172,7 @@ static void cleanup_ingress_acls_root_ns
+ cleanup_root_ns(steering->esw_ingress_root_ns[i]);
+
+ kfree(steering->esw_ingress_root_ns);
++ steering->esw_ingress_root_ns = NULL;
+ }
+
+ void mlx5_cleanup_fs(struct mlx5_core_dev *dev)
+@@ -2296,6 +2298,7 @@ cleanup_root_ns:
+ for (i--; i >= 0; i--)
+ cleanup_root_ns(steering->esw_egress_root_ns[i]);
+ kfree(steering->esw_egress_root_ns);
++ steering->esw_egress_root_ns = NULL;
+ return err;
+ }
+
+@@ -2323,6 +2326,7 @@ cleanup_root_ns:
+ for (i--; i >= 0; i--)
+ cleanup_root_ns(steering->esw_ingress_root_ns[i]);
+ kfree(steering->esw_ingress_root_ns);
++ steering->esw_ingress_root_ns = NULL;
+ return err;
+ }
+
diff --git a/patches.suse/net-mvneta-Fix-err-code-path-of-probe.patch b/patches.suse/net-mvneta-Fix-err-code-path-of-probe.patch
new file mode 100644
index 0000000000..e2456d830e
--- /dev/null
+++ b/patches.suse/net-mvneta-Fix-err-code-path-of-probe.patch
@@ -0,0 +1,46 @@
+From: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
+Date: Mon, 27 May 2019 11:04:17 +0000
+Subject: net: mvneta: Fix err code path of probe
+Git-commit: d484e06e25ebb937d841dac02ac1fe76ec7d4ddd
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+Fix below issues in err code path of probe:
+1. we don't need to unregister_netdev() because the netdev isn't
+registered.
+2. when register_netdev() fails, we also need to destroy bm pool for
+HWBM case.
+
+Fixes: dc35a10f68d3 ("net: mvneta: bm: add support for hardware buffer management")
+Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/marvell/mvneta.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/drivers/net/ethernet/marvell/mvneta.c
++++ b/drivers/net/ethernet/marvell/mvneta.c
+@@ -4357,7 +4357,7 @@ static int mvneta_probe(struct platform_
+ err = register_netdev(dev);
+ if (err < 0) {
+ dev_err(&pdev->dev, "failed to register\n");
+- goto err_free_stats;
++ goto err_netdev;
+ }
+
+ netdev_info(dev, "Using %s mac address %pM\n", mac_from,
+@@ -4376,13 +4376,11 @@ static int mvneta_probe(struct platform_
+ return 0;
+
+ err_netdev:
+- unregister_netdev(dev);
+ if (pp->bm_priv) {
+ mvneta_bm_pool_destroy(pp->bm_priv, pp->pool_long, 1 << pp->id);
+ mvneta_bm_pool_destroy(pp->bm_priv, pp->pool_short,
+ 1 << pp->id);
+ }
+-err_free_stats:
+ free_percpu(pp->stats);
+ err_free_ports:
+ free_percpu(pp->ports);
diff --git a/patches.suse/net-mvpp2-fix-bad-MVPP2_TXQ_SCHED_TOKEN_CNTR_REG-que.patch b/patches.suse/net-mvpp2-fix-bad-MVPP2_TXQ_SCHED_TOKEN_CNTR_REG-que.patch
new file mode 100644
index 0000000000..e436e9fcad
--- /dev/null
+++ b/patches.suse/net-mvpp2-fix-bad-MVPP2_TXQ_SCHED_TOKEN_CNTR_REG-que.patch
@@ -0,0 +1,55 @@
+From: Antoine Tenart <antoine.tenart@bootlin.com>
+Date: Wed, 29 May 2019 15:59:48 +0200
+Subject: net: mvpp2: fix bad MVPP2_TXQ_SCHED_TOKEN_CNTR_REG queue value
+Git-commit: 21808437214637952b61beaba6034d97880fbeb3
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+MVPP2_TXQ_SCHED_TOKEN_CNTR_REG() expects the logical queue id but
+the current code is passing the global tx queue offset, so it ends
+up writing to unknown registers (between 0x8280 and 0x82fc, which
+seemed to be unused by the hardware). This fixes the issue by using
+the logical queue id instead.
+
+Fixes: 3f518509dedc ("ethernet: Add new driver for Marvell Armada 375 network unit")
+Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/marvell/mvpp2.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+--- a/drivers/net/ethernet/marvell/mvpp2.c
++++ b/drivers/net/ethernet/marvell/mvpp2.c
+@@ -5329,7 +5329,7 @@ static inline void mvpp2_xlg_max_rx_size
+ /* Set defaults to the MVPP2 port */
+ static void mvpp2_defaults_set(struct mvpp2_port *port)
+ {
+- int tx_port_num, val, queue, ptxq, lrxq;
++ int tx_port_num, val, queue, lrxq;
+
+ if (port->priv->hw_version == MVPP21) {
+ /* Configure port to loopback if needed */
+@@ -5351,11 +5351,9 @@ static void mvpp2_defaults_set(struct mv
+ mvpp2_write(port->priv, MVPP2_TXP_SCHED_CMD_1_REG, 0);
+
+ /* Close bandwidth for all queues */
+- for (queue = 0; queue < MVPP2_MAX_TXQ; queue++) {
+- ptxq = mvpp2_txq_phys(port->id, queue);
++ for (queue = 0; queue < MVPP2_MAX_TXQ; queue++)
+ mvpp2_write(port->priv,
+- MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(ptxq), 0);
+- }
++ MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(queue), 0);
+
+ /* Set refill period to 1 usec, refill tokens
+ * and bucket size to maximum
+@@ -6202,7 +6200,7 @@ static void mvpp2_txq_deinit(struct mvpp
+ txq->descs_dma = 0;
+
+ /* Set minimum bandwidth for disabled TXQs */
+- mvpp2_write(port->priv, MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(txq->id), 0);
++ mvpp2_write(port->priv, MVPP2_TXQ_SCHED_TOKEN_CNTR_REG(txq->log_id), 0);
+
+ /* Set Tx descriptors queue starting address and size */
+ cpu = get_cpu();
diff --git a/patches.suse/net-stmmac-fix-reset-gpio-free-missing.patch b/patches.suse/net-stmmac-fix-reset-gpio-free-missing.patch
new file mode 100644
index 0000000000..f9e43940ca
--- /dev/null
+++ b/patches.suse/net-stmmac-fix-reset-gpio-free-missing.patch
@@ -0,0 +1,34 @@
+From: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
+Date: Wed, 22 May 2019 10:05:09 +0000
+Subject: net: stmmac: fix reset gpio free missing
+Git-commit: 49ce881c0d4c4a7a35358d9dccd5f26d0e56fc61
+Patch-mainline: 5.2-rc3
+References: networking-stable-19_05_31
+
+Commit 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
+removed the reset gpio free, when the driver is unbinded or rmmod,
+we miss the gpio free.
+
+This patch uses managed API to request the reset gpio, so that the
+gpio could be freed properly.
+
+Fixes: 984203ceff27 ("net: stmmac: mdio: remove reset gpio free")
+Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+@@ -157,7 +157,8 @@ int stmmac_mdio_reset(struct mii_bus *bu
+ of_property_read_u32_array(np,
+ "snps,reset-delays-us", data->delays, 3);
+
+- if (gpio_request(data->reset_gpio, "mdio-reset"))
++ if (devm_gpio_request(priv->device, data->reset_gpio,
++ "mdio-reset"))
+ return 0;
+ }
+
diff --git a/scripts/git_sort/git_sort.py b/scripts/git_sort/git_sort.py
index 671c11fbc2..dbc2e3008a 100755
--- a/scripts/git_sort/git_sort.py
+++ b/scripts/git_sort/git_sort.py
@@ -231,6 +231,7 @@ remotes = (
Head(RepoURL("nvdimm/nvdimm.git"), "libnvdimm-fixes"),
Head(RepoURL("djbw/nvdimm.git"), "libnvdimm-pending"),
Head(RepoURL("herbert/crypto-2.6.git"), "master"),
+ Head(RepoURL("git://git.cmpxchg.org/linux-mmots.git"), "master"),
)
diff --git a/series.conf b/series.conf
index 74d9ec9770..093dbd6f3c 100644
--- a/series.conf
+++ b/series.conf
@@ -864,7 +864,6 @@
patches.kernel.org/4.12.14-052-md-raid5-release-flush-io-in-raid5_do_work.patch
patches.kernel.org/4.12.14-053-ipv6-Fix-may-be-used-uninitialized-warning-in.patch
patches.kernel.org/4.12.14-054-Linux-4.12.14.patch
- patches.kernel.org/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch
########################################################
# Non-upstream fixes for stable patches
@@ -15605,6 +15604,7 @@
patches.drivers/dmaengine-qcom-bam_dma-get-num-channels-and-num-ees-
patches.drivers/dmaengine-rcar-dmac-Check-the-done-lists-in-rcar_dma
patches.drivers/dmaengine-stm32-dma-fix-incomplete-configuration-in-.patch
+ patches.arch/platform-x86-intel_turbo_max_3-Remove-restriction-fo.patch
patches.drivers/platform-x86-fujitsu-laptop-Support-Lifebook-U7x7-ho
patches.fixes/ceph-keep-consistent-semantic-in-fscache-related-option-combination.patch
patches.fixes/libceph-ceph-change-permission-for-readonly-debugfs-entries.patch
@@ -17586,7 +17586,7 @@
patches.arch/powerpc-64s-Fix-DT-CPU-features-Power9-DD2.1-logic.patch
patches.suse/0001-block-sed-opal-Fix-a-couple-off-by-one-bugs.patch
patches.drivers/nvme-rdma-fix-possible-double-free-condition-when-fa.patch
- patches.fixes/nvme-rdma-fix-possible-free-of-a-non-allocated-async-event-buffer.patch
+ patches.drivers/nvme-rdma-fix-possible-free-of-a-non-allocated-async.patch
patches.drivers/nvme-rdma-Fix-command-completion-race-at-error-recov.patch
patches.drivers/nvme-rdma-don-t-override-opts-queue_size.patch
patches.drivers/nvmet-reset-keep-alive-timer-in-controller-enable.patch
@@ -17662,7 +17662,7 @@
patches.fixes/block-Fix-transfer-when-chunk-sectors-exceeds-max.patch
patches.suse/0001-block-Fix-cloning-of-requests-with-a-special-payload.patch
patches.suse/0001-drbd-Fix-drbd_request_prepare-discard-handling.patch
- patches.fixes/nvme-rdma-fix-possible-double-free-of-controller-asy.patch
+ patches.drivers/nvme-rdma-fix-possible-double-free-of-controller-asy.patch
patches.arch/x86-efi-fix-efi_call_phys_epilog-with-config_x86_5level-y
patches.fixes/kconfig-fix-line-numbers-for-if-entries-in-menu-tree.patch
patches.fixes/ARM-davinci-board-da850-evm-fix-WP-pin-polarity-for-.patch
@@ -18264,7 +18264,7 @@
patches.suse/0230-bcache-do-not-assign-in-if-condition-register_bcache.patch
patches.suse/0231-bcache-free-heap-cache_set-flush_btree-in-bch_journa.patch
patches.suse/0231-bcache-do-not-assign-in-if-condition-in-bcache_init.patch
- patches.suse/0001-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch
+ patches.suse/0091-bcache-do-not-assign-in-if-condition-in-bcache_devic.patch
patches.suse/0231-bcache-stop-using-the-deprecated-get_seconds.patch
patches.fixes/partitions-aix-fix-usage-of-uninitialized-lv_info-an.patch
patches.fixes/partitions-aix-append-null-character-to-print-data-f.patch
@@ -18367,7 +18367,7 @@
patches.drivers/drivers-acpi-add-dependency-of-EFI-for-arm64.patch
patches.drivers/efi-arm-preserve-early-mapping-of-UEFI-memory-map-lo.patch
patches.drivers/efi-arm-map-UEFI-memory-map-even-w-o-runtime-service.patch
- patches.drivers/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch
+ patches.arch/arm64-acpi-fix-alignment-fault-in-accessing-ACPI.patch
patches.drivers/arm64-fix-ACPI-dependencies.patch
patches.fixes/security-check-for-kstrdup-failure-in-lsm_append.patch
patches.fixes/audit-Fix-extended-comparison-of-GID-EGID.patch
@@ -19484,7 +19484,7 @@
patches.drivers/net-ena-fix-rare-bug-when-failed-restart-resume-is-f.patch
patches.drivers/net-ena-fix-NULL-dereference-due-to-untimely-napi-in.patch
patches.drivers/net-ena-fix-auto-casting-to-boolean.patch
- patches.fixes/0001-net-make-skb_partial_csum_set-more-robust-against-ov.patch
+ patches.drivers/net-make-skb_partial_csum_set-more-robust-against-ov.patch
patches.suse/net-ipv4-don-t-let-PMTU-updates-increase-route-MTU.patch
patches.drivers/qmi_wwan-Added-support-for-Gemalto-s-Cinterion-ALASx.patch
patches.suse/net-dsa-bcm_sf2-Fix-unbind-ordering.patch
@@ -19592,8 +19592,8 @@
patches.fixes/s390-sles12sp4-pkey-move-pckmo-subfunction-available-checks-away-from-module-init.patch
patches.suse/rcu-Make-need_resched-respond-to-urgent-RCU-QS-needs.patch
patches.drivers/0001-efi-honour-memory-reservations-passed-via-a-linux-sp.patch
- patches.drivers/0001-efi-arm-libstub-add-a-root-memreserve-config-table.patch
- patches.drivers/0001-efi-add-API-to-reserve-memory-persistently-across-ke.patch
+ patches.arch/0002-efi-arm-libstub-add-a-root-memreserve-config-table.patch
+ patches.arch/0003-efi-add-API-to-reserve-memory-persistently-across-ke.patch
patches.fixes/kprobes-Return-error-if-we-fail-to-reuse-kprobe-inst.patch
patches.arch/x86-cpu-sanitize-fam6_atom-naming.patch
patches.suse/sched-numa-remove-unused-code-from-update_numa_stats.patch
@@ -19827,7 +19827,7 @@
patches.drivers/scsi-lpfc-update-driver-version-to-12.0.0.7.patch
patches.drivers/0001-scsi-sym53c8xx-fix-NULL-pointer-dereference-panic-in.patch
patches.drivers/scsi-lpfc-Remove-set-but-not-used-variable-sgl_size.patch
- patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeout
+ patches.drivers/scsi-libsas-fix-a-race-condition-when-smp-task-timeo.patch
patches.fixes/scsi-qla2xxx-don-t-allow-negative-thresholds.patch
patches.fixes/scsi-qla2xxx-Fix-NVMe-session-hang-on-unload.patch
patches.fixes/scsi-qla2xxx-Fix-NVMe-Target-discovery.patch
@@ -20105,6 +20105,7 @@
patches.drivers/pwm-lpss-Release-runtime-pm-reference-from-the-drive.patch
patches.drivers/dt-bindings-pwm-renesas-tpu-fix-compatible-prop-description.patch
patches.fixes/0002-mm-handle-no-memcg-case-in-memcg_kmem_charge-properl.patch
+ patches.fixes/4.4.164-131-mm-thp-relax-__GFP_THISNODE-for-MADV_HUGEPAGE.patch
patches.fixes/ocfs2-fix-a-misuse-a-of-brelse-after-failing-ocfs2_c.patch
patches.fixes/0001-memory_hotplug-cond_resched-in-__remove_pages.patch
patches.drivers/scsi-qla2xxx-Modify-fall-through-annotations.patch
@@ -20407,7 +20408,7 @@
patches.fixes/fs-fix-lost-error-code-in-dio_complete.patch
patches.fixes/nvme-free-ctrl-device-name-on-init-failure.patch
patches.fixes/nvme-flush-namespace-scanning-work-just-before-remov.patch
- patches.fixes/nvme-rdma-fix-double-freeing-of-async-event-data.patch
+ patches.drivers/nvme-rdma-fix-double-freeing-of-async-event-data.patch
patches.arch/x86-retpoline-make-config_retpoline-depend-on-compiler-support.patch
patches.arch/x86-retpoline-remove-minimal-retpoline-support.patch
patches.arch/x86-speculation-update-the-tif_ssbd-comment.patch
@@ -21525,6 +21526,7 @@
patches.drivers/soc-tegra-fuse-Fix-illegal-free-of-IO-base-address.patch
patches.drivers/soc-qcom-gsbi-Fix-error-handling-in-gsbi_probe.patch
patches.fixes/0001-mm-hwpoison-fix-thp-split-handing-in-soft_offline_in.patch
+ patches.arch/mm-replace-all-open-encodings-for-NUMA_NO_NODE.patch
patches.fixes/mm-vmalloc-fix-size-check-for-remap_vmalloc_range_partial
patches.arch/intel_idle-add-support-for-Jacobsville.patch
patches.arch/powercap-intel_rapl-add-support-for-Jacobsville.patch
@@ -21534,6 +21536,7 @@
patches.drivers/ACPI-video-Refactor-and-fix-dmi_is_desktop.patch
patches.drivers/ACPI-video-Extend-chassis-type-detection-with-a-Lunc.patch
patches.fixes/device-property-Fix-the-length-used-in-PROPERTY_ENTR.patch
+ patches.drivers/ALSA-usb-audio-Cleanup-DSD-whitelist.patch
patches.drivers/ALSA-hda-Record-the-current-power-state-before-suspe.patch
patches.drivers/ALSA-hda-Use-standard-device-registration-for-beep.patch
patches.drivers/ASoC-imx-sgtl5000-put-of-nodes-if-finding-codec-fail.patch
@@ -21547,6 +21550,7 @@
patches.drivers/ASoC-msm8916-wcd-analog-add-missing-license-informat.patch
patches.drivers/SoC-imx-sgtl5000-add-missing-put_device.patch
patches.drivers/ASoC-qcom-Fix-of-node-refcount-unbalance-in-apq8016_.patch
+ patches.drivers/ALSA-usb-audio-Add-quirk-for-MOTU-MicroBook-II.patch
patches.suse/hpet-Fix-missing-character-in-the-__setup-code-of-hp.patch
patches.drivers/applicom-Fix-potential-Spectre-v1-vulnerabilities.patch
patches.drivers/nvmem-allow-to-select-i.MX-nvmem-driver-for-i.MX-7D.patch
@@ -22200,7 +22204,7 @@
patches.drivers/USB-w1-ds2490-Fix-bug-caused-by-improper-use-of-alts.patch
patches.drivers/power-supply-sysfs-prevent-endless-uevent-loop-with-.patch
patches.suse/net-phy-marvell-Fix-buffer-overrun-with-stats-counte.patch
- patches.suse/bnxt_en-Improve-multicast-address-setup-logic.patch
+ patches.drivers/bnxt_en-Improve-multicast-address-setup-logic.patch
patches.drivers/bnxt_en-Free-short-FW-command-HWRM-memory-in-error-p.patch
patches.fixes/mac80211-Fix-kernel-panic-due-to-use-of-txq-after-fr.patch
patches.fixes/0009-ipv6-invert-flowlabel-sharing-check-in-process-and-u.patch
@@ -22219,6 +22223,7 @@
patches.fixes/Abort-file_remove_privs-for-non-reg.-files.patch
patches.fixes/ufs-fix-braino-in-ufs_get_inode_gid-for-solaris-UFS-.patch
patches.arch/x86-mm-mem_encrypt-disable-all-instrumentation-for-early-sme-setup.patch
+ patches.drivers/tty-rocket-fix-incorrect-forward-declaration-of-rp_i.patch
patches.arch/cpu-speculation-add-mitigations-cmdline-option.patch
patches.arch/x86-speculation-support-mitigations-cmdline-option.patch
patches.arch/powerpc-speculation-support-mitigations-cmdline-option.patch
@@ -22309,7 +22314,7 @@
patches.drivers/leds-avoid-races-with-workqueue.patch
patches.fixes/md-batch-flush-requests.patch
patches.suse/block-disk_events-introduce-event-flags.patch
- patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-ide-.patch
+ patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
patches.suse/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch
patches.suse/block-check_events-don-t-bother-with-events-if-un.patch
patches.fixes/block-fix-use-after-free-on-gendisk.patch
@@ -22445,6 +22450,7 @@
patches.drivers/ALSA-seq-Cover-unsubscribe_port-in-list_mutex.patch
patches.drivers/ALSA-seq-Simplify-snd_seq_kernel_client_enqueue-help.patch
patches.drivers/ALSA-seq-Protect-racy-pool-manipulation-from-OSS-seq.patch
+ patches.drivers/ALSA-usb-audio-Add-quirk-for-Focusrite-Scarlett-Solo.patch
patches.drivers/ALSA-seq-Correct-unlock-sequence-at-snd_seq_client_i.patch
patches.drivers/ALSA-emu10k1-Drop-superfluous-id-uniquification-beha.patch
patches.drivers/ALSA-core-Don-t-refer-to-snd_cards-array-directly.patch
@@ -22618,6 +22624,7 @@
patches.fixes/crypto-vmx-CTR-always-increment-IV-as-quadword.patch
patches.arch/crypto-vmx-ghash-do-nosimd-fallback-manually.patch
patches.drivers/usbnet-ipheth-fix-racing-condition.patch
+ patches.suse/ipv6-Consider-sk_bound_dev_if-when-binding-a-raw-soc.patch
patches.drivers/usbnet-fix-kernel-crash-after-disconnect.patch
patches.drm/drm-vmwgfx-Don-t-send-drm-sysfs-hotplug-events-on-in.patch
patches.drm/0001-drm-vmwgfx-NULL-pointer-dereference-from-vmw_cmd_dx_.patch
@@ -22654,7 +22661,18 @@
patches.suse/btrfs-fix-wrong-ctime-and-mtime-of-a-directory-after.patch
patches.suse/btrfs-fix-race-updating-log-root-item-during-fsync.patch
patches.drivers/mISDN-make-sure-device-name-is-NUL-terminated.patch
+ patches.suse/net-stmmac-fix-reset-gpio-free-missing.patch
+ patches.drivers/bnxt_en-Fix-aggregation-buffer-leak-under-OOM-condit.patch
+ patches.suse/ipv4-igmp-fix-another-memory-leak-in-igmpv3_del_delr.patch
+ patches.suse/ipv4-igmp-fix-build-error-if-CONFIG_IP_MULTICAST.patch
+ patches.suse/net-fec-fix-the-clk-mismatch-in-failed_reset-path.patch
+ patches.suse/net-mvneta-Fix-err-code-path-of-probe.patch
+ patches.suse/llc-fix-skb-leak-in-llc_build_and_send_ui_pkt.patch
+ patches.suse/net-mlx5-Avoid-double-free-in-fs-init-error-unwindin.patch
+ patches.suse/net-mlx5-Allocate-root-ns-memory-using-kzalloc-to-ma.patch
patches.suse/net-dsa-mv88e6xxx-fix-handling-of-upper-half-of-STAT.patch
+ patches.suse/net-mvpp2-fix-bad-MVPP2_TXQ_SCHED_TOKEN_CNTR_REG-que.patch
+ patches.suse/net-gro-fix-use-after-free-read-in-napi_gro_frags.patch
patches.drm/0004-drm-etnaviv-lock-MMU-while-dumping-core.patch
patches.drivers/USB-Fix-slab-out-of-bounds-write-in-usb_get_bos_desc.patch
patches.drivers/media-usb-siano-Fix-general-protection-fault-in-smsu.patch
@@ -22781,6 +22799,7 @@
patches.fixes/net-packet-fix-memory-leak-in-packet_set_ring.patch
patches.drivers/qmi_wwan-Fix-out-of-bounds-read.patch
patches.suse/ipv4-Use-return-value-of-inet_iif-for-__raw_v4_looku.patch
+ patches.fixes/team-Always-enable-vlan-tx-offload.patch
patches.fixes/scsi-vmw_pscsi-Fix-use-after-free-in-pvscsi_queue_lc.patch
patches.fixes/Bluetooth-Fix-faulty-expression-for-minimum-encrypti.patch
patches.suse/ftrace-x86-remove-possible-deadlock-between-register_kprobe-and-ftrace_run_update_code.patch
@@ -22799,7 +22818,21 @@
patches.drm/drm-amdgpu-gfx9-use-reset-default-for-PA_SC_FIFO_SIZ.patch
patches.fixes/scsi-target-iblock-fix-overrun-in-write-same-emulation
patches.drivers/dmaengine-imx-sdma-remove-BD_INTR-for-channel0.patch
+ patches.fixes/crypto-ccp-fix-AES-CFB-error-exposed-by-new-test-vec.patch
+ patches.fixes/crypto-ccp-Fix-3DES-complaint-from-ccp-crypto-module.patch
+ patches.fixes/crypto-talitos-rename-alternative-AEAD-algos.patch
+ patches.fixes/crypto-talitos-reduce-max-key-size-for-SEC1.patch
+ patches.fixes/crypto-talitos-fix-CTR-alg-blocksize.patch
+ patches.fixes/crypto-talitos-check-data-blocksize-in-ablkcipher.patch
+ patches.fixes/crypto-talitos-HMAC-SNOOP-NO-AFEU-mode-requires-SW-i.patch
+ patches.fixes/crypto-talitos-properly-handle-split-ICV.patch
+ patches.fixes/crypto-talitos-Align-SEC1-accesses-to-32-bits-bounda.patch
+ patches.fixes/crypto-arm64-sha1-ce-correct-digest-for-empty-data-i.patch
+ patches.fixes/crypto-arm64-sha2-ce-correct-digest-for-empty-data-i.patch
+ patches.fixes/crypto-ghash-fix-unaligned-memory-access-in-ghash_se.patch
+ patches.fixes/crypto-chacha20poly1305-fix-atomic-sleep-when-using-.patch
patches.fixes/lib-scatterlist-Fix-mapping-iterator-when-sg-offset-.patch
+ patches.fixes/crypto-ccp-Validate-the-the-error-value-used-to-inde.patch
patches.drivers/pwm-stm32-Use-3-cells-of_xlate.patch
patches.drivers/gpio-omap-fix-lack-of-irqstatus_raw0-for-OMAP4.patch
patches.drivers/regulator-s2mps11-Fix-buck7-and-buck8-wrong-voltages.patch
@@ -22816,6 +22849,8 @@
patches.drivers/media-vivid-fix-incorrect-assignment-operation-when-.patch
patches.drivers/media-s5p-mfc-Make-additional-clocks-optional.patch
patches.drivers/media-v4l2-Test-type-instead-of-cfg-type-in-v4l2_ctr.patch
+ patches.drivers/ALSA-usb-audio-Enable-.product_name-override-for-Ema.patch
+ patches.drivers/ALSA-usb-audio-Sanity-checks-for-each-pipe-and-EP-ty.patch
patches.drivers/ALSA-hda-realtek-Headphone-Mic-can-t-record-after-S3.patch
patches.drivers/ASoC-add-support-for-Conexant-CX2072X-CODEC
patches.drivers/ASoC-Intel-Add-machine-driver-for-Cherrytrail-CX2072
@@ -22878,12 +22913,29 @@
patches.drivers/staging-rtl8712-reduce-stack-usage-again.patch
patches.drivers/staging-comedi-amplc_pci230-fix-null-pointer-deref-o.patch
patches.drivers/staging-comedi-dt282x-fix-a-null-pointer-deref-on-in.patch
+ patches.drivers/tty-serial-cpm_uart-fix-init-when-SMC-is-relocated.patch
+ patches.drivers/serial-uartps-Fix-multiple-line-dereference.patch
+ patches.drivers/serial-uartps-Fix-long-line-over-80-chars.patch
+ patches.drivers/serial-uartps-Do-not-add-a-trailing-semicolon-to-mac.patch
+ patches.drivers/serial-uartps-Remove-useless-return-from-cdns_uart_p.patch
+ patches.drivers/tty-serial_core-Set-port-active-bit-in-uart_port_act.patch
+ patches.drivers/Revert-serial-8250-Don-t-service-RX-FIFO-if-interrup.patch
+ patches.drivers/usb-gadget-ether-Fix-race-between-gether_disconnect-.patch
patches.drivers/memstick-Fix-error-cleanup-path-of-memstick_init.patch
patches.fixes/0001-ocfs2-add-last-unlock-times-in-locking_state.patch
patches.fixes/0002-ocfs2-add-locking-filter-debugfs-file.patch
patches.fixes/0003-ocfs2-add-first-lock-wait-time-in-locking_state.patch
patches.arch/powerpc-watchpoint-Restore-NV-GPRs-while-returning-f.patch
+ patches.arch/powerpc-mm-drconf-Use-NUMA_NO_NODE-on-failures-inste.patch
+ patches.arch/powerpc-mm-Fix-node-look-up-with-numa-off-boot.patch
+ patches.arch/powerpc-mm-Consolidate-numa_enable-check-and-min_com.patch
patches.drivers/platform-x86-pmc_atom-Add-CB4063-Beckhoff-Automation.patch
+ patches.drm/drm-meson-Add-support-for-XBGR8888-ABGR8888-formats.patch
+ patches.drm/drm-rockchip-Properly-adjust-to-a-true-clock-in-adju.patch
+ patches.drm/drm-msm-a3xx-remove-TPL1-regs-from-snapshot.patch
+ patches.drivers/mfd-intel-lpss-Release-IDA-resources.patch
+ patches.drivers/PCI-Return-error-if-cannot-probe-VF.patch
+ patches.drivers/PCI-Always-allow-probing-with-driver_override.patch
# powerpc/linux next
patches.arch/powerpc-pseries-dlpar-Fix-a-missing-check-in-dlpar_p.patch
@@ -22926,6 +22978,9 @@
patches.fixes/drivers-base-introduce-kill_device.patch
patches.fixes/libnvdimm-bus-prevent-duplicate-device_unregister-calls.patch
+ # git://git.cmpxchg.org/linux-mmots.git
+ patches.arch/mm-nvdimm-add-is_ioremap_addr-and-use-that-to-check-.patch
+
# out-of-tree patches
patches.suse/nvme-multipath-round-robin-I-O-policy.patch
patches.suse/cifs-fix-set-info.patch