From aa3d60f57e84d02887c63cae176bdec96b560e38 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Thu, 10 Dec 2020 02:47:33 -0800 Subject: [PATCH] refreshed mvebu with quilt (#2419) * mvebu-dev: refresh all patches with quilt Cleaned up based on kernel 5.9.12. Signed-off-by: Rosen Penev * mvebu-current: refresh patches with quilt Based on kernel version 5.9.12 Signed-off-by: Rosen Penev * mvebu-legacy: refresh patches with quilt Based on kernel 4.19.161 Signed-off-by: Rosen Penev * mvebu-legacy: remove custom helios4 dts file This is already added upstream. No need to have it here. Continued refreshing the other patches. Signed-off-by: Rosen Penev --- ...dicate-failure-to-enter-deeper-sleep.patch | 7 +- .../40-pci-add-irq-change-handler-sspl.patch | 145 ++--- ...2-sfp-display-SFP-module-information.patch | 6 +- .../91-01-libata-add-ledtrig-support.patch | 4 +- .../91-02-Enable-ATA-port-LED-trigger.patch | 9 +- ...-mvebu-gpio-add_wake_on_gpio_support.patch | 16 +- ...-remove-hardcoded-timer-assignment-2.patch | 6 +- ...io-remove-hardcoded-timer-assignment.patch | 31 +- ...-helios4-dts-add-wake-on-lan-support.patch | 2 +- ...s4-dts-assign-pinctrl-to-fan-and-led.patch | 8 +- ..._DMA_block_memory_allocation_to_2048.patch | 2 +- ...VFP_emulation_exceptions_kernel_mode.patch | 8 +- ...lock_atheros_regulatory_restrictions.patch | 12 +- .../use-1000BaseX-clearfog-switch.patch | 5 - ...dicate-failure-to-enter-deeper-sleep.patch | 7 +- .../40-pci-add-irq-change-handler-sspl.patch | 145 ++--- ...2-sfp-display-SFP-module-information.patch | 6 +- .../91-01-libata-add-ledtrig-support.patch | 4 +- .../91-02-Enable-ATA-port-LED-trigger.patch | 9 +- ...-mvebu-gpio-add_wake_on_gpio_support.patch | 16 +- ...-remove-hardcoded-timer-assignment-2.patch | 6 +- ...io-remove-hardcoded-timer-assignment.patch | 31 +- ...-helios4-dts-add-wake-on-lan-support.patch | 2 +- ...s4-dts-assign-pinctrl-to-fan-and-led.patch | 8 +- ..._DMA_block_memory_allocation_to_2048.patch | 2 +- ...VFP_emulation_exceptions_kernel_mode.patch | 8 +- ...lock_atheros_regulatory_restrictions.patch | 12 +- .../use-1000BaseX-clearfog-switch.patch | 5 - ...dicate-failure-to-enter-deeper-sleep.patch | 7 +- ...ell-88E1512-add-flow-control-support.patch | 11 +- .../mvebu-legacy/0040-updates-pci.patch | 54 +- ...041-implement-slot-capabilities-SSPL.patch | 21 +- ...044-gpio-report-all-gpios-in-debugfs.patch | 10 +- .../mvebu-legacy/102-revert_i2c_delay.patch | 2 +- ...2-sfp-display-SFP-module-information.patch | 6 +- ...da388-clearfog-emmc-on-clearfog-base.patch | 2 +- .../mvebu-legacy/450-reprobe_sfp_phy.patch | 12 +- .../91-01-libata-add-ledtrig-support.patch | 27 +- .../91-02-Enable-ATA-port-LED-trigger.patch | 13 +- ...-mvebu-gpio-add_wake_on_gpio_support.patch | 26 +- ...io-remove-hardcoded-timer-assignment.patch | 51 +- .../mvebu-legacy/93-helios4-device-tree.patch | 314 ----------- ...-helios4-dts-add-wake-on-lan-support.patch | 2 - .../compile-dtb-with-symbol-support.patch | 4 +- ...s-disable-spi-flash-on-a388-microsom.patch | 2 - .../general-aufs4.19-20181029.patch | 499 +++--------------- ..._DMA_block_memory_allocation_to_2048.patch | 21 +- 47 files changed, 387 insertions(+), 1219 deletions(-) delete mode 100644 patch/kernel/mvebu-legacy/93-helios4-device-tree.patch diff --git a/patch/kernel/mvebu-current/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch b/patch/kernel/mvebu-current/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch index 5a2d86240..da5c35ff0 100644 --- a/patch/kernel/mvebu-current/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch +++ b/patch/kernel/mvebu-current/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch @@ -25,11 +25,9 @@ Signed-off-by: Russell King drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -diff --git a/drivers/cpuidle/cpuidle-mvebu-v7.c b/drivers/cpuidle/cpuidle-mvebu-v7.c -index 01a856971f05..18ded9e7cb34 100644 --- a/drivers/cpuidle/cpuidle-mvebu-v7.c +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c -@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cpuidle_device *dev, +@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp ret = mvebu_v7_cpu_suspend(deepidle); cpu_pm_exit(); @@ -43,6 +41,3 @@ index 01a856971f05..18ded9e7cb34 100644 return index; } --- -2.1.0 - diff --git a/patch/kernel/mvebu-current/40-pci-add-irq-change-handler-sspl.patch b/patch/kernel/mvebu-current/40-pci-add-irq-change-handler-sspl.patch index 12c4763a1..0726339c3 100644 --- a/patch/kernel/mvebu-current/40-pci-add-irq-change-handler-sspl.patch +++ b/patch/kernel/mvebu-current/40-pci-add-irq-change-handler-sspl.patch @@ -12,11 +12,9 @@ Signed-off-by: Russell King drivers/pci/pcie/portdrv_core.c | 2 + 5 files changed, 180 insertions(+), 34 deletions(-) -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index c39978b750ec..b4fb20835573 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c -@@ -53,7 +53,14 @@ +@@ -53,13 +53,26 @@ PCIE_CONF_ADDR_EN) #define PCIE_CONF_DATA_OFF 0x18fc #define PCIE_MASK_OFF 0x1910 @@ -31,7 +29,19 @@ index c39978b750ec..b4fb20835573 100644 #define PCIE_CTRL_OFF 0x1a00 #define PCIE_CTRL_X1_MODE 0x0001 #define PCIE_STAT_OFF 0x1a04 -@@ -432,6 +439,54 @@ static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port) + #define PCIE_STAT_BUS 0xff00 + #define PCIE_STAT_DEV 0x1f0000 + #define PCIE_STAT_LINK_DOWN BIT(0) ++#define PCIE_SSPL 0x1a0c ++#define PCIE_SSPL_MSGEN BIT(14) ++#define PCIE_SSPL_SPLS(x) (((x) & 3) << 8) ++#define PCIE_SSPL_SPLS_VAL(x) (((x) >> 8) & 3) ++#define PCIE_SSPL_SPLV(x) ((x) & 0xff) ++#define PCIE_SSPL_SPLV_VAL(x) ((x) & 0xff) + #define PCIE_RC_RTSTA 0x1a14 + #define PCIE_DEBUG_CTRL 0x1a60 + #define PCIE_DEBUG_SOFT_RESET BIT(20) +@@ -432,6 +445,54 @@ static void mvebu_pcie_handle_membase_ch &port->memwin); } @@ -86,7 +96,22 @@ index c39978b750ec..b4fb20835573 100644 static pci_bridge_emul_read_status_t mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, int reg, u32 *value) -@@ -477,6 +532,30 @@ mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, +@@ -462,6 +523,14 @@ mvebu_pci_bridge_emul_pcie_conf_read(str + *value = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); + break; + ++ case PCI_EXP_SLTCAP: ++ { ++ u32 tmp = mvebu_readl(port, PCIE_SSPL); ++ *value = PCIE_SSPL_SPLS_VAL(tmp) << 15 | ++ PCIE_SSPL_SPLV_VAL(tmp) << 7; ++ break; ++ } ++ + case PCI_EXP_SLTCTL: + *value = PCI_EXP_SLTSTA_PDS << 16; + break; +@@ -477,6 +546,30 @@ mvebu_pci_bridge_emul_pcie_conf_read(str return PCI_BRIDGE_EMUL_HANDLED; } @@ -117,7 +142,7 @@ index c39978b750ec..b4fb20835573 100644 static void mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, int reg, u32 old, u32 new, u32 mask) -@@ -494,7 +573,8 @@ mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, +@@ -494,7 +587,8 @@ mvebu_pci_bridge_emul_base_conf_write(st mvebu_pcie_handle_iobase_change(port); if ((old ^ new) & PCI_COMMAND_MEMORY) mvebu_pcie_handle_membase_change(port); @@ -127,7 +152,7 @@ index c39978b750ec..b4fb20835573 100644 break; } -@@ -517,6 +597,11 @@ mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, +@@ -517,6 +611,11 @@ mvebu_pci_bridge_emul_base_conf_write(st mvebu_pcie_handle_iobase_change(port); break; @@ -139,7 +164,7 @@ index c39978b750ec..b4fb20835573 100644 case PCI_PRIMARY_BUS: mvebu_pcie_set_local_bus_nr(port, conf->secondary_bus); break; -@@ -534,6 +619,10 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, +@@ -534,6 +633,10 @@ mvebu_pci_bridge_emul_pcie_conf_write(st switch (reg) { case PCI_EXP_DEVCTL: @@ -150,7 +175,19 @@ index c39978b750ec..b4fb20835573 100644 /* * Armada370 data says these bits must always * be zero when in root complex mode. -@@ -559,6 +648,25 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, +@@ -556,9 +659,37 @@ mvebu_pci_bridge_emul_pcie_conf_write(st + mvebu_writel(port, new, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); + break; + ++ case PCI_EXP_SLTCAP: ++ { ++ u32 sspl = PCIE_SSPL_SPLV((new & PCI_EXP_SLTCAP_SPLV) >> 7) | ++ PCIE_SSPL_SPLS((new & PCI_EXP_SLTCAP_SPLS) >> 15) | ++ PCIE_SSPL_MSGEN; ++ mvebu_writel(port, sspl, PCIE_SSPL); ++ break; ++ } ++ case PCI_EXP_RTSTA: mvebu_writel(port, new, PCIE_RC_RTSTA); break; @@ -176,7 +213,7 @@ index c39978b750ec..b4fb20835573 100644 } } -@@ -566,6 +674,8 @@ static struct pci_bridge_emul_ops mvebu_pci_bridge_emul_ops = { +@@ -566,6 +697,8 @@ static struct pci_bridge_emul_ops mvebu_ .write_base = mvebu_pci_bridge_emul_base_conf_write, .read_pcie = mvebu_pci_bridge_emul_pcie_conf_read, .write_pcie = mvebu_pci_bridge_emul_pcie_conf_write, @@ -185,11 +222,9 @@ index c39978b750ec..b4fb20835573 100644 }; /* -diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c -index ccf26d12ec61..c124b7ff1e22 100644 --- a/drivers/pci/pci-bridge-emul.c +++ b/drivers/pci/pci-bridge-emul.c -@@ -151,6 +151,7 @@ static const struct pci_bridge_reg_behavior pci_regs_behavior[] = { +@@ -151,6 +151,7 @@ static const struct pci_bridge_reg_behav .rw = (GENMASK(7, 0) | ((PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR | @@ -197,7 +232,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 PCI_BRIDGE_CTL_ISA | PCI_BRIDGE_CTL_VGA | PCI_BRIDGE_CTL_MASTER_ABORT | -@@ -264,6 +265,7 @@ int pci_bridge_emul_init(struct pci_bridge_emul *bridge, +@@ -264,6 +265,7 @@ int pci_bridge_emul_init(struct pci_brid bridge->conf.header_type = PCI_HEADER_TYPE_BRIDGE; bridge->conf.cache_line_size = 0x10; bridge->conf.status = cpu_to_le16(PCI_STATUS_CAP_LIST); @@ -205,7 +240,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 bridge->pci_regs_behavior = kmemdup(pci_regs_behavior, sizeof(pci_regs_behavior), GFP_KERNEL); -@@ -321,25 +323,26 @@ int pci_bridge_emul_conf_read(struct pci_bridge_emul *bridge, int where, +@@ -321,25 +323,26 @@ int pci_bridge_emul_conf_read(struct pci __le32 *cfgspace; const struct pci_bridge_reg_behavior *behavior; @@ -244,7 +279,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 } if (read_op) -@@ -347,15 +350,20 @@ int pci_bridge_emul_conf_read(struct pci_bridge_emul *bridge, int where, +@@ -347,15 +350,20 @@ int pci_bridge_emul_conf_read(struct pci else ret = PCI_BRIDGE_EMUL_NOT_HANDLED; @@ -269,7 +304,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 if (size == 1) *value = (*value >> (8 * (where & 3))) & 0xff; -@@ -382,12 +390,6 @@ int pci_bridge_emul_conf_write(struct pci_bridge_emul *bridge, int where, +@@ -382,12 +390,6 @@ int pci_bridge_emul_conf_write(struct pc __le32 *cfgspace; const struct pci_bridge_reg_behavior *behavior; @@ -282,7 +317,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 shift = (where & 0x3) * 8; if (size == 4) -@@ -403,27 +405,42 @@ int pci_bridge_emul_conf_write(struct pci_bridge_emul *bridge, int where, +@@ -403,27 +405,42 @@ int pci_bridge_emul_conf_write(struct pc if (ret != PCIBIOS_SUCCESSFUL) return ret; @@ -336,8 +371,6 @@ index ccf26d12ec61..c124b7ff1e22 100644 if (write_op) write_op(bridge, reg, old, new, mask); -diff --git a/drivers/pci/pci-bridge-emul.h b/drivers/pci/pci-bridge-emul.h -index b31883022a8e..5f64560aaa26 100644 --- a/drivers/pci/pci-bridge-emul.h +++ b/drivers/pci/pci-bridge-emul.h @@ -90,6 +90,14 @@ struct pci_bridge_emul_ops { @@ -369,11 +402,9 @@ index b31883022a8e..5f64560aaa26 100644 }; struct pci_bridge_reg_behavior; -diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c -index 253c30cc1967..3edbe276e626 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c -@@ -576,6 +576,8 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) +@@ -576,6 +576,8 @@ static void pcie_aspm_cap_init(struct pc */ pcie_get_aspm_reg(parent, &upreg); pcie_get_aspm_reg(child, &dwreg); @@ -382,11 +413,9 @@ index 253c30cc1967..3edbe276e626 100644 /* * Setup L0s state -diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c -index 50a9522ab07d..105ebc7a7987 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c -@@ -325,6 +325,7 @@ int pcie_port_device_register(struct pci_dev *dev) +@@ -325,6 +325,7 @@ int pcie_port_device_register(struct pci /* Get and check PCI Express port services */ capabilities = get_port_device_capability(dev); @@ -394,7 +423,7 @@ index 50a9522ab07d..105ebc7a7987 100644 if (!capabilities) return 0; -@@ -337,6 +338,7 @@ int pcie_port_device_register(struct pci_dev *dev) +@@ -337,6 +338,7 @@ int pcie_port_device_register(struct pci * if that is to be used. */ status = pcie_init_service_irqs(dev, irqs, capabilities); @@ -402,65 +431,3 @@ index 50a9522ab07d..105ebc7a7987 100644 if (status) { capabilities &= PCIE_PORT_SERVICE_HP; if (!capabilities) --- -cgit v1.2.1 -From 9b1aafd0f620776f8d15f3ee872d3d5a69a468db Mon Sep 17 00:00:00 2001 -From: Russell King -Date: Tue, 29 Nov 2016 10:13:48 +0000 -Subject: implement slot capabilities (SSPL) - ---- - drivers/pci/controller/pci-mvebu.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index b4fb20835573..060226d11588 100644 ---- a/drivers/pci/controller/pci-mvebu.c -+++ b/drivers/pci/controller/pci-mvebu.c -@@ -67,6 +67,12 @@ - #define PCIE_STAT_BUS 0xff00 - #define PCIE_STAT_DEV 0x1f0000 - #define PCIE_STAT_LINK_DOWN BIT(0) -+#define PCIE_SSPL 0x1a0c -+#define PCIE_SSPL_MSGEN BIT(14) -+#define PCIE_SSPL_SPLS(x) (((x) & 3) << 8) -+#define PCIE_SSPL_SPLS_VAL(x) (((x) >> 8) & 3) -+#define PCIE_SSPL_SPLV(x) ((x) & 0xff) -+#define PCIE_SSPL_SPLV_VAL(x) ((x) & 0xff) - #define PCIE_RC_RTSTA 0x1a14 - #define PCIE_DEBUG_CTRL 0x1a60 - #define PCIE_DEBUG_SOFT_RESET BIT(20) -@@ -517,6 +523,14 @@ mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, - *value = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); - break; - -+ case PCI_EXP_SLTCAP: -+ { -+ u32 tmp = mvebu_readl(port, PCIE_SSPL); -+ *value = PCIE_SSPL_SPLS_VAL(tmp) << 15 | -+ PCIE_SSPL_SPLV_VAL(tmp) << 7; -+ break; -+ } -+ - case PCI_EXP_SLTCTL: - *value = PCI_EXP_SLTSTA_PDS << 16; - break; -@@ -645,6 +659,15 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, - mvebu_writel(port, new, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); - break; - -+ case PCI_EXP_SLTCAP: -+ { -+ u32 sspl = PCIE_SSPL_SPLV((new & PCI_EXP_SLTCAP_SPLV) >> 7) | -+ PCIE_SSPL_SPLS((new & PCI_EXP_SLTCAP_SPLS) >> 15) | -+ PCIE_SSPL_MSGEN; -+ mvebu_writel(port, sspl, PCIE_SSPL); -+ break; -+ } -+ - case PCI_EXP_RTSTA: - mvebu_writel(port, new, PCIE_RC_RTSTA); - break; --- -cgit v1.2.1 - diff --git a/patch/kernel/mvebu-current/402-sfp-display-SFP-module-information.patch b/patch/kernel/mvebu-current/402-sfp-display-SFP-module-information.patch index 4ba67130e..ca117290e 100644 --- a/patch/kernel/mvebu-current/402-sfp-display-SFP-module-information.patch +++ b/patch/kernel/mvebu-current/402-sfp-display-SFP-module-information.patch @@ -7,7 +7,7 @@ Signed-off-by: Russell King --- --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -531,6 +531,185 @@ static unsigned int sfp_check(void *buf, size_t len) +@@ -531,6 +531,185 @@ static unsigned int sfp_check(void *buf, return check; } @@ -193,7 +193,7 @@ Signed-off-by: Russell King /* hwmon */ #if IS_ENABLED(CONFIG_HWMON) static umode_t sfp_hwmon_is_visible(const void *data, -@@ -1670,6 +1849,7 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1670,6 +1849,7 @@ static int sfp_sm_mod_probe(struct sfp * struct sfp_eeprom_id id; bool cotsworks_sfbg; bool cotsworks; @@ -201,7 +201,7 @@ Signed-off-by: Russell King u8 check; int ret; -@@ -1744,6 +1926,73 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1744,6 +1924,73 @@ static int sfp_sm_mod_probe(struct sfp * (int)sizeof(id.ext.vendor_sn), id.ext.vendor_sn, (int)sizeof(id.ext.datecode), id.ext.datecode); diff --git a/patch/kernel/mvebu-current/91-01-libata-add-ledtrig-support.patch b/patch/kernel/mvebu-current/91-01-libata-add-ledtrig-support.patch index 623e48085..a52e712d8 100644 --- a/patch/kernel/mvebu-current/91-01-libata-add-ledtrig-support.patch +++ b/patch/kernel/mvebu-current/91-01-libata-add-ledtrig-support.patch @@ -106,11 +106,11 @@ Signed-off-by: Daniel Golle + for (i = 0; i < host->n_ports; i++) { + if (unlikely(!host->ports[i]->ledtrig)) + continue; -+ + + snprintf(host->ports[i]->ledtrig_name, + sizeof(host->ports[i]->ledtrig_name), "ata%u", + host->ports[i]->print_id); - ++ + host->ports[i]->ledtrig->name = host->ports[i]->ledtrig_name; + + if (led_trigger_register(host->ports[i]->ledtrig)) { diff --git a/patch/kernel/mvebu-current/91-02-Enable-ATA-port-LED-trigger.patch b/patch/kernel/mvebu-current/91-02-Enable-ATA-port-LED-trigger.patch index dd83ef9f3..10680f98c 100644 --- a/patch/kernel/mvebu-current/91-02-Enable-ATA-port-LED-trigger.patch +++ b/patch/kernel/mvebu-current/91-02-Enable-ATA-port-LED-trigger.patch @@ -8,11 +8,9 @@ Subject: Enable ATA port LED trigger arch/arm/mach-mvebu/Kconfig | 1 + 2 files changed, 2 insertions(+) -diff --git a/arch/arm/configs/mvebu_v7_defconfig b/arch/arm/configs/mvebu_v7_defconfig -index cf363ab..19449d3 100644 --- a/arch/arm/configs/mvebu_v7_defconfig +++ b/arch/arm/configs/mvebu_v7_defconfig -@@ -58,6 +58,7 @@ CONFIG_MTD_SPI_NOR=y +@@ -58,6 +58,7 @@ CONFIG_MTD_UBI=y CONFIG_EEPROM_AT24=y CONFIG_BLK_DEV_SD=y CONFIG_ATA=y @@ -20,8 +18,6 @@ index cf363ab..19449d3 100644 CONFIG_SATA_AHCI=y CONFIG_AHCI_MVEBU=y CONFIG_SATA_MV=y -diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig -index 053ea9d..aa1f389 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -56,6 +56,7 @@ config MACH_ARMADA_375 @@ -32,6 +28,3 @@ index 053ea9d..aa1f389 100644 select ARM_ERRATA_720789 select PL310_ERRATA_753970 select ARM_GIC --- -2.7.4 - diff --git a/patch/kernel/mvebu-current/92-mvebu-gpio-add_wake_on_gpio_support.patch b/patch/kernel/mvebu-current/92-mvebu-gpio-add_wake_on_gpio_support.patch index 79afc4157..a06b7973b 100644 --- a/patch/kernel/mvebu-current/92-mvebu-gpio-add_wake_on_gpio_support.patch +++ b/patch/kernel/mvebu-current/92-mvebu-gpio-add_wake_on_gpio_support.patch @@ -17,11 +17,10 @@ struct irq_domain *domain; int soc_variant; -@@ -600,6 +601,33 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc) - chained_irq_exit(chip, desc); +@@ -601,6 +602,33 @@ static void mvebu_gpio_irq_handler(struc } -+/* + /* + * Set interrupt number "irq" in the GPIO as a wake-up source. + * While system is running, all registered GPIO interrupts need to have + * wake-up enabled. When system is suspended, only selected GPIO interrupts @@ -48,10 +47,11 @@ + return 0; +} + - /* ++/* * Functions implementing the pwm_chip methods */ -@@ -1211,7 +1239,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) + static struct mvebu_pwm *to_mvebu_pwm(struct pwm_chip *chip) +@@ -1211,7 +1239,7 @@ static int mvebu_gpio_probe(struct platf err = irq_alloc_domain_generic_chips( mvchip->domain, ngpios, 2, np->name, handle_level_irq, @@ -60,7 +60,7 @@ if (err) { dev_err(&pdev->dev, "couldn't allocate irq chips %s (DT).\n", mvchip->chip.label); -@@ -1229,6 +1257,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1229,6 +1257,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_level_irq_mask; ct->chip.irq_unmask = mvebu_gpio_level_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -69,7 +69,7 @@ ct->chip.name = mvchip->chip.label; ct = &gc->chip_types[1]; -@@ -1237,6 +1267,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1237,6 +1267,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_edge_irq_mask; ct->chip.irq_unmask = mvebu_gpio_edge_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -78,7 +78,7 @@ ct->handler = handle_edge_irq; ct->chip.name = mvchip->chip.label; -@@ -1252,6 +1284,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1252,6 +1284,7 @@ static int mvebu_gpio_probe(struct platf continue; irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler, mvchip); diff --git a/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch b/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch index 1e7f337bf..a04bb0b1d 100644 --- a/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch +++ b/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -662,39 +662,81 @@ static int mvebu_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) +@@ -641,39 +641,81 @@ static int mvebu_pwm_request(struct pwm_ struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; struct gpio_desc *desc; @@ -97,7 +97,7 @@ } static void mvebu_pwm_get_state(struct pwm_chip *chip, -@@ -749,13 +791,15 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -721,19 +763,21 @@ static void mvebu_pwm_get_state(struct p else state->enabled = false; @@ -114,8 +114,6 @@ struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; unsigned long long val; unsigned long flags; -@@ -761,7 +805,7 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, - unsigned long flags; unsigned int on, off; - val = (unsigned long long) mvpwm->clk_rate * state->duty_cycle; diff --git a/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch b/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch index e2d0abfec..56e24b00b 100644 --- a/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch +++ b/patch/kernel/mvebu-current/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch @@ -46,7 +46,7 @@ struct mvebu_gpio_chip { struct gpio_chip chip; struct regmap *regs; -@@ -283,12 +304,12 @@ mvebu_gpio_write_level_mask(struct mvebu_gpio_chip *mvchip, u32 val) +@@ -283,12 +304,12 @@ mvebu_gpio_write_level_mask(struct mvebu * Functions returning addresses of individual registers for a given * PWM controller. */ @@ -61,7 +61,7 @@ { return mvpwm->membase + PWM_BLINK_OFF_DURATION_OFF; } -@@ -681,17 +702,24 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -723,17 +744,24 @@ static void mvebu_pwm_get_state(struct p struct pwm_state *state) { struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); @@ -89,7 +89,7 @@ if (val > UINT_MAX) state->duty_cycle = UINT_MAX; else if (val) -@@ -700,9 +728,9 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -742,9 +770,9 @@ static void mvebu_pwm_get_state(struct p state->duty_cycle = 1; val = (unsigned long long) @@ -101,7 +101,7 @@ if (val < state->duty_cycle) { state->period = 1; } else { -@@ -742,7 +770,7 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -786,7 +814,7 @@ static int mvebu_pwm_apply(struct pwm_ch else on = 1; @@ -110,7 +110,7 @@ (state->period - state->duty_cycle); do_div(val, NSEC_PER_SEC); if (val > UINT_MAX) -@@ -752,16 +780,16 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -796,16 +824,16 @@ static int mvebu_pwm_apply(struct pwm_ch else off = 1; @@ -131,7 +131,7 @@ return 0; } -@@ -780,10 +808,10 @@ static void __maybe_unused mvebu_pwm_suspend(struct mvebu_gpio_chip *mvchip) +@@ -824,10 +852,10 @@ static void __maybe_unused mvebu_pwm_sus regmap_read(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, &mvpwm->blink_select); @@ -146,7 +146,7 @@ } static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) -@@ -792,10 +820,10 @@ static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) +@@ -836,10 +864,10 @@ static void __maybe_unused mvebu_pwm_res regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, mvpwm->blink_select); @@ -161,7 +161,7 @@ } static int mvebu_pwm_probe(struct platform_device *pdev, -@@ -805,6 +833,7 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -849,6 +877,7 @@ static int mvebu_pwm_probe(struct platfo struct device *dev = &pdev->dev; struct mvebu_pwm *mvpwm; u32 set; @@ -169,7 +169,7 @@ if (!of_device_is_compatible(mvchip->chip.of_node, "marvell,armada-370-gpio")) -@@ -826,12 +855,15 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -870,12 +899,15 @@ static int mvebu_pwm_probe(struct platfo * Use set A for lines of GPIO chip with id 0, B for GPIO chip * with id 1. Don't allow further GPIO chips to be used for PWM. */ @@ -188,20 +188,21 @@ regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, set); -@@ -841,15 +873,13 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -885,15 +917,13 @@ static int mvebu_pwm_probe(struct platfo mvchip->mvpwm = mvpwm; mvpwm->mvchip = mvchip; - mvpwm->membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); - if (IS_ERR(mvpwm->membase)) - return PTR_ERR(mvpwm->membase); -+ mvpwm->controller.membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); -+ if (IS_ERR(mvpwm->controller.membase)) -+ return PTR_ERR(mvpwm->controller.membase); - +- - mvpwm->clk_rate = clk_get_rate(mvchip->clk); - if (!mvpwm->clk_rate) { - dev_err(dev, "failed to get clock rate\n"); ++ mvpwm->controller.membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); ++ if (IS_ERR(mvpwm->controller.membase)) ++ return PTR_ERR(mvpwm->controller.membase); ++ + mvpwm->controller.clk_rate = clk_get_rate(mvchip->clk); + if (!mvpwm->controller.clk_rate) return -EINVAL; @@ -209,7 +210,7 @@ mvpwm->chip.dev = dev; mvpwm->chip.ops = &mvebu_pwm_ops; -@@ -862,7 +892,9 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -906,7 +936,9 @@ static int mvebu_pwm_probe(struct platfo */ mvpwm->chip.base = -1; diff --git a/patch/kernel/mvebu-current/94-helios4-dts-add-wake-on-lan-support.patch b/patch/kernel/mvebu-current/94-helios4-dts-add-wake-on-lan-support.patch index ecb05e5f6..b3daf09f9 100644 --- a/patch/kernel/mvebu-current/94-helios4-dts-add-wake-on-lan-support.patch +++ b/patch/kernel/mvebu-current/94-helios4-dts-add-wake-on-lan-support.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/armada-388-helios4.dts +++ b/arch/arm/boot/dts/armada-388-helios4.dts -@@ -96,6 +96,18 @@ +@@ -84,6 +84,18 @@ }; }; diff --git a/patch/kernel/mvebu-current/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch b/patch/kernel/mvebu-current/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch index a1cb0804f..1032d30be 100644 --- a/patch/kernel/mvebu-current/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch +++ b/patch/kernel/mvebu-current/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/armada-388-helios4.dts +++ b/arch/arm/boot/dts/armada-388-helios4.dts -@@ -70,6 +70,9 @@ reg_5p0v_usb: regulator-5v-usb { +@@ -70,6 +70,9 @@ system-leds { compatible = "gpio-leds"; @@ -10,7 +10,7 @@ status-led { label = "helios4:green:status"; gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; -@@ -110,6 +113,9 @@ wol { +@@ -98,6 +101,9 @@ io-leds { compatible = "gpio-leds"; @@ -20,7 +20,7 @@ sata1-led { label = "helios4:green:ata1"; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; -@@ -145,11 +151,15 @@ usb-led { +@@ -133,11 +139,15 @@ fan1: j10-pwm { compatible = "pwm-fan"; pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ @@ -36,7 +36,7 @@ }; usb2_phy: usb2-phy { -@@ -310,16 +320,23 @@ helios_sdhci_pins: helios-sdhci-pins { +@@ -298,16 +308,23 @@ "mpp39", "mpp40"; marvell,function = "sd0"; }; diff --git a/patch/kernel/mvebu-current/general-increasing_DMA_block_memory_allocation_to_2048.patch b/patch/kernel/mvebu-current/general-increasing_DMA_block_memory_allocation_to_2048.patch index 6f64f8df9..ff11b4d98 100644 --- a/patch/kernel/mvebu-current/general-increasing_DMA_block_memory_allocation_to_2048.patch +++ b/patch/kernel/mvebu-current/general-increasing_DMA_block_memory_allocation_to_2048.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c -@@ -314,7 +314,7 @@ static void *__alloc_remap_buffer(struct device *dev, size_t size, gfp_t gfp, +@@ -314,7 +314,7 @@ static void *__alloc_remap_buffer(struct pgprot_t prot, struct page **ret_page, const void *caller, bool want_vaddr); diff --git a/patch/kernel/mvebu-current/omit_VFP_emulation_exceptions_kernel_mode.patch b/patch/kernel/mvebu-current/omit_VFP_emulation_exceptions_kernel_mode.patch index c15d53746..e776c3526 100644 --- a/patch/kernel/mvebu-current/omit_VFP_emulation_exceptions_kernel_mode.patch +++ b/patch/kernel/mvebu-current/omit_VFP_emulation_exceptions_kernel_mode.patch @@ -32,8 +32,6 @@ Reviewed-by: Linus Walleij <(address hidden)> Reviewed-by: Nick Desaulniers <(address hidden)> --- -diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index c4220f51fcf3..0ea8529a4872 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -252,31 +252,10 @@ __und_svc: @@ -70,8 +68,6 @@ index c4220f51fcf3..0ea8529a4872 100644 mov r0, sp @ struct pt_regs *regs bl __und_fault -diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S -index 4fcff9f59947..d5837bf05a9a 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S @@ -79,11 +79,6 @@ ENTRY(vfp_support_entry) @@ -86,8 +82,6 @@ index 4fcff9f59947..d5837bf05a9a 100644 VFPFMRX r1, FPEXC @ Is the VFP enabled? DBGSTR1 "fpexc %08x", r1 tst r1, #FPEXC_EN -diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c -index 8c9e7f9f0277..c3b6451c18bd 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c @@ -23,6 +23,7 @@ @@ -98,7 +92,7 @@ index 8c9e7f9f0277..c3b6451c18bd 100644 #include #include "vfpinstr.h" -@@ -642,7 +643,9 @@ static int vfp_starting_cpu(unsigned int unused) +@@ -642,7 +643,9 @@ static int vfp_starting_cpu(unsigned int return 0; } diff --git a/patch/kernel/mvebu-current/unlock_atheros_regulatory_restrictions.patch b/patch/kernel/mvebu-current/unlock_atheros_regulatory_restrictions.patch index bda0744c7..7e57c379a 100644 --- a/patch/kernel/mvebu-current/unlock_atheros_regulatory_restrictions.patch +++ b/patch/kernel/mvebu-current/unlock_atheros_regulatory_restrictions.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/regd.c +++ b/drivers/net/wireless/ath/regd.c -@@ -50,12 +50,9 @@ static int __ath_regd_init(struct ath_regulatory *reg); +@@ -50,12 +50,9 @@ static int __ath_regd_init(struct ath_re #define ATH_5GHZ_5725_5850 REG_RULE(5725-10, 5850+10, 80, 0, 30,\ NL80211_RRF_NO_IR) @@ -15,7 +15,7 @@ /* This one skips what we call "mid band" */ #define ATH_5GHZ_NO_MIDBAND ATH_5GHZ_5150_5350, \ -@@ -77,9 +74,8 @@ static const struct ieee80211_regdomain ath_world_regdom_63_65 = { +@@ -77,9 +74,8 @@ static const struct ieee80211_regdomain .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { @@ -27,7 +27,7 @@ } }; -@@ -88,8 +84,8 @@ static const struct ieee80211_regdomain ath_world_regdom_64 = { +@@ -88,8 +84,8 @@ static const struct ieee80211_regdomain .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { @@ -38,7 +38,7 @@ } }; -@@ -98,7 +94,7 @@ static const struct ieee80211_regdomain ath_world_regdom_66_69 = { +@@ -98,7 +94,7 @@ static const struct ieee80211_regdomain .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { @@ -47,7 +47,7 @@ ATH_5GHZ_ALL, } }; -@@ -108,8 +104,7 @@ static const struct ieee80211_regdomain ath_world_regdom_67_68_6A_6C = { +@@ -108,8 +104,7 @@ static const struct ieee80211_regdomain .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { @@ -57,7 +57,7 @@ ATH_5GHZ_ALL, } }; -@@ -258,9 +253,7 @@ static bool ath_is_radar_freq(u16 center_freq, +@@ -258,9 +253,7 @@ static bool ath_is_radar_freq(u16 center struct ath_regulatory *reg) { diff --git a/patch/kernel/mvebu-current/use-1000BaseX-clearfog-switch.patch b/patch/kernel/mvebu-current/use-1000BaseX-clearfog-switch.patch index abcf8b513..900d0f114 100644 --- a/patch/kernel/mvebu-current/use-1000BaseX-clearfog-switch.patch +++ b/patch/kernel/mvebu-current/use-1000BaseX-clearfog-switch.patch @@ -11,8 +11,6 @@ Signed-off-by: Russell King arch/arm/boot/dts/armada-388-clearfog.dts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) -diff --git a/arch/arm/boot/dts/armada-388-clearfog.dts b/arch/arm/boot/dts/armada-388-clearfog.dts -index 441958a39991..4fdfff9acf05 100644 --- a/arch/arm/boot/dts/armada-388-clearfog.dts +++ b/arch/arm/boot/dts/armada-388-clearfog.dts @@ -47,10 +47,8 @@ @@ -39,6 +37,3 @@ index 441958a39991..4fdfff9acf05 100644 }; port@6 { --- -cgit v1.2.1 - diff --git a/patch/kernel/mvebu-dev/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch b/patch/kernel/mvebu-dev/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch index 5a2d86240..da5c35ff0 100644 --- a/patch/kernel/mvebu-dev/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch +++ b/patch/kernel/mvebu-dev/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch @@ -25,11 +25,9 @@ Signed-off-by: Russell King drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -diff --git a/drivers/cpuidle/cpuidle-mvebu-v7.c b/drivers/cpuidle/cpuidle-mvebu-v7.c -index 01a856971f05..18ded9e7cb34 100644 --- a/drivers/cpuidle/cpuidle-mvebu-v7.c +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c -@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cpuidle_device *dev, +@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp ret = mvebu_v7_cpu_suspend(deepidle); cpu_pm_exit(); @@ -43,6 +41,3 @@ index 01a856971f05..18ded9e7cb34 100644 return index; } --- -2.1.0 - diff --git a/patch/kernel/mvebu-dev/40-pci-add-irq-change-handler-sspl.patch b/patch/kernel/mvebu-dev/40-pci-add-irq-change-handler-sspl.patch index 12c4763a1..0726339c3 100644 --- a/patch/kernel/mvebu-dev/40-pci-add-irq-change-handler-sspl.patch +++ b/patch/kernel/mvebu-dev/40-pci-add-irq-change-handler-sspl.patch @@ -12,11 +12,9 @@ Signed-off-by: Russell King drivers/pci/pcie/portdrv_core.c | 2 + 5 files changed, 180 insertions(+), 34 deletions(-) -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index c39978b750ec..b4fb20835573 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c -@@ -53,7 +53,14 @@ +@@ -53,13 +53,26 @@ PCIE_CONF_ADDR_EN) #define PCIE_CONF_DATA_OFF 0x18fc #define PCIE_MASK_OFF 0x1910 @@ -31,7 +29,19 @@ index c39978b750ec..b4fb20835573 100644 #define PCIE_CTRL_OFF 0x1a00 #define PCIE_CTRL_X1_MODE 0x0001 #define PCIE_STAT_OFF 0x1a04 -@@ -432,6 +439,54 @@ static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port) + #define PCIE_STAT_BUS 0xff00 + #define PCIE_STAT_DEV 0x1f0000 + #define PCIE_STAT_LINK_DOWN BIT(0) ++#define PCIE_SSPL 0x1a0c ++#define PCIE_SSPL_MSGEN BIT(14) ++#define PCIE_SSPL_SPLS(x) (((x) & 3) << 8) ++#define PCIE_SSPL_SPLS_VAL(x) (((x) >> 8) & 3) ++#define PCIE_SSPL_SPLV(x) ((x) & 0xff) ++#define PCIE_SSPL_SPLV_VAL(x) ((x) & 0xff) + #define PCIE_RC_RTSTA 0x1a14 + #define PCIE_DEBUG_CTRL 0x1a60 + #define PCIE_DEBUG_SOFT_RESET BIT(20) +@@ -432,6 +445,54 @@ static void mvebu_pcie_handle_membase_ch &port->memwin); } @@ -86,7 +96,22 @@ index c39978b750ec..b4fb20835573 100644 static pci_bridge_emul_read_status_t mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, int reg, u32 *value) -@@ -477,6 +532,30 @@ mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, +@@ -462,6 +523,14 @@ mvebu_pci_bridge_emul_pcie_conf_read(str + *value = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); + break; + ++ case PCI_EXP_SLTCAP: ++ { ++ u32 tmp = mvebu_readl(port, PCIE_SSPL); ++ *value = PCIE_SSPL_SPLS_VAL(tmp) << 15 | ++ PCIE_SSPL_SPLV_VAL(tmp) << 7; ++ break; ++ } ++ + case PCI_EXP_SLTCTL: + *value = PCI_EXP_SLTSTA_PDS << 16; + break; +@@ -477,6 +546,30 @@ mvebu_pci_bridge_emul_pcie_conf_read(str return PCI_BRIDGE_EMUL_HANDLED; } @@ -117,7 +142,7 @@ index c39978b750ec..b4fb20835573 100644 static void mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, int reg, u32 old, u32 new, u32 mask) -@@ -494,7 +573,8 @@ mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, +@@ -494,7 +587,8 @@ mvebu_pci_bridge_emul_base_conf_write(st mvebu_pcie_handle_iobase_change(port); if ((old ^ new) & PCI_COMMAND_MEMORY) mvebu_pcie_handle_membase_change(port); @@ -127,7 +152,7 @@ index c39978b750ec..b4fb20835573 100644 break; } -@@ -517,6 +597,11 @@ mvebu_pci_bridge_emul_base_conf_write(struct pci_bridge_emul *bridge, +@@ -517,6 +611,11 @@ mvebu_pci_bridge_emul_base_conf_write(st mvebu_pcie_handle_iobase_change(port); break; @@ -139,7 +164,7 @@ index c39978b750ec..b4fb20835573 100644 case PCI_PRIMARY_BUS: mvebu_pcie_set_local_bus_nr(port, conf->secondary_bus); break; -@@ -534,6 +619,10 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, +@@ -534,6 +633,10 @@ mvebu_pci_bridge_emul_pcie_conf_write(st switch (reg) { case PCI_EXP_DEVCTL: @@ -150,7 +175,19 @@ index c39978b750ec..b4fb20835573 100644 /* * Armada370 data says these bits must always * be zero when in root complex mode. -@@ -559,6 +648,25 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, +@@ -556,9 +659,37 @@ mvebu_pci_bridge_emul_pcie_conf_write(st + mvebu_writel(port, new, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); + break; + ++ case PCI_EXP_SLTCAP: ++ { ++ u32 sspl = PCIE_SSPL_SPLV((new & PCI_EXP_SLTCAP_SPLV) >> 7) | ++ PCIE_SSPL_SPLS((new & PCI_EXP_SLTCAP_SPLS) >> 15) | ++ PCIE_SSPL_MSGEN; ++ mvebu_writel(port, sspl, PCIE_SSPL); ++ break; ++ } ++ case PCI_EXP_RTSTA: mvebu_writel(port, new, PCIE_RC_RTSTA); break; @@ -176,7 +213,7 @@ index c39978b750ec..b4fb20835573 100644 } } -@@ -566,6 +674,8 @@ static struct pci_bridge_emul_ops mvebu_pci_bridge_emul_ops = { +@@ -566,6 +697,8 @@ static struct pci_bridge_emul_ops mvebu_ .write_base = mvebu_pci_bridge_emul_base_conf_write, .read_pcie = mvebu_pci_bridge_emul_pcie_conf_read, .write_pcie = mvebu_pci_bridge_emul_pcie_conf_write, @@ -185,11 +222,9 @@ index c39978b750ec..b4fb20835573 100644 }; /* -diff --git a/drivers/pci/pci-bridge-emul.c b/drivers/pci/pci-bridge-emul.c -index ccf26d12ec61..c124b7ff1e22 100644 --- a/drivers/pci/pci-bridge-emul.c +++ b/drivers/pci/pci-bridge-emul.c -@@ -151,6 +151,7 @@ static const struct pci_bridge_reg_behavior pci_regs_behavior[] = { +@@ -151,6 +151,7 @@ static const struct pci_bridge_reg_behav .rw = (GENMASK(7, 0) | ((PCI_BRIDGE_CTL_PARITY | PCI_BRIDGE_CTL_SERR | @@ -197,7 +232,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 PCI_BRIDGE_CTL_ISA | PCI_BRIDGE_CTL_VGA | PCI_BRIDGE_CTL_MASTER_ABORT | -@@ -264,6 +265,7 @@ int pci_bridge_emul_init(struct pci_bridge_emul *bridge, +@@ -264,6 +265,7 @@ int pci_bridge_emul_init(struct pci_brid bridge->conf.header_type = PCI_HEADER_TYPE_BRIDGE; bridge->conf.cache_line_size = 0x10; bridge->conf.status = cpu_to_le16(PCI_STATUS_CAP_LIST); @@ -205,7 +240,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 bridge->pci_regs_behavior = kmemdup(pci_regs_behavior, sizeof(pci_regs_behavior), GFP_KERNEL); -@@ -321,25 +323,26 @@ int pci_bridge_emul_conf_read(struct pci_bridge_emul *bridge, int where, +@@ -321,25 +323,26 @@ int pci_bridge_emul_conf_read(struct pci __le32 *cfgspace; const struct pci_bridge_reg_behavior *behavior; @@ -244,7 +279,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 } if (read_op) -@@ -347,15 +350,20 @@ int pci_bridge_emul_conf_read(struct pci_bridge_emul *bridge, int where, +@@ -347,15 +350,20 @@ int pci_bridge_emul_conf_read(struct pci else ret = PCI_BRIDGE_EMUL_NOT_HANDLED; @@ -269,7 +304,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 if (size == 1) *value = (*value >> (8 * (where & 3))) & 0xff; -@@ -382,12 +390,6 @@ int pci_bridge_emul_conf_write(struct pci_bridge_emul *bridge, int where, +@@ -382,12 +390,6 @@ int pci_bridge_emul_conf_write(struct pc __le32 *cfgspace; const struct pci_bridge_reg_behavior *behavior; @@ -282,7 +317,7 @@ index ccf26d12ec61..c124b7ff1e22 100644 shift = (where & 0x3) * 8; if (size == 4) -@@ -403,27 +405,42 @@ int pci_bridge_emul_conf_write(struct pci_bridge_emul *bridge, int where, +@@ -403,27 +405,42 @@ int pci_bridge_emul_conf_write(struct pc if (ret != PCIBIOS_SUCCESSFUL) return ret; @@ -336,8 +371,6 @@ index ccf26d12ec61..c124b7ff1e22 100644 if (write_op) write_op(bridge, reg, old, new, mask); -diff --git a/drivers/pci/pci-bridge-emul.h b/drivers/pci/pci-bridge-emul.h -index b31883022a8e..5f64560aaa26 100644 --- a/drivers/pci/pci-bridge-emul.h +++ b/drivers/pci/pci-bridge-emul.h @@ -90,6 +90,14 @@ struct pci_bridge_emul_ops { @@ -369,11 +402,9 @@ index b31883022a8e..5f64560aaa26 100644 }; struct pci_bridge_reg_behavior; -diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c -index 253c30cc1967..3edbe276e626 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c -@@ -576,6 +576,8 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) +@@ -576,6 +576,8 @@ static void pcie_aspm_cap_init(struct pc */ pcie_get_aspm_reg(parent, &upreg); pcie_get_aspm_reg(child, &dwreg); @@ -382,11 +413,9 @@ index 253c30cc1967..3edbe276e626 100644 /* * Setup L0s state -diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c -index 50a9522ab07d..105ebc7a7987 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c -@@ -325,6 +325,7 @@ int pcie_port_device_register(struct pci_dev *dev) +@@ -325,6 +325,7 @@ int pcie_port_device_register(struct pci /* Get and check PCI Express port services */ capabilities = get_port_device_capability(dev); @@ -394,7 +423,7 @@ index 50a9522ab07d..105ebc7a7987 100644 if (!capabilities) return 0; -@@ -337,6 +338,7 @@ int pcie_port_device_register(struct pci_dev *dev) +@@ -337,6 +338,7 @@ int pcie_port_device_register(struct pci * if that is to be used. */ status = pcie_init_service_irqs(dev, irqs, capabilities); @@ -402,65 +431,3 @@ index 50a9522ab07d..105ebc7a7987 100644 if (status) { capabilities &= PCIE_PORT_SERVICE_HP; if (!capabilities) --- -cgit v1.2.1 -From 9b1aafd0f620776f8d15f3ee872d3d5a69a468db Mon Sep 17 00:00:00 2001 -From: Russell King -Date: Tue, 29 Nov 2016 10:13:48 +0000 -Subject: implement slot capabilities (SSPL) - ---- - drivers/pci/controller/pci-mvebu.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index b4fb20835573..060226d11588 100644 ---- a/drivers/pci/controller/pci-mvebu.c -+++ b/drivers/pci/controller/pci-mvebu.c -@@ -67,6 +67,12 @@ - #define PCIE_STAT_BUS 0xff00 - #define PCIE_STAT_DEV 0x1f0000 - #define PCIE_STAT_LINK_DOWN BIT(0) -+#define PCIE_SSPL 0x1a0c -+#define PCIE_SSPL_MSGEN BIT(14) -+#define PCIE_SSPL_SPLS(x) (((x) & 3) << 8) -+#define PCIE_SSPL_SPLS_VAL(x) (((x) >> 8) & 3) -+#define PCIE_SSPL_SPLV(x) ((x) & 0xff) -+#define PCIE_SSPL_SPLV_VAL(x) ((x) & 0xff) - #define PCIE_RC_RTSTA 0x1a14 - #define PCIE_DEBUG_CTRL 0x1a60 - #define PCIE_DEBUG_SOFT_RESET BIT(20) -@@ -517,6 +523,14 @@ mvebu_pci_bridge_emul_pcie_conf_read(struct pci_bridge_emul *bridge, - *value = mvebu_readl(port, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); - break; - -+ case PCI_EXP_SLTCAP: -+ { -+ u32 tmp = mvebu_readl(port, PCIE_SSPL); -+ *value = PCIE_SSPL_SPLS_VAL(tmp) << 15 | -+ PCIE_SSPL_SPLV_VAL(tmp) << 7; -+ break; -+ } -+ - case PCI_EXP_SLTCTL: - *value = PCI_EXP_SLTSTA_PDS << 16; - break; -@@ -645,6 +659,15 @@ mvebu_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, - mvebu_writel(port, new, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); - break; - -+ case PCI_EXP_SLTCAP: -+ { -+ u32 sspl = PCIE_SSPL_SPLV((new & PCI_EXP_SLTCAP_SPLV) >> 7) | -+ PCIE_SSPL_SPLS((new & PCI_EXP_SLTCAP_SPLS) >> 15) | -+ PCIE_SSPL_MSGEN; -+ mvebu_writel(port, sspl, PCIE_SSPL); -+ break; -+ } -+ - case PCI_EXP_RTSTA: - mvebu_writel(port, new, PCIE_RC_RTSTA); - break; --- -cgit v1.2.1 - diff --git a/patch/kernel/mvebu-dev/402-sfp-display-SFP-module-information.patch b/patch/kernel/mvebu-dev/402-sfp-display-SFP-module-information.patch index 4ba67130e..ca117290e 100644 --- a/patch/kernel/mvebu-dev/402-sfp-display-SFP-module-information.patch +++ b/patch/kernel/mvebu-dev/402-sfp-display-SFP-module-information.patch @@ -7,7 +7,7 @@ Signed-off-by: Russell King --- --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -531,6 +531,185 @@ static unsigned int sfp_check(void *buf, size_t len) +@@ -531,6 +531,185 @@ static unsigned int sfp_check(void *buf, return check; } @@ -193,7 +193,7 @@ Signed-off-by: Russell King /* hwmon */ #if IS_ENABLED(CONFIG_HWMON) static umode_t sfp_hwmon_is_visible(const void *data, -@@ -1670,6 +1849,7 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1670,6 +1849,7 @@ static int sfp_sm_mod_probe(struct sfp * struct sfp_eeprom_id id; bool cotsworks_sfbg; bool cotsworks; @@ -201,7 +201,7 @@ Signed-off-by: Russell King u8 check; int ret; -@@ -1744,6 +1926,73 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1744,6 +1924,73 @@ static int sfp_sm_mod_probe(struct sfp * (int)sizeof(id.ext.vendor_sn), id.ext.vendor_sn, (int)sizeof(id.ext.datecode), id.ext.datecode); diff --git a/patch/kernel/mvebu-dev/91-01-libata-add-ledtrig-support.patch b/patch/kernel/mvebu-dev/91-01-libata-add-ledtrig-support.patch index 623e48085..a52e712d8 100644 --- a/patch/kernel/mvebu-dev/91-01-libata-add-ledtrig-support.patch +++ b/patch/kernel/mvebu-dev/91-01-libata-add-ledtrig-support.patch @@ -106,11 +106,11 @@ Signed-off-by: Daniel Golle + for (i = 0; i < host->n_ports; i++) { + if (unlikely(!host->ports[i]->ledtrig)) + continue; -+ + + snprintf(host->ports[i]->ledtrig_name, + sizeof(host->ports[i]->ledtrig_name), "ata%u", + host->ports[i]->print_id); - ++ + host->ports[i]->ledtrig->name = host->ports[i]->ledtrig_name; + + if (led_trigger_register(host->ports[i]->ledtrig)) { diff --git a/patch/kernel/mvebu-dev/91-02-Enable-ATA-port-LED-trigger.patch b/patch/kernel/mvebu-dev/91-02-Enable-ATA-port-LED-trigger.patch index dd83ef9f3..10680f98c 100644 --- a/patch/kernel/mvebu-dev/91-02-Enable-ATA-port-LED-trigger.patch +++ b/patch/kernel/mvebu-dev/91-02-Enable-ATA-port-LED-trigger.patch @@ -8,11 +8,9 @@ Subject: Enable ATA port LED trigger arch/arm/mach-mvebu/Kconfig | 1 + 2 files changed, 2 insertions(+) -diff --git a/arch/arm/configs/mvebu_v7_defconfig b/arch/arm/configs/mvebu_v7_defconfig -index cf363ab..19449d3 100644 --- a/arch/arm/configs/mvebu_v7_defconfig +++ b/arch/arm/configs/mvebu_v7_defconfig -@@ -58,6 +58,7 @@ CONFIG_MTD_SPI_NOR=y +@@ -58,6 +58,7 @@ CONFIG_MTD_UBI=y CONFIG_EEPROM_AT24=y CONFIG_BLK_DEV_SD=y CONFIG_ATA=y @@ -20,8 +18,6 @@ index cf363ab..19449d3 100644 CONFIG_SATA_AHCI=y CONFIG_AHCI_MVEBU=y CONFIG_SATA_MV=y -diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig -index 053ea9d..aa1f389 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -56,6 +56,7 @@ config MACH_ARMADA_375 @@ -32,6 +28,3 @@ index 053ea9d..aa1f389 100644 select ARM_ERRATA_720789 select PL310_ERRATA_753970 select ARM_GIC --- -2.7.4 - diff --git a/patch/kernel/mvebu-dev/92-mvebu-gpio-add_wake_on_gpio_support.patch b/patch/kernel/mvebu-dev/92-mvebu-gpio-add_wake_on_gpio_support.patch index 79afc4157..a06b7973b 100644 --- a/patch/kernel/mvebu-dev/92-mvebu-gpio-add_wake_on_gpio_support.patch +++ b/patch/kernel/mvebu-dev/92-mvebu-gpio-add_wake_on_gpio_support.patch @@ -17,11 +17,10 @@ struct irq_domain *domain; int soc_variant; -@@ -600,6 +601,33 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc) - chained_irq_exit(chip, desc); +@@ -601,6 +602,33 @@ static void mvebu_gpio_irq_handler(struc } -+/* + /* + * Set interrupt number "irq" in the GPIO as a wake-up source. + * While system is running, all registered GPIO interrupts need to have + * wake-up enabled. When system is suspended, only selected GPIO interrupts @@ -48,10 +47,11 @@ + return 0; +} + - /* ++/* * Functions implementing the pwm_chip methods */ -@@ -1211,7 +1239,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) + static struct mvebu_pwm *to_mvebu_pwm(struct pwm_chip *chip) +@@ -1211,7 +1239,7 @@ static int mvebu_gpio_probe(struct platf err = irq_alloc_domain_generic_chips( mvchip->domain, ngpios, 2, np->name, handle_level_irq, @@ -60,7 +60,7 @@ if (err) { dev_err(&pdev->dev, "couldn't allocate irq chips %s (DT).\n", mvchip->chip.label); -@@ -1229,6 +1257,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1229,6 +1257,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_level_irq_mask; ct->chip.irq_unmask = mvebu_gpio_level_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -69,7 +69,7 @@ ct->chip.name = mvchip->chip.label; ct = &gc->chip_types[1]; -@@ -1237,6 +1267,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1237,6 +1267,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_edge_irq_mask; ct->chip.irq_unmask = mvebu_gpio_edge_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -78,7 +78,7 @@ ct->handler = handle_edge_irq; ct->chip.name = mvchip->chip.label; -@@ -1252,6 +1284,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1252,6 +1284,7 @@ static int mvebu_gpio_probe(struct platf continue; irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler, mvchip); diff --git a/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch b/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch index 1e7f337bf..a04bb0b1d 100644 --- a/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch +++ b/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment-2.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -662,39 +662,81 @@ static int mvebu_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) +@@ -641,39 +641,81 @@ static int mvebu_pwm_request(struct pwm_ struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; struct gpio_desc *desc; @@ -97,7 +97,7 @@ } static void mvebu_pwm_get_state(struct pwm_chip *chip, -@@ -749,13 +791,15 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -721,19 +763,21 @@ static void mvebu_pwm_get_state(struct p else state->enabled = false; @@ -114,8 +114,6 @@ struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; unsigned long long val; unsigned long flags; -@@ -761,7 +805,7 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, - unsigned long flags; unsigned int on, off; - val = (unsigned long long) mvpwm->clk_rate * state->duty_cycle; diff --git a/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch b/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch index e2d0abfec..56e24b00b 100644 --- a/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch +++ b/patch/kernel/mvebu-dev/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch @@ -46,7 +46,7 @@ struct mvebu_gpio_chip { struct gpio_chip chip; struct regmap *regs; -@@ -283,12 +304,12 @@ mvebu_gpio_write_level_mask(struct mvebu_gpio_chip *mvchip, u32 val) +@@ -283,12 +304,12 @@ mvebu_gpio_write_level_mask(struct mvebu * Functions returning addresses of individual registers for a given * PWM controller. */ @@ -61,7 +61,7 @@ { return mvpwm->membase + PWM_BLINK_OFF_DURATION_OFF; } -@@ -681,17 +702,24 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -723,17 +744,24 @@ static void mvebu_pwm_get_state(struct p struct pwm_state *state) { struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); @@ -89,7 +89,7 @@ if (val > UINT_MAX) state->duty_cycle = UINT_MAX; else if (val) -@@ -700,9 +728,9 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -742,9 +770,9 @@ static void mvebu_pwm_get_state(struct p state->duty_cycle = 1; val = (unsigned long long) @@ -101,7 +101,7 @@ if (val < state->duty_cycle) { state->period = 1; } else { -@@ -742,7 +770,7 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -786,7 +814,7 @@ static int mvebu_pwm_apply(struct pwm_ch else on = 1; @@ -110,7 +110,7 @@ (state->period - state->duty_cycle); do_div(val, NSEC_PER_SEC); if (val > UINT_MAX) -@@ -752,16 +780,16 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -796,16 +824,16 @@ static int mvebu_pwm_apply(struct pwm_ch else off = 1; @@ -131,7 +131,7 @@ return 0; } -@@ -780,10 +808,10 @@ static void __maybe_unused mvebu_pwm_suspend(struct mvebu_gpio_chip *mvchip) +@@ -824,10 +852,10 @@ static void __maybe_unused mvebu_pwm_sus regmap_read(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, &mvpwm->blink_select); @@ -146,7 +146,7 @@ } static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) -@@ -792,10 +820,10 @@ static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) +@@ -836,10 +864,10 @@ static void __maybe_unused mvebu_pwm_res regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, mvpwm->blink_select); @@ -161,7 +161,7 @@ } static int mvebu_pwm_probe(struct platform_device *pdev, -@@ -805,6 +833,7 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -849,6 +877,7 @@ static int mvebu_pwm_probe(struct platfo struct device *dev = &pdev->dev; struct mvebu_pwm *mvpwm; u32 set; @@ -169,7 +169,7 @@ if (!of_device_is_compatible(mvchip->chip.of_node, "marvell,armada-370-gpio")) -@@ -826,12 +855,15 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -870,12 +899,15 @@ static int mvebu_pwm_probe(struct platfo * Use set A for lines of GPIO chip with id 0, B for GPIO chip * with id 1. Don't allow further GPIO chips to be used for PWM. */ @@ -188,20 +188,21 @@ regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, set); -@@ -841,15 +873,13 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -885,15 +917,13 @@ static int mvebu_pwm_probe(struct platfo mvchip->mvpwm = mvpwm; mvpwm->mvchip = mvchip; - mvpwm->membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); - if (IS_ERR(mvpwm->membase)) - return PTR_ERR(mvpwm->membase); -+ mvpwm->controller.membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); -+ if (IS_ERR(mvpwm->controller.membase)) -+ return PTR_ERR(mvpwm->controller.membase); - +- - mvpwm->clk_rate = clk_get_rate(mvchip->clk); - if (!mvpwm->clk_rate) { - dev_err(dev, "failed to get clock rate\n"); ++ mvpwm->controller.membase = devm_platform_ioremap_resource_byname(pdev, "pwm"); ++ if (IS_ERR(mvpwm->controller.membase)) ++ return PTR_ERR(mvpwm->controller.membase); ++ + mvpwm->controller.clk_rate = clk_get_rate(mvchip->clk); + if (!mvpwm->controller.clk_rate) return -EINVAL; @@ -209,7 +210,7 @@ mvpwm->chip.dev = dev; mvpwm->chip.ops = &mvebu_pwm_ops; -@@ -862,7 +892,9 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -906,7 +936,9 @@ static int mvebu_pwm_probe(struct platfo */ mvpwm->chip.base = -1; diff --git a/patch/kernel/mvebu-dev/94-helios4-dts-add-wake-on-lan-support.patch b/patch/kernel/mvebu-dev/94-helios4-dts-add-wake-on-lan-support.patch index ecb05e5f6..b3daf09f9 100644 --- a/patch/kernel/mvebu-dev/94-helios4-dts-add-wake-on-lan-support.patch +++ b/patch/kernel/mvebu-dev/94-helios4-dts-add-wake-on-lan-support.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/armada-388-helios4.dts +++ b/arch/arm/boot/dts/armada-388-helios4.dts -@@ -96,6 +96,18 @@ +@@ -84,6 +84,18 @@ }; }; diff --git a/patch/kernel/mvebu-dev/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch b/patch/kernel/mvebu-dev/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch index a1cb0804f..1032d30be 100644 --- a/patch/kernel/mvebu-dev/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch +++ b/patch/kernel/mvebu-dev/95-helios4-dts-assign-pinctrl-to-fan-and-led.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/armada-388-helios4.dts +++ b/arch/arm/boot/dts/armada-388-helios4.dts -@@ -70,6 +70,9 @@ reg_5p0v_usb: regulator-5v-usb { +@@ -70,6 +70,9 @@ system-leds { compatible = "gpio-leds"; @@ -10,7 +10,7 @@ status-led { label = "helios4:green:status"; gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; -@@ -110,6 +113,9 @@ wol { +@@ -98,6 +101,9 @@ io-leds { compatible = "gpio-leds"; @@ -20,7 +20,7 @@ sata1-led { label = "helios4:green:ata1"; gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; -@@ -145,11 +151,15 @@ usb-led { +@@ -133,11 +139,15 @@ fan1: j10-pwm { compatible = "pwm-fan"; pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ @@ -36,7 +36,7 @@ }; usb2_phy: usb2-phy { -@@ -310,16 +320,23 @@ helios_sdhci_pins: helios-sdhci-pins { +@@ -298,16 +308,23 @@ "mpp39", "mpp40"; marvell,function = "sd0"; }; diff --git a/patch/kernel/mvebu-dev/general-increasing_DMA_block_memory_allocation_to_2048.patch b/patch/kernel/mvebu-dev/general-increasing_DMA_block_memory_allocation_to_2048.patch index 6f64f8df9..ff11b4d98 100644 --- a/patch/kernel/mvebu-dev/general-increasing_DMA_block_memory_allocation_to_2048.patch +++ b/patch/kernel/mvebu-dev/general-increasing_DMA_block_memory_allocation_to_2048.patch @@ -1,6 +1,6 @@ --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c -@@ -314,7 +314,7 @@ static void *__alloc_remap_buffer(struct device *dev, size_t size, gfp_t gfp, +@@ -314,7 +314,7 @@ static void *__alloc_remap_buffer(struct pgprot_t prot, struct page **ret_page, const void *caller, bool want_vaddr); diff --git a/patch/kernel/mvebu-dev/omit_VFP_emulation_exceptions_kernel_mode.patch b/patch/kernel/mvebu-dev/omit_VFP_emulation_exceptions_kernel_mode.patch index c15d53746..e776c3526 100644 --- a/patch/kernel/mvebu-dev/omit_VFP_emulation_exceptions_kernel_mode.patch +++ b/patch/kernel/mvebu-dev/omit_VFP_emulation_exceptions_kernel_mode.patch @@ -32,8 +32,6 @@ Reviewed-by: Linus Walleij <(address hidden)> Reviewed-by: Nick Desaulniers <(address hidden)> --- -diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index c4220f51fcf3..0ea8529a4872 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -252,31 +252,10 @@ __und_svc: @@ -70,8 +68,6 @@ index c4220f51fcf3..0ea8529a4872 100644 mov r0, sp @ struct pt_regs *regs bl __und_fault -diff --git a/arch/arm/vfp/vfphw.S b/arch/arm/vfp/vfphw.S -index 4fcff9f59947..d5837bf05a9a 100644 --- a/arch/arm/vfp/vfphw.S +++ b/arch/arm/vfp/vfphw.S @@ -79,11 +79,6 @@ ENTRY(vfp_support_entry) @@ -86,8 +82,6 @@ index 4fcff9f59947..d5837bf05a9a 100644 VFPFMRX r1, FPEXC @ Is the VFP enabled? DBGSTR1 "fpexc %08x", r1 tst r1, #FPEXC_EN -diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c -index 8c9e7f9f0277..c3b6451c18bd 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c @@ -23,6 +23,7 @@ @@ -98,7 +92,7 @@ index 8c9e7f9f0277..c3b6451c18bd 100644 #include #include "vfpinstr.h" -@@ -642,7 +643,9 @@ static int vfp_starting_cpu(unsigned int unused) +@@ -642,7 +643,9 @@ static int vfp_starting_cpu(unsigned int return 0; } diff --git a/patch/kernel/mvebu-dev/unlock_atheros_regulatory_restrictions.patch b/patch/kernel/mvebu-dev/unlock_atheros_regulatory_restrictions.patch index bda0744c7..7e57c379a 100644 --- a/patch/kernel/mvebu-dev/unlock_atheros_regulatory_restrictions.patch +++ b/patch/kernel/mvebu-dev/unlock_atheros_regulatory_restrictions.patch @@ -1,6 +1,6 @@ --- a/drivers/net/wireless/ath/regd.c +++ b/drivers/net/wireless/ath/regd.c -@@ -50,12 +50,9 @@ static int __ath_regd_init(struct ath_regulatory *reg); +@@ -50,12 +50,9 @@ static int __ath_regd_init(struct ath_re #define ATH_5GHZ_5725_5850 REG_RULE(5725-10, 5850+10, 80, 0, 30,\ NL80211_RRF_NO_IR) @@ -15,7 +15,7 @@ /* This one skips what we call "mid band" */ #define ATH_5GHZ_NO_MIDBAND ATH_5GHZ_5150_5350, \ -@@ -77,9 +74,8 @@ static const struct ieee80211_regdomain ath_world_regdom_63_65 = { +@@ -77,9 +74,8 @@ static const struct ieee80211_regdomain .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { @@ -27,7 +27,7 @@ } }; -@@ -88,8 +84,8 @@ static const struct ieee80211_regdomain ath_world_regdom_64 = { +@@ -88,8 +84,8 @@ static const struct ieee80211_regdomain .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { @@ -38,7 +38,7 @@ } }; -@@ -98,7 +94,7 @@ static const struct ieee80211_regdomain ath_world_regdom_66_69 = { +@@ -98,7 +94,7 @@ static const struct ieee80211_regdomain .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { @@ -47,7 +47,7 @@ ATH_5GHZ_ALL, } }; -@@ -108,8 +104,7 @@ static const struct ieee80211_regdomain ath_world_regdom_67_68_6A_6C = { +@@ -108,8 +104,7 @@ static const struct ieee80211_regdomain .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { @@ -57,7 +57,7 @@ ATH_5GHZ_ALL, } }; -@@ -258,9 +253,7 @@ static bool ath_is_radar_freq(u16 center_freq, +@@ -258,9 +253,7 @@ static bool ath_is_radar_freq(u16 center struct ath_regulatory *reg) { diff --git a/patch/kernel/mvebu-dev/use-1000BaseX-clearfog-switch.patch b/patch/kernel/mvebu-dev/use-1000BaseX-clearfog-switch.patch index abcf8b513..900d0f114 100644 --- a/patch/kernel/mvebu-dev/use-1000BaseX-clearfog-switch.patch +++ b/patch/kernel/mvebu-dev/use-1000BaseX-clearfog-switch.patch @@ -11,8 +11,6 @@ Signed-off-by: Russell King arch/arm/boot/dts/armada-388-clearfog.dts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) -diff --git a/arch/arm/boot/dts/armada-388-clearfog.dts b/arch/arm/boot/dts/armada-388-clearfog.dts -index 441958a39991..4fdfff9acf05 100644 --- a/arch/arm/boot/dts/armada-388-clearfog.dts +++ b/arch/arm/boot/dts/armada-388-clearfog.dts @@ -47,10 +47,8 @@ @@ -39,6 +37,3 @@ index 441958a39991..4fdfff9acf05 100644 }; port@6 { --- -cgit v1.2.1 - diff --git a/patch/kernel/mvebu-legacy/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch b/patch/kernel/mvebu-legacy/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch index 5a2d86240..da5c35ff0 100644 --- a/patch/kernel/mvebu-legacy/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch +++ b/patch/kernel/mvebu-legacy/0001-cpuidle-mvebu-indicate-failure-to-enter-deeper-sleep.patch @@ -25,11 +25,9 @@ Signed-off-by: Russell King drivers/cpuidle/cpuidle-mvebu-v7.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) -diff --git a/drivers/cpuidle/cpuidle-mvebu-v7.c b/drivers/cpuidle/cpuidle-mvebu-v7.c -index 01a856971f05..18ded9e7cb34 100644 --- a/drivers/cpuidle/cpuidle-mvebu-v7.c +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c -@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cpuidle_device *dev, +@@ -39,8 +39,12 @@ static int mvebu_v7_enter_idle(struct cp ret = mvebu_v7_cpu_suspend(deepidle); cpu_pm_exit(); @@ -43,6 +41,3 @@ index 01a856971f05..18ded9e7cb34 100644 return index; } --- -2.1.0 - diff --git a/patch/kernel/mvebu-legacy/0008-phy-marvell-88E1512-add-flow-control-support.patch b/patch/kernel/mvebu-legacy/0008-phy-marvell-88E1512-add-flow-control-support.patch index f503576d3..08bb882fa 100644 --- a/patch/kernel/mvebu-legacy/0008-phy-marvell-88E1512-add-flow-control-support.patch +++ b/patch/kernel/mvebu-legacy/0008-phy-marvell-88E1512-add-flow-control-support.patch @@ -14,19 +14,14 @@ Signed-off-by: Russell King drivers/net/phy/marvell.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c -index 5de8d5827536..9a5329bfd0fd 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c -@@ -1142,7 +1142,7 @@ static struct phy_driver marvell_drivers[] = { +@@ -2245,7 +2245,7 @@ static struct phy_driver marvell_drivers .phy_id = MARVELL_PHY_ID_88E1510, .phy_id_mask = MARVELL_PHY_ID_MASK, .name = "Marvell 88E1510", - .features = PHY_GBIT_FEATURES | SUPPORTED_FIBRE, + .features = PHY_GBIT_FEATURES | SUPPORTED_FIBRE | SUPPORTED_Pause, .flags = PHY_HAS_INTERRUPT, - .config_aneg = &m88e1510_config_aneg, - .read_status = &marvell_read_status, --- -2.1.0 - + .probe = &m88e1510_probe, + .config_init = &m88e1510_config_init, diff --git a/patch/kernel/mvebu-legacy/0040-updates-pci.patch b/patch/kernel/mvebu-legacy/0040-updates-pci.patch index 6823aeb62..9232c9936 100644 --- a/patch/kernel/mvebu-legacy/0040-updates-pci.patch +++ b/patch/kernel/mvebu-legacy/0040-updates-pci.patch @@ -1,8 +1,6 @@ -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index 53b79c5..7980be0 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c -@@ -51,7 +51,14 @@ +@@ -52,7 +52,14 @@ PCIE_CONF_ADDR_EN) #define PCIE_CONF_DATA_OFF 0x18fc #define PCIE_MASK_OFF 0x1910 @@ -17,10 +15,10 @@ index 53b79c5..7980be0 100644 #define PCIE_CTRL_OFF 0x1a00 #define PCIE_CTRL_X1_MODE 0x0001 #define PCIE_STAT_OFF 0x1a04 -@@ -455,6 +462,54 @@ static void mvebu_pcie_handle_membase_change(struct mvebu_pcie_port *port) - MVEBU_MBUS_NO_REMAP); +@@ -476,6 +483,54 @@ static void mvebu_pcie_handle_membase_ch + &port->memwin); } - + +static void mvebu_pcie_handle_irq_change(struct mvebu_pcie_port *port) +{ + u32 reg, old; @@ -72,27 +70,27 @@ index 53b79c5..7980be0 100644 /* * Initialize the configuration space of the PCI-to-PCI bridge * associated with the given PCIe interface. -@@ -478,6 +533,7 @@ static void mvebu_sw_pci_bridge_init(struct mvebu_pcie_port *port) - +@@ -499,6 +554,7 @@ static void mvebu_sw_pci_bridge_init(str + /* Add capabilities */ bridge->status = PCI_STATUS_CAP_LIST; + bridge->bridgectrl = PCI_BRIDGE_CTL_SERR; } - + /* -@@ -550,7 +606,7 @@ static int mvebu_sw_pci_bridge_read(struct mvebu_pcie_port *port, - +@@ -571,7 +627,7 @@ static int mvebu_sw_pci_bridge_read(stru + case PCI_INTERRUPT_LINE: /* LINE PIN MIN_GNT MAX_LAT */ - *value = 0; + *value = bridge->bridgectrl << 16; break; - + case PCISWCAP_EXP_LIST_ID: -@@ -599,6 +655,16 @@ static int mvebu_sw_pci_bridge_read(struct mvebu_pcie_port *port, +@@ -620,6 +676,16 @@ static int mvebu_sw_pci_bridge_read(stru *value = mvebu_readl(port, PCIE_RC_RTSTA); break; - + + case 0x100 ... 0x128: + *value = mvebu_readl(port, where & ~3); + break; @@ -106,26 +104,26 @@ index 53b79c5..7980be0 100644 /* PCIe requires the v2 fields to be hard-wired to zero */ case PCISWCAP_EXP_DEVCAP2: case PCISWCAP_EXP_DEVCTL2: -@@ -629,7 +695,7 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -650,7 +716,7 @@ static int mvebu_sw_pci_bridge_write(str unsigned int where, int size, u32 value) { struct mvebu_sw_pci_bridge *bridge = &port->bridge; - u32 mask, reg; + u32 mask, reg, old; int err; - + if (size == 4) -@@ -649,8 +715,7 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, - +@@ -670,8 +736,7 @@ static int mvebu_sw_pci_bridge_write(str + switch (where & ~3) { case PCI_COMMAND: - { - u32 old = bridge->command; + old = bridge->command; - + if (!mvebu_has_ioport(port)) value &= ~PCI_COMMAND_IO; -@@ -660,8 +725,9 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -681,8 +746,9 @@ static int mvebu_sw_pci_bridge_write(str mvebu_pcie_handle_iobase_change(port); if ((old ^ bridge->command) & PCI_COMMAND_MEMORY) mvebu_pcie_handle_membase_change(port); @@ -133,13 +131,13 @@ index 53b79c5..7980be0 100644 + mvebu_pcie_handle_irq_change(port); break; - } - + case PCI_BASE_ADDRESS_0 ... PCI_BASE_ADDRESS_1: bridge->bar[((where & ~3) - PCI_BASE_ADDRESS_0) / 4] = value; -@@ -690,6 +756,17 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -711,6 +777,17 @@ static int mvebu_sw_pci_bridge_write(str mvebu_pcie_handle_iobase_change(port); break; - + + case PCI_INTERRUPT_LINE: + value >>= 16; + old = bridge->bridgectrl; @@ -154,9 +152,9 @@ index 53b79c5..7980be0 100644 case PCI_PRIMARY_BUS: bridge->primary_bus = value & 0xff; bridge->secondary_bus = (value >> 8) & 0xff; -@@ -699,6 +776,14 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -720,6 +797,14 @@ static int mvebu_sw_pci_bridge_write(str break; - + case PCISWCAP_EXP_DEVCTL: + old = bridge->pcie_devctl; + bridge->pcie_devctl = value & (PCI_EXP_DEVCTL_FERE | @@ -169,10 +167,10 @@ index 53b79c5..7980be0 100644 /* * Armada370 data says these bits must always * be zero when in root complex mode. -@@ -739,10 +824,24 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -761,10 +846,24 @@ static int mvebu_sw_pci_bridge_write(str mvebu_writel(port, value, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); break; - + + case PCISWCAP_EXP_RTCTL: + old = bridge->pcie_rtctl; + bridge->pcie_rtctl = value & (PCI_EXP_RTCTL_SECEE | @@ -186,7 +184,7 @@ index 53b79c5..7980be0 100644 case PCISWCAP_EXP_RTSTA: mvebu_writel(port, value, PCIE_RC_RTSTA); break; - + + case 0x100 ... 0x128: + mvebu_writel(port, value, where & ~3); + break; diff --git a/patch/kernel/mvebu-legacy/0041-implement-slot-capabilities-SSPL.patch b/patch/kernel/mvebu-legacy/0041-implement-slot-capabilities-SSPL.patch index 799146fed..fe07ab732 100644 --- a/patch/kernel/mvebu-legacy/0041-implement-slot-capabilities-SSPL.patch +++ b/patch/kernel/mvebu-legacy/0041-implement-slot-capabilities-SSPL.patch @@ -7,11 +7,9 @@ Subject: [PATCH] implement slot capabilities (SSPL) drivers/pci/controller/pci-mvebu.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) -diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c -index 7980be0..0e9b820 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c -@@ -65,6 +65,12 @@ +@@ -66,6 +66,12 @@ #define PCIE_STAT_BUS 0xff00 #define PCIE_STAT_DEV 0x1f0000 #define PCIE_STAT_LINK_DOWN BIT(0) @@ -24,17 +22,17 @@ index 7980be0..0e9b820 100644 #define PCIE_RC_RTSTA 0x1a14 #define PCIE_DEBUG_CTRL 0x1a60 #define PCIE_DEBUG_SOFT_RESET BIT(20) -@@ -119,7 +125,6 @@ struct mvebu_sw_pci_bridge { +@@ -120,7 +126,6 @@ struct mvebu_sw_pci_bridge { u16 bridgectrl; - + /* PCI express capability */ - u32 pcie_sltcap; u16 pcie_devctl; u16 pcie_rtctl; }; -@@ -640,8 +645,12 @@ static int mvebu_sw_pci_bridge_read(struct mvebu_pcie_port *port, +@@ -661,8 +666,12 @@ static int mvebu_sw_pci_bridge_read(stru break; - + case PCISWCAP_EXP_SLTCAP: - *value = bridge->pcie_sltcap; + { @@ -43,13 +41,13 @@ index 7980be0..0e9b820 100644 + PCIE_SSPL_SPLV_VAL(tmp) << 7; break; + } - + case PCISWCAP_EXP_SLTCTL: *value = PCI_EXP_SLTSTA_PDS << 16; -@@ -824,6 +833,15 @@ static int mvebu_sw_pci_bridge_write(struct mvebu_pcie_port *port, +@@ -846,6 +855,15 @@ static int mvebu_sw_pci_bridge_write(str mvebu_writel(port, value, PCIE_CAP_PCIEXP + PCI_EXP_LNKCTL); break; - + + case PCISWCAP_EXP_SLTCAP: + { + u32 sspl = PCIE_SSPL_SPLV((value & PCI_EXP_SLTCAP_SPLV) >> 7) | @@ -62,6 +60,3 @@ index 7980be0..0e9b820 100644 case PCISWCAP_EXP_RTCTL: old = bridge->pcie_rtctl; bridge->pcie_rtctl = value & (PCI_EXP_RTCTL_SECEE | --- -1.9.1 - diff --git a/patch/kernel/mvebu-legacy/0044-gpio-report-all-gpios-in-debugfs.patch b/patch/kernel/mvebu-legacy/0044-gpio-report-all-gpios-in-debugfs.patch index b371da62f..f086729b8 100644 --- a/patch/kernel/mvebu-legacy/0044-gpio-report-all-gpios-in-debugfs.patch +++ b/patch/kernel/mvebu-legacy/0044-gpio-report-all-gpios-in-debugfs.patch @@ -8,11 +8,9 @@ Subject: [PATCH] gpio: report all gpios in debugfs drivers/gpio/gpiolib.c | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) -diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c -index d428b97..fe172b7 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -514,8 +514,8 @@ static void mvebu_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip) +@@ -855,8 +855,8 @@ static void mvebu_gpio_dbg_show(struct s bool is_out; label = gpiochip_is_requested(chip, i); @@ -21,13 +19,11 @@ index d428b97..fe172b7 100644 +// if (!label) +// continue; - msk = 1 << i; + msk = BIT(i); is_out = !(io_conf & msk); -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index b747c76..d61fb66 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c -@@ -2895,14 +2895,14 @@ static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev) +@@ -4357,14 +4357,14 @@ static void gpiolib_dbg_show(struct seq_ int is_irq; for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) { diff --git a/patch/kernel/mvebu-legacy/102-revert_i2c_delay.patch b/patch/kernel/mvebu-legacy/102-revert_i2c_delay.patch index 77583ac0b..930c0f949 100644 --- a/patch/kernel/mvebu-legacy/102-revert_i2c_delay.patch +++ b/patch/kernel/mvebu-legacy/102-revert_i2c_delay.patch @@ -1,6 +1,6 @@ --- a/arch/arm/boot/dts/armada-xp.dtsi +++ b/arch/arm/boot/dts/armada-xp.dtsi -@@ -274,12 +274,10 @@ +@@ -237,12 +237,10 @@ }; &i2c0 { diff --git a/patch/kernel/mvebu-legacy/402-sfp-display-SFP-module-information.patch b/patch/kernel/mvebu-legacy/402-sfp-display-SFP-module-information.patch index af1776bb7..ae77ddfe3 100644 --- a/patch/kernel/mvebu-legacy/402-sfp-display-SFP-module-information.patch +++ b/patch/kernel/mvebu-legacy/402-sfp-display-SFP-module-information.patch @@ -7,7 +7,7 @@ Signed-off-by: Russell King --- --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -403,6 +403,185 @@ static unsigned int sfp_check(void *buf, size_t len) +@@ -403,6 +403,185 @@ static unsigned int sfp_check(void *buf, return check; } @@ -193,7 +193,7 @@ Signed-off-by: Russell King /* hwmon */ #if IS_ENABLED(CONFIG_HWMON) static umode_t sfp_hwmon_is_visible(const void *data, -@@ -1388,6 +1567,7 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1376,6 +1555,7 @@ static int sfp_sm_mod_probe(struct sfp * /* SFP module inserted - read I2C data */ struct sfp_eeprom_id id; bool cotsworks; @@ -201,7 +201,7 @@ Signed-off-by: Russell King u8 check; int ret; -@@ -1450,6 +1630,73 @@ static int sfp_sm_mod_probe(struct sfp *sfp) +@@ -1438,6 +1618,73 @@ static int sfp_sm_mod_probe(struct sfp * (int)sizeof(id.ext.vendor_sn), id.ext.vendor_sn, (int)sizeof(id.ext.datecode), id.ext.datecode); diff --git a/patch/kernel/mvebu-legacy/412-ARM-dts-armada388-clearfog-emmc-on-clearfog-base.patch b/patch/kernel/mvebu-legacy/412-ARM-dts-armada388-clearfog-emmc-on-clearfog-base.patch index 222a32382..dd2bef7f6 100644 --- a/patch/kernel/mvebu-legacy/412-ARM-dts-armada388-clearfog-emmc-on-clearfog-base.patch +++ b/patch/kernel/mvebu-legacy/412-ARM-dts-armada388-clearfog-emmc-on-clearfog-base.patch @@ -12,7 +12,7 @@ Signed-off-by: Russell King --- a/arch/arm/boot/dts/armada-388-clearfog-base.dts +++ b/arch/arm/boot/dts/armada-388-clearfog-base.dts -@@ -48,6 +48,7 @@ +@@ -7,6 +7,7 @@ /dts-v1/; #include "armada-388-clearfog.dtsi" diff --git a/patch/kernel/mvebu-legacy/450-reprobe_sfp_phy.patch b/patch/kernel/mvebu-legacy/450-reprobe_sfp_phy.patch index e9a3d695d..833c515a1 100644 --- a/patch/kernel/mvebu-legacy/450-reprobe_sfp_phy.patch +++ b/patch/kernel/mvebu-legacy/450-reprobe_sfp_phy.patch @@ -13,7 +13,7 @@ Signed-off-by: Jonas Gorski --- a/drivers/net/phy/sfp.c +++ b/drivers/net/phy/sfp.c -@@ -488,7 +488,7 @@ static void sfp_sm_phy_detach(struct sfp +@@ -1374,7 +1374,7 @@ static void sfp_sm_phy_detach(struct sfp sfp->mod_phy = NULL; } @@ -22,7 +22,7 @@ Signed-off-by: Jonas Gorski { struct phy_device *phy; int err; -@@ -498,11 +498,11 @@ static void sfp_sm_probe_phy(struct sfp +@@ -1384,11 +1384,11 @@ static void sfp_sm_probe_phy(struct sfp phy = mdiobus_scan(sfp->i2c_mii, SFP_PHY_ADDR); if (phy == ERR_PTR(-ENODEV)) { dev_info(sfp->dev, "no PHY detected\n"); @@ -36,7 +36,7 @@ Signed-off-by: Jonas Gorski } err = sfp_add_phy(sfp->sfp_bus, phy); -@@ -510,11 +510,13 @@ static void sfp_sm_probe_phy(struct sfp +@@ -1396,11 +1396,13 @@ static void sfp_sm_probe_phy(struct sfp phy_device_remove(phy); phy_device_free(phy); dev_err(sfp->dev, "sfp_add_phy failed: %d\n", err); @@ -51,7 +51,7 @@ Signed-off-by: Jonas Gorski } static void sfp_sm_link_up(struct sfp *sfp) -@@ -560,14 +562,9 @@ static void sfp_sm_fault(struct sfp *sfp +@@ -1464,14 +1466,9 @@ static void sfp_sm_fault(struct sfp *sfp static void sfp_sm_mod_init(struct sfp *sfp) { @@ -68,7 +68,7 @@ Signed-off-by: Jonas Gorski /* Setting the serdes link mode is guesswork: there's no * field in the EEPROM which indicates what mode should -@@ -581,7 +578,22 @@ static void sfp_sm_mod_init(struct sfp * +@@ -1485,7 +1482,22 @@ static void sfp_sm_mod_init(struct sfp * if (sfp->id.base.e1000_base_t || sfp->id.base.e100_base_lx || sfp->id.base.e100_base_fx) @@ -91,4 +91,4 @@ Signed-off-by: Jonas Gorski + sfp_sm_next(sfp, SFP_S_TX_DISABLE, 0); } - static int sfp_sm_mod_probe(struct sfp *sfp) + static int sfp_sm_mod_hpower(struct sfp *sfp) diff --git a/patch/kernel/mvebu-legacy/91-01-libata-add-ledtrig-support.patch b/patch/kernel/mvebu-legacy/91-01-libata-add-ledtrig-support.patch index aec3fc7e9..24981ab1f 100644 --- a/patch/kernel/mvebu-legacy/91-01-libata-add-ledtrig-support.patch +++ b/patch/kernel/mvebu-legacy/91-01-libata-add-ledtrig-support.patch @@ -20,8 +20,6 @@ Signed-off-by: Daniel Golle include/linux/libata.h | 7 ++++++ 3 files changed, 79 insertions(+) -diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig -index 6aaa3f8..4e24b64 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig @@ -46,6 +46,22 @@ config ATA_VERBOSE_ERROR @@ -47,11 +45,9 @@ index 6aaa3f8..4e24b64 100644 config ATA_ACPI bool "ATA ACPI Support" depends on ACPI -diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c -index b0b77b6..1400f4d 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c -@@ -728,6 +728,7 @@ u64 ata_tf_read_block(struct ata_taskfile *tf, struct ata_device *dev) +@@ -730,6 +730,7 @@ u64 ata_tf_read_block(const struct ata_t return block; } @@ -59,7 +55,7 @@ index b0b77b6..1400f4d 100644 /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -4757,6 +4758,30 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words) +@@ -5112,6 +5113,30 @@ void swap_buf_le16(u16 *buf, unsigned in } /** @@ -90,7 +86,7 @@ index b0b77b6..1400f4d 100644 * ata_qc_new_init - Request an available ATA command, and initialize it * @dev: Device from whom we request an available command structure * @tag: tag -@@ -4780,6 +4805,9 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev, int tag) +@@ -5135,6 +5160,9 @@ struct ata_queued_cmd *ata_qc_new_init(s if (tag < 0) return NULL; } @@ -99,8 +95,8 @@ index b0b77b6..1400f4d 100644 +#endif qc = __ata_qc_from_tag(ap, tag); - qc->tag = tag; -@@ -5677,6 +5705,9 @@ struct ata_port *ata_port_alloc(struct ata_host *host) + qc->tag = qc->hw_tag = tag; +@@ -6071,6 +6099,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -110,7 +106,7 @@ index b0b77b6..1400f4d 100644 ata_sff_port_init(ap); return ap; -@@ -5698,6 +5729,12 @@ static void ata_host_release(struct device *gendev, void *res) +@@ -6106,6 +6137,12 @@ static void ata_host_release(struct kref kfree(ap->pmp_link); kfree(ap->slave_link); @@ -123,7 +119,7 @@ index b0b77b6..1400f4d 100644 kfree(ap); host->ports[i] = NULL; } -@@ -6145,6 +6182,25 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) +@@ -6570,6 +6607,25 @@ int ata_host_register(struct ata_host *h host->ports[i]->local_port_no = i + 1; } @@ -149,11 +145,9 @@ index b0b77b6..1400f4d 100644 /* Create associated sysfs transport objects */ for (i = 0; i < host->n_ports; i++) { rc = ata_tport_add(host->dev,host->ports[i]); -diff --git a/include/linux/libata.h b/include/linux/libata.h -index b20a275..50eeee3 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h -@@ -38,6 +38,7 @@ +@@ -39,6 +39,7 @@ #include #include #include @@ -161,7 +155,7 @@ index b20a275..50eeee3 100644 /* * Define if arch has non-standard setup. This is a _PCI_ standard -@@ -877,6 +878,12 @@ struct ata_port { +@@ -898,6 +899,12 @@ struct ata_port { #ifdef CONFIG_ATA_ACPI struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */ #endif @@ -174,6 +168,3 @@ index b20a275..50eeee3 100644 /* owned by EH */ u8 sector_buf[ATA_SECT_SIZE] ____cacheline_aligned; }; --- -2.7.4 - diff --git a/patch/kernel/mvebu-legacy/91-02-Enable-ATA-port-LED-trigger.patch b/patch/kernel/mvebu-legacy/91-02-Enable-ATA-port-LED-trigger.patch index 472d9b994..c3013e6f3 100644 --- a/patch/kernel/mvebu-legacy/91-02-Enable-ATA-port-LED-trigger.patch +++ b/patch/kernel/mvebu-legacy/91-02-Enable-ATA-port-LED-trigger.patch @@ -8,11 +8,9 @@ Subject: Enable ATA port LED trigger arch/arm/mach-mvebu/Kconfig | 1 + 2 files changed, 2 insertions(+) -diff --git a/arch/arm/configs/mvebu_v7_defconfig b/arch/arm/configs/mvebu_v7_defconfig -index cf363ab..19449d3 100644 --- a/arch/arm/configs/mvebu_v7_defconfig +++ b/arch/arm/configs/mvebu_v7_defconfig -@@ -61,6 +61,7 @@ CONFIG_MTD_SPI_NOR=y +@@ -59,6 +59,7 @@ CONFIG_MTD_UBI=y CONFIG_EEPROM_AT24=y CONFIG_BLK_DEV_SD=y CONFIG_ATA=y @@ -20,18 +18,13 @@ index cf363ab..19449d3 100644 CONFIG_SATA_AHCI=y CONFIG_AHCI_MVEBU=y CONFIG_SATA_MV=y -diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig -index 053ea9d..aa1f389 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig -@@ -57,6 +57,7 @@ config MACH_ARMADA_375 +@@ -56,6 +56,7 @@ config MACH_ARMADA_375 config MACH_ARMADA_38X bool "Marvell Armada 380/385 boards" depends on ARCH_MULTI_V7 + select ARCH_WANT_LIBATA_LEDS select ARM_ERRATA_720789 - select ARM_ERRATA_753970 + select PL310_ERRATA_753970 select ARM_GIC --- -2.7.4 - diff --git a/patch/kernel/mvebu-legacy/92-mvebu-gpio-add_wake_on_gpio_support.patch b/patch/kernel/mvebu-legacy/92-mvebu-gpio-add_wake_on_gpio_support.patch index aa3dcf5b9..656d5dd2d 100644 --- a/patch/kernel/mvebu-legacy/92-mvebu-gpio-add_wake_on_gpio_support.patch +++ b/patch/kernel/mvebu-legacy/92-mvebu-gpio-add_wake_on_gpio_support.patch @@ -1,16 +1,14 @@ -diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c -index 661c5a38f..a25d61d54 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -38,6 +38,7 @@ - #include - #include +@@ -39,6 +39,7 @@ + #include + #include #include +#include #include #include #include -@@ -133,7 +134,7 @@ struct mvebu_gpio_chip { +@@ -111,7 +112,7 @@ struct mvebu_gpio_chip { struct regmap *regs; u32 offset; struct regmap *percpu_regs; @@ -19,11 +17,10 @@ index 661c5a38f..a25d61d54 100644 struct irq_domain *domain; int soc_variant; -@@ -608,6 +609,33 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc) - chained_irq_exit(chip, desc); +@@ -587,6 +588,33 @@ static void mvebu_gpio_irq_handler(struc } -+/* + /* + * Set interrupt number "irq" in the GPIO as a wake-up source. + * While system is running, all registered GPIO interrupts need to have + * wake-up enabled. When system is suspended, only selected GPIO interrupts @@ -50,10 +47,11 @@ index 661c5a38f..a25d61d54 100644 + return 0; +} + - /* ++/* * Functions implementing the pwm_chip methods */ -@@ -1277,7 +1305,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) + static struct mvebu_pwm *to_mvebu_pwm(struct pwm_chip *chip) +@@ -1205,7 +1233,7 @@ static int mvebu_gpio_probe(struct platf err = irq_alloc_domain_generic_chips( mvchip->domain, ngpios, 2, np->name, handle_level_irq, @@ -62,7 +60,7 @@ index 661c5a38f..a25d61d54 100644 if (err) { dev_err(&pdev->dev, "couldn't allocate irq chips %s (DT).\n", mvchip->chip.label); -@@ -1295,6 +1323,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1223,6 +1251,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_level_irq_mask; ct->chip.irq_unmask = mvebu_gpio_level_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -71,7 +69,7 @@ index 661c5a38f..a25d61d54 100644 ct->chip.name = mvchip->chip.label; ct = &gc->chip_types[1]; -@@ -1303,6 +1333,8 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1231,6 +1261,8 @@ static int mvebu_gpio_probe(struct platf ct->chip.irq_mask = mvebu_gpio_edge_irq_mask; ct->chip.irq_unmask = mvebu_gpio_edge_irq_unmask; ct->chip.irq_set_type = mvebu_gpio_irq_set_type; @@ -80,7 +78,7 @@ index 661c5a38f..a25d61d54 100644 ct->handler = handle_edge_irq; ct->chip.name = mvchip->chip.label; -@@ -1318,6 +1350,7 @@ static int mvebu_gpio_probe(struct platform_device *pdev) +@@ -1246,6 +1278,7 @@ static int mvebu_gpio_probe(struct platf continue; irq_set_chained_handler_and_data(irq, mvebu_gpio_irq_handler, mvchip); diff --git a/patch/kernel/mvebu-legacy/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch b/patch/kernel/mvebu-legacy/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch index ca08921d8..626b77402 100644 --- a/patch/kernel/mvebu-legacy/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch +++ b/patch/kernel/mvebu-legacy/92-mvebu-gpio-remove-hardcoded-timer-assignment.patch @@ -1,8 +1,6 @@ -diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c -index adc768f908f1..a2bd264ee92c 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c -@@ -92,20 +92,41 @@ +@@ -93,20 +93,41 @@ #define MVEBU_MAX_GPIO_PER_BANK 32 @@ -48,7 +46,7 @@ index adc768f908f1..a2bd264ee92c 100644 struct mvebu_gpio_chip { struct gpio_chip chip; struct regmap *regs; -@@ -282,12 +303,12 @@ mvebu_gpio_write_level_mask(struct mvebu_gpio_chip *mvchip, u32 val) +@@ -283,12 +304,12 @@ mvebu_gpio_write_level_mask(struct mvebu * Functions returning addresses of individual registers for a given * PWM controller. */ @@ -63,7 +61,7 @@ index adc768f908f1..a2bd264ee92c 100644 { return mvpwm->membase + PWM_BLINK_OFF_DURATION_OFF; } -@@ -599,43 +620,76 @@ static int mvebu_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm) +@@ -627,43 +648,76 @@ static int mvebu_pwm_request(struct pwm_ struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); struct mvebu_gpio_chip *mvchip = mvpwm->mvchip; struct gpio_desc *desc; @@ -88,18 +86,18 @@ index adc768f908f1..a2bd264ee92c 100644 + &mvchip->blink_en_reg); + if (pwm->chip_data || (mvchip->blink_en_reg & BIT(pwm->hwpwm))) + return -EBUSY; ++ ++ desc = gpiochip_request_own_desc(&mvchip->chip, pwm->hwpwm, "mvebu-pwm"); ++ if (IS_ERR(desc)) { ++ ret = PTR_ERR(desc); ++ goto out; ++ } - ret = gpiod_direction_output(desc, 0); - if (ret) { - gpiochip_free_own_desc(desc); - goto out; - } -+ desc = gpiochip_request_own_desc(&mvchip->chip, pwm->hwpwm, "mvebu-pwm"); -+ if (IS_ERR(desc)) { -+ ret = PTR_ERR(desc); -+ goto out; -+ } -+ + ret = gpiod_direction_output(desc, 0); + if (ret) { + gpiochip_free_own_desc(desc); @@ -161,7 +159,7 @@ index adc768f908f1..a2bd264ee92c 100644 } static void mvebu_pwm_get_state(struct pwm_chip *chip, -@@ -643,17 +697,24 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -671,17 +725,24 @@ static void mvebu_pwm_get_state(struct p struct pwm_state *state) { struct mvebu_pwm *mvpwm = to_mvebu_pwm(chip); @@ -189,7 +187,7 @@ index adc768f908f1..a2bd264ee92c 100644 if (val > UINT_MAX) state->duty_cycle = UINT_MAX; else if (val) -@@ -662,9 +723,9 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -690,9 +751,9 @@ static void mvebu_pwm_get_state(struct p state->duty_cycle = 1; val = (unsigned long long) @@ -201,7 +199,7 @@ index adc768f908f1..a2bd264ee92c 100644 if (val < state->duty_cycle) { state->period = 1; } else { -@@ -683,19 +744,21 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, +@@ -711,19 +772,21 @@ static void mvebu_pwm_get_state(struct p else state->enabled = false; @@ -225,7 +223,7 @@ index adc768f908f1..a2bd264ee92c 100644 do_div(val, NSEC_PER_SEC); if (val > UINT_MAX) return -EINVAL; -@@ -704,7 +767,7 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -732,7 +795,7 @@ static int mvebu_pwm_apply(struct pwm_ch else on = 1; @@ -234,7 +232,7 @@ index adc768f908f1..a2bd264ee92c 100644 (state->period - state->duty_cycle); do_div(val, NSEC_PER_SEC); if (val > UINT_MAX) -@@ -714,16 +777,16 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, +@@ -742,16 +805,16 @@ static int mvebu_pwm_apply(struct pwm_ch else off = 1; @@ -255,7 +253,7 @@ index adc768f908f1..a2bd264ee92c 100644 return 0; } -@@ -742,10 +805,10 @@ static void __maybe_unused mvebu_pwm_suspend(struct mvebu_gpio_chip *mvchip) +@@ -770,10 +833,10 @@ static void __maybe_unused mvebu_pwm_sus regmap_read(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, &mvpwm->blink_select); @@ -270,7 +268,7 @@ index adc768f908f1..a2bd264ee92c 100644 } static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) -@@ -754,10 +817,10 @@ static void __maybe_unused mvebu_pwm_resume(struct mvebu_gpio_chip *mvchip) +@@ -782,10 +845,10 @@ static void __maybe_unused mvebu_pwm_res regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, mvpwm->blink_select); @@ -285,7 +283,7 @@ index adc768f908f1..a2bd264ee92c 100644 } static int mvebu_pwm_probe(struct platform_device *pdev, -@@ -768,6 +831,7 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -796,6 +859,7 @@ static int mvebu_pwm_probe(struct platfo struct mvebu_pwm *mvpwm; struct resource *res; u32 set; @@ -293,7 +291,7 @@ index adc768f908f1..a2bd264ee92c 100644 if (!of_device_is_compatible(mvchip->chip.of_node, "marvell,armada-370-gpio")) -@@ -790,12 +854,15 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -818,12 +882,15 @@ static int mvebu_pwm_probe(struct platfo * Use set A for lines of GPIO chip with id 0, B for GPIO chip * with id 1. Don't allow further GPIO chips to be used for PWM. */ @@ -312,20 +310,21 @@ index adc768f908f1..a2bd264ee92c 100644 regmap_write(mvchip->regs, GPIO_BLINK_CNT_SELECT_OFF + mvchip->offset, set); -@@ -805,15 +872,13 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -833,15 +900,13 @@ static int mvebu_pwm_probe(struct platfo mvchip->mvpwm = mvpwm; mvpwm->mvchip = mvchip; - mvpwm->membase = devm_ioremap_resource(dev, res); - if (IS_ERR(mvpwm->membase)) - return PTR_ERR(mvpwm->membase); -+ mvpwm->controller.membase = devm_ioremap_resource(dev, res); -+ if (IS_ERR(mvpwm->controller.membase)) -+ return PTR_ERR(mvpwm->controller.membase); - +- - mvpwm->clk_rate = clk_get_rate(mvchip->clk); - if (!mvpwm->clk_rate) { - dev_err(dev, "failed to get clock rate\n"); ++ mvpwm->controller.membase = devm_ioremap_resource(dev, res); ++ if (IS_ERR(mvpwm->controller.membase)) ++ return PTR_ERR(mvpwm->controller.membase); ++ + mvpwm->controller.clk_rate = clk_get_rate(mvchip->clk); + if (!mvpwm->controller.clk_rate) return -EINVAL; @@ -333,7 +332,7 @@ index adc768f908f1..a2bd264ee92c 100644 mvpwm->chip.dev = dev; mvpwm->chip.ops = &mvebu_pwm_ops; -@@ -826,7 +891,9 @@ static int mvebu_pwm_probe(struct platform_device *pdev, +@@ -854,7 +919,9 @@ static int mvebu_pwm_probe(struct platfo */ mvpwm->chip.base = -1; diff --git a/patch/kernel/mvebu-legacy/93-helios4-device-tree.patch b/patch/kernel/mvebu-legacy/93-helios4-device-tree.patch deleted file mode 100644 index 7d724eebc..000000000 --- a/patch/kernel/mvebu-legacy/93-helios4-device-tree.patch +++ /dev/null @@ -1,314 +0,0 @@ -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 4b17f35..c6b6038 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -1020,6 +1020,7 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \ - armada-388-clearfog.dtb \ - armada-388-clearfog-base.dtb \ - armada-388-clearfog-pro.dtb \ -+ armada-388-helios4.dtb \ - armada-388-db.dtb \ - armada-388-gp.dtb \ - armada-388-rd.dtb - -diff --git a/arch/arm/boot/dts/armada-388-helios4.dts b/arch/arm/boot/dts/armada-388-helios4.dts -new file mode 100644 -index 0000000..93d0132 ---- /dev/null -+++ b/arch/arm/boot/dts/armada-388-helios4.dts -@@ -0,0 +1,295 @@ -+/* -+ * Device Tree file for Helios4 -+ * based on SolidRun Clearfog revision A1 rev 2.0 (88F6828) -+ * -+ * Copyright (C) 2017 Kobol.io -+ * -+ */ -+ -+/dts-v1/; -+#include "armada-388.dtsi" -+#include "armada-38x-solidrun-microsom.dtsi" -+ -+/ { -+ model = "Helios4"; -+ compatible = "marvell,armada388", -+ "marvell,armada385", "marvell,armada380"; -+ -+ memory { -+ device_type = "memory"; -+ reg = <0x00000000 0x80000000>; /* 2 GB */ -+ }; -+ -+ aliases { -+ /* So that mvebu u-boot can update the MAC addresses */ -+ ethernet1 = ð0; -+ }; -+ -+ chosen { -+ stdout-path = "serial0:115200n8"; -+ }; -+ -+ reg_12v: regulator-12v { -+ compatible = "regulator-fixed"; -+ regulator-name = "power_brick_12V"; -+ regulator-min-microvolt = <12000000>; -+ regulator-max-microvolt = <12000000>; -+ regulator-always-on; -+ }; -+ -+ reg_3p3v: regulator-3p3v { -+ compatible = "regulator-fixed"; -+ regulator-name = "3P3V"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ regulator-always-on; -+ vin-supply = <®_12v>; -+ }; -+ -+ reg_5p0v_hdd: regulator-5v-hdd { -+ compatible = "regulator-fixed"; -+ regulator-name = "5V_HDD"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-always-on; -+ vin-supply = <®_12v>; -+ }; -+ -+ reg_5p0v_usb: regulator-5v-usb { -+ compatible = "regulator-fixed"; -+ regulator-name = "USB-PWR"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-boot-on; -+ regulator-always-on; -+ enable-active-high; -+ gpio = <&expander0 6 GPIO_ACTIVE_HIGH>; -+ vin-supply = <®_12v>; -+ }; -+ -+ system-leds { -+ compatible = "gpio-leds"; -+ status-led { -+ label = "helios4:green:status"; -+ gpios = <&gpio0 24 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "heartbeat"; -+ default-state = "on"; -+ }; -+ -+ fault-led { -+ label = "helios4:red:fault"; -+ gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; -+ default-state = "keep"; -+ }; -+ }; -+ -+ io-leds { -+ compatible = "gpio-leds"; -+ sata1-led { -+ label = "helios4:green:ata1"; -+ gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "ata1"; -+ default-state = "off"; -+ }; -+ sata2-led { -+ label = "helios4:green:ata2"; -+ gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "ata2"; -+ default-state = "off"; -+ }; -+ sata3-led { -+ label = "helios4:green:ata3"; -+ gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "ata3"; -+ default-state = "off"; -+ }; -+ sata4-led { -+ label = "helios4:green:ata4"; -+ gpios = <&gpio1 21 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "ata4"; -+ default-state = "off"; -+ }; -+ usb-led { -+ label = "helios4:green:usb"; -+ gpios = <&gpio1 22 GPIO_ACTIVE_LOW>; -+ linux,default-trigger = "usb-host"; -+ default-state = "off"; -+ }; -+ }; -+ -+ fan1: j10-pwm { -+ compatible = "pwm-fan"; -+ pwms = <&gpio1 9 40000>; /* Target freq:25 kHz */ -+ }; -+ -+ fan2: j17-pwm { -+ compatible = "pwm-fan"; -+ pwms = <&gpio1 23 40000>; /* Target freq:25 kHz */ -+ }; -+ -+ usb2_phy: usb2-phy { -+ compatible = "usb-nop-xceiv"; -+ vbus-regulator = <®_5p0v_usb>; -+ }; -+ -+ usb3_phy: usb3-phy { -+ compatible = "usb-nop-xceiv"; -+ //vbus-regulator = <®_5p0v_usb>; -+ }; -+ -+ soc { -+ internal-regs { -+ sata@a8000 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ sata0: sata-port@0 { -+ reg = <0>; -+ }; -+ -+ sata1: sata-port@1 { -+ reg = <1>; -+ }; -+ }; -+ -+ sata@e0000 { -+ status = "okay"; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ sata2: sata-port@0 { -+ reg = <0>; -+ }; -+ -+ sata3: sata-port@1 { -+ reg = <1>; -+ }; -+ }; -+ -+ sdhci@d8000 { -+ bus-width = <4>; -+ cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; -+ no-1-8-v; -+ pinctrl-0 = <µsom_sdhci_pins -+ &helios_sdhci_cd_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+ vmmc = <®_3p3v>; -+ wp-inverted; -+ }; -+ -+ usb@58000 { -+ //vcc-supply = <®_5p0v_usb>; -+ usb-phy = <&usb2_phy>; -+ status = "okay"; -+ }; -+ -+ usb3@f0000 { -+ status = "okay"; -+ }; -+ -+ usb3@f8000 { -+ status = "okay"; -+ }; -+ }; -+ }; -+}; -+ -+&i2c0 { -+ clock-frequency = <400000>; -+ pinctrl-0 = <&i2c0_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+ -+ /* -+ * PCA9655 GPIO expander, up to 1MHz clock. -+ * 0-Board Revision bit 0 # -+ * 1-Board Revision bit 1 # -+ * 5-USB3 overcurrent -+ * 6-USB3 power -+ */ -+ expander0: gpio-expander@20 { -+ /* -+ * This is how it should be: -+ * compatible = "onnn,pca9655", "nxp,pca9555"; -+ * but you can't do this because of the way I2C works. -+ */ -+ compatible = "nxp,pca9555"; -+ gpio-controller; -+ #gpio-cells = <2>; -+ reg = <0x20>; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&pca0_pins>; -+ interrupt-parent = <&gpio0>; -+ interrupts = <23 IRQ_TYPE_EDGE_FALLING>; -+ interrupt-controller; -+ #interrupt-cells = <2>; -+ -+ board_rev_bit_0 { -+ gpio-hog; -+ gpios = <0 GPIO_ACTIVE_LOW>; -+ input; -+ line-name = "board-rev-0"; -+ }; -+ board_rev_bit_1 { -+ gpio-hog; -+ gpios = <1 GPIO_ACTIVE_LOW>; -+ input; -+ line-name = "board-rev-1"; -+ }; -+ usb3_ilimit { -+ gpio-hog; -+ gpios = <5 GPIO_ACTIVE_HIGH>; -+ input; -+ line-name = "usb-overcurrent-status"; -+ }; -+ }; -+ -+ temp_sensor: temp@4c { -+ compatible = "ti,lm75"; -+ reg = <0x4c>; -+ vcc-supply = <®_3p3v>; -+ }; -+}; -+ -+&i2c1 { -+ /* -+ * External I2C Bus for user peripheral -+ */ -+ clock-frequency = <400000>; -+ pinctrl-0 = <&helios_i2c1_pins>; -+ pinctrl-names = "default"; -+ status = "okay"; -+}; -+ -+&pinctrl { -+ pca0_pins: pca0_pins { -+ marvell,pins = "mpp23"; -+ marvell,function = "gpio"; -+ }; -+ microsom_phy0_int_pins: microsom-phy0-int-pins { -+ marvell,pins = "mpp18"; -+ marvell,function = "gpio"; -+ }; -+ helios_i2c1_pins: i2c1-pins { -+ marvell,pins = "mpp26", "mpp27"; -+ marvell,function = "i2c1"; -+ }; -+ helios_sdhci_cd_pins: helios-sdhci-cd-pins { -+ marvell,pins = "mpp20"; -+ marvell,function = "gpio"; -+ }; -+ helios_led_pins: helios-led-pins { -+ marvell,pins = "mpp24", "mpp25", -+ "mpp49", "mpp50", -+ "mpp52", "mpp53", -+ "mpp54"; -+ marvell,function = "gpio"; -+ }; -+ helios_fan_pins: helios-fan-pins { -+ marvell,pins = "mpp41", "mpp43", -+ "mpp48", "mpp55"; -+ marvell,function = "gpio"; -+ }; -+}; diff --git a/patch/kernel/mvebu-legacy/94-helios4-dts-add-wake-on-lan-support.patch b/patch/kernel/mvebu-legacy/94-helios4-dts-add-wake-on-lan-support.patch index 313ec8345..b3daf09f9 100644 --- a/patch/kernel/mvebu-legacy/94-helios4-dts-add-wake-on-lan-support.patch +++ b/patch/kernel/mvebu-legacy/94-helios4-dts-add-wake-on-lan-support.patch @@ -1,5 +1,3 @@ -diff --git a/arch/arm/boot/dts/armada-388-helios4.dts b/arch/arm/boot/dts/armada-388-helios4.dts -index 705adfa8c..d5afbfc53 100644 --- a/arch/arm/boot/dts/armada-388-helios4.dts +++ b/arch/arm/boot/dts/armada-388-helios4.dts @@ -84,6 +84,18 @@ diff --git a/patch/kernel/mvebu-legacy/compile-dtb-with-symbol-support.patch b/patch/kernel/mvebu-legacy/compile-dtb-with-symbol-support.patch index 1eb431e87..0c198d48d 100644 --- a/patch/kernel/mvebu-legacy/compile-dtb-with-symbol-support.patch +++ b/patch/kernel/mvebu-legacy/compile-dtb-with-symbol-support.patch @@ -1,8 +1,6 @@ -diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 61e596650..fdb066e51 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib -@@ -244,6 +244,9 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \ +@@ -244,6 +244,9 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | # --------------------------------------------------------------------------- DTC ?= $(objtree)/scripts/dtc/dtc diff --git a/patch/kernel/mvebu-legacy/dts-disable-spi-flash-on-a388-microsom.patch b/patch/kernel/mvebu-legacy/dts-disable-spi-flash-on-a388-microsom.patch index 3229d2771..9f63471f7 100644 --- a/patch/kernel/mvebu-legacy/dts-disable-spi-flash-on-a388-microsom.patch +++ b/patch/kernel/mvebu-legacy/dts-disable-spi-flash-on-a388-microsom.patch @@ -1,5 +1,3 @@ -diff --git a/arch/arm/boot/dts/armada-38x-solidrun-microsom.dtsi b/arch/arm/boot/dts/armada-38x-solidrun-microsom.dtsi -index 3a7f9c1ac..e04790639 100644 --- a/arch/arm/boot/dts/armada-38x-solidrun-microsom.dtsi +++ b/arch/arm/boot/dts/armada-38x-solidrun-microsom.dtsi @@ -94,6 +94,7 @@ diff --git a/patch/kernel/mvebu-legacy/general-aufs4.19-20181029.patch b/patch/kernel/mvebu-legacy/general-aufs4.19-20181029.patch index f11b030b2..08c47d70b 100644 --- a/patch/kernel/mvebu-legacy/general-aufs4.19-20181029.patch +++ b/patch/kernel/mvebu-legacy/general-aufs4.19-20181029.patch @@ -1,6 +1,3 @@ -diff --git a/Documentation/ABI/testing/debugfs-aufs b/Documentation/ABI/testing/debugfs-aufs -new file mode 100644 -index 000000000..4a6694194 --- /dev/null +++ b/Documentation/ABI/testing/debugfs-aufs @@ -0,0 +1,55 @@ @@ -59,9 +56,6 @@ index 000000000..4a6694194 + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff --git a/Documentation/ABI/testing/sysfs-aufs b/Documentation/ABI/testing/sysfs-aufs -new file mode 100644 -index 000000000..82f951849 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-aufs @@ -0,0 +1,31 @@ @@ -96,9 +90,6 @@ index 000000000..82f951849 + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. -diff --git a/Documentation/filesystems/aufs/README b/Documentation/filesystems/aufs/README -new file mode 100644 -index 000000000..79eb50ae0 --- /dev/null +++ b/Documentation/filesystems/aufs/README @@ -0,0 +1,394 @@ @@ -496,9 +487,6 @@ index 000000000..79eb50ae0 +# Local variables: ; +# mode: text; +# End: ; -diff --git a/Documentation/filesystems/aufs/design/01intro.txt b/Documentation/filesystems/aufs/design/01intro.txt -new file mode 100644 -index 000000000..aa1052982 --- /dev/null +++ b/Documentation/filesystems/aufs/design/01intro.txt @@ -0,0 +1,171 @@ @@ -673,9 +661,6 @@ index 000000000..aa1052982 +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. -diff --git a/Documentation/filesystems/aufs/design/02struct.txt b/Documentation/filesystems/aufs/design/02struct.txt -new file mode 100644 -index 000000000..f5fb6a8ad --- /dev/null +++ b/Documentation/filesystems/aufs/design/02struct.txt @@ -0,0 +1,258 @@ @@ -937,9 +922,6 @@ index 000000000..f5fb6a8ad +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. -diff --git a/Documentation/filesystems/aufs/design/03atomic_open.txt b/Documentation/filesystems/aufs/design/03atomic_open.txt -new file mode 100644 -index 000000000..1b0699f8b --- /dev/null +++ b/Documentation/filesystems/aufs/design/03atomic_open.txt @@ -0,0 +1,85 @@ @@ -1028,9 +1010,6 @@ index 000000000..1b0699f8b + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. -diff --git a/Documentation/filesystems/aufs/design/03lookup.txt b/Documentation/filesystems/aufs/design/03lookup.txt -new file mode 100644 -index 000000000..80ae63bce --- /dev/null +++ b/Documentation/filesystems/aufs/design/03lookup.txt @@ -0,0 +1,113 @@ @@ -1147,9 +1126,6 @@ index 000000000..80ae63bce + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). -diff --git a/Documentation/filesystems/aufs/design/04branch.txt b/Documentation/filesystems/aufs/design/04branch.txt -new file mode 100644 -index 000000000..0c1289737 --- /dev/null +++ b/Documentation/filesystems/aufs/design/04branch.txt @@ -0,0 +1,74 @@ @@ -1227,9 +1203,6 @@ index 000000000..0c1289737 + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. -diff --git a/Documentation/filesystems/aufs/design/05wbr_policy.txt b/Documentation/filesystems/aufs/design/05wbr_policy.txt -new file mode 100644 -index 000000000..cc5b7979c --- /dev/null +++ b/Documentation/filesystems/aufs/design/05wbr_policy.txt @@ -0,0 +1,64 @@ @@ -1297,9 +1270,6 @@ index 000000000..cc5b7979c + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. -diff --git a/Documentation/filesystems/aufs/design/06dirren.dot b/Documentation/filesystems/aufs/design/06dirren.dot -new file mode 100644 -index 000000000..2d62bb6dd --- /dev/null +++ b/Documentation/filesystems/aufs/design/06dirren.dot @@ -0,0 +1,31 @@ @@ -1334,9 +1304,6 @@ index 000000000..2d62bb6dd + +aufs_lookup -> whinfo [label="load/remove"]; +} -diff --git a/Documentation/filesystems/aufs/design/06dirren.txt b/Documentation/filesystems/aufs/design/06dirren.txt -new file mode 100644 -index 000000000..1f3cb86d9 --- /dev/null +++ b/Documentation/filesystems/aufs/design/06dirren.txt @@ -0,0 +1,102 @@ @@ -1442,9 +1409,6 @@ index 000000000..1f3cb86d9 +contains two names, before- and after-rename, the name comparision in +UDBA handler may not work correctly. In this case, the behaviour will be +equivalen to udba=reval case. -diff --git a/Documentation/filesystems/aufs/design/06fhsm.txt b/Documentation/filesystems/aufs/design/06fhsm.txt -new file mode 100644 -index 000000000..ddfebecdf --- /dev/null +++ b/Documentation/filesystems/aufs/design/06fhsm.txt @@ -0,0 +1,120 @@ @@ -1568,9 +1532,6 @@ index 000000000..ddfebecdf + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. -diff --git a/Documentation/filesystems/aufs/design/06mmap.txt b/Documentation/filesystems/aufs/design/06mmap.txt -new file mode 100644 -index 000000000..9a0a096b1 --- /dev/null +++ b/Documentation/filesystems/aufs/design/06mmap.txt @@ -0,0 +1,72 @@ @@ -1646,9 +1607,6 @@ index 000000000..9a0a096b1 + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. -diff --git a/Documentation/filesystems/aufs/design/06xattr.txt b/Documentation/filesystems/aufs/design/06xattr.txt -new file mode 100644 -index 000000000..be441e8d3 --- /dev/null +++ b/Documentation/filesystems/aufs/design/06xattr.txt @@ -0,0 +1,96 @@ @@ -1748,9 +1706,6 @@ index 000000000..be441e8d3 +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. -diff --git a/Documentation/filesystems/aufs/design/07export.txt b/Documentation/filesystems/aufs/design/07export.txt -new file mode 100644 -index 000000000..bb700cb18 --- /dev/null +++ b/Documentation/filesystems/aufs/design/07export.txt @@ -0,0 +1,58 @@ @@ -1812,9 +1767,6 @@ index 000000000..bb700cb18 + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. -diff --git a/Documentation/filesystems/aufs/design/08shwh.txt b/Documentation/filesystems/aufs/design/08shwh.txt -new file mode 100644 -index 000000000..1dad573f6 --- /dev/null +++ b/Documentation/filesystems/aufs/design/08shwh.txt @@ -0,0 +1,52 @@ @@ -1870,9 +1822,6 @@ index 000000000..1dad573f6 + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. -diff --git a/Documentation/filesystems/aufs/design/10dynop.txt b/Documentation/filesystems/aufs/design/10dynop.txt -new file mode 100644 -index 000000000..710313c08 --- /dev/null +++ b/Documentation/filesystems/aufs/design/10dynop.txt @@ -0,0 +1,47 @@ @@ -1923,8 +1872,6 @@ index 000000000..710313c08 +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. -diff --git a/MAINTAINERS b/MAINTAINERS -index b2f710eee..d21161917 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2605,6 +2605,19 @@ F: include/linux/audit.h @@ -1947,11 +1894,9 @@ index b2f710eee..d21161917 100644 AUXILIARY DISPLAY DRIVERS M: Miguel Ojeda Sandonis S: Maintained -diff --git a/drivers/block/loop.c b/drivers/block/loop.c -index ea9debf59..9e534a36c 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c -@@ -739,6 +739,24 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev, +@@ -750,6 +750,24 @@ out_err: return error; } @@ -1976,8 +1921,6 @@ index ea9debf59..9e534a36c 100644 /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, -diff --git a/fs/Kconfig b/fs/Kconfig -index ac474a61b..284cee954 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -255,6 +255,7 @@ source "fs/pstore/Kconfig" @@ -1988,8 +1931,6 @@ index ac474a61b..284cee954 100644 endif # MISC_FILESYSTEMS -diff --git a/fs/Makefile b/fs/Makefile -index 293733f61..12d19d0de 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -128,3 +128,4 @@ obj-y += exofs/ # Multiple modules @@ -1997,9 +1938,6 @@ index 293733f61..12d19d0de 100644 obj-$(CONFIG_PSTORE) += pstore/ obj-$(CONFIG_EFIVAR_FS) += efivarfs/ +obj-$(CONFIG_AUFS_FS) += aufs/ -diff --git a/fs/aufs/Kconfig b/fs/aufs/Kconfig -new file mode 100644 -index 000000000..9f4364257 --- /dev/null +++ b/fs/aufs/Kconfig @@ -0,0 +1,199 @@ @@ -2202,9 +2140,6 @@ index 000000000..9f4364257 + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif -diff --git a/fs/aufs/Makefile b/fs/aufs/Makefile -new file mode 100644 -index 000000000..2c819a649 --- /dev/null +++ b/fs/aufs/Makefile @@ -0,0 +1,46 @@ @@ -2254,9 +2189,6 @@ index 000000000..2c819a649 +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o -diff --git a/fs/aufs/aufs.h b/fs/aufs/aufs.h -new file mode 100644 -index 000000000..245691743 --- /dev/null +++ b/fs/aufs/aufs.h @@ -0,0 +1,62 @@ @@ -2322,9 +2254,6 @@ index 000000000..245691743 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ -diff --git a/fs/aufs/branch.c b/fs/aufs/branch.c -new file mode 100644 -index 000000000..2fc6dc1e3 --- /dev/null +++ b/fs/aufs/branch.c @@ -0,0 +1,1422 @@ @@ -3750,9 +3679,6 @@ index 000000000..2fc6dc1e3 + + return err; +} -diff --git a/fs/aufs/branch.h b/fs/aufs/branch.h -new file mode 100644 -index 000000000..2b0f58bb9 --- /dev/null +++ b/fs/aufs/branch.h @@ -0,0 +1,367 @@ @@ -4123,9 +4049,6 @@ index 000000000..2b0f58bb9 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ -diff --git a/fs/aufs/conf.mk b/fs/aufs/conf.mk -new file mode 100644 -index 000000000..12782f8e0 --- /dev/null +++ b/fs/aufs/conf.mk @@ -0,0 +1,40 @@ @@ -4169,9 +4092,6 @@ index 000000000..12782f8e0 +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk -diff --git a/fs/aufs/cpup.c b/fs/aufs/cpup.c -new file mode 100644 -index 000000000..a1ef90f08 --- /dev/null +++ b/fs/aufs/cpup.c @@ -0,0 +1,1444 @@ @@ -5619,9 +5539,6 @@ index 000000000..a1ef90f08 + dput(parent); + return err; +} -diff --git a/fs/aufs/cpup.h b/fs/aufs/cpup.h -new file mode 100644 -index 000000000..0faad688b --- /dev/null +++ b/fs/aufs/cpup.h @@ -0,0 +1,100 @@ @@ -5725,9 +5642,6 @@ index 000000000..0faad688b + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ -diff --git a/fs/aufs/dbgaufs.c b/fs/aufs/dbgaufs.c -new file mode 100644 -index 000000000..13872925a --- /dev/null +++ b/fs/aufs/dbgaufs.c @@ -0,0 +1,519 @@ @@ -6250,9 +6164,6 @@ index 000000000..13872925a + err = 0; + return err; +} -diff --git a/fs/aufs/dbgaufs.h b/fs/aufs/dbgaufs.h -new file mode 100644 -index 000000000..59d7b9d08 --- /dev/null +++ b/fs/aufs/dbgaufs.h @@ -0,0 +1,53 @@ @@ -6309,9 +6220,6 @@ index 000000000..59d7b9d08 + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ -diff --git a/fs/aufs/dcsub.c b/fs/aufs/dcsub.c -new file mode 100644 -index 000000000..b30828810 --- /dev/null +++ b/fs/aufs/dcsub.c @@ -0,0 +1,225 @@ @@ -6540,9 +6448,6 @@ index 000000000..b30828810 + + return path_is_under(path + 0, path + 1); +} -diff --git a/fs/aufs/dcsub.h b/fs/aufs/dcsub.h -new file mode 100644 -index 000000000..c610133de --- /dev/null +++ b/fs/aufs/dcsub.h @@ -0,0 +1,137 @@ @@ -6683,9 +6588,6 @@ index 000000000..c610133de + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ -diff --git a/fs/aufs/debug.c b/fs/aufs/debug.c -new file mode 100644 -index 000000000..51b978b0e --- /dev/null +++ b/fs/aufs/debug.c @@ -0,0 +1,440 @@ @@ -7129,9 +7031,6 @@ index 000000000..51b978b0e + + return 0; +} -diff --git a/fs/aufs/debug.h b/fs/aufs/debug.h -new file mode 100644 -index 000000000..b80bb5a9a --- /dev/null +++ b/fs/aufs/debug.h @@ -0,0 +1,226 @@ @@ -7361,9 +7260,6 @@ index 000000000..b80bb5a9a + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ -diff --git a/fs/aufs/dentry.c b/fs/aufs/dentry.c -new file mode 100644 -index 000000000..79761eae9 --- /dev/null +++ b/fs/aufs/dentry.c @@ -0,0 +1,1153 @@ @@ -8520,9 +8416,6 @@ index 000000000..79761eae9 +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; -diff --git a/fs/aufs/dentry.h b/fs/aufs/dentry.h -new file mode 100644 -index 000000000..adc2ac997 --- /dev/null +++ b/fs/aufs/dentry.h @@ -0,0 +1,267 @@ @@ -8793,9 +8686,6 @@ index 000000000..adc2ac997 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ -diff --git a/fs/aufs/dinfo.c b/fs/aufs/dinfo.c -new file mode 100644 -index 000000000..7e56fe742 --- /dev/null +++ b/fs/aufs/dinfo.c @@ -0,0 +1,554 @@ @@ -9353,9 +9243,6 @@ index 000000000..7e56fe742 + return bindex; + return -1; +} -diff --git a/fs/aufs/dir.c b/fs/aufs/dir.c -new file mode 100644 -index 000000000..48e067fe6 --- /dev/null +++ b/fs/aufs/dir.c @@ -0,0 +1,762 @@ @@ -10121,9 +10008,6 @@ index 000000000..48e067fe6 + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; -diff --git a/fs/aufs/dir.h b/fs/aufs/dir.h -new file mode 100644 -index 000000000..e7acabe09 --- /dev/null +++ b/fs/aufs/dir.h @@ -0,0 +1,132 @@ @@ -10259,9 +10143,6 @@ index 000000000..e7acabe09 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ -diff --git a/fs/aufs/dirren.c b/fs/aufs/dirren.c -new file mode 100644 -index 000000000..85c77ad80 --- /dev/null +++ b/fs/aufs/dirren.c @@ -0,0 +1,1316 @@ @@ -11581,9 +11462,6 @@ index 000000000..85c77ad80 +out: + return err; +} -diff --git a/fs/aufs/dirren.h b/fs/aufs/dirren.h -new file mode 100644 -index 000000000..f5139a30c --- /dev/null +++ b/fs/aufs/dirren.h @@ -0,0 +1,140 @@ @@ -11727,9 +11605,6 @@ index 000000000..f5139a30c + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIRREN_H__ */ -diff --git a/fs/aufs/dynop.c b/fs/aufs/dynop.c -new file mode 100644 -index 000000000..f2ff9f3ab --- /dev/null +++ b/fs/aufs/dynop.c @@ -0,0 +1,370 @@ @@ -12103,9 +11978,6 @@ index 000000000..f2ff9f3ab + for (i = 0; i < AuDyLast; i++) + WARN_ON(!hlist_bl_empty(dynop + i)); +} -diff --git a/fs/aufs/dynop.h b/fs/aufs/dynop.h -new file mode 100644 -index 000000000..d4015351e --- /dev/null +++ b/fs/aufs/dynop.h @@ -0,0 +1,75 @@ @@ -12184,9 +12056,6 @@ index 000000000..d4015351e + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ -diff --git a/fs/aufs/export.c b/fs/aufs/export.c -new file mode 100644 -index 000000000..0358fbec3 --- /dev/null +++ b/fs/aufs/export.c @@ -0,0 +1,838 @@ @@ -13028,9 +12897,6 @@ index 000000000..0358fbec3 + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} -diff --git a/fs/aufs/f_op.c b/fs/aufs/f_op.c -new file mode 100644 -index 000000000..0733ae8ac --- /dev/null +++ b/fs/aufs/f_op.c @@ -0,0 +1,819 @@ @@ -13853,9 +13719,6 @@ index 000000000..0733ae8ac + .fallocate = aufs_fallocate, + .copy_file_range = aufs_copy_file_range +}; -diff --git a/fs/aufs/fhsm.c b/fs/aufs/fhsm.c -new file mode 100644 -index 000000000..fdb91f6eb --- /dev/null +++ b/fs/aufs/fhsm.c @@ -0,0 +1,427 @@ @@ -14286,9 +14149,6 @@ index 000000000..fdb91f6eb + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} -diff --git a/fs/aufs/file.c b/fs/aufs/file.c -new file mode 100644 -index 000000000..c01b98791 --- /dev/null +++ b/fs/aufs/file.c @@ -0,0 +1,863 @@ @@ -15155,9 +15015,6 @@ index 000000000..c01b98791 + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; -diff --git a/fs/aufs/file.h b/fs/aufs/file.h -new file mode 100644 -index 000000000..11bc65480 --- /dev/null +++ b/fs/aufs/file.h @@ -0,0 +1,341 @@ @@ -15502,9 +15359,6 @@ index 000000000..11bc65480 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ -diff --git a/fs/aufs/finfo.c b/fs/aufs/finfo.c -new file mode 100644 -index 000000000..44636ce6c --- /dev/null +++ b/fs/aufs/finfo.c @@ -0,0 +1,149 @@ @@ -15657,9 +15511,6 @@ index 000000000..44636ce6c +out: + return err; +} -diff --git a/fs/aufs/fstype.h b/fs/aufs/fstype.h -new file mode 100644 -index 000000000..4e295869b --- /dev/null +++ b/fs/aufs/fstype.h @@ -0,0 +1,401 @@ @@ -16064,9 +15915,6 @@ index 000000000..4e295869b + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ -diff --git a/fs/aufs/hbl.h b/fs/aufs/hbl.h -new file mode 100644 -index 000000000..265d7ab61 --- /dev/null +++ b/fs/aufs/hbl.h @@ -0,0 +1,65 @@ @@ -16135,9 +15983,6 @@ index 000000000..265d7ab61 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_HBL_H__ */ -diff --git a/fs/aufs/hfsnotify.c b/fs/aufs/hfsnotify.c -new file mode 100644 -index 000000000..7ec50daf7 --- /dev/null +++ b/fs/aufs/hfsnotify.c @@ -0,0 +1,289 @@ @@ -16430,9 +16275,6 @@ index 000000000..7ec50daf7 + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; -diff --git a/fs/aufs/hfsplus.c b/fs/aufs/hfsplus.c -new file mode 100644 -index 000000000..b1f59970d --- /dev/null +++ b/fs/aufs/hfsplus.c @@ -0,0 +1,60 @@ @@ -16496,9 +16338,6 @@ index 000000000..b1f59970d + au_lcnt_dec(&br->br_nfiles); + } +} -diff --git a/fs/aufs/hnotify.c b/fs/aufs/hnotify.c -new file mode 100644 -index 000000000..452f5609c --- /dev/null +++ b/fs/aufs/hnotify.c @@ -0,0 +1,720 @@ @@ -17222,9 +17061,6 @@ index 000000000..452f5609c + if (au_cache[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} -diff --git a/fs/aufs/i_op.c b/fs/aufs/i_op.c -new file mode 100644 -index 000000000..e1210975e --- /dev/null +++ b/fs/aufs/i_op.c @@ -0,0 +1,1506 @@ @@ -18734,9 +18570,6 @@ index 000000000..e1210975e + .update_time = aufs_update_time + } +}; -diff --git a/fs/aufs/i_op_add.c b/fs/aufs/i_op_add.c -new file mode 100644 -index 000000000..97af9e5e1 --- /dev/null +++ b/fs/aufs/i_op_add.c @@ -0,0 +1,935 @@ @@ -19675,9 +19508,6 @@ index 000000000..97af9e5e1 +out: + return err; +} -diff --git a/fs/aufs/i_op_del.c b/fs/aufs/i_op_del.c -new file mode 100644 -index 000000000..343617d68 --- /dev/null +++ b/fs/aufs/i_op_del.c @@ -0,0 +1,512 @@ @@ -20193,9 +20023,6 @@ index 000000000..343617d68 + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/i_op_ren.c b/fs/aufs/i_op_ren.c -new file mode 100644 -index 000000000..f9e5d5d66 --- /dev/null +++ b/fs/aufs/i_op_ren.c @@ -0,0 +1,1249 @@ @@ -21448,9 +21275,6 @@ index 000000000..f9e5d5d66 + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/iinfo.c b/fs/aufs/iinfo.c -new file mode 100644 -index 000000000..f6c512d96 --- /dev/null +++ b/fs/aufs/iinfo.c @@ -0,0 +1,286 @@ @@ -21740,9 +21564,6 @@ index 000000000..f6c512d96 + kfree(iinfo->ii_hinode); + AuRwDestroy(&iinfo->ii_rwsem); +} -diff --git a/fs/aufs/inode.c b/fs/aufs/inode.c -new file mode 100644 -index 000000000..50ec91179 --- /dev/null +++ b/fs/aufs/inode.c @@ -0,0 +1,528 @@ @@ -22274,9 +22095,6 @@ index 000000000..50ec91179 + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_inode, mask); +} -diff --git a/fs/aufs/inode.h b/fs/aufs/inode.h -new file mode 100644 -index 000000000..28e61b270 --- /dev/null +++ b/fs/aufs/inode.h @@ -0,0 +1,696 @@ @@ -22976,9 +22794,6 @@ index 000000000..28e61b270 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ -diff --git a/fs/aufs/ioctl.c b/fs/aufs/ioctl.c -new file mode 100644 -index 000000000..279bd7498 --- /dev/null +++ b/fs/aufs/ioctl.c @@ -0,0 +1,220 @@ @@ -23202,9 +23017,6 @@ index 000000000..279bd7498 + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif -diff --git a/fs/aufs/lcnt.h b/fs/aufs/lcnt.h -new file mode 100644 -index 000000000..5e089c93f --- /dev/null +++ b/fs/aufs/lcnt.h @@ -0,0 +1,186 @@ @@ -23394,9 +23206,6 @@ index 000000000..5e089c93f + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LCNT_H__ */ -diff --git a/fs/aufs/loop.c b/fs/aufs/loop.c -new file mode 100644 -index 000000000..0c6af623a --- /dev/null +++ b/fs/aufs/loop.c @@ -0,0 +1,148 @@ @@ -23548,9 +23357,6 @@ index 000000000..0c6af623a + symbol_put(loop_backing_file); + kfree(au_warn_loopback_array); +} -diff --git a/fs/aufs/loop.h b/fs/aufs/loop.h -new file mode 100644 -index 000000000..048a6504f --- /dev/null +++ b/fs/aufs/loop.h @@ -0,0 +1,53 @@ @@ -23607,9 +23413,6 @@ index 000000000..048a6504f + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ -diff --git a/fs/aufs/magic.mk b/fs/aufs/magic.mk -new file mode 100644 -index 000000000..7bc9eef3f --- /dev/null +++ b/fs/aufs/magic.mk @@ -0,0 +1,31 @@ @@ -23644,9 +23447,6 @@ index 000000000..7bc9eef3f +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif -diff --git a/fs/aufs/module.c b/fs/aufs/module.c -new file mode 100644 -index 000000000..5f5f67e64 --- /dev/null +++ b/fs/aufs/module.c @@ -0,0 +1,273 @@ @@ -23923,9 +23723,6 @@ index 000000000..5f5f67e64 + +module_init(aufs_init); +module_exit(aufs_exit); -diff --git a/fs/aufs/module.h b/fs/aufs/module.h -new file mode 100644 -index 000000000..000761049 --- /dev/null +++ b/fs/aufs/module.h @@ -0,0 +1,102 @@ @@ -24031,9 +23828,6 @@ index 000000000..000761049 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ -diff --git a/fs/aufs/mvdown.c b/fs/aufs/mvdown.c -new file mode 100644 -index 000000000..9603ef739 --- /dev/null +++ b/fs/aufs/mvdown.c @@ -0,0 +1,705 @@ @@ -24742,9 +24536,6 @@ index 000000000..9603ef739 + AuTraceErr(err); + return err; +} -diff --git a/fs/aufs/opts.c b/fs/aufs/opts.c -new file mode 100644 -index 000000000..3a8ba2867 --- /dev/null +++ b/fs/aufs/opts.c @@ -0,0 +1,1877 @@ @@ -26625,9 +26416,6 @@ index 000000000..3a8ba2867 +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} -diff --git a/fs/aufs/opts.h b/fs/aufs/opts.h -new file mode 100644 -index 000000000..fd167bd0f --- /dev/null +++ b/fs/aufs/opts.h @@ -0,0 +1,225 @@ @@ -26856,9 +26644,6 @@ index 000000000..fd167bd0f + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ -diff --git a/fs/aufs/plink.c b/fs/aufs/plink.c -new file mode 100644 -index 000000000..83b80ede3 --- /dev/null +++ b/fs/aufs/plink.c @@ -0,0 +1,516 @@ @@ -27378,9 +27163,6 @@ index 000000000..83b80ede3 + } + } +} -diff --git a/fs/aufs/poll.c b/fs/aufs/poll.c -new file mode 100644 -index 000000000..a653b6c74 --- /dev/null +++ b/fs/aufs/poll.c @@ -0,0 +1,51 @@ @@ -27435,9 +27217,6 @@ index 000000000..a653b6c74 + AuDbg("mask 0x%x\n", mask); + return mask; +} -diff --git a/fs/aufs/posix_acl.c b/fs/aufs/posix_acl.c -new file mode 100644 -index 000000000..9ce21ec98 --- /dev/null +++ b/fs/aufs/posix_acl.c @@ -0,0 +1,103 @@ @@ -27544,9 +27323,6 @@ index 000000000..9ce21ec98 +out: + return err; +} -diff --git a/fs/aufs/procfs.c b/fs/aufs/procfs.c -new file mode 100644 -index 000000000..100dbcfeb --- /dev/null +++ b/fs/aufs/procfs.c @@ -0,0 +1,171 @@ @@ -27721,9 +27497,6 @@ index 000000000..100dbcfeb +out: + return err; +} -diff --git a/fs/aufs/rdu.c b/fs/aufs/rdu.c -new file mode 100644 -index 000000000..60f4957b7 --- /dev/null +++ b/fs/aufs/rdu.c @@ -0,0 +1,382 @@ @@ -28109,9 +27882,6 @@ index 000000000..60f4957b7 + return err; +} +#endif -diff --git a/fs/aufs/rwsem.h b/fs/aufs/rwsem.h -new file mode 100644 -index 000000000..bcb538eed --- /dev/null +++ b/fs/aufs/rwsem.h @@ -0,0 +1,73 @@ @@ -28188,9 +27958,6 @@ index 000000000..bcb538eed + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ -diff --git a/fs/aufs/sbinfo.c b/fs/aufs/sbinfo.c -new file mode 100644 -index 000000000..a013c7517 --- /dev/null +++ b/fs/aufs/sbinfo.c @@ -0,0 +1,313 @@ @@ -28507,9 +28274,6 @@ index 000000000..a013c7517 + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} -diff --git a/fs/aufs/super.c b/fs/aufs/super.c -new file mode 100644 -index 000000000..a09c846ea --- /dev/null +++ b/fs/aufs/super.c @@ -0,0 +1,1048 @@ @@ -29561,9 +29325,6 @@ index 000000000..a09c846ea + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; -diff --git a/fs/aufs/super.h b/fs/aufs/super.h -new file mode 100644 -index 000000000..79e47da4e --- /dev/null +++ b/fs/aufs/super.h @@ -0,0 +1,589 @@ @@ -30156,9 +29917,6 @@ index 000000000..79e47da4e + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ -diff --git a/fs/aufs/sysaufs.c b/fs/aufs/sysaufs.c -new file mode 100644 -index 000000000..cb34a53f3 --- /dev/null +++ b/fs/aufs/sysaufs.c @@ -0,0 +1,93 @@ @@ -30255,9 +30013,6 @@ index 000000000..cb34a53f3 +out: + return err; +} -diff --git a/fs/aufs/sysaufs.h b/fs/aufs/sysaufs.h -new file mode 100644 -index 000000000..9a64191c5 --- /dev/null +++ b/fs/aufs/sysaufs.h @@ -0,0 +1,102 @@ @@ -30363,9 +30118,6 @@ index 000000000..9a64191c5 + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ -diff --git a/fs/aufs/sysfs.c b/fs/aufs/sysfs.c -new file mode 100644 -index 000000000..89a4cbf66 --- /dev/null +++ b/fs/aufs/sysfs.c @@ -0,0 +1,373 @@ @@ -30742,9 +30494,6 @@ index 000000000..89a4cbf66 + } + } +} -diff --git a/fs/aufs/sysrq.c b/fs/aufs/sysrq.c -new file mode 100644 -index 000000000..2dbf23741 --- /dev/null +++ b/fs/aufs/sysrq.c @@ -0,0 +1,160 @@ @@ -30908,9 +30657,6 @@ index 000000000..2dbf23741 + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} -diff --git a/fs/aufs/vdir.c b/fs/aufs/vdir.c -new file mode 100644 -index 000000000..f83ca0689 --- /dev/null +++ b/fs/aufs/vdir.c @@ -0,0 +1,895 @@ @@ -31809,9 +31555,6 @@ index 000000000..f83ca0689 + /* smp_mb(); */ + return 0; +} -diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c -new file mode 100644 -index 000000000..de22e6eae --- /dev/null +++ b/fs/aufs/vfsub.c @@ -0,0 +1,902 @@ @@ -32717,9 +32460,6 @@ index 000000000..de22e6eae + + return err; +} -diff --git a/fs/aufs/vfsub.h b/fs/aufs/vfsub.h -new file mode 100644 -index 000000000..c0564abaa --- /dev/null +++ b/fs/aufs/vfsub.h @@ -0,0 +1,355 @@ @@ -33078,9 +32818,6 @@ index 000000000..c0564abaa + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ -diff --git a/fs/aufs/wbr_policy.c b/fs/aufs/wbr_policy.c -new file mode 100644 -index 000000000..6e97c806a --- /dev/null +++ b/fs/aufs/wbr_policy.c @@ -0,0 +1,830 @@ @@ -33914,9 +33651,6 @@ index 000000000..6e97c806a + .fin = au_wbr_create_fin_mfs + } +}; -diff --git a/fs/aufs/whout.c b/fs/aufs/whout.c -new file mode 100644 -index 000000000..2325c2ee5 --- /dev/null +++ b/fs/aufs/whout.c @@ -0,0 +1,1062 @@ @@ -34982,9 +34716,6 @@ index 000000000..2325c2ee5 + au_whtmp_rmdir_free(args); + } +} -diff --git a/fs/aufs/whout.h b/fs/aufs/whout.h -new file mode 100644 -index 000000000..2bbc38ba3 --- /dev/null +++ b/fs/aufs/whout.h @@ -0,0 +1,86 @@ @@ -35074,9 +34805,6 @@ index 000000000..2bbc38ba3 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ -diff --git a/fs/aufs/wkq.c b/fs/aufs/wkq.c -new file mode 100644 -index 000000000..55fab985c --- /dev/null +++ b/fs/aufs/wkq.c @@ -0,0 +1,392 @@ @@ -35472,9 +35200,6 @@ index 000000000..55fab985c + + return err; +} -diff --git a/fs/aufs/wkq.h b/fs/aufs/wkq.h -new file mode 100644 -index 000000000..2e50ed834 --- /dev/null +++ b/fs/aufs/wkq.h @@ -0,0 +1,89 @@ @@ -35567,9 +35292,6 @@ index 000000000..2e50ed834 + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ -diff --git a/fs/aufs/xattr.c b/fs/aufs/xattr.c -new file mode 100644 -index 000000000..70b891716 --- /dev/null +++ b/fs/aufs/xattr.c @@ -0,0 +1,356 @@ @@ -35929,9 +35651,6 @@ index 000000000..70b891716 +{ + sb->s_xattr = au_xattr_handlers; +} -diff --git a/fs/aufs/xino.c b/fs/aufs/xino.c -new file mode 100644 -index 000000000..1236699a3 --- /dev/null +++ b/fs/aufs/xino.c @@ -0,0 +1,1890 @@ @@ -37825,11 +37544,9 @@ index 000000000..1236699a3 +out: + return err; +} -diff --git a/fs/dcache.c b/fs/dcache.c -index 2e7e8d85e..328a13662 100644 --- a/fs/dcache.c +++ b/fs/dcache.c -@@ -1238,7 +1238,7 @@ enum d_walk_ret { +@@ -1236,7 +1236,7 @@ enum d_walk_ret { * * The @enter() callbacks are called with d_lock held. */ @@ -37838,7 +37555,7 @@ index 2e7e8d85e..328a13662 100644 enum d_walk_ret (*enter)(void *, struct dentry *)) { struct dentry *this_parent; -@@ -1343,6 +1343,7 @@ static void d_walk(struct dentry *parent, void *data, +@@ -1341,6 +1341,7 @@ rename_retry: seq = 1; goto again; } @@ -37846,7 +37563,7 @@ index 2e7e8d85e..328a13662 100644 struct check_mount { struct vfsmount *mnt; -@@ -2837,6 +2838,7 @@ void d_exchange(struct dentry *dentry1, struct dentry *dentry2) +@@ -2852,6 +2853,7 @@ void d_exchange(struct dentry *dentry1, write_sequnlock(&rename_lock); } @@ -37854,11 +37571,9 @@ index 2e7e8d85e..328a13662 100644 /** * d_ancestor - search for an ancestor -diff --git a/fs/exec.c b/fs/exec.c -index 1ebf6e5a5..a72c29465 100644 --- a/fs/exec.c +++ b/fs/exec.c -@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path) +@@ -109,6 +109,7 @@ bool path_noexec(const struct path *path return (path->mnt->mnt_flags & MNT_NOEXEC) || (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); } @@ -37866,8 +37581,6 @@ index 1ebf6e5a5..a72c29465 100644 #ifdef CONFIG_USELIB /* -diff --git a/fs/fcntl.c b/fs/fcntl.c -index 4137d9653..77513097f 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c @@ -32,7 +32,7 @@ @@ -37879,7 +37592,7 @@ index 4137d9653..77513097f 100644 { struct inode * inode = file_inode(filp); int error = 0; -@@ -63,6 +63,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg) +@@ -63,6 +63,8 @@ static int setfl(int fd, struct file * f if (filp->f_op->check_flags) error = filp->f_op->check_flags(arg); @@ -37888,7 +37601,7 @@ index 4137d9653..77513097f 100644 if (error) return error; -@@ -83,6 +85,7 @@ static int setfl(int fd, struct file * filp, unsigned long arg) +@@ -83,6 +85,7 @@ static int setfl(int fd, struct file * f out: return error; } @@ -37896,11 +37609,9 @@ index 4137d9653..77513097f 100644 static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) -diff --git a/fs/file_table.c b/fs/file_table.c -index e49af4caf..569020fd1 100644 --- a/fs/file_table.c +++ b/fs/file_table.c -@@ -161,6 +161,7 @@ struct file *alloc_empty_file(int flags, const struct cred *cred) +@@ -161,6 +161,7 @@ over: } return ERR_PTR(-ENFILE); } @@ -37924,11 +37635,9 @@ index e49af4caf..569020fd1 100644 void __init files_init(void) { -diff --git a/fs/inode.c b/fs/inode.c -index 42f6d25f3..69d4a6cde 100644 --- a/fs/inode.c +++ b/fs/inode.c -@@ -1657,7 +1657,7 @@ EXPORT_SYMBOL(generic_update_time); +@@ -1665,7 +1665,7 @@ EXPORT_SYMBOL(generic_update_time); * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ @@ -37937,7 +37646,7 @@ index 42f6d25f3..69d4a6cde 100644 { int (*update_time)(struct inode *, struct timespec64 *, int); -@@ -1666,6 +1666,7 @@ static int update_time(struct inode *inode, struct timespec64 *time, int flags) +@@ -1674,6 +1674,7 @@ static int update_time(struct inode *ino return update_time(inode, time, flags); } @@ -37945,11 +37654,9 @@ index 42f6d25f3..69d4a6cde 100644 /** * touch_atime - update the access time -diff --git a/fs/namespace.c b/fs/namespace.c -index 99186556f..c49803ce0 100644 --- a/fs/namespace.c +++ b/fs/namespace.c -@@ -437,6 +437,7 @@ void __mnt_drop_write(struct vfsmount *mnt) +@@ -437,6 +437,7 @@ void __mnt_drop_write(struct vfsmount *m mnt_dec_writers(real_mount(mnt)); preempt_enable(); } @@ -37957,7 +37664,7 @@ index 99186556f..c49803ce0 100644 /** * mnt_drop_write - give up write access to a mount -@@ -770,6 +771,13 @@ static inline int check_mnt(struct mount *mnt) +@@ -770,6 +771,13 @@ static inline int check_mnt(struct mount return mnt->mnt_ns == current->nsproxy->mnt_ns; } @@ -37971,7 +37678,7 @@ index 99186556f..c49803ce0 100644 /* * vfsmount lock must be held for write */ -@@ -1826,6 +1834,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, +@@ -1838,6 +1846,7 @@ int iterate_mounts(int (*f)(struct vfsmo } return 0; } @@ -37979,8 +37686,6 @@ index 99186556f..c49803ce0 100644 static void cleanup_group_ids(struct mount *mnt, struct mount *end) { -diff --git a/fs/notify/group.c b/fs/notify/group.c -index c03b83662..817f22c6e 100644 --- a/fs/notify/group.c +++ b/fs/notify/group.c @@ -23,6 +23,7 @@ @@ -37991,7 +37696,7 @@ index c03b83662..817f22c6e 100644 #include #include "fsnotify.h" -@@ -112,6 +113,7 @@ void fsnotify_get_group(struct fsnotify_group *group) +@@ -112,6 +113,7 @@ void fsnotify_get_group(struct fsnotify_ { refcount_inc(&group->refcnt); } @@ -37999,7 +37704,7 @@ index c03b83662..817f22c6e 100644 /* * Drop a reference to a group. Free it if it's through. -@@ -121,6 +123,7 @@ void fsnotify_put_group(struct fsnotify_group *group) +@@ -121,6 +123,7 @@ void fsnotify_put_group(struct fsnotify_ if (refcount_dec_and_test(&group->refcnt)) fsnotify_final_destroy_group(group); } @@ -38007,7 +37712,7 @@ index c03b83662..817f22c6e 100644 /* * Create a new fsnotify_group and hold a reference for the group returned. -@@ -150,6 +153,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops) +@@ -150,6 +153,7 @@ struct fsnotify_group *fsnotify_alloc_gr return group; } @@ -38015,11 +37720,9 @@ index c03b83662..817f22c6e 100644 int fsnotify_fasync(int fd, struct file *file, int on) { -diff --git a/fs/notify/mark.c b/fs/notify/mark.c -index 59cdb2782..ce365c73f 100644 --- a/fs/notify/mark.c +++ b/fs/notify/mark.c -@@ -263,6 +263,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) +@@ -285,6 +285,7 @@ void fsnotify_put_mark(struct fsnotify_m queue_delayed_work(system_unbound_wq, &reaper_work, FSNOTIFY_REAPER_DELAY); } @@ -38027,7 +37730,7 @@ index 59cdb2782..ce365c73f 100644 /* * Get mark reference when we found the mark via lockless traversal of object -@@ -417,6 +418,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark, +@@ -439,6 +440,7 @@ void fsnotify_destroy_mark(struct fsnoti mutex_unlock(&group->mark_mutex); fsnotify_free_mark(mark); } @@ -38035,7 +37738,7 @@ index 59cdb2782..ce365c73f 100644 /* * Sorting function for lists of fsnotify marks. -@@ -632,6 +634,7 @@ int fsnotify_add_mark(struct fsnotify_mark *mark, fsnotify_connp_t *connp, +@@ -654,6 +656,7 @@ int fsnotify_add_mark(struct fsnotify_ma mutex_unlock(&group->mark_mutex); return ret; } @@ -38043,7 +37746,7 @@ index 59cdb2782..ce365c73f 100644 /* * Given a list of marks, find the mark associated with given group. If found -@@ -754,6 +757,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark, +@@ -777,6 +780,7 @@ void fsnotify_init_mark(struct fsnotify_ fsnotify_get_group(group); mark->group = group; } @@ -38051,11 +37754,9 @@ index 59cdb2782..ce365c73f 100644 /* * Destroy all marks in destroy_list, waits for SRCU period to finish before -diff --git a/fs/open.c b/fs/open.c -index 0285ce7db..cb81623a8 100644 --- a/fs/open.c +++ b/fs/open.c -@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, +@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l inode_unlock(dentry->d_inode); return ret; } @@ -38063,12 +37764,10 @@ index 0285ce7db..cb81623a8 100644 long vfs_truncate(const struct path *path, loff_t length) { -diff --git a/fs/proc/base.c b/fs/proc/base.c -index 7e9f07bf2..3ab590110 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c -@@ -2016,7 +2016,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) - down_read(&mm->mmap_sem); +@@ -2035,7 +2035,7 @@ static int map_files_get_link(struct den + rc = -ENOENT; vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { - *path = vma->vm_file->f_path; @@ -38076,11 +37775,9 @@ index 7e9f07bf2..3ab590110 100644 path_get(path); rc = 0; } -diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c -index 3b63be64e..fb9913bf3 100644 --- a/fs/proc/nommu.c +++ b/fs/proc/nommu.c -@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) +@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_ file = region->vm_file; if (file) { @@ -38092,11 +37789,9 @@ index 3b63be64e..fb9913bf3 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; } -diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 5ea1d64cb..7865a4707 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c -@@ -305,7 +305,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma) +@@ -309,7 +309,10 @@ show_map_vma(struct seq_file *m, struct const char *name = NULL; if (file) { @@ -38108,7 +37803,7 @@ index 5ea1d64cb..7865a4707 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1727,7 +1730,7 @@ static int show_numa_map(struct seq_file *m, void *v) +@@ -1768,7 +1771,7 @@ static int show_numa_map(struct seq_file struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; @@ -38117,11 +37812,9 @@ index 5ea1d64cb..7865a4707 100644 struct mm_struct *mm = vma->vm_mm; struct mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, -diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c -index 0b63d68de..400d1c594 100644 --- a/fs/proc/task_nommu.c +++ b/fs/proc/task_nommu.c -@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma) +@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_fil file = vma->vm_file; if (file) { @@ -38133,11 +37826,9 @@ index 0b63d68de..400d1c594 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; -diff --git a/fs/read_write.c b/fs/read_write.c -index 8a2737f0d..d9cb9690e 100644 --- a/fs/read_write.c +++ b/fs/read_write.c -@@ -459,6 +459,7 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) +@@ -459,6 +459,7 @@ ssize_t vfs_read(struct file *file, char return ret; } @@ -38145,7 +37836,7 @@ index 8a2737f0d..d9cb9690e 100644 static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { -@@ -489,6 +490,30 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count, +@@ -489,6 +490,30 @@ ssize_t __vfs_write(struct file *file, c return -EINVAL; } @@ -38176,7 +37867,7 @@ index 8a2737f0d..d9cb9690e 100644 ssize_t __kernel_write(struct file *file, const void *buf, size_t count, loff_t *pos) { mm_segment_t old_fs; -@@ -557,6 +582,7 @@ ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_ +@@ -557,6 +582,7 @@ ssize_t vfs_write(struct file *file, con return ret; } @@ -38184,8 +37875,6 @@ index 8a2737f0d..d9cb9690e 100644 static inline loff_t file_pos_read(struct file *file) { -diff --git a/fs/splice.c b/fs/splice.c -index b3daa971f..a5e3bcba0 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -838,8 +838,8 @@ EXPORT_SYMBOL(generic_splice_sendpage); @@ -38199,7 +37888,7 @@ index b3daa971f..a5e3bcba0 100644 { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); -@@ -851,13 +851,14 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, +@@ -851,13 +851,14 @@ static long do_splice_from(struct pipe_i return splice_write(pipe, out, ppos, len, flags); } @@ -38217,7 +37906,7 @@ index b3daa971f..a5e3bcba0 100644 { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -880,6 +881,7 @@ static long do_splice_to(struct file *in, loff_t *ppos, +@@ -880,6 +881,7 @@ static long do_splice_to(struct file *in return splice_read(in, ppos, pipe, len, flags); } @@ -38225,8 +37914,6 @@ index b3daa971f..a5e3bcba0 100644 /** * splice_direct_to_actor - splices data directly between two non-pipes -diff --git a/fs/sync.c b/fs/sync.c -index b54e0541a..ffd7ea438 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -28,7 +28,7 @@ @@ -38238,7 +37925,7 @@ index b54e0541a..ffd7ea438 100644 { if (wait) sync_inodes_sb(sb); -@@ -39,6 +39,7 @@ static int __sync_filesystem(struct super_block *sb, int wait) +@@ -39,6 +39,7 @@ static int __sync_filesystem(struct supe sb->s_op->sync_fs(sb, wait); return __sync_blockdev(sb->s_bdev, wait); } @@ -38246,11 +37933,9 @@ index b54e0541a..ffd7ea438 100644 /* * Write out and wait upon all dirty data associated with this -diff --git a/fs/xattr.c b/fs/xattr.c -index 0d6a6a4af..7ce4701b7 100644 --- a/fs/xattr.c +++ b/fs/xattr.c -@@ -295,6 +295,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, +@@ -332,6 +332,7 @@ vfs_getxattr_alloc(struct dentry *dentry *xattr_value = value; return error; } @@ -38258,11 +37943,9 @@ index 0d6a6a4af..7ce4701b7 100644 ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, -diff --git a/include/linux/fs.h b/include/linux/fs.h -index 897eae8fa..7fb92a99e 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h -@@ -1286,6 +1286,7 @@ extern void fasync_free(struct fasync_struct *); +@@ -1296,6 +1296,7 @@ extern void fasync_free(struct fasync_st /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); @@ -38270,7 +37953,7 @@ index 897eae8fa..7fb92a99e 100644 extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); -@@ -1747,6 +1748,7 @@ struct file_operations { +@@ -1760,6 +1761,7 @@ struct file_operations { ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); @@ -38278,7 +37961,7 @@ index 897eae8fa..7fb92a99e 100644 int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); -@@ -1818,6 +1820,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, +@@ -1831,6 +1833,12 @@ ssize_t rw_copy_check_uvector(int type, struct iovec *fast_pointer, struct iovec **ret_pointer); @@ -38291,7 +37974,7 @@ index 897eae8fa..7fb92a99e 100644 extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *); -@@ -2243,6 +2251,7 @@ extern int current_umask(void); +@@ -2260,6 +2268,7 @@ extern int current_umask(void); extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); @@ -38299,7 +37982,7 @@ index 897eae8fa..7fb92a99e 100644 /* /sys/fs */ extern struct kobject *fs_kobj; -@@ -2530,6 +2539,7 @@ static inline bool sb_is_blkdev_sb(struct super_block *sb) +@@ -2547,6 +2556,7 @@ static inline bool sb_is_blkdev_sb(struc return false; } #endif @@ -38307,11 +37990,9 @@ index 897eae8fa..7fb92a99e 100644 extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; -diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h -index b0d0b51c4..f73ffaa01 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h -@@ -313,6 +313,8 @@ static inline int lockdep_match_key(struct lockdep_map *lock, +@@ -313,6 +313,8 @@ static inline int lockdep_match_key(stru return lock->key == key; } @@ -38328,11 +38009,9 @@ index b0d0b51c4..f73ffaa01 100644 #define lockdep_is_held_type(l, r) (1) #define lockdep_assert_held(l) do { (void)(l); } while (0) -diff --git a/include/linux/mm.h b/include/linux/mm.h -index 0416a7204..4a298a926 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1440,6 +1440,28 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping, +@@ -1460,6 +1460,28 @@ static inline void unmap_shared_mapping_ unmap_mapping_range(mapping, holebegin, holelen, 0); } @@ -38361,11 +38040,9 @@ index 0416a7204..4a298a926 100644 extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, -diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index 5ed8f6292..012297540 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -239,6 +239,7 @@ struct vm_region { +@@ -244,6 +244,7 @@ struct vm_region { unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ @@ -38373,7 +38050,7 @@ index 5ed8f6292..012297540 100644 int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -313,6 +314,7 @@ struct vm_area_struct { +@@ -318,6 +319,7 @@ struct vm_area_struct { unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -38381,8 +38058,6 @@ index 5ed8f6292..012297540 100644 void * vm_private_data; /* was vm_pte (shared mem) */ atomic_long_t swap_readahead_info; -diff --git a/include/linux/mnt_namespace.h b/include/linux/mnt_namespace.h -index 35942084c..24f5fd1a7 100644 --- a/include/linux/mnt_namespace.h +++ b/include/linux/mnt_namespace.h @@ -6,11 +6,14 @@ @@ -38400,11 +38075,9 @@ index 35942084c..24f5fd1a7 100644 extern const struct file_operations proc_mounts_operations; extern const struct file_operations proc_mountinfo_operations; extern const struct file_operations proc_mountstats_operations; -diff --git a/include/linux/splice.h b/include/linux/splice.h -index 74b4911ac..19789fbea 100644 --- a/include/linux/splice.h +++ b/include/linux/splice.h -@@ -87,4 +87,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *); +@@ -87,4 +87,10 @@ extern void splice_shrink_spd(struct spl extern const struct pipe_buf_operations page_cache_pipe_buf_ops; extern const struct pipe_buf_operations default_pipe_buf_ops; @@ -38415,9 +38088,6 @@ index 74b4911ac..19789fbea 100644 + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif -diff --git a/include/uapi/linux/aufs_type.h b/include/uapi/linux/aufs_type.h -new file mode 100644 -index 000000000..8958f874b --- /dev/null +++ b/include/uapi/linux/aufs_type.h @@ -0,0 +1,448 @@ @@ -38869,11 +38539,9 @@ index 000000000..8958f874b +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ -diff --git a/kernel/fork.c b/kernel/fork.c -index f0b584795..fa562c364 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -505,7 +505,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, +@@ -510,7 +510,7 @@ static __latent_entropy int dup_mmap(str struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; @@ -38882,11 +38550,9 @@ index f0b584795..fa562c364 100644 if (tmp->vm_flags & VM_DENYWRITE) atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); -diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c -index dd13f865a..7ac19efda 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c -@@ -140,7 +140,7 @@ static struct lock_list list_entries[MAX_LOCKDEP_ENTRIES]; +@@ -140,7 +140,7 @@ static struct lock_list list_entries[MAX unsigned long nr_lock_classes; static struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; @@ -38895,7 +38561,7 @@ index dd13f865a..7ac19efda 100644 { if (!hlock->class_idx) { /* -@@ -151,6 +151,8 @@ static inline struct lock_class *hlock_class(struct held_lock *hlock) +@@ -151,6 +151,8 @@ static inline struct lock_class *hlock_c } return lock_classes + hlock->class_idx - 1; } @@ -38904,8 +38570,6 @@ index dd13f865a..7ac19efda 100644 #ifdef CONFIG_LOCK_STAT static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); -diff --git a/kernel/task_work.c b/kernel/task_work.c -index 0fef39566..83fb1ecfc 100644 --- a/kernel/task_work.c +++ b/kernel/task_work.c @@ -116,3 +116,4 @@ void task_work_run(void) @@ -38913,11 +38577,9 @@ index 0fef39566..83fb1ecfc 100644 } } +EXPORT_SYMBOL_GPL(task_work_run); -diff --git a/mm/Makefile b/mm/Makefile -index 26ef77a38..b2869af1e 100644 --- a/mm/Makefile +++ b/mm/Makefile -@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o fadvise.o \ +@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill. mm_init.o mmu_context.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ @@ -38926,11 +38588,9 @@ index 26ef77a38..b2869af1e 100644 obj-y += init-mm.o -diff --git a/mm/filemap.c b/mm/filemap.c -index 52517f28e..250f675dc 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2700,7 +2700,7 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf) +@@ -2723,7 +2723,7 @@ vm_fault_t filemap_page_mkwrite(struct v vm_fault_t ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); @@ -38939,11 +38599,9 @@ index 52517f28e..250f675dc 100644 lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); -diff --git a/mm/mmap.c b/mm/mmap.c -index f7cd9cb96..515e88a19 100644 --- a/mm/mmap.c +++ b/mm/mmap.c -@@ -180,7 +180,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +@@ -175,7 +175,7 @@ static struct vm_area_struct *remove_vma if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -38952,7 +38610,7 @@ index f7cd9cb96..515e88a19 100644 mpol_put(vma_policy(vma)); vm_area_free(vma); return next; -@@ -905,7 +905,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, +@@ -900,7 +900,7 @@ again: if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -38961,7 +38619,7 @@ index f7cd9cb96..515e88a19 100644 } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1821,8 +1821,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1816,8 +1816,8 @@ out: return addr; unmap_and_free_vma: @@ -38971,7 +38629,7 @@ index f7cd9cb96..515e88a19 100644 /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); -@@ -2641,7 +2641,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2641,7 +2641,7 @@ int __split_vma(struct mm_struct *mm, st goto out_free_mpol; if (new->vm_file) @@ -38980,7 +38638,7 @@ index f7cd9cb96..515e88a19 100644 if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2660,7 +2660,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2660,7 +2660,7 @@ int __split_vma(struct mm_struct *mm, st if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -38989,7 +38647,7 @@ index f7cd9cb96..515e88a19 100644 unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2822,7 +2822,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2822,7 +2822,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsign struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -38998,7 +38656,7 @@ index f7cd9cb96..515e88a19 100644 pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); -@@ -2897,10 +2897,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2897,10 +2897,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsign } } @@ -39027,7 +38685,7 @@ index f7cd9cb96..515e88a19 100644 out: up_write(&mm->mmap_sem); if (populate) -@@ -3206,7 +3223,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -3207,7 +3224,7 @@ struct vm_area_struct *copy_vma(struct v if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -39036,11 +38694,9 @@ index f7cd9cb96..515e88a19 100644 if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff --git a/mm/nommu.c b/mm/nommu.c -index e4aac3321..b27b200f1 100644 --- a/mm/nommu.c +++ b/mm/nommu.c -@@ -625,7 +625,7 @@ static void __put_nommu_region(struct vm_region *region) +@@ -629,7 +629,7 @@ static void __put_nommu_region(struct vm up_write(&nommu_region_sem); if (region->vm_file) @@ -39049,7 +38705,7 @@ index e4aac3321..b27b200f1 100644 /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -763,7 +763,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -767,7 +767,7 @@ static void delete_vma(struct mm_struct if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -39058,7 +38714,7 @@ index e4aac3321..b27b200f1 100644 put_nommu_region(vma->vm_region); vm_area_free(vma); } -@@ -1286,7 +1286,7 @@ unsigned long do_mmap(struct file *file, +@@ -1290,7 +1290,7 @@ unsigned long do_mmap(struct file *file, goto error_just_free; } } @@ -39067,7 +38723,7 @@ index e4aac3321..b27b200f1 100644 kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1361,7 +1361,7 @@ unsigned long do_mmap(struct file *file, +@@ -1365,7 +1365,7 @@ error_just_free: up_write(&nommu_region_sem); error: if (region->vm_file) @@ -39076,9 +38732,6 @@ index e4aac3321..b27b200f1 100644 kmem_cache_free(vm_region_jar, region); if (vma->vm_file) fput(vma->vm_file); -diff --git a/mm/prfile.c b/mm/prfile.c -new file mode 100644 -index 000000000..a27ac3688 --- /dev/null +++ b/mm/prfile.c @@ -0,0 +1,86 @@ @@ -39168,11 +38821,9 @@ index 000000000..a27ac3688 + fput(pr); +} +#endif /* !CONFIG_MMU */ -diff --git a/security/commoncap.c b/security/commoncap.c -index 2e489d6a3..1e146dafe 100644 --- a/security/commoncap.c +++ b/security/commoncap.c -@@ -1336,12 +1336,14 @@ int cap_mmap_addr(unsigned long addr) +@@ -1338,12 +1338,14 @@ int cap_mmap_addr(unsigned long addr) } return ret; } @@ -39187,8 +38838,6 @@ index 2e489d6a3..1e146dafe 100644 #ifdef CONFIG_SECURITY -diff --git a/security/device_cgroup.c b/security/device_cgroup.c -index cd97929fa..424fd2308 100644 --- a/security/device_cgroup.c +++ b/security/device_cgroup.c @@ -8,6 +8,7 @@ @@ -39199,16 +38848,14 @@ index cd97929fa..424fd2308 100644 #include #include #include -@@ -824,3 +825,4 @@ int __devcgroup_check_permission(short type, u32 major, u32 minor, +@@ -824,3 +825,4 @@ int __devcgroup_check_permission(short t return 0; } +EXPORT_SYMBOL_GPL(__devcgroup_check_permission); -diff --git a/security/security.c b/security/security.c -index 736e78da1..b3145394c 100644 --- a/security/security.c +++ b/security/security.c -@@ -542,6 +542,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry) +@@ -538,6 +538,7 @@ int security_path_rmdir(const struct pat return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } @@ -39216,7 +38863,7 @@ index 736e78da1..b3145394c 100644 int security_path_unlink(const struct path *dir, struct dentry *dentry) { -@@ -558,6 +559,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry, +@@ -554,6 +555,7 @@ int security_path_symlink(const struct p return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } @@ -39224,7 +38871,7 @@ index 736e78da1..b3145394c 100644 int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) -@@ -566,6 +568,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir, +@@ -562,6 +564,7 @@ int security_path_link(struct dentry *ol return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } @@ -39232,7 +38879,7 @@ index 736e78da1..b3145394c 100644 int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, -@@ -593,6 +596,7 @@ int security_path_truncate(const struct path *path) +@@ -589,6 +592,7 @@ int security_path_truncate(const struct return 0; return call_int_hook(path_truncate, 0, path); } @@ -39240,7 +38887,7 @@ index 736e78da1..b3145394c 100644 int security_path_chmod(const struct path *path, umode_t mode) { -@@ -600,6 +604,7 @@ int security_path_chmod(const struct path *path, umode_t mode) +@@ -596,6 +600,7 @@ int security_path_chmod(const struct pat return 0; return call_int_hook(path_chmod, 0, path, mode); } @@ -39248,7 +38895,7 @@ index 736e78da1..b3145394c 100644 int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) { -@@ -607,6 +612,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) +@@ -603,6 +608,7 @@ int security_path_chown(const struct pat return 0; return call_int_hook(path_chown, 0, path, uid, gid); } @@ -39256,7 +38903,7 @@ index 736e78da1..b3145394c 100644 int security_path_chroot(const struct path *path) { -@@ -692,6 +698,7 @@ int security_inode_readlink(struct dentry *dentry) +@@ -688,6 +694,7 @@ int security_inode_readlink(struct dentr return 0; return call_int_hook(inode_readlink, 0, dentry); } @@ -39264,7 +38911,7 @@ index 736e78da1..b3145394c 100644 int security_inode_follow_link(struct dentry *dentry, struct inode *inode, bool rcu) -@@ -707,6 +714,7 @@ int security_inode_permission(struct inode *inode, int mask) +@@ -703,6 +710,7 @@ int security_inode_permission(struct ino return 0; return call_int_hook(inode_permission, 0, inode, mask); } @@ -39272,7 +38919,7 @@ index 736e78da1..b3145394c 100644 int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { -@@ -878,6 +886,7 @@ int security_file_permission(struct file *file, int mask) +@@ -874,6 +882,7 @@ int security_file_permission(struct file return fsnotify_perm(file, mask); } @@ -39280,7 +38927,7 @@ index 736e78da1..b3145394c 100644 int security_file_alloc(struct file *file) { -@@ -937,6 +946,7 @@ int security_mmap_file(struct file *file, unsigned long prot, +@@ -933,6 +942,7 @@ int security_mmap_file(struct file *file return ret; return ima_file_mmap(file, prot); } diff --git a/patch/kernel/mvebu-legacy/general-increasing_DMA_block_memory_allocation_to_2048.patch b/patch/kernel/mvebu-legacy/general-increasing_DMA_block_memory_allocation_to_2048.patch index 8d8746273..e6ca528a3 100644 --- a/patch/kernel/mvebu-legacy/general-increasing_DMA_block_memory_allocation_to_2048.patch +++ b/patch/kernel/mvebu-legacy/general-increasing_DMA_block_memory_allocation_to_2048.patch @@ -1,27 +1,22 @@ -diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c -index 3216e09..21bce28 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c -@@ -44,7 +44,7 @@ static pgprot_t __get_dma_pgprot(unsigned long attrs, pgprot_t prot, - - static struct gen_pool *atomic_pool; - +@@ -44,7 +44,7 @@ static pgprot_t __get_dma_pgprot(unsigne + + static struct gen_pool *atomic_pool __ro_after_init; + -#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_256K +#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_2M static size_t atomic_pool_size __initdata = DEFAULT_DMA_COHERENT_POOL_SIZE; - + static int __init early_coherent_pool(char *p) - -diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c -index ada8eb2..8df220f --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c -@@ -381,7 +381,7 @@ static void __dma_free_remap(void *cpu_addr, size_t size) +@@ -381,7 +381,7 @@ static void __dma_free_remap(void *cpu_a VM_ARM_DMA_CONSISTENT | VM_USERMAP); } - + -#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_256K +#define DEFAULT_DMA_COHERENT_POOL_SIZE SZ_2M static struct gen_pool *atomic_pool __ro_after_init; - + static size_t atomic_pool_size __initdata = DEFAULT_DMA_COHERENT_POOL_SIZE;