mvebu: update Linux 4.0 patches
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 45762
This commit is contained in:
		
							parent
							
								
									588acc2cba
								
							
						
					
					
						commit
						f1ebb1dddd
					
				@ -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;
 | 
			
		||||
@ -299,7 +299,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
			
		||||
 {
 | 
			
		||||
 	struct mvebu_gpio_chip *mvchip =
 | 
			
		||||
 		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();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -308,7 +308,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
			
		||||
 	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();
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -317,7 +317,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
			
		||||
 	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 irq_chip_generic *gc;
 | 
			
		||||
 	struct irq_chip_type *ct;
 | 
			
		||||
@ -325,7 +325,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
			
		||||
 	unsigned int ngpios;
 | 
			
		||||
 	int soc_variant;
 | 
			
		||||
 	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;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@ -339,7 +339,7 @@ Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
			
		||||
 
 | 
			
		||||
 	mvchip->soc_variant = soc_variant;
 | 
			
		||||
 	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;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user