mvebu: update Linux 4.0 patches

Signed-off-by: Imre Kaloz <kaloz@openwrt.org>

SVN-Revision: 45762
This commit is contained in:
Imre Kaloz 2015-05-26 09:31:39 +00:00
parent 588acc2cba
commit f1ebb1dddd
2 changed files with 5 additions and 67 deletions

View file

@ -1,62 +0,0 @@
On Armada 38x SoCs, under heavy I/O load, the system hangs when CPU
Idle is enabled. Waiting for a solution to this issue, this patch
disables the CPU Idle support for this SoC.
As CPU Hot plug support also uses some of the CPU Idle functions it is
also affected by the same issue. This patch disables it also for the
Armada 38x SoCs.
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: <stable@vger.kernel.org> # v3.17 +
---
Hi,
In this version I removed the unneeded initialization of the ret
variable, I also fixed the warning message, and finally I added the
Tested-by from Thomas.
Gregory
arch/arm/mach-mvebu/pmsu.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
--- a/arch/arm/mach-mvebu/pmsu.c
+++ b/arch/arm/mach-mvebu/pmsu.c
@@ -415,6 +415,9 @@ static __init int armada_38x_cpuidle_ini
void __iomem *mpsoc_base;
u32 reg;
+ pr_warn("CPU idle is currently broken on Armada 38x: disabling");
+ return 0;
+
np = of_find_compatible_node(NULL, NULL,
"marvell,armada-380-coherency-fabric");
if (!np)
@@ -476,6 +479,16 @@ static int __init mvebu_v7_cpu_pm_init(v
return 0;
of_node_put(np);
+ /*
+ * Currently the CPU idle support for Armada 38x is broken, as
+ * the CPU hotplug uses some of the CPU idle functions it is
+ * broken too, so let's disable it
+ */
+ if (of_machine_is_compatible("marvell,armada380")) {
+ cpu_hotplug_disable();
+ pr_warn("CPU hotplug support is currently broken on Armada 38x: disabling");
+ }
+
if (of_machine_is_compatible("marvell,armadaxp"))
ret = armada_xp_cpuidle_init();
else if (of_machine_is_compatible("marvell,armada370"))
@@ -489,7 +502,8 @@ static int __init mvebu_v7_cpu_pm_init(v
return ret;
mvebu_v7_pmsu_enable_l2_powerdown_onidle();
- platform_device_register(&mvebu_v7_cpuidle_device);
+ if (mvebu_v7_cpuidle_device.name)
+ platform_device_register(&mvebu_v7_cpuidle_device);
cpu_pm_register_notifier(&mvebu_v7_cpu_pm_notifier);
return 0;

View file

@ -299,7 +299,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
{ {
struct mvebu_gpio_chip *mvchip = struct mvebu_gpio_chip *mvchip =
container_of(chip, struct mvebu_gpio_chip, chip); container_of(chip, struct mvebu_gpio_chip, chip);
@@ -609,6 +592,8 @@ static int mvebu_gpio_suspend(struct pla @@ -617,6 +600,8 @@ static int mvebu_gpio_suspend(struct pla
BUG(); BUG();
} }
@ -308,7 +308,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
return 0; return 0;
} }
@@ -652,6 +637,8 @@ static int mvebu_gpio_resume(struct plat @@ -660,6 +645,8 @@ static int mvebu_gpio_resume(struct plat
BUG(); BUG();
} }
@ -317,7 +317,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
return 0; return 0;
} }
@@ -663,7 +650,6 @@ static int mvebu_gpio_probe(struct platf @@ -671,7 +658,6 @@ static int mvebu_gpio_probe(struct platf
struct resource *res; struct resource *res;
struct irq_chip_generic *gc; struct irq_chip_generic *gc;
struct irq_chip_type *ct; struct irq_chip_type *ct;
@ -325,7 +325,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
unsigned int ngpios; unsigned int ngpios;
int soc_variant; int soc_variant;
int i, cpu, id; int i, cpu, id;
@@ -693,10 +679,10 @@ static int mvebu_gpio_probe(struct platf @@ -701,10 +687,10 @@ static int mvebu_gpio_probe(struct platf
return id; return id;
} }
@ -339,7 +339,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
mvchip->soc_variant = soc_variant; mvchip->soc_variant = soc_variant;
mvchip->chip.label = dev_name(&pdev->dev); mvchip->chip.label = dev_name(&pdev->dev);
@@ -830,7 +816,8 @@ static int mvebu_gpio_probe(struct platf @@ -838,7 +824,8 @@ static int mvebu_gpio_probe(struct platf
goto err_generic_chip; goto err_generic_chip;
} }