From: Greg Kroah-Hartman Date: Sat, 20 Sep 2014 17:48:51 +0000 (-0700) Subject: 3.16-stable patches X-Git-Tag: v3.16.4~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0aae35c7b35f37fbd34b9e4e2135817549bcea4;p=thirdparty%2Fkernel%2Fstable-queue.git 3.16-stable patches added patches: ahci-add-device-ids-for-intel-9-series-pch.patch ahci-add-pcid-for-marvel-0x9182-controller.patch drm-i915-disable-rcs-flips-on-ivybridge.patch libata-widen-crucial-m550-blacklist-matching.patch of-allow-mem_reserve-of-memory-with-a-base-address-of-zero.patch of-irq-fix-lookup-to-use-interrupts-extended-property-first.patch pata_scc-propagate-return-value-of-scc_wait_after_reset.patch pwm-fix-period-and-polarity-in-pwm_get-for-non-perfect-matches.patch --- diff --git a/queue-3.16/ahci-add-device-ids-for-intel-9-series-pch.patch b/queue-3.16/ahci-add-device-ids-for-intel-9-series-pch.patch new file mode 100644 index 00000000000..f2aea6eb9c5 --- /dev/null +++ b/queue-3.16/ahci-add-device-ids-for-intel-9-series-pch.patch @@ -0,0 +1,36 @@ +From 1b071a0947dbce5c184c12262e02540fbc493457 Mon Sep 17 00:00:00 2001 +From: James Ralston +Date: Wed, 27 Aug 2014 14:29:07 -0700 +Subject: ahci: Add Device IDs for Intel 9 Series PCH + +From: James Ralston + +commit 1b071a0947dbce5c184c12262e02540fbc493457 upstream. + +This patch adds the AHCI mode SATA Device IDs for the Intel 9 Series PCH. + +Signed-off-by: James Ralston +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/ahci.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -305,6 +305,14 @@ static const struct pci_device_id ahci_p + { PCI_VDEVICE(INTEL, 0x9c85), board_ahci }, /* Wildcat Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x9c87), board_ahci }, /* Wildcat Point-LP RAID */ + { PCI_VDEVICE(INTEL, 0x9c8f), board_ahci }, /* Wildcat Point-LP RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c82), board_ahci }, /* 9 Series AHCI */ ++ { PCI_VDEVICE(INTEL, 0x8c83), board_ahci }, /* 9 Series AHCI */ ++ { PCI_VDEVICE(INTEL, 0x8c84), board_ahci }, /* 9 Series RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c85), board_ahci }, /* 9 Series RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c86), board_ahci }, /* 9 Series RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c87), board_ahci }, /* 9 Series RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c8e), board_ahci }, /* 9 Series RAID */ ++ { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci }, /* 9 Series RAID */ + + /* JMicron 360/1/3/5/6, match class to avoid IDE function */ + { PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, diff --git a/queue-3.16/ahci-add-pcid-for-marvel-0x9182-controller.patch b/queue-3.16/ahci-add-pcid-for-marvel-0x9182-controller.patch new file mode 100644 index 00000000000..8ebaf131860 --- /dev/null +++ b/queue-3.16/ahci-add-pcid-for-marvel-0x9182-controller.patch @@ -0,0 +1,32 @@ +From c5edfff9db6f4d2c35c802acb4abe0df178becee Mon Sep 17 00:00:00 2001 +From: Murali Karicheri +Date: Fri, 5 Sep 2014 13:21:00 -0400 +Subject: ahci: add pcid for Marvel 0x9182 controller + +From: Murali Karicheri + +commit c5edfff9db6f4d2c35c802acb4abe0df178becee upstream. + +Keystone K2E EVM uses Marvel 0x9182 controller. This requires support +for the ID in the ahci driver. + +Signed-off-by: Murali Karicheri +Signed-off-by: Tejun Heo +Cc: Santosh Shilimkar +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/ahci.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -450,6 +450,8 @@ static const struct pci_device_id ahci_p + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x917a), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9172), ++ .driver_data = board_ahci_yes_fbs }, /* 88se9182 */ ++ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9182), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9192), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */ diff --git a/queue-3.16/drm-i915-disable-rcs-flips-on-ivybridge.patch b/queue-3.16/drm-i915-disable-rcs-flips-on-ivybridge.patch new file mode 100644 index 00000000000..6efdcb14768 --- /dev/null +++ b/queue-3.16/drm-i915-disable-rcs-flips-on-ivybridge.patch @@ -0,0 +1,33 @@ +From 2a92d5bca1999b69c78f3c3e97b5484985b094b9 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Tue, 8 Jul 2014 10:40:29 +0100 +Subject: drm/i915: Disable RCS flips on Ivybridge + +From: Chris Wilson + +commit 2a92d5bca1999b69c78f3c3e97b5484985b094b9 upstream. + +We currently see random GPU hangs when using RCS flips with multiple +pipes on Ivybridge. Now that we have mmio flips, we can fairly cheaply +fallback to using CPU driven flips instead. + +Signed-off-by: Chris Wilson +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77104 +Signed-off-by: Daniel Vetter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_display.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -9294,6 +9294,8 @@ static int intel_crtc_page_flip(struct d + + if (IS_VALLEYVIEW(dev)) { + ring = &dev_priv->ring[BCS]; ++ } else if (IS_IVYBRIDGE(dev)) { ++ ring = &dev_priv->ring[BCS]; + } else if (INTEL_INFO(dev)->gen >= 7) { + ring = obj->ring; + if (ring == NULL || ring->id != RCS) diff --git a/queue-3.16/libata-widen-crucial-m550-blacklist-matching.patch b/queue-3.16/libata-widen-crucial-m550-blacklist-matching.patch new file mode 100644 index 00000000000..f19e8a805fd --- /dev/null +++ b/queue-3.16/libata-widen-crucial-m550-blacklist-matching.patch @@ -0,0 +1,34 @@ +From 2a13772a144d2956a7fedd18685921d0a9b8b783 Mon Sep 17 00:00:00 2001 +From: Tejun Heo +Date: Mon, 18 Aug 2014 17:40:09 -0400 +Subject: libata: widen Crucial M550 blacklist matching + +From: Tejun Heo + +commit 2a13772a144d2956a7fedd18685921d0a9b8b783 upstream. + +Crucial M550 may cause data corruption on queued trims and is +blacklisted. The pattern used for it fails to match 1TB one as the +capacity section will be four chars instead of three. Widen the +pattern. + +Signed-off-by: Tejun Heo +Reported-by: Charles Reiss +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81071 +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/libata-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/ata/libata-core.c ++++ b/drivers/ata/libata-core.c +@@ -4227,7 +4227,7 @@ static const struct ata_blacklist_entry + { "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + { "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, +- { "Crucial_CT???M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, ++ { "Crucial_CT*M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, + + /* + * Some WD SATA-I drives spin up and down erratically when the link diff --git a/queue-3.16/of-allow-mem_reserve-of-memory-with-a-base-address-of-zero.patch b/queue-3.16/of-allow-mem_reserve-of-memory-with-a-base-address-of-zero.patch new file mode 100644 index 00000000000..da9cab1034f --- /dev/null +++ b/queue-3.16/of-allow-mem_reserve-of-memory-with-a-base-address-of-zero.patch @@ -0,0 +1,38 @@ +From b5f2a8c02697c3685ccbbb66495465742ffa0dc1 Mon Sep 17 00:00:00 2001 +From: Al Cooper +Date: Wed, 6 Aug 2014 16:30:04 -0400 +Subject: of: Allow mem_reserve of memory with a base address of zero + +From: Al Cooper + +commit b5f2a8c02697c3685ccbbb66495465742ffa0dc1 upstream. + +__reserved_mem_reserve_reg() won't reserve memory if the base address +is zero. This change removes the check for a base address of zero and +allows it to be reserved. + +Allowing the first 4K of memory to be reserved will help solve a +problem on some ARM systems where the the first 16K of memory is +unused and becomes allocable memory. This will prevent this memory +from being used for DMA by drivers like the USB OHCI driver which +consider a physical address of zero to be illegal. + +Signed-off-by: Al Cooper +Signed-off-by: Grant Likely +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/of/fdt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/of/fdt.c ++++ b/drivers/of/fdt.c +@@ -453,7 +453,7 @@ static int __init __reserved_mem_reserve + base = dt_mem_next_cell(dt_root_addr_cells, &prop); + size = dt_mem_next_cell(dt_root_size_cells, &prop); + +- if (base && size && ++ if (size && + early_init_dt_reserve_memory_arch(base, size, nomap) == 0) + pr_debug("Reserved memory: reserved region for node '%s': base %pa, size %ld MiB\n", + uname, &base, (unsigned long)size / SZ_1M); diff --git a/queue-3.16/of-irq-fix-lookup-to-use-interrupts-extended-property-first.patch b/queue-3.16/of-irq-fix-lookup-to-use-interrupts-extended-property-first.patch new file mode 100644 index 00000000000..de32bbf46aa --- /dev/null +++ b/queue-3.16/of-irq-fix-lookup-to-use-interrupts-extended-property-first.patch @@ -0,0 +1,82 @@ +From a9ecdc0fdc54aa499604dbd43132988effcac9b4 Mon Sep 17 00:00:00 2001 +From: Florian Fainelli +Date: Wed, 6 Aug 2014 13:02:27 -0700 +Subject: of/irq: Fix lookup to use 'interrupts-extended' property first + +From: Florian Fainelli + +commit a9ecdc0fdc54aa499604dbd43132988effcac9b4 upstream. + +In case the Device Tree blob passed by the boot agent supplies both an +'interrupts-extended' and an 'interrupts' property in order to allow for +older kernels to be usable, prefer the new-style 'interrupts-extended' +property which conveys a lot more information. + +This allows us to have bootloaders willingly maintaining backwards +compatibility with older kernels without entirely deprecating the +'interrupts' property. + +Update the bindings documentation to describe a situation where both the +'interrupts-extended' and the 'interrupts' property are present, and +which one takes precedence over the other. + +Acked-by: Rob Herring +Signed-off-by: Brian Norris +Signed-off-by: Florian Fainelli +Signed-off-by: Grant Likely +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/devicetree/bindings/interrupt-controller/interrupts.txt | 12 ++++--- + drivers/of/irq.c | 17 +++++----- + 2 files changed, 16 insertions(+), 13 deletions(-) + +--- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt ++++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +@@ -4,11 +4,13 @@ Specifying interrupt information for dev + 1) Interrupt client nodes + ------------------------- + +-Nodes that describe devices which generate interrupts must contain an either an +-"interrupts" property or an "interrupts-extended" property. These properties +-contain a list of interrupt specifiers, one per output interrupt. The format of +-the interrupt specifier is determined by the interrupt controller to which the +-interrupts are routed; see section 2 below for details. ++Nodes that describe devices which generate interrupts must contain an ++"interrupts" property, an "interrupts-extended" property, or both. If both are ++present, the latter should take precedence; the former may be provided simply ++for compatibility with software that does not recognize the latter. These ++properties contain a list of interrupt specifiers, one per output interrupt. The ++format of the interrupt specifier is determined by the interrupt controller to ++which the interrupts are routed; see section 2 below for details. + + Example: + interrupt-parent = <&intc1>; +--- a/drivers/of/irq.c ++++ b/drivers/of/irq.c +@@ -301,16 +301,17 @@ int of_irq_parse_one(struct device_node + /* Get the reg property (if any) */ + addr = of_get_property(device, "reg", NULL); + ++ /* Try the new-style interrupts-extended first */ ++ res = of_parse_phandle_with_args(device, "interrupts-extended", ++ "#interrupt-cells", index, out_irq); ++ if (!res) ++ return of_irq_parse_raw(addr, out_irq); ++ + /* Get the interrupts property */ + intspec = of_get_property(device, "interrupts", &intlen); +- if (intspec == NULL) { +- /* Try the new-style interrupts-extended */ +- res = of_parse_phandle_with_args(device, "interrupts-extended", +- "#interrupt-cells", index, out_irq); +- if (res) +- return -EINVAL; +- return of_irq_parse_raw(addr, out_irq); +- } ++ if (intspec == NULL) ++ return -EINVAL; ++ + intlen /= sizeof(*intspec); + + pr_debug(" intspec=%d intlen=%d\n", be32_to_cpup(intspec), intlen); diff --git a/queue-3.16/pata_scc-propagate-return-value-of-scc_wait_after_reset.patch b/queue-3.16/pata_scc-propagate-return-value-of-scc_wait_after_reset.patch new file mode 100644 index 00000000000..43084807a93 --- /dev/null +++ b/queue-3.16/pata_scc-propagate-return-value-of-scc_wait_after_reset.patch @@ -0,0 +1,65 @@ +From 4dc7c76cd500fa78c64adfda4b070b870a2b993c Mon Sep 17 00:00:00 2001 +From: Arjun Sreedharan +Date: Sun, 17 Aug 2014 20:00:09 +0530 +Subject: pata_scc: propagate return value of scc_wait_after_reset + +From: Arjun Sreedharan + +commit 4dc7c76cd500fa78c64adfda4b070b870a2b993c upstream. + +scc_bus_softreset not necessarily should return zero. +Propagate the error code. + +Signed-off-by: Arjun Sreedharan +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/pata_scc.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +--- a/drivers/ata/pata_scc.c ++++ b/drivers/ata/pata_scc.c +@@ -585,7 +585,7 @@ static int scc_wait_after_reset(struct a + * Note: Original code is ata_bus_softreset(). + */ + +-static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, ++static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, + unsigned long deadline) + { + struct ata_ioports *ioaddr = &ap->ioaddr; +@@ -599,9 +599,7 @@ static unsigned int scc_bus_softreset(st + udelay(20); + out_be32(ioaddr->ctl_addr, ap->ctl); + +- scc_wait_after_reset(&ap->link, devmask, deadline); +- +- return 0; ++ return scc_wait_after_reset(&ap->link, devmask, deadline); + } + + /** +@@ -618,7 +616,8 @@ static int scc_softreset(struct ata_link + { + struct ata_port *ap = link->ap; + unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; +- unsigned int devmask = 0, err_mask; ++ unsigned int devmask = 0; ++ int rc; + u8 err; + + DPRINTK("ENTER\n"); +@@ -634,9 +633,9 @@ static int scc_softreset(struct ata_link + + /* issue bus reset */ + DPRINTK("about to softreset, devmask=%x\n", devmask); +- err_mask = scc_bus_softreset(ap, devmask, deadline); +- if (err_mask) { +- ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask); ++ rc = scc_bus_softreset(ap, devmask, deadline); ++ if (rc) { ++ ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc); + return -EIO; + } + diff --git a/queue-3.16/pwm-fix-period-and-polarity-in-pwm_get-for-non-perfect-matches.patch b/queue-3.16/pwm-fix-period-and-polarity-in-pwm_get-for-non-perfect-matches.patch new file mode 100644 index 00000000000..37ac8f5c8e8 --- /dev/null +++ b/queue-3.16/pwm-fix-period-and-polarity-in-pwm_get-for-non-perfect-matches.patch @@ -0,0 +1,65 @@ +From d717ea73e36dd5659640fae82605ad85c4117f4d Mon Sep 17 00:00:00 2001 +From: Geert Uytterhoeven +Date: Wed, 13 Aug 2014 17:18:53 +0200 +Subject: pwm: Fix period and polarity in pwm_get() for non-perfect matches + +From: Geert Uytterhoeven + +commit d717ea73e36dd5659640fae82605ad85c4117f4d upstream. + +If pwm_get() finds a look-up entry with a perfect match (both dev_id and +con_id match), the loop is aborted, and "p" still points to the correct +struct pwm_lookup. + +If only an entry with a matching dev_id or con_id is found, the loop +terminates after traversing the whole list, and "p" now points to +arbitrary memory, not part of the pwm_lookup list. +Then pwm_set_period() and pwm_set_polarity() will set random values for +period resp. polarity. + +To fix this, save period and polarity when finding a new best match, +just like is done for chip (for the provider) and index. + +This fixes the LCD backlight on r8a7740/armadillo-legacy, which was fed +period 0 and polarity -1068821144 instead of 33333 resp. 1. + +Fixes: 3796ce1d4d4b ("pwm: add period and polarity to struct pwm_lookup") +Signed-off-by: Geert Uytterhoeven +Signed-off-by: Thierry Reding +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pwm/core.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/pwm/core.c ++++ b/drivers/pwm/core.c +@@ -606,6 +606,8 @@ struct pwm_device *pwm_get(struct device + unsigned int best = 0; + struct pwm_lookup *p; + unsigned int match; ++ unsigned int period; ++ enum pwm_polarity polarity; + + /* look up via DT first */ + if (IS_ENABLED(CONFIG_OF) && dev && dev->of_node) +@@ -653,6 +655,8 @@ struct pwm_device *pwm_get(struct device + if (match > best) { + chip = pwmchip_find_by_name(p->provider); + index = p->index; ++ period = p->period; ++ polarity = p->polarity; + + if (match != 3) + best = match; +@@ -668,8 +672,8 @@ struct pwm_device *pwm_get(struct device + if (IS_ERR(pwm)) + return pwm; + +- pwm_set_period(pwm, p->period); +- pwm_set_polarity(pwm, p->polarity); ++ pwm_set_period(pwm, period); ++ pwm_set_polarity(pwm, polarity); + + + return pwm; diff --git a/queue-3.16/series b/queue-3.16/series index e09e63ad1b0..510e9053b42 100644 --- a/queue-3.16/series +++ b/queue-3.16/series @@ -23,3 +23,11 @@ drm-radeon-atom-add-new-voltage-fetch-function-for-hawaii.patch drm-radeon-tweak-accel_working2-query-for-hawaii.patch drm-i915-fix-crash-when-failing-to-parse-mipi-vbt.patch drm-i915-read-head-register-back-in-init_ring_common-to-enforce-ordering.patch +drm-i915-disable-rcs-flips-on-ivybridge.patch +of-allow-mem_reserve-of-memory-with-a-base-address-of-zero.patch +of-irq-fix-lookup-to-use-interrupts-extended-property-first.patch +libata-widen-crucial-m550-blacklist-matching.patch +pata_scc-propagate-return-value-of-scc_wait_after_reset.patch +ahci-add-device-ids-for-intel-9-series-pch.patch +ahci-add-pcid-for-marvel-0x9182-controller.patch +pwm-fix-period-and-polarity-in-pwm_get-for-non-perfect-matches.patch