From a3741995f31521868304e66de11d02008220be4c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 28 Oct 2016 13:33:22 -0400 Subject: [PATCH] 4.4-stable patches added patches: arm-clk-imx35-fix-name-for-ckil-clk.patch genirq-generic_chip-add-irq_unmap-callback.patch spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch uio-fix-dmem_region_start-computation.patch --- .../arm-clk-imx35-fix-name-for-ckil-clk.patch | 37 ++++++++++ ...-generic_chip-add-irq_unmap-callback.patch | 68 +++++++++++++++++++ queue-4.4/series | 4 ++ ...master_put-in-device-remove-function.patch | 33 +++++++++ ...io-fix-dmem_region_start-computation.patch | 36 ++++++++++ 5 files changed, 178 insertions(+) create mode 100644 queue-4.4/arm-clk-imx35-fix-name-for-ckil-clk.patch create mode 100644 queue-4.4/genirq-generic_chip-add-irq_unmap-callback.patch create mode 100644 queue-4.4/spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch create mode 100644 queue-4.4/uio-fix-dmem_region_start-computation.patch diff --git a/queue-4.4/arm-clk-imx35-fix-name-for-ckil-clk.patch b/queue-4.4/arm-clk-imx35-fix-name-for-ckil-clk.patch new file mode 100644 index 00000000000..04c91a98dc2 --- /dev/null +++ b/queue-4.4/arm-clk-imx35-fix-name-for-ckil-clk.patch @@ -0,0 +1,37 @@ +From fcff03813a7c612873303037cef5ba0329850c35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Thu, 8 Sep 2016 11:30:21 +0200 +Subject: ARM: clk-imx35: fix name for ckil clk +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Uwe Kleine-König + +commit fcff03813a7c612873303037cef5ba0329850c35 upstream. + +This fixes + [ 0.000000] i.MX clk 82: register failed with -17 +because the name is duplicated. + +Signed-off-by: Uwe Kleine-König +Fixes: 3713e3f5e927 ("clk: imx35: define two clocks for rtc") +Acked-by: Shawn Guo +Signed-off-by: Stephen Boyd +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/clk/imx/clk-imx35.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/clk/imx/clk-imx35.c ++++ b/drivers/clk/imx/clk-imx35.c +@@ -115,7 +115,7 @@ static void __init _mx35_clocks_init(voi + } + + clk[ckih] = imx_clk_fixed("ckih", 24000000); +- clk[ckil] = imx_clk_fixed("ckih", 32768); ++ clk[ckil] = imx_clk_fixed("ckil", 32768); + clk[mpll] = imx_clk_pllv1(IMX_PLLV1_IMX35, "mpll", "ckih", base + MX35_CCM_MPCTL); + clk[ppll] = imx_clk_pllv1(IMX_PLLV1_IMX35, "ppll", "ckih", base + MX35_CCM_PPCTL); + diff --git a/queue-4.4/genirq-generic_chip-add-irq_unmap-callback.patch b/queue-4.4/genirq-generic_chip-add-irq_unmap-callback.patch new file mode 100644 index 00000000000..9505a73165d --- /dev/null +++ b/queue-4.4/genirq-generic_chip-add-irq_unmap-callback.patch @@ -0,0 +1,68 @@ +From ee26c013cdee0b947e29d6cadfb9ff3341c69ff9 Mon Sep 17 00:00:00 2001 +From: Sebastian Frias +Date: Mon, 1 Aug 2016 16:27:38 +0200 +Subject: genirq/generic_chip: Add irq_unmap callback + +From: Sebastian Frias + +commit ee26c013cdee0b947e29d6cadfb9ff3341c69ff9 upstream. + +Without this patch irq_domain_disassociate() cannot properly release the +interrupt. In fact, irq_map_generic_chip() checks a bit on 'gc->installed' +but said bit is never cleared, only set. + +Commit 088f40b7b027 ("genirq: Generic chip: Add linear irq domain support") +added irq_map_generic_chip() function and also stated "This lacks a removal +function for now". + +This commit provides an implementation of an unmap function that can be +called by irq_domain_disassociate(). + +[ tglx: Made the function static and removed the export as we have neither + a prototype nor a modular user. ] + +Fixes: 088f40b7b027 ("genirq: Generic chip: Add linear irq domain support") +Signed-off-by: Sebastian Frias +Cc: Marc Zyngier +Cc: Mason +Cc: Jason Cooper +Link: http://lkml.kernel.org/r/579F5C5A.2070507@laposte.net +Signed-off-by: Thomas Gleixner +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/irq/generic-chip.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +--- a/kernel/irq/generic-chip.c ++++ b/kernel/irq/generic-chip.c +@@ -411,8 +411,29 @@ int irq_map_generic_chip(struct irq_doma + } + EXPORT_SYMBOL_GPL(irq_map_generic_chip); + ++static void irq_unmap_generic_chip(struct irq_domain *d, unsigned int virq) ++{ ++ struct irq_data *data = irq_domain_get_irq_data(d, virq); ++ struct irq_domain_chip_generic *dgc = d->gc; ++ unsigned int hw_irq = data->hwirq; ++ struct irq_chip_generic *gc; ++ int irq_idx; ++ ++ gc = irq_get_domain_generic_chip(d, hw_irq); ++ if (!gc) ++ return; ++ ++ irq_idx = hw_irq % dgc->irqs_per_chip; ++ ++ clear_bit(irq_idx, &gc->installed); ++ irq_domain_set_info(d, virq, hw_irq, &no_irq_chip, NULL, NULL, NULL, ++ NULL); ++ ++} ++ + struct irq_domain_ops irq_generic_chip_ops = { + .map = irq_map_generic_chip, ++ .unmap = irq_unmap_generic_chip, + .xlate = irq_domain_xlate_onetwocell, + }; + EXPORT_SYMBOL_GPL(irq_generic_chip_ops); diff --git a/queue-4.4/series b/queue-4.4/series index 6ad7807ee76..76f2457e8a4 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -22,3 +22,7 @@ tunnels-don-t-apply-gro-to-multiple-layers-of-encapsulation.patch tunnels-remove-encapsulation-offloads-on-decap.patch powerpc-eeh-null-check-uses-of-eeh_pe_bus_get.patch perf-stat-fix-interval-output-values.patch +genirq-generic_chip-add-irq_unmap-callback.patch +uio-fix-dmem_region_start-computation.patch +arm-clk-imx35-fix-name-for-ckil-clk.patch +spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch diff --git a/queue-4.4/spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch b/queue-4.4/spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch new file mode 100644 index 00000000000..4589ff25b4e --- /dev/null +++ b/queue-4.4/spi-spi-fsl-dspi-drop-extra-spi_master_put-in-device-remove-function.patch @@ -0,0 +1,33 @@ +From 6999aeabbb703a81a204cb6f9f8f151759a99ac4 Mon Sep 17 00:00:00 2001 +From: Wei Yongjun +Date: Sat, 20 Aug 2016 15:25:32 +0000 +Subject: spi: spi-fsl-dspi: Drop extra spi_master_put in device remove function + +From: Wei Yongjun + +commit 6999aeabbb703a81a204cb6f9f8f151759a99ac4 upstream. + +The call sequence spi_alloc_master/spi_register_master/spi_unregister_master +is complete; it reduces the device reference count to zero, which and results +in device memory being freed. The subsequent call to spi_master_put is +unnecessary and results in an access to free memory. Drop it. + +Fixes: 9298bc727385 ("spi: spi-fsl-dspi: Remove spi-bitbang") +Signed-off-by: Wei Yongjun +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/spi/spi-fsl-dspi.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/spi/spi-fsl-dspi.c ++++ b/drivers/spi/spi-fsl-dspi.c +@@ -753,7 +753,6 @@ static int dspi_remove(struct platform_d + /* Disconnect from the SPI framework */ + clk_disable_unprepare(dspi->clk); + spi_unregister_master(dspi->master); +- spi_master_put(dspi->master); + + return 0; + } diff --git a/queue-4.4/uio-fix-dmem_region_start-computation.patch b/queue-4.4/uio-fix-dmem_region_start-computation.patch new file mode 100644 index 00000000000..9f33eed3433 --- /dev/null +++ b/queue-4.4/uio-fix-dmem_region_start-computation.patch @@ -0,0 +1,36 @@ +From 4d31a2588ae37a5d0f61f4d956454e9504846aeb Mon Sep 17 00:00:00 2001 +From: Jan Viktorin +Date: Tue, 17 May 2016 11:22:17 +0200 +Subject: uio: fix dmem_region_start computation + +From: Jan Viktorin + +commit 4d31a2588ae37a5d0f61f4d956454e9504846aeb upstream. + +The variable i contains a total number of resources (including +IORESOURCE_IRQ). However, we want the dmem_region_start to point +after the last resource of type IORESOURCE_MEM. The original behaviour +leads (very likely) to skipping several UIO mapping regions and makes +them useless. Fix this by computing dmem_region_start from the uiomem +which points to the last used UIO mapping. + +Fixes: 0a0c3b5a24bd ("Add new uio device for dynamic memory allocation") + +Signed-off-by: Jan Viktorin +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/uio/uio_dmem_genirq.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/uio/uio_dmem_genirq.c ++++ b/drivers/uio/uio_dmem_genirq.c +@@ -229,7 +229,7 @@ static int uio_dmem_genirq_probe(struct + ++uiomem; + } + +- priv->dmem_region_start = i; ++ priv->dmem_region_start = uiomem - &uioinfo->mem[0]; + priv->num_dmem_regions = pdata->num_dynamic_regions; + + for (i = 0; i < pdata->num_dynamic_regions; ++i) { -- 2.47.3