kernel: update 3.10 to 3.10.32

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 39707
This commit is contained in:
Gabor Juhos
2014-02-23 10:59:40 +00:00
parent 6c8300df3d
commit f677b1bc7e
54 changed files with 81 additions and 218 deletions

View File

@@ -14,7 +14,7 @@ CPU_TYPE:=cortex-a9
CPU_SUBTYPE:=vfpv3
MAINTAINER:=Luka Perkov <luka@openwrt.org>
LINUX_VERSION:=3.10.28
LINUX_VERSION:=3.10.32
include $(INCLUDE_DIR)/target.mk

View File

@@ -49,7 +49,7 @@ Acked-by: Grant Likely <grant.likely@secretlab.ca>
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -223,6 +223,73 @@ int of_pci_address_to_resource(struct de
@@ -224,6 +224,73 @@ int of_pci_address_to_resource(struct de
return __of_address_to_resource(dev, addrp, size, flags, NULL, r);
}
EXPORT_SYMBOL_GPL(of_pci_address_to_resource);

View File

@@ -1,46 +0,0 @@
From 60b78d28057f9f1ecce39955755d26e4cd3130de Mon Sep 17 00:00:00 2001
From: Lior Amsalem <alior@marvell.com>
Date: Mon, 25 Nov 2013 17:26:44 +0100
Subject: [PATCH 085/203] irqchip: armada-370-xp: fix IPI race condition
In the Armada 370/XP driver, when we receive an IRQ 0, we read the
list of doorbells that caused the interrupt from register
ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS. This gives the list of IPIs that
were generated. However, instead of acknowledging only the IPIs that
were generated, we acknowledge *all* the IPIs, by writing
~IPI_DOORBELL_MASK in the ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS register.
This creates a race condition: if a new IPI that isn't part of the
ones read into the temporary "ipimask" variable is fired before we
acknowledge all IPIs, then we will simply loose it. This is causing
scheduling hangs on SMP intensive workloads.
It is important to mention that this ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS
register has the following behavior: "A CPU write of 0 clears the bits
in this field. A CPU write of 1 has no effect". This is what allows us
to simply write ~ipimask to acknoledge the handled IPIs.
Notice that the same problem is present in the MSI implementation, but
it will be fixed as a separate patch, so that this IPI fix can be
pushed to older stable versions as appropriate (all the way to 3.8),
while the MSI code only appeared in 3.13.
Signed-off-by: Lior Amsalem <alior@marvell.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: stable@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
---
drivers/irqchip/irq-armada-370-xp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/irqchip/irq-armada-370-xp.c
+++ b/drivers/irqchip/irq-armada-370-xp.c
@@ -407,7 +407,7 @@ armada_370_xp_handle_irq(struct pt_regs
ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS)
& IPI_DOORBELL_MASK;
- writel(~IPI_DOORBELL_MASK, per_cpu_int_base +
+ writel(~ipimask, per_cpu_int_base +
ARMADA_370_XP_IN_DRBEL_CAUSE_OFFS);
/* Handle all pending doorbells */

View File

@@ -17,7 +17,7 @@ Signed-off-by: Grant Likely <grant.likely@linaro.org>
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -481,7 +481,7 @@ static u64 __of_translate_address(struct
@@ -482,7 +482,7 @@ static u64 __of_translate_address(struct
int na, ns, pna, pns;
u64 result = OF_BAD_ADDR;
@@ -26,7 +26,7 @@ Signed-off-by: Grant Likely <grant.likely@linaro.org>
/* Increase refcount at current level */
of_node_get(dev);
@@ -496,13 +496,13 @@ static u64 __of_translate_address(struct
@@ -497,13 +497,13 @@ static u64 __of_translate_address(struct
bus->count_cells(dev, &na, &ns);
if (!OF_CHECK_COUNTS(na, ns)) {
printk(KERN_ERR "prom_parse: Bad cell count for %s\n",

View File

@@ -468,7 +468,7 @@ Conflicts:
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -524,12 +524,12 @@ static u64 __of_translate_address(struct
@@ -525,12 +525,12 @@ static u64 __of_translate_address(struct
pbus->count_cells(dev, &pna, &pns);
if (!OF_CHECK_COUNTS(pna, pns)) {
printk(KERN_ERR "prom_parse: Bad cell count for %s\n",

View File

@@ -1,58 +0,0 @@
From d587c866f34aa8e59ddc3628969113e725e36eab Mon Sep 17 00:00:00 2001
From: Lior Amsalem <alior@marvell.com>
Date: Mon, 23 Dec 2013 13:07:35 +0100
Subject: [PATCH 196/203] ata: sata_mv: setting PHY speed according to SControl
speed
This patch fixes a SATA hotplug issue on the Armada 370 and Armada XP
SoCs. Without it, if a disk is unplugged from a SATA port, then further
hotplug notification are now longer received on this port.
This should be applied to every -stable kernel supporting Armada SoCs.
Signed-off-by: Lior Amsalem <alior@marvell.com>
Signed-off-by: Nadav Haklai <nadavh@marvell.com>
Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Gregory Clement <gregory.clement@free-electrons.com>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: stable@vger.kernel.org
---
drivers/ata/sata_mv.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -304,6 +304,7 @@ enum {
MV5_LTMODE = 0x30,
MV5_PHY_CTL = 0x0C,
SATA_IFCFG = 0x050,
+ LP_PHY_CTL = 0x058,
MV_M2_PREAMP_MASK = 0x7e0,
@@ -1353,6 +1354,7 @@ static int mv_scr_write(struct ata_link
if (ofs != 0xffffffffU) {
void __iomem *addr = mv_ap_base(link->ap) + ofs;
+ void __iomem *lp_phy_addr = mv_ap_base(link->ap) + LP_PHY_CTL;
if (sc_reg_in == SCR_CONTROL) {
/*
* Workaround for 88SX60x1 FEr SATA#26:
@@ -1369,6 +1371,14 @@ static int mv_scr_write(struct ata_link
*/
if ((val & 0xf) == 1 || (readl(addr) & 0xf) == 1)
val |= 0xf000;
+
+ /*
+ * Setting PHY speed according to SControl speed
+ */
+ if ((val & 0xf0) == 0x10)
+ writelfl(0x7, lp_phy_addr);
+ else
+ writelfl(0x227, lp_phy_addr);
}
writelfl(val, addr);
return 0;

View File

@@ -81,7 +81,7 @@ Conflicts:
return -ENOMEM;
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -4654,7 +4654,6 @@ int xhci_gen_setup(struct usb_hcd *hcd,
@@ -4657,7 +4657,6 @@ int xhci_gen_setup(struct usb_hcd *hcd,
struct xhci_hcd *xhci;
struct device *dev = hcd->self.controller;
int retval;
@@ -89,7 +89,7 @@ Conflicts:
/* Accept arbitrarily long scatter-gather lists */
hcd->self.sg_tablesize = ~0;
@@ -4682,14 +4681,6 @@ int xhci_gen_setup(struct usb_hcd *hcd,
@@ -4685,14 +4684,6 @@ int xhci_gen_setup(struct usb_hcd *hcd,
/* xHCI private pointer was set in xhci_pci_probe for the second
* registered roothub.
*/
@@ -104,7 +104,7 @@ Conflicts:
return 0;
}
@@ -4728,12 +4719,12 @@ int xhci_gen_setup(struct usb_hcd *hcd,
@@ -4731,12 +4722,12 @@ int xhci_gen_setup(struct usb_hcd *hcd,
goto error;
xhci_dbg(xhci, "Reset complete\n");