Drop patch that was superseded upstream: ramips/0036-mtd-fix-cfi-cmdset-0002-erase-status-check.patch Drop upstreamed patches: - apm821xx/020-0001-crypto-crypto4xx-remove-bad-list_del.patch - apm821xx/020-0011-crypto-crypto4xx-fix-crypto4xx_build_pdr-crypto4xx_b.patch - ath79/0011-MIPS-ath79-fix-register-address-in-ath79_ddr_wb_flus.patch - brcm63xx/001-4.15-08-bcm63xx_enet-correct-clock-usage.patch - brcm63xx/001-4.15-09-bcm63xx_enet-do-not-write-to-random-DMA-channel-on-B.patch - generic/backport/080-net-convert-sock.sk_wmem_alloc-from-atomic_t-to-refc.patch - generic/pending/170-usb-dwc2-Fix-DMA-alignment-to-start-at-allocated-boun.patch - generic/pending/900-gen_stats-fix-netlink-stats-padding.patch In 4.14.55, a patch was introduced that breaks ext4 images in some cases. The newly introduced patch backport-4.14/500-ext4-fix-check-to-prevent-initializing-reserved-inod.patch addresses this breakage. Fixes the following CVEs: - CVE-2018-10876 - CVE-2018-10877 - CVE-2018-10879 - CVE-2018-10880 - CVE-2018-10881 - CVE-2018-10882 - CVE-2018-10883 Compile-tested: ath79, octeon, x86/64 Runtime-tested: ath79, octeon, x86/64 Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
		
			
				
	
	
		
			104 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Christian Lamparter <chunkeey@gmail.com>
 | 
						|
Date: Thu, 12 Apr 2018 21:01:38 +0200
 | 
						|
Subject: [PATCH] pinctrl: msm: fix gpio-hog related boot issues
 | 
						|
 | 
						|
Sven Eckelmann reported an issue with the current IPQ4019 pinctrl.
 | 
						|
Setting up any gpio-hog in the device-tree for his device would
 | 
						|
"kill the bootup completely":
 | 
						|
 | 
						|
| [    0.477838] msm_serial 78af000.serial: could not find pctldev for node /soc/pinctrl@1000000/serial_pinmux, deferring probe
 | 
						|
| [    0.499828] spi_qup 78b5000.spi: could not find pctldev for node /soc/pinctrl@1000000/spi_0_pinmux, deferring probe
 | 
						|
| [    1.298883] requesting hog GPIO enable USB2 power (chip 1000000.pinctrl, offset 58) failed, -517
 | 
						|
| [    1.299609] gpiochip_add_data: GPIOs 0..99 (1000000.pinctrl) failed to register
 | 
						|
| [    1.308589] ipq4019-pinctrl 1000000.pinctrl: Failed register gpiochip
 | 
						|
| [    1.316586] msm_serial 78af000.serial: could not find pctldev for node /soc/pinctrl@1000000/serial_pinmux, deferring probe
 | 
						|
| [    1.322415] spi_qup 78b5000.spi: could not find pctldev for node /soc/pinctrl@1000000/spi_0_pinmux, deferri
 | 
						|
 | 
						|
This was also verified on a RT-AC58U (IPQ4018) which would
 | 
						|
no longer boot, if a gpio-hog was specified. (Tried forcing
 | 
						|
the USB LED PIN (GPIO0) to high.).
 | 
						|
 | 
						|
The problem is that Pinctrl+GPIO registration is currently
 | 
						|
peformed in the following order in pinctrl-msm.c:
 | 
						|
	1. pinctrl_register()
 | 
						|
	2. gpiochip_add()
 | 
						|
	3. gpiochip_add_pin_range()
 | 
						|
 | 
						|
The actual error code -517 == -EPROBE_DEFER is coming from
 | 
						|
