From: Greg Kroah-Hartman Date: Mon, 20 Jul 2020 11:23:42 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.4.231~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=670a92c2a2fc6b1faa6c12f0247544da4dfdfd5e;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: mtd-rawnand-brcmnand-fix-cs0-layout.patch mtd-rawnand-marvell-fix-probe-error-path.patch mtd-rawnand-marvell-use-nand_cleanup-when-the-device-is-not-yet-registered.patch mtd-rawnand-oxnas-keep-track-of-registered-devices.patch mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch mtd-rawnand-oxnas-unregister-all-devices-on-error.patch mtd-rawnand-timings-fix-default-tr_max-and-tccs_min-timings.patch slimbus-core-fix-mismatch-in-of_node_get-put.patch --- diff --git a/queue-4.19/mtd-rawnand-brcmnand-fix-cs0-layout.patch b/queue-4.19/mtd-rawnand-brcmnand-fix-cs0-layout.patch new file mode 100644 index 00000000000..9a314c36bbc --- /dev/null +++ b/queue-4.19/mtd-rawnand-brcmnand-fix-cs0-layout.patch @@ -0,0 +1,40 @@ +From 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Fri, 22 May 2020 14:15:21 +0200 +Subject: mtd: rawnand: brcmnand: fix CS0 layout +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Álvaro Fernández Rojas + +commit 3d3fb3c5be9ce07fa85d8f67fb3922e4613b955b upstream. + +Only v3.3-v5.0 have a different CS0 layout. +Controllers before v3.3 use the same layout for every CS. + +Fixes: 27c5b17cd1b1 ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") +Signed-off-by: Álvaro Fernández Rojas +Acked-by: Florian Fainelli +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200522121524.4161539-3-noltari@gmail.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/brcmnand/brcmnand.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c ++++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c +@@ -491,8 +491,9 @@ static int brcmnand_revision_init(struct + } else { + ctrl->cs_offsets = brcmnand_cs_offsets; + +- /* v5.0 and earlier has a different CS0 offset layout */ +- if (ctrl->nand_version <= 0x0500) ++ /* v3.3-5.0 have a different CS0 offset layout */ ++ if (ctrl->nand_version >= 0x0303 && ++ ctrl->nand_version <= 0x0500) + ctrl->cs0_offsets = brcmnand_cs_offsets_cs0; + } + diff --git a/queue-4.19/mtd-rawnand-marvell-fix-probe-error-path.patch b/queue-4.19/mtd-rawnand-marvell-fix-probe-error-path.patch new file mode 100644 index 00000000000..79867824cd9 --- /dev/null +++ b/queue-4.19/mtd-rawnand-marvell-fix-probe-error-path.patch @@ -0,0 +1,67 @@ +From c525b7af96714f72e316c70781570a4a3e1c2856 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Fri, 24 Apr 2020 18:44:59 +0200 +Subject: mtd: rawnand: marvell: Fix probe error path + +From: Miquel Raynal + +commit c525b7af96714f72e316c70781570a4a3e1c2856 upstream. + +Ensure all chips are deregistered and cleaned in case of error during +the probe. + +Fixes: 02f26ecf8c77 ("mtd: nand: add reworked Marvell NAND controller driver") +Signed-off-by: Miquel Raynal +Reviewed-by: Boris Brezillon +Link: https://lore.kernel.org/linux-mtd/20200424164501.26719-5-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/marvell_nand.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +--- a/drivers/mtd/nand/raw/marvell_nand.c ++++ b/drivers/mtd/nand/raw/marvell_nand.c +@@ -2573,6 +2573,16 @@ static int marvell_nand_chip_init(struct + return 0; + } + ++static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) ++{ ++ struct marvell_nand_chip *entry, *temp; ++ ++ list_for_each_entry_safe(entry, temp, &nfc->chips, node) { ++ nand_release(&entry->chip); ++ list_del(&entry->node); ++ } ++} ++ + static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) + { + struct device_node *np = dev->of_node; +@@ -2607,21 +2617,16 @@ static int marvell_nand_chips_init(struc + ret = marvell_nand_chip_init(dev, nfc, nand_np); + if (ret) { + of_node_put(nand_np); +- return ret; ++ goto cleanup_chips; + } + } + + return 0; +-} + +-static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) +-{ +- struct marvell_nand_chip *entry, *temp; ++cleanup_chips: ++ marvell_nand_chips_cleanup(nfc); + +- list_for_each_entry_safe(entry, temp, &nfc->chips, node) { +- nand_release(&entry->chip); +- list_del(&entry->node); +- } ++ return ret; + } + + static int marvell_nfc_init_dma(struct marvell_nfc *nfc) diff --git a/queue-4.19/mtd-rawnand-marvell-use-nand_cleanup-when-the-device-is-not-yet-registered.patch b/queue-4.19/mtd-rawnand-marvell-use-nand_cleanup-when-the-device-is-not-yet-registered.patch new file mode 100644 index 00000000000..547ac193d23 --- /dev/null +++ b/queue-4.19/mtd-rawnand-marvell-use-nand_cleanup-when-the-device-is-not-yet-registered.patch @@ -0,0 +1,33 @@ +From 7a0c18fb5c71c6ac7d4662a145e4227dcd4a36a3 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Fri, 24 Apr 2020 18:44:58 +0200 +Subject: mtd: rawnand: marvell: Use nand_cleanup() when the device is not yet registered + +From: Miquel Raynal + +commit 7a0c18fb5c71c6ac7d4662a145e4227dcd4a36a3 upstream. + +Do not call nand_release() while the MTD device has not been +registered, use nand_cleanup() instead. + +Fixes: 02f26ecf8c77 ("mtd: nand: add reworked Marvell NAND controller driver") +Signed-off-by: Miquel Raynal +Reviewed-by: Boris Brezillon +Link: https://lore.kernel.org/linux-mtd/20200424164501.26719-4-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/marvell_nand.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/mtd/nand/raw/marvell_nand.c ++++ b/drivers/mtd/nand/raw/marvell_nand.c +@@ -2564,7 +2564,7 @@ static int marvell_nand_chip_init(struct + ret = mtd_device_register(mtd, NULL, 0); + if (ret) { + dev_err(dev, "failed to register mtd device: %d\n", ret); +- nand_release(chip); ++ nand_cleanup(chip); + return ret; + } + diff --git a/queue-4.19/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch b/queue-4.19/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch new file mode 100644 index 00000000000..d478acaf343 --- /dev/null +++ b/queue-4.19/mtd-rawnand-oxnas-keep-track-of-registered-devices.patch @@ -0,0 +1,58 @@ +From 383fc3f613e7eac9f2e3c13b6f9fb8c1f39cb9d5 Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:08 +0200 +Subject: mtd: rawnand: oxnas: Keep track of registered devices + +From: Miquel Raynal + +commit 383fc3f613e7eac9f2e3c13b6f9fb8c1f39cb9d5 upstream. + +All initialized and registered devices should be listed somewhere so +that we can unregister/free them in the _remove() path. + +This patch is not a fix per-se but is needed to apply three other +fixes coming right after, explaining the Fixes/Cc: stable tags. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-36-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/oxnas_nand.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/mtd/nand/raw/oxnas_nand.c ++++ b/drivers/mtd/nand/raw/oxnas_nand.c +@@ -36,6 +36,7 @@ struct oxnas_nand_ctrl { + void __iomem *io_base; + struct clk *clk; + struct nand_chip *chips[OXNAS_NAND_MAX_CHIPS]; ++ unsigned int nchips; + }; + + static uint8_t oxnas_nand_read_byte(struct mtd_info *mtd) +@@ -86,7 +87,6 @@ static int oxnas_nand_probe(struct platf + struct nand_chip *chip; + struct mtd_info *mtd; + struct resource *res; +- int nchips = 0; + int count = 0; + int err = 0; + +@@ -150,12 +150,12 @@ static int oxnas_nand_probe(struct platf + if (err) + goto err_cleanup_nand; + +- oxnas->chips[nchips] = chip; +- ++nchips; ++ oxnas->chips[oxnas->nchips] = chip; ++ ++oxnas->nchips; + } + + /* Exit if no chips found */ +- if (!nchips) { ++ if (!oxnas->nchips) { + err = -ENODEV; + goto err_clk_unprepare; + } diff --git a/queue-4.19/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch b/queue-4.19/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch new file mode 100644 index 00000000000..f2f9e000c8f --- /dev/null +++ b/queue-4.19/mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch @@ -0,0 +1,39 @@ +From 0a5f45e57e35d0840bedb816974ce2e63406cd8b Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:11 +0200 +Subject: mtd: rawnand: oxnas: Release all devices in the _remove() path + +From: Miquel Raynal + +commit 0a5f45e57e35d0840bedb816974ce2e63406cd8b upstream. + +oxnans_nand_remove() should release all MTD devices and clean all NAND +devices, not only the first one registered. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-39-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/oxnas_nand.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/drivers/mtd/nand/raw/oxnas_nand.c ++++ b/drivers/mtd/nand/raw/oxnas_nand.c +@@ -184,9 +184,13 @@ err_clk_unprepare: + static int oxnas_nand_remove(struct platform_device *pdev) + { + struct oxnas_nand_ctrl *oxnas = platform_get_drvdata(pdev); ++ struct nand_chip *chip; ++ int i; + +- if (oxnas->chips[0]) +- nand_release(oxnas->chips[0]); ++ for (i = 0; i < oxnas->nchips; i++) { ++ chip = oxnas->chips[i]; ++ nand_release(chip); ++ } + + clk_disable_unprepare(oxnas->clk); + diff --git a/queue-4.19/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch b/queue-4.19/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch new file mode 100644 index 00000000000..3b924309a98 --- /dev/null +++ b/queue-4.19/mtd-rawnand-oxnas-unregister-all-devices-on-error.patch @@ -0,0 +1,48 @@ +From b60391eb17b2956ff2fc4c348e5a464da21ff9cb Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 19 May 2020 15:00:10 +0200 +Subject: mtd: rawnand: oxnas: Unregister all devices on error + +From: Miquel Raynal + +commit b60391eb17b2956ff2fc4c348e5a464da21ff9cb upstream. + +On error, the oxnas probe path just frees the device which failed and +aborts the probe, leaving unreleased resources. + +Fix this situation by calling mtd_device_unregister()/nand_cleanup() +on these. + +Fixes: 668592492409 ("mtd: nand: Add OX820 NAND Support") +Signed-off-by: Miquel Raynal +Link: https://lore.kernel.org/linux-mtd/20200519130035.1883-38-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/oxnas_nand.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/mtd/nand/raw/oxnas_nand.c ++++ b/drivers/mtd/nand/raw/oxnas_nand.c +@@ -89,6 +89,7 @@ static int oxnas_nand_probe(struct platf + struct resource *res; + int count = 0; + int err = 0; ++ int i; + + /* Allocate memory for the device structure (and zero it) */ + oxnas = devm_kzalloc(&pdev->dev, sizeof(*oxnas), +@@ -168,6 +169,13 @@ err_cleanup_nand: + nand_cleanup(chip); + err_release_child: + of_node_put(nand_np); ++ ++ for (i = 0; i < oxnas->nchips; i++) { ++ chip = oxnas->chips[i]; ++ WARN_ON(mtd_device_unregister(nand_to_mtd(chip))); ++ nand_cleanup(chip); ++ } ++ + err_clk_unprepare: + clk_disable_unprepare(oxnas->clk); + return err; diff --git a/queue-4.19/mtd-rawnand-timings-fix-default-tr_max-and-tccs_min-timings.patch b/queue-4.19/mtd-rawnand-timings-fix-default-tr_max-and-tccs_min-timings.patch new file mode 100644 index 00000000000..bcf52cd9035 --- /dev/null +++ b/queue-4.19/mtd-rawnand-timings-fix-default-tr_max-and-tccs_min-timings.patch @@ -0,0 +1,38 @@ +From 4d8ec041d9c454029f6cd90622f6d81eb61e781c Mon Sep 17 00:00:00 2001 +From: Miquel Raynal +Date: Tue, 28 Apr 2020 11:42:55 +0200 +Subject: mtd: rawnand: timings: Fix default tR_max and tCCS_min timings + +From: Miquel Raynal + +commit 4d8ec041d9c454029f6cd90622f6d81eb61e781c upstream. + +tR and tCCS are currently wrongly expressed in femtoseconds, while we +expect these values to be expressed in picoseconds. Set right +hardcoded values. + +Fixes: 6a943386ee36 mtd: rawnand: add default values for dynamic timings +Signed-off-by: Miquel Raynal +Reviewed-by: Boris Brezillon +Link: https://lore.kernel.org/linux-mtd/20200428094302.14624-3-miquel.raynal@bootlin.com +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/mtd/nand/raw/nand_timings.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +--- a/drivers/mtd/nand/raw/nand_timings.c ++++ b/drivers/mtd/nand/raw/nand_timings.c +@@ -331,10 +331,9 @@ int onfi_fill_data_interface(struct nand + /* microseconds -> picoseconds */ + timings->tPROG_max = 1000000ULL * ONFI_DYN_TIMING_MAX; + timings->tBERS_max = 1000000ULL * ONFI_DYN_TIMING_MAX; +- timings->tR_max = 1000000ULL * 200000000ULL; + +- /* nanoseconds -> picoseconds */ +- timings->tCCS_min = 1000UL * 500000; ++ timings->tR_max = 200000000; ++ timings->tCCS_min = 500000; + } + + return 0; diff --git a/queue-4.19/series b/queue-4.19/series index 1d729ff262c..50e327aeba1 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -73,3 +73,11 @@ soc-qcom-rpmh-update-dirty-flag-only-when-data-changes.patch soc-qcom-rpmh-invalidate-sleep-and-wake-tcses-before-flushing-new-data.patch soc-qcom-rpmh-rsc-clear-active-mode-configuration-for-wake-tcs.patch soc-qcom-rpmh-rsc-allow-using-free-wake-tcs-for-active-request.patch +mtd-rawnand-marvell-use-nand_cleanup-when-the-device-is-not-yet-registered.patch +mtd-rawnand-marvell-fix-probe-error-path.patch +mtd-rawnand-timings-fix-default-tr_max-and-tccs_min-timings.patch +mtd-rawnand-brcmnand-fix-cs0-layout.patch +mtd-rawnand-oxnas-keep-track-of-registered-devices.patch +mtd-rawnand-oxnas-unregister-all-devices-on-error.patch +mtd-rawnand-oxnas-release-all-devices-in-the-_remove-path.patch +slimbus-core-fix-mismatch-in-of_node_get-put.patch diff --git a/queue-4.19/slimbus-core-fix-mismatch-in-of_node_get-put.patch b/queue-4.19/slimbus-core-fix-mismatch-in-of_node_get-put.patch new file mode 100644 index 00000000000..b9c4c030d5e --- /dev/null +++ b/queue-4.19/slimbus-core-fix-mismatch-in-of_node_get-put.patch @@ -0,0 +1,32 @@ +From 01360857486c0e4435dea3aa2f78b47213b7cf6a Mon Sep 17 00:00:00 2001 +From: Saravana Kannan +Date: Mon, 11 May 2020 16:13:34 +0100 +Subject: slimbus: core: Fix mismatch in of_node_get/put + +From: Saravana Kannan + +commit 01360857486c0e4435dea3aa2f78b47213b7cf6a upstream. + +Adding missing corresponding of_node_put + +Fixes: 7588a511bdb4 ("slimbus: core: add support to device tree helper") +Signed-off-by: Saravana Kannan +[Srini: added fixes tag, removed NULL check and updated log] +Signed-off-by: Srinivas Kandagatla +Link: https://lore.kernel.org/r/20200511151334.362-3-srinivas.kandagatla@linaro.org +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/slimbus/core.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/slimbus/core.c ++++ b/drivers/slimbus/core.c +@@ -236,6 +236,7 @@ EXPORT_SYMBOL_GPL(slim_register_controll + /* slim_remove_device: Remove the effect of slim_add_device() */ + static void slim_remove_device(struct slim_device *sbdev) + { ++ of_node_put(sbdev->dev.of_node); + device_unregister(&sbdev->dev); + } +