diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2018-04-19 09:01:28 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2018-04-19 09:01:28 +0200 |
commit | f5ab2493f4f83df563a3780b0f7c2327351e8e98 (patch) | |
tree | 823b8cb678373193b96ee1040ad00ac2ae312482 | |
parent | 282d95374e99fc7f5674b067ad00c124bf6871cc (diff) | |
parent | 51da24b176436eb8b8f9305990dda2b6e37879bb (diff) | |
download | kernel-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.patch | 131 | ||||
-rw-r--r-- | arm-tegra-fix-nouveau-crash.patch | 64 | ||||
-rw-r--r-- | baseconfig/arm/armv7/CONFIG_DRM_EXYNOS_IOMMU | 2 | ||||
-rw-r--r-- | baseconfig/arm/armv7/CONFIG_EXYNOS_IOMMU | 2 | ||||
-rw-r--r-- | baseconfig/arm/armv7/armv7/CONFIG_CHARGER_TPS65217 | 2 | ||||
-rw-r--r-- | clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch | 58 | ||||
-rw-r--r-- | crypto-testmgr-Allow-different-compression-results.patch | 163 | ||||
-rw-r--r-- | kernel-armv7hl-debug.config | 6 | ||||
-rw-r--r-- | kernel-armv7hl-lpae-debug.config | 5 | ||||
-rw-r--r-- | kernel-armv7hl-lpae.config | 5 | ||||
-rw-r--r-- | kernel-armv7hl.config | 6 | ||||
-rw-r--r-- | kernel.spec | 28 | ||||
-rw-r--r-- | of-i2c-fix-module-aliases.patch | 69 |
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 |