pinctrl_get_device_gpio_range(), which is called through:
 | 
						|
        gpiochip_add
 | 
						|
            of_gpiochip_add
 | 
						|
                of_gpiochip_scan_gpios
 | 
						|
                    gpiod_hog
 | 
						|
                        gpiochip_request_own_desc
 | 
						|
                            __gpiod_request
 | 
						|
                                chip->request
 | 
						|
                                    gpiochip_generic_request
 | 
						|
                                       pinctrl_gpio_request
 | 
						|
                                          pinctrl_get_device_gpio_range
 | 
						|
 | 
						|
pinctrl_get_device_gpio_range() is unable to find any valid
 | 
						|
pin ranges, since nothing has been added to the pinctrldev_list yet.
 | 
						|
so the range can't be found, and the operation fails with -EPROBE_DEFER.
 | 
						|
 | 
						|
This patch fixes the issue by adding the "gpio-ranges" property to
 | 
						|
the pinctrl device node of all upstream Qcom SoC. The pin ranges are
 | 
						|
then added by the gpio core.
 | 
						|
 | 
						|
In order to remain compatible with older, existing DTs (and ACPI)
 | 
						|
a check for the "gpio-ranges" property has been added to
 | 
						|
msm_gpio_init(). This prevents the driver of adding the same entry
 | 
						|
to the pinctrldev_list twice.
 | 
						|
 | 
						|
Reported-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
 | 
						|
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
 | 
						|
 | 
						|
Origin: other, https://patchwork.kernel.org/patch/10339127/
 | 
						|
---
 | 
						|
 arch/arm/boot/dts/qcom-ipq4019.dtsi   |  1 +
 | 
						|
 drivers/pinctrl/qcom/pinctrl-msm.c    | 23 ++++++++++++++++++-----
 | 
						|
 14 files changed, 32 insertions(+), 6 deletions(-)
 | 
						|
 | 
						|
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
 | 
						|
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
 | 
						|
@@ -182,6 +182,7 @@
 | 
						|
 			compatible = "qcom,ipq4019-pinctrl";
 | 
						|
 			reg = <0x01000000 0x300000>;
 | 
						|
 			gpio-controller;
 | 
						|
+			gpio-ranges = <&tlmm 0 0 100>;
 | 
						|
 			#gpio-cells = <2>;
 | 
						|
 			interrupt-controller;
 | 
						|
 			#interrupt-cells = <2>;
 | 
						|
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
 | 
						|
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
 | 
						|
@@ -831,11 +831,24 @@ static int msm_gpio_init(struct msm_pinc
 | 
						|
 		return ret;
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	ret = gpiochip_add_pin_range(&pctrl->chip, dev_name(pctrl->dev), 0, 0, chip->ngpio);
 | 
						|
-	if (ret) {
 | 
						|
-		dev_err(pctrl->dev, "Failed to add pin range\n");
 | 
						|
-		gpiochip_remove(&pctrl->chip);
 | 
						|
-		return ret;
 | 
						|
+	/*
 | 
						|
+	 * For DeviceTree-supported systems, the gpio core checks the
 | 
						|
+	 * pinctrl's device node for the "gpio-ranges" property.
 | 
						|
+	 * If it is present, it takes care of adding the pin ranges
 | 
						|
+	 * for the driver. In this case the driver can skip ahead.
 | 
						|
+	 *
 | 
						|
+	 * In order to remain compatible with older, existing DeviceTree
 | 
						|
+	 * files which don't set the "gpio-ranges" property or systems that
 | 
						|
+	 * utilize ACPI the driver has to call gpiochip_add_pin_range().
 | 
						|
+	 */
 | 
						|
+	if (!of_property_read_bool(pctrl->dev->of_node, "gpio-ranges")) {
 | 
						|
+		ret = gpiochip_add_pin_range(&pctrl->chip,
 | 
						|
+			dev_name(pctrl->dev), 0, 0, chip->ngpio);
 | 
						|
+		if (ret) {
 | 
						|
+			dev_err(pctrl->dev, "Failed to add pin range\n");
 | 
						|
+			gpiochip_remove(&pctrl->chip);
 | 
						|
+			return ret;
 | 
						|
+		}
 | 
						|
 	}
 | 
						|
 
 | 
						|
 	ret = gpiochip_irqchip_add(chip,
 |