summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2018-04-19 09:01:28 +0200
committerThorsten Leemhuis <fedora@leemhuis.info>2018-04-19 09:01:28 +0200
commitf5ab2493f4f83df563a3780b0f7c2327351e8e98 (patch)
tree823b8cb678373193b96ee1040ad00ac2ae312482
parent282d95374e99fc7f5674b067ad00c124bf6871cc (diff)
parent51da24b176436eb8b8f9305990dda2b6e37879bb (diff)
downloadkernel-f5ab2493f4f83df563a3780b0f7c2327351e8e98.tar.gz
kernel-f5ab2493f4f83df563a3780b0f7c2327351e8e98.tar.xz
kernel-f5ab2493f4f83df563a3780b0f7c2327351e8e98.zip
Merge remote-tracking branch 'origin/stabilization' into stabilization-user-thl-vanilla-fedora
-rw-r--r--arm-sunxi-nvmem-fixH3.patch131
-rw-r--r--arm-tegra-fix-nouveau-crash.patch64
-rw-r--r--baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU2
-rw-r--r--baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU2
-rw-r--r--baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS652172
-rw-r--r--clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch58
-rw-r--r--crypto-testmgr-Allow-different-compression-results.patch163
-rw-r--r--kernel-armv7hl-debug.config6
-rw-r--r--kernel-armv7hl-lpae-debug.config5
-rw-r--r--kernel-armv7hl-lpae.config5
-rw-r--r--kernel-armv7hl.config6
-rw-r--r--kernel.spec28
-rw-r--r--of-i2c-fix-module-aliases.patch69
13 files changed, 526 insertions, 15 deletions
diff --git a/arm-sunxi-nvmem-fixH3.patch b/arm-sunxi-nvmem-fixH3.patch
new file mode 100644
index 000000000..415885d4c
--- /dev/null
+++ b/arm-sunxi-nvmem-fixH3.patch
@@ -0,0 +1,131 @@
+From 0ab09d651b5858f9bc7d5f74e725334a661828e0 Mon Sep 17 00:00:00 2001
+From: Icenowy Zheng <icenowy@aosc.io>
+Date: Fri, 9 Mar 2018 14:47:17 +0000
+Subject: nvmem: sunxi-sid: fix H3 SID controller support
+
+It seems that doing some operation will make the value pre-read on H3
+SID controller wrong again, so all operation should be performed by
+register.
+
+Change the SID reading to use register only.
+
+Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
+Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/nvmem/sunxi_sid.c | 71 +++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 50 insertions(+), 21 deletions(-)
+
+diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c
+index 99bd54d..26bb637 100644
+--- a/drivers/nvmem/sunxi_sid.c
++++ b/drivers/nvmem/sunxi_sid.c
+@@ -85,13 +85,14 @@ static int sunxi_sid_read(void *context, unsigned int offset,
+ }
+
+ static int sun8i_sid_register_readout(const struct sunxi_sid *sid,
+- const unsigned int word)
++ const unsigned int offset,
++ u32 *out)
+ {
+ u32 reg_val;
+ int ret;
+
+ /* Set word, lock access, and set read command */
+- reg_val = (word & SUN8I_SID_OFFSET_MASK)
++ reg_val = (offset & SUN8I_SID_OFFSET_MASK)
+ << SUN8I_SID_OFFSET_SHIFT;
+ reg_val |= SUN8I_SID_OP_LOCK | SUN8I_SID_READ;
+ writel(reg_val, sid->base + SUN8I_SID_PRCTL);
+@@ -101,7 +102,49 @@ static int sun8i_sid_register_readout(const struct sunxi_sid *sid,
+ if (ret)
+ return ret;
+
++ if (out)
++ *out = readl(sid->base + SUN8I_SID_RDKEY);
++
+ writel(0, sid->base + SUN8I_SID_PRCTL);
++
++ return 0;
++}
++
++/*
++ * On Allwinner H3, the value on the 0x200 offset of the SID controller seems
++ * to be not reliable at all.
++ * Read by the registers instead.
++ */
++static int sun8i_sid_read_byte_by_reg(const struct sunxi_sid *sid,
++ const unsigned int offset,
++ u8 *out)
++{
++ u32 word;
++ int ret;
++
++ ret = sun8i_sid_register_readout(sid, offset & ~0x03, &word);
++
++ if (ret)
++ return ret;
++
++ *out = (word >> ((offset & 0x3) * 8)) & 0xff;
++
++ return 0;
++}
++
++static int sun8i_sid_read_by_reg(void *context, unsigned int offset,
++ void *val, size_t bytes)
++{
++ struct sunxi_sid *sid = context;
++ u8 *buf = val;
++ int ret;
++
++ while (bytes--) {
++ ret = sun8i_sid_read_byte_by_reg(sid, offset++, buf++);
++ if (ret)
++ return ret;
++ }
++
+ return 0;
+ }
+
+@@ -131,26 +174,12 @@ static int sunxi_sid_probe(struct platform_device *pdev)
+
+ size = cfg->size;
+
+- if (cfg->need_register_readout) {
+- /*
+- * H3's SID controller have a bug that the value at 0x200
+- * offset is not the correct value when the hardware is reseted.
+- * However, after doing a register-based read operation, the
+- * value become right.
+- * Do a full read operation here, but ignore its value
+- * (as it's more fast to read by direct MMIO value than
+- * with registers)
+- */
+- for (i = 0; i < (size >> 2); i++) {
+- ret = sun8i_sid_register_readout(sid, i);
+- if (ret)
+- return ret;
+- }
+- }
+-
+ econfig.size = size;
+ econfig.dev = dev;
+- econfig.reg_read = sunxi_sid_read;
++ if (cfg->need_register_readout)
++ econfig.reg_read = sun8i_sid_read_by_reg;
++ else
++ econfig.reg_read = sunxi_sid_read;
+ econfig.priv = sid;
+ nvmem = nvmem_register(&econfig);
+ if (IS_ERR(nvmem))
+@@ -163,7 +192,7 @@ static int sunxi_sid_probe(struct platform_device *pdev)
+ }
+
+ for (i = 0; i < size; i++)
+- randomness[i] = sunxi_sid_read_byte(sid, i);
++ econfig.reg_read(sid, i, &randomness[i], 1);
+
+ add_device_randomness(randomness, size);
+ kfree(randomness);
+--
+cgit v1.1
diff --git a/arm-tegra-fix-nouveau-crash.patch b/arm-tegra-fix-nouveau-crash.patch
new file mode 100644
index 000000000..d1d7c61a6
--- /dev/null
+++ b/arm-tegra-fix-nouveau-crash.patch
@@ -0,0 +1,64 @@
+From 369971aa0101c4cfb84dacaaaa1b5cc5790c14ff Mon Sep 17 00:00:00 2001
+From: Thierry Reding <treding@nvidia.com>
+Date: Wed, 11 Apr 2018 10:34:17 +0200
+Subject: [PATCH] drm/nouveau: tegra: Detach from ARM DMA/IOMMU mapping
+
+Depending on the kernel configuration, early ARM architecture setup code
+may have attached the GPU to a DMA/IOMMU mapping that transparently uses
+the IOMMU to back the DMA API. Tegra requires special handling for IOMMU
+backed buffers (a special bit in the GPU's MMU page tables indicates the
+memory path to take: via the SMMU or directly to the memory controller).
+Transparently backing DMA memory with an IOMMU prevents Nouveau from
+properly handling such memory accesses and causes memory access faults.
+
+As a side-note: buffers other than those allocated in instance memory
+don't need to be physically contiguous from the GPU's perspective since
+the GPU can map them into contiguous buffers using its own MMU. Mapping
+these buffers through the IOMMU is unnecessary and will even lead to
+performance degradation because of the additional translation.
+
+Signed-off-by: Thierry Reding <treding@nvidia.com>
+---
+ drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
+index 1f07999aea1d..ac7706f56f6f 100644
+--- a/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
++++ b/drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
+@@ -19,6 +19,11 @@
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
++
++#if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)
++#include <asm/dma-iommu.h>
++#endif
++
+ #include <core/tegra.h>
+ #ifdef CONFIG_NOUVEAU_PLATFORM_DRIVER
+ #include "priv.h"
+@@ -105,6 +110,20 @@ nvkm_device_tegra_probe_iommu(struct nvkm_device_tegra *tdev)
+ unsigned long pgsize_bitmap;
+ int ret;
+
++#if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)
++ if (dev->archdata.mapping) {
++ struct dma_iommu_mapping *mapping = to_dma_iommu_mapping(dev);
++
++ arm_iommu_release_mapping(mapping);
++ arm_iommu_detach_device(dev);
++
++ if (dev->archdata.dma_coherent)
++ set_dma_ops(dev, &arm_coherent_dma_ops);
++ else
++ set_dma_ops(dev, &arm_dma_ops);
++ }
++#endif
++
+ if (!tdev->func->iommu_bit)
+ return;
+
+--
+2.16.3
+
diff --git a/baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU b/baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU
index 1c741aa22..5975dfe01 100644
--- a/baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU
+++ b/baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU
@@ -1 +1 @@
-# CONFIG_DRM_EXYNOS_IOMMU is not set
+CONFIG_DRM_EXYNOS_IOMMU=y
diff --git a/baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU b/baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU
index 76ab03ad5..6a0844a77 100644
--- a/baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU
+++ b/baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU
@@ -1 +1 @@
-# CONFIG_EXYNOS_IOMMU is not set
+CONFIG_EXYNOS_IOMMU=y
diff --git a/baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS65217 b/baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS65217
index e77c2fc05..629b8503c 100644
--- a/baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS65217
+++ b/baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS65217
@@ -1 +1 @@
-CONFIG_CHARGER_TPS65217=m
+# CONFIG_CHARGER_TPS65217 is not set
diff --git a/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch b/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch
new file mode 100644
index 000000000..c1ef68279
--- /dev/null
+++ b/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch
@@ -0,0 +1,58 @@
+From patchwork Tue Mar 27 17:47:04 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: clk: ti: fix flag space conflict with clkctrl clocks
+From: Tero Kristo <t-kristo@ti.com>
+X-Patchwork-Id: 10311335
+Message-Id: <1522172824-14094-1-git-send-email-t-kristo@ti.com>
+To: <sboyd@kernel.org>, <mturquette@baylibre.com>,
+ <linux-omap@vger.kernel.org>, <linux-clk@vger.kernel.org>,
+ <tony@atomide.com>
+Cc: <arnd@arndb.de>, <linux-arm-kernel@lists.infradead.org>
+Date: Tue, 27 Mar 2018 20:47:04 +0300
+
+The introduction of support for CLK_SET_RATE_PARENT flag for clkctrl
+clocks used a generic clock flag, which causes a conflict with the
+rest of the clkctrl flags, namely the NO_IDLEST flag. This can cause
+boot failures on certain platforms where this flag is introduced, by
+omitting the wait for the clockctrl module to be fully enabled before
+proceeding with rest of the code.
+
+Fix this by moving all the clkctrl specific flags to their own bit-range.
+
+Signed-off-by: Tero Kristo <t-kristo@ti.com>
+Fixes: 49159a9dc3da ("clk: ti: add support for CLK_SET_RATE_PARENT flag")
+Reported-by: Christophe Lyon <christophe.lyon@linaro.org>
+Tested-by: Tony Lindgren <tony@atomide.com>
+---
+ drivers/clk/ti/clock.h | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/clk/ti/clock.h b/drivers/clk/ti/clock.h
+index 90b86aa..b582780 100644
+--- a/drivers/clk/ti/clock.h
++++ b/drivers/clk/ti/clock.h
+@@ -76,6 +76,11 @@ enum {
+ #define CLKF_CORE (1 << 9)
+ #define CLKF_J_TYPE (1 << 10)
+
++/* CLKCTRL flags */
++#define CLKF_SW_SUP BIT(5)
++#define CLKF_HW_SUP BIT(6)
++#define CLKF_NO_IDLEST BIT(7)
++
+ #define CLK(dev, con, ck) \
+ { \
+ .lk = { \
+@@ -185,10 +190,6 @@ struct omap_clkctrl_data {
+ extern const struct omap_clkctrl_data dm814_clkctrl_data[];
+ extern const struct omap_clkctrl_data dm816_clkctrl_data[];
+
+-#define CLKF_SW_SUP BIT(0)
+-#define CLKF_HW_SUP BIT(1)
+-#define CLKF_NO_IDLEST BIT(2)
+-
+ typedef void (*ti_of_clk_init_cb_t)(void *, struct device_node *);
+
+ struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
diff --git a/crypto-testmgr-Allow-different-compression-results.patch b/crypto-testmgr-Allow-different-compression-results.patch
new file mode 100644
index 000000000..c752770ef
--- /dev/null
+++ b/crypto-testmgr-Allow-different-compression-results.patch
@@ -0,0 +1,163 @@
+From patchwork Wed Apr 11 18:28:32 2018
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: crypto: testmgr: Allow different compression results
+From: Jan Glauber <jglauber@cavium.com>
+X-Patchwork-Id: 10336001
+Message-Id: <20180411182832.27761-1-jglauber@cavium.com>
+To: Herbert Xu <herbert@gondor.apana.org.au>
+Cc: "David S . Miller" <davem@davemloft.net>,
+ linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
+ Mahipal Challa <mchalla@cavium.com>,
+ Balakrishna Bhamidipati <bbhamidipati@cavium.com>,
+ Jan Glauber <jglauber@cavium.com>
+Date: Wed, 11 Apr 2018 20:28:32 +0200
+
+From: Mahipal Challa <mchalla@cavium.com>
+
+The following error is triggered by the ThunderX ZIP driver
+if the testmanager is enabled:
+
+[ 199.069437] ThunderX-ZIP 0000:03:00.0: Found ZIP device 0 177d:a01a on Node 0
+[ 199.073573] alg: comp: Compression test 1 failed for deflate-generic: output len = 37
+
+The reason for this error is the verification of the compression
+results. Verifying the compression result only works if all
+algorithm parameters are identical, in this case to the software
+implementation.
+
+Different compression engines like the ThunderX ZIP coprocessor
+might yield different compression results by tuning the
+algorithm parameters. In our case the compressed result is
+shorter than the test vector.
+
+We should not forbid different compression results but only
+check that compression -> decompression yields the same
+result. This is done already in the acomp test. Do something
+similar for test_comp().
+
+Signed-off-by: Mahipal Challa <mchalla@cavium.com>
+Signed-off-by: Balakrishna Bhamidipati <bbhamidipati@cavium.com>
+[jglauber@cavium.com: removed unrelated printk changes, rewrote commit msg,
+ fixed whitespace and unneeded initialization]
+Signed-off-by: Jan Glauber <jglauber@cavium.com>
+---
+ crypto/testmgr.c | 50 +++++++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/crypto/testmgr.c b/crypto/testmgr.c
+index af4a01c..627e82e 100644
+--- a/crypto/testmgr.c
++++ b/crypto/testmgr.c
+@@ -1342,19 +1342,30 @@ static int test_comp(struct crypto_comp *tfm,
+ int ctcount, int dtcount)
+ {
+ const char *algo = crypto_tfm_alg_driver_name(crypto_comp_tfm(tfm));
++ char *output, *decomp_output;
+ unsigned int i;
+- char result[COMP_BUF_SIZE];
+ int ret;
+
++ output = kmalloc(COMP_BUF_SIZE, GFP_KERNEL);
++ if (!output)
++ return -ENOMEM;
++
++ decomp_output = kmalloc(COMP_BUF_SIZE, GFP_KERNEL);
++ if (!decomp_output) {
++ kfree(output);
++ return -ENOMEM;
++ }
++
+ for (i = 0; i < ctcount; i++) {
+ int ilen;
+ unsigned int dlen = COMP_BUF_SIZE;
+
+- memset(result, 0, sizeof (result));
++ memset(output, 0, sizeof(COMP_BUF_SIZE));
++ memset(decomp_output, 0, sizeof(COMP_BUF_SIZE));
+
+ ilen = ctemplate[i].inlen;
+ ret = crypto_comp_compress(tfm, ctemplate[i].input,
+- ilen, result, &dlen);
++ ilen, output, &dlen);
+ if (ret) {
+ printk(KERN_ERR "alg: comp: compression failed "
+ "on test %d for %s: ret=%d\n", i + 1, algo,
+@@ -1362,7 +1373,17 @@ static int test_comp(struct crypto_comp *tfm,
+ goto out;
+ }
+
+- if (dlen != ctemplate[i].outlen) {
++ ilen = dlen;
++ dlen = COMP_BUF_SIZE;
++ ret = crypto_comp_decompress(tfm, output,
++ ilen, decomp_output, &dlen);
++ if (ret) {
++ pr_err("alg: comp: compression failed: decompress: on test %d for %s failed: ret=%d\n",
++ i + 1, algo, -ret);
++ goto out;
++ }
++
++ if (dlen != ctemplate[i].inlen) {
+ printk(KERN_ERR "alg: comp: Compression test %d "
+ "failed for %s: output len = %d\n", i + 1, algo,
+ dlen);
+@@ -1370,10 +1391,11 @@ static int test_comp(struct crypto_comp *tfm,
+ goto out;
+ }
+
+- if (memcmp(result, ctemplate[i].output, dlen)) {
+- printk(KERN_ERR "alg: comp: Compression test %d "
+- "failed for %s\n", i + 1, algo);
+- hexdump(result, dlen);
++ if (memcmp(decomp_output, ctemplate[i].input,
++ ctemplate[i].inlen)) {
++ pr_err("alg: comp: compression failed: output differs: on test %d for %s\n",
++ i + 1, algo);
++ hexdump(decomp_output, dlen);
+ ret = -EINVAL;
+ goto out;
+ }
+@@ -1383,11 +1405,11 @@ static int test_comp(struct crypto_comp *tfm,
+ int ilen;
+ unsigned int dlen = COMP_BUF_SIZE;
+
+- memset(result, 0, sizeof (result));
++ memset(decomp_output, 0, sizeof(COMP_BUF_SIZE));
+
+ ilen = dtemplate[i].inlen;
+ ret = crypto_comp_decompress(tfm, dtemplate[i].input,
+- ilen, result, &dlen);
++ ilen, decomp_output, &dlen);
+ if (ret) {
+ printk(KERN_ERR "alg: comp: decompression failed "
+ "on test %d for %s: ret=%d\n", i + 1, algo,
+@@ -1403,10 +1425,10 @@ static int test_comp(struct crypto_comp *tfm,
+ goto out;
+ }
+
+- if (memcmp(result, dtemplate[i].output, dlen)) {
++ if (memcmp(decomp_output, dtemplate[i].output, dlen)) {
+ printk(KERN_ERR "alg: comp: Decompression test %d "
+ "failed for %s\n", i + 1, algo);
+- hexdump(result, dlen);
++ hexdump(decomp_output, dlen);
+ ret = -EINVAL;
+ goto out;
+ }
+@@ -1415,11 +1437,13 @@ static int test_comp(struct crypto_comp *tfm,
+ ret = 0;
+
+ out:
++ kfree(decomp_output);
++ kfree(output);
+ return ret;
+ }
+
+ static int test_acomp(struct crypto_acomp *tfm,
+- const struct comp_testvec *ctemplate,
++ const struct comp_testvec *ctemplate,
+ const struct comp_testvec *dtemplate,
+ int ctcount, int dtcount)
+ {
diff --git a/kernel-armv7hl-debug.config b/kernel-armv7hl-debug.config
index 30c4497ba..244d32fa6 100644
--- a/kernel-armv7hl-debug.config
+++ b/kernel-armv7hl-debug.config
@@ -873,7 +873,7 @@ CONFIG_CHARGER_QCOM_SMBB=m
# CONFIG_CHARGER_SBS is not set
CONFIG_CHARGER_SMB347=m
CONFIG_CHARGER_TPS65090=m
-CONFIG_CHARGER_TPS65217=m
+# CONFIG_CHARGER_TPS65217 is not set
CONFIG_CHARGER_TWL4030=m
# CONFIG_CHASH_SELFTEST is not set
# CONFIG_CHASH_STATS is not set
@@ -1367,7 +1367,7 @@ CONFIG_DRM_EXYNOS_DSI=y
CONFIG_DRM_EXYNOS_FIMD=y
CONFIG_DRM_EXYNOS_G2D=y
CONFIG_DRM_EXYNOS_HDMI=y
-# CONFIG_DRM_EXYNOS_IOMMU is not set
+CONFIG_DRM_EXYNOS_IOMMU=y
CONFIG_DRM_EXYNOS=m
CONFIG_DRM_EXYNOS_MIC=y
CONFIG_DRM_EXYNOS_MIXER=y
@@ -1677,7 +1677,7 @@ CONFIG_EXYNOS5420_MCPM=y
CONFIG_EXYNOS_ADC=m
CONFIG_EXYNOS_AUDSS_CLK_CON=m
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
-# CONFIG_EXYNOS_IOMMU is not set
+CONFIG_EXYNOS_IOMMU=y
CONFIG_EXYNOS_THERMAL=y
# CONFIG_EZNPS_GIC is not set
# CONFIG_EZX_PCAP is not set
diff --git a/kernel-armv7hl-lpae-debug.config b/kernel-armv7hl-lpae-debug.config
index 3c997c879..add014991 100644
--- a/kernel-armv7hl-lpae-debug.config
+++ b/kernel-armv7hl-lpae-debug.config
@@ -1309,7 +1309,7 @@ CONFIG_DRM_EXYNOS_DSI=y
CONFIG_DRM_EXYNOS_FIMD=y
CONFIG_DRM_EXYNOS_G2D=y
CONFIG_DRM_EXYNOS_HDMI=y
-# CONFIG_DRM_EXYNOS_IOMMU is not set
+CONFIG_DRM_EXYNOS_IOMMU=y
CONFIG_DRM_EXYNOS=m
CONFIG_DRM_EXYNOS_MIC=y
CONFIG_DRM_EXYNOS_MIXER=y
@@ -1586,7 +1586,7 @@ CONFIG_EXYNOS5420_MCPM=y
CONFIG_EXYNOS_ADC=m
CONFIG_EXYNOS_AUDSS_CLK_CON=m
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
-# CONFIG_EXYNOS_IOMMU is not set
+CONFIG_EXYNOS_IOMMU=y
CONFIG_EXYNOS_THERMAL=y
# CONFIG_EZNPS_GIC is not set
# CONFIG_EZX_PCAP is not set
@@ -4515,7 +4515,6 @@ CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
CONFIG_REGULATOR_TPS65090=m
# CONFIG_REGULATOR_TPS65132 is not set
-CONFIG_REGULATOR_TPS65217=y
CONFIG_REGULATOR_TPS6524X=m
CONFIG_REGULATOR_TPS6586X=m
CONFIG_REGULATOR_TPS65910=m
diff --git a/kernel-armv7hl-lpae.config b/kernel-armv7hl-lpae.config
index d605f4b07..a0aa816c5 100644
--- a/kernel-armv7hl-lpae.config
+++ b/kernel-armv7hl-lpae.config
@@ -1299,7 +1299,7 @@ CONFIG_DRM_EXYNOS_DSI=y
CONFIG_DRM_EXYNOS_FIMD=y
CONFIG_DRM_EXYNOS_G2D=y
CONFIG_DRM_EXYNOS_HDMI=y
-# CONFIG_DRM_EXYNOS_IOMMU is not set
+CONFIG_DRM_EXYNOS_IOMMU=y
CONFIG_DRM_EXYNOS=m
CONFIG_DRM_EXYNOS_MIC=y
CONFIG_DRM_EXYNOS_MIXER=y
@@ -1576,7 +1576,7 @@ CONFIG_EXYNOS5420_MCPM=y
CONFIG_EXYNOS_ADC=m
CONFIG_EXYNOS_AUDSS_CLK_CON=m
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
-# CONFIG_EXYNOS_IOMMU is not set
+CONFIG_EXYNOS_IOMMU=y
CONFIG_EXYNOS_THERMAL=y
# CONFIG_EZNPS_GIC is not set
# CONFIG_EZX_PCAP is not set
@@ -4492,7 +4492,6 @@ CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
CONFIG_REGULATOR_TPS65090=m
# CONFIG_REGULATOR_TPS65132 is not set
-CONFIG_REGULATOR_TPS65217=y
CONFIG_REGULATOR_TPS6524X=m
CONFIG_REGULATOR_TPS6586X=m
CONFIG_REGULATOR_TPS65910=m
diff --git a/kernel-armv7hl.config b/kernel-armv7hl.config
index ef0c0f2cb..c6c148407 100644
--- a/kernel-armv7hl.config
+++ b/kernel-armv7hl.config
@@ -872,7 +872,7 @@ CONFIG_CHARGER_QCOM_SMBB=m
# CONFIG_CHARGER_SBS is not set
CONFIG_CHARGER_SMB347=m
CONFIG_CHARGER_TPS65090=m
-CONFIG_CHARGER_TPS65217=m
+# CONFIG_CHARGER_TPS65217 is not set
CONFIG_CHARGER_TWL4030=m
# CONFIG_CHASH_SELFTEST is not set
# CONFIG_CHASH_STATS is not set
@@ -1357,7 +1357,7 @@ CONFIG_DRM_EXYNOS_DSI=y
CONFIG_DRM_EXYNOS_FIMD=y
CONFIG_DRM_EXYNOS_G2D=y
CONFIG_DRM_EXYNOS_HDMI=y
-# CONFIG_DRM_EXYNOS_IOMMU is not set
+CONFIG_DRM_EXYNOS_IOMMU=y
CONFIG_DRM_EXYNOS=m
CONFIG_DRM_EXYNOS_MIC=y
CONFIG_DRM_EXYNOS_MIXER=y
@@ -1667,7 +1667,7 @@ CONFIG_EXYNOS5420_MCPM=y
CONFIG_EXYNOS_ADC=m
CONFIG_EXYNOS_AUDSS_CLK_CON=m
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
-# CONFIG_EXYNOS_IOMMU is not set
+CONFIG_EXYNOS_IOMMU=y
CONFIG_EXYNOS_THERMAL=y
# CONFIG_EZNPS_GIC is not set
# CONFIG_EZX_PCAP is not set
diff --git a/kernel.spec b/kernel.spec
index c5ff88ac1..a2ed6d085 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -610,6 +610,20 @@ Patch312: bcm283x-clk-audio-fixes.patch
# https://marc.info/?l=linux-kernel&m=152328880417846&w=2
Patch313: arm64-thunderx-crypto-zip-fixes.patch
+# https://www.spinics.net/lists/linux-crypto/msg32725.html
+Patch314: crypto-testmgr-Allow-different-compression-results.patch
+
+Patch315: arm-tegra-fix-nouveau-crash.patch
+
+# https://www.spinics.net/lists/arm-kernel/msg630629.html
+Patch316: arm-sunxi-nvmem-fixH3.patch
+
+# Upstream 4.17 back port
+Patch317: of-i2c-fix-module-aliases.patch
+
+# https://patchwork.kernel.org/patch/10311335/
+Patch318: clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch
+
# Enabling Patches for the RPi3+
Patch320: bcm2837-rpi-initial-support-for-the-3.patch
Patch321: bcm2837-gpio-expander.patch
@@ -1888,6 +1902,20 @@ fi
#
#
%changelog
+* Thu Apr 12 2018 Peter Robinson <pbrobinson@fedoraproject.org>
+- Disable tps65217-charger on BeagleBone to fix USB-OTG port rhbz 1487399
+
+* Thu Apr 12 2018 Jeremy Cline <jeremy@jcline.org> - 4.16.2-300
+- Linux v4.16.2
+
+* Thu Apr 12 2018 Peter Robinson <pbrobinson@fedoraproject.org>
+- Patch to fix nouveau on Tegra platforms
+- Enable IOMMU on Exynos now upstream does
+- Further fix for ThunderX ZIP driver
+- Fix for OF i2c module aliases
+- Fix for nvmem on AllWinner H3/H5 SoCs
+- Add fix for the BeagleBone boot failure
+
* Mon Apr 09 2018 Jeremy Cline <jeremy@jcline.org>
- Include the KCS IPMI BMC driver that's in F27
diff --git a/of-i2c-fix-module-aliases.patch b/of-i2c-fix-module-aliases.patch
new file mode 100644
index 000000000..3c737f6e8
--- /dev/null
+++ b/of-i2c-fix-module-aliases.patch
@@ -0,0 +1,69 @@
+From af503716ac1444db61d80cb6d17cfe62929c21df Mon Sep 17 00:00:00 2001
+From: Javier Martinez Canillas <javierm@redhat.com>
+Date: Sun, 3 Dec 2017 22:40:50 +0100
+Subject: i2c: core: report OF style module alias for devices registered via OF
+
+The buses should honor the firmware interface used to register the device,
+but the I2C core reports a MODALIAS of the form i2c:<device> even for I2C
+devices registered via OF.
+
+This means that user-space will never get an OF stype uevent MODALIAS even
+when the drivers modules contain aliases exported from both the I2C and OF
+device ID tables. For example, an Atmel maXTouch Touchscreen registered by
+a DT node with compatible "atmel,maxtouch" has the following module alias:
+
+$ cat /sys/class/i2c-adapter/i2c-8/8-004b/modalias
+i2c:maxtouch
+
+So udev won't be able to auto-load a module for an OF-only device driver.
+Many OF-only drivers duplicate the OF device ID table entries in an I2C ID
+table only has a workaround for how the I2C core reports the module alias.
+
+This patch changes the I2C core to report an OF related MODALIAS uevent if
+the device was registered via OF. So for the previous example, after this
+patch, the reported MODALIAS for the Atmel maXTouch will be the following:
+
+$ cat /sys/class/i2c-adapter/i2c-8/8-004b/modalias
+of:NtrackpadT<NULL>Catmel,maxtouch
+
+NOTE: This patch may break out-of-tree drivers that were relying on this
+ behavior, and only had an I2C device ID table even when the device
+ was registered via OF. There are no remaining drivers in mainline
+ that do this, but out-of-tree drivers have to be fixed and define
+ a proper OF device ID table to have module auto-loading working.
+
+Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
+Tested-by: Dmitry Mastykin <mastichi@gmail.com>
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+---
+ drivers/i2c/i2c-core-base.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
+index 5a00bf4..edfc23e4 100644
+--- a/drivers/i2c/i2c-core-base.c
++++ b/drivers/i2c/i2c-core-base.c
+@@ -124,6 +124,10 @@ static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
+ struct i2c_client *client = to_i2c_client(dev);
+ int rc;
+
++ rc = of_device_uevent_modalias(dev, env);
++ if (rc != -ENODEV)
++ return rc;
++
+ rc = acpi_device_uevent_modalias(dev, env);
+ if (rc != -ENODEV)
+ return rc;
+@@ -439,6 +443,10 @@ show_modalias(struct device *dev, struct device_attribute *attr, char *buf)
+ struct i2c_client *client = to_i2c_client(dev);
+ int len;
+
++ len = of_device_modalias(dev, buf, PAGE_SIZE);
++ if (len != -ENODEV)
++ return len;
++
+ len = acpi_device_modalias(dev, buf, PAGE_SIZE -1);
+ if (len != -ENODEV)
+ return len;
+--
+cgit v1.1