Skip to contentSkip to conversation

mmc: block: Remove error check of hw_reset on reset

PATCH Superseded Christian Löhle 2 participants 3 messages Oct 6, 2022 – Oct 7, 2022 MMC, SD and SDIO

v1 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 mmc: block: Remove error check of hw_reset on reset

Before switching back to the right partition in mmc_blk_reset there used to be a check if hw_reset was even supported. This return value was removed, so there is no reason to check.

Fixes fefdd3c91e0a ("mmc: core: Drop superfluous validations in mmc_hw|sw_reset()")
---
 drivers/mmc/core/block.c | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)
drivers/mmc/core/block.c +10 -14
index ce89611a136e..8531f92fd0cb 100644
@@ -991,6 +991,8 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host,
 			 int type)
 {
 	int err;
+	struct mmc_blk_data *main_md = dev_get_drvdata(&host->card->dev);
+	int part_err;
 
 	if (md->reset_done & type)
 		return -EEXIST;
@@ -998,20 +1000,14 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host,
 	md->reset_done |= type;
 	err = mmc_hw_reset(host->card);
 	/* Ensure we switch back to the correct partition */
-	if (err) {
-		struct mmc_blk_data *main_md =
-			dev_get_drvdata(&host->card->dev);
-		int part_err;
-
-		main_md->part_curr = main_md->part_type;
-		part_err = mmc_blk_part_switch(host->card, md->part_type);
-		if (part_err) {
-			/*
-			 * We have failed to get back into the correct
-			 * partition, so we need to abort the whole request.
-			 */
-			return -ENODEV;
-		}
+	main_md->part_curr = main_md->part_type;
+	part_err = mmc_blk_part_switch(host->card, md->part_type);
+	if (part_err) {
+		/*
+		 * We have failed to get back into the correct
+		 * partition, so we need to abort the whole request.
+		 */
+		return -ENODEV;
 	}
 	return err;
 }
Signature · 5 lines
2.37.3

Hyperstone GmbH | Reichenaustr. 39a  | 78467 Konstanz
Managing Director: Dr. Jan Peter Berns.
Commercial register of local courts: Freiburg HRB381782
#1 lore raw
Quoted 34 lines · Christian Löhle

Before switching back to the right partition in mmc_blk_reset there used to be a check if hw_reset was even supported. This return value was removed, so there is no reason to check.

Fixes fefdd3c91e0a ("mmc: core: Drop superfluous validations in mmc_hw|sw_reset()")
---
 drivers/mmc/core/block.c | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)
drivers/mmc/core/block.c +2 -4
index ce89611a136e..8531f92fd0cb 100644
@@ -991,6 +991,8 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host,
                         int type)
 {
        int err;
+       struct mmc_blk_data *main_md = dev_get_drvdata(&host->card->dev);
+       int part_err;
 
        if (md->reset_done & type)
                return -EEXIST;
@@ -998,20 +1000,14 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host,
        md->reset_done |= type;
        err = mmc_hw_reset(host->card);
        /* Ensure we switch back to the correct partition */
-       if (err) {
-               struct mmc_blk_data *main_md =
-                       dev_get_drvdata(&host->card->dev);
-               int part_err;

drivers/mmc/core/block.c static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, · line 1014

Quoted 10 lines
drivers/mmc/core/block.c +0 -10
-
-               main_md->part_curr = main_md->part_type;
-               part_err = mmc_blk_part_switch(host->card, md->part_type);
-               if (part_err) {
-                       /*
-                        * We have failed to get back into the correct
-                        * partition, so we need to abort the whole request.
-                        */
-                       return -ENODEV;
-               }

Yes, this is certainly restoring the behaviour and fixing a bug. Thanks!

However, I do wonder about what's the point of trying to switch back to the correct partition if the mmc_hw_reset() failed (returned a negative error code). It looks like that shouldn't matter, if the reset failed we are screwed anyway, right?

drivers/mmc/core/block.c static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, · line 1013

Quoted 11 lines
drivers/mmc/core/block.c +8 -0
+       main_md->part_curr = main_md->part_type;
+       part_err = mmc_blk_part_switch(host->card, md->part_type);
+       if (part_err) {
+               /*
+                * We have failed to get back into the correct
+                * partition, so we need to abort the whole request.
+                */
+               return -ENODEV;
        }
        return err;
 }

Kind regards
Uffe

#2 lore raw
Quoted 3 lines

Yes, this is certainly restoring the behaviour and fixing a bug. Thanks!

However, I do wonder about what's the point of trying to switch back to the correct partition if the mmc_hw_reset() > failed (returned a negative error code). It looks like that shouldn't matter, if the reset failed we are screwed anyway, > right?

I agree with you, the only reason for it is to keep behavior in line with err != -EOPNOTSUPP, For the case that neither of you remembers the original intent, I'll send a v2.

Regards,
Christian

Hyperstone GmbH | Reichenaustr. 39a | 78467 Konstanz Managing Director: Dr. Jan Peter Berns. Commercial register of local courts: Freiburg HRB381782