linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] mtd: lpddr: Fix bad logic bug in print_drs_error
@ 2020-04-27 19:48 Gustavo A. R. Silva
  2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Gustavo A. R. Silva @ 2020-04-27 19:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	linux-mtd, Joe Perches, Gustavo A. R. Silva

Hi,

This series aims to fix a bad logic bug in print_drs_error, which is
tagged for -stable.  The series also include some formatting fixups.

Thanks

Changes in v2:
 - Coalesce formats in Patch 2.
 - Remove inline from print_drs_error in Patch 3.
 - Update changelog texts according to the last
   changes.

Gustavo A. R. Silva (3):
  mtd: lpddr: Fix bad logic in print_drs_error
  mtd: lpddr: Replace printk with pr_notice
  mtd: lpddr: Move function print_drs_error to lpddr_cmds.c

 drivers/mtd/lpddr/lpddr_cmds.c | 28 ++++++++++++++++++++++++++++
 include/linux/mtd/pfow.h       | 33 ---------------------------------
 2 files changed, 28 insertions(+), 33 deletions(-)

-- 
2.26.0


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v2 1/3] mtd: lpddr: Fix bad logic in print_drs_error
  2020-04-27 19:48 [PATCH v2 0/3] mtd: lpddr: Fix bad logic bug in print_drs_error Gustavo A. R. Silva
@ 2020-04-27 19:50 ` Gustavo A. R. Silva
  2020-04-27 20:08   ` Miquel Raynal
  2020-09-07  7:34   ` Miquel Raynal
  2020-04-27 19:54 ` [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice Gustavo A. R. Silva
  2020-04-27 19:56 ` [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c Gustavo A. R. Silva
  2 siblings, 2 replies; 11+ messages in thread
From: Gustavo A. R. Silva @ 2020-04-27 19:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	linux-mtd, Joe Perches, Gustavo A. R. Silva

Update logic for broken test. Use a more common logging style.

It appears the logic in this function is broken for the
consecutive tests of

        if (prog_status & 0x3)
                ...
        else if (prog_status & 0x2)
                ...
        else (prog_status & 0x1)
                ...

Likely the first test should be

        if ((prog_status & 0x3) == 0x3)

Found by inspection of include files using printk.

Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
Cc: stable@vger.kernel.org
Reported-by: Joe Perches <joe@perches.com>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
Changes in v2:
 - None.

 include/linux/mtd/pfow.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
index 122f3439e1af..c65d7a3be3c6 100644
--- a/include/linux/mtd/pfow.h
+++ b/include/linux/mtd/pfow.h
@@ -128,7 +128,7 @@ static inline void print_drs_error(unsigned dsr)
 
 	if (!(dsr & DSR_AVAILABLE))
 		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
-	if (prog_status & 0x03)
+	if ((prog_status & 0x03) == 0x03)
 		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
 						"half with 41h command\n");
 	else if (prog_status & 0x02)
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice
  2020-04-27 19:48 [PATCH v2 0/3] mtd: lpddr: Fix bad logic bug in print_drs_error Gustavo A. R. Silva
  2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
@ 2020-04-27 19:54 ` Gustavo A. R. Silva
  2020-04-27 20:09   ` Miquel Raynal
  2020-09-07  7:34   ` Miquel Raynal
  2020-04-27 19:56 ` [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c Gustavo A. R. Silva
  2 siblings, 2 replies; 11+ messages in thread
From: Gustavo A. R. Silva @ 2020-04-27 19:54 UTC (permalink / raw)
  To: linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	linux-mtd, Joe Perches, Gustavo A. R. Silva

pr_notice is preferred over printk.

Also, coalesce formats as coalescing is part of coding-style:
"never break user-visible strings such as printk messages"

Suggested-by: Joe Perches <joe@perches.com>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
Changes in v2:
 - Coalesce formats and update changelog text, accordingly.

 include/linux/mtd/pfow.h | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
index c65d7a3be3c6..cd21c6768065 100644
--- a/include/linux/mtd/pfow.h
+++ b/include/linux/mtd/pfow.h
@@ -127,31 +127,26 @@ static inline void print_drs_error(unsigned dsr)
 	int prog_status = (dsr & DSR_RPS) >> 8;
 
 	if (!(dsr & DSR_AVAILABLE))
-		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
+		pr_notice("DSR.15: (0) Device not Available\n");
 	if ((prog_status & 0x03) == 0x03)
-		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
-						"half with 41h command\n");
+		pr_notice("DSR.9,8: (11) Attempt to program invalid half with 41h command\n");
 	else if (prog_status & 0x02)
-		printk(KERN_NOTICE"DSR.9,8: (10) Object Mode Program attempt "
-					"in region with Control Mode data\n");
+		pr_notice("DSR.9,8: (10) Object Mode Program attempt in region with Control Mode data\n");
 	else if (prog_status &  0x01)
-		printk(KERN_NOTICE"DSR.9,8: (01) Program attempt in region "
-						"with Object Mode data\n");
+		pr_notice("DSR.9,8: (01) Program attempt in region with Object Mode data\n");
 	if (!(dsr & DSR_READY_STATUS))
-		printk(KERN_NOTICE"DSR.7: (0) Device is Busy\n");
+		pr_notice("DSR.7: (0) Device is Busy\n");
 	if (dsr & DSR_ESS)
-		printk(KERN_NOTICE"DSR.6: (1) Erase Suspended\n");
+		pr_notice("DSR.6: (1) Erase Suspended\n");
 	if (dsr & DSR_ERASE_STATUS)
-		printk(KERN_NOTICE"DSR.5: (1) Erase/Blank check error\n");
+		pr_notice("DSR.5: (1) Erase/Blank check error\n");
 	if (dsr & DSR_PROGRAM_STATUS)
-		printk(KERN_NOTICE"DSR.4: (1) Program Error\n");
+		pr_notice("DSR.4: (1) Program Error\n");
 	if (dsr & DSR_VPPS)
-		printk(KERN_NOTICE"DSR.3: (1) Vpp low detect, operation "
-					"aborted\n");
+		pr_notice("DSR.3: (1) Vpp low detect, operation aborted\n");
 	if (dsr & DSR_PSS)
-		printk(KERN_NOTICE"DSR.2: (1) Program suspended\n");
+		pr_notice("DSR.2: (1) Program suspended\n");
 	if (dsr & DSR_DPS)
-		printk(KERN_NOTICE"DSR.1: (1) Aborted Erase/Program attempt "
-					"on locked block\n");
+		pr_notice("DSR.1: (1) Aborted Erase/Program attempt on locked block\n");
 }
 #endif /* __LINUX_MTD_PFOW_H */
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
  2020-04-27 19:48 [PATCH v2 0/3] mtd: lpddr: Fix bad logic bug in print_drs_error Gustavo A. R. Silva
  2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
  2020-04-27 19:54 ` [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice Gustavo A. R. Silva
@ 2020-04-27 19:56 ` Gustavo A. R. Silva
  2020-04-27 20:09   ` Miquel Raynal
  2020-09-07  7:34   ` Miquel Raynal
  2 siblings, 2 replies; 11+ messages in thread
From: Gustavo A. R. Silva @ 2020-04-27 19:56 UTC (permalink / raw)
  To: linux-kernel
  Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra,
	linux-mtd, Joe Perches, Gustavo A. R. Silva

Function print_drs_error is only used in drivers/mtd/lpddr/lpddr_cmds.c
so, better to move it there.

Also, notice that there's no need for inline as the function is used
once.  Lastly, fix the following checkpatch warning:

WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
+static void print_drs_error(unsigned dsr)

Suggested-by: Joe Perches <joe@perches.com>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
Changes in v2:
 - Remove inline from print_drs_error and update changelog text,
   accordingly.

 drivers/mtd/lpddr/lpddr_cmds.c | 28 ++++++++++++++++++++++++++++
 include/linux/mtd/pfow.h       | 28 ----------------------------
 2 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/drivers/mtd/lpddr/lpddr_cmds.c b/drivers/mtd/lpddr/lpddr_cmds.c
index fb1cbc9a2870..ee063baed136 100644
--- a/drivers/mtd/lpddr/lpddr_cmds.c
+++ b/drivers/mtd/lpddr/lpddr_cmds.c
@@ -94,6 +94,34 @@ struct mtd_info *lpddr_cmdset(struct map_info *map)
 }
 EXPORT_SYMBOL(lpddr_cmdset);
 
+static void print_drs_error(unsigned int dsr)
+{
+	int prog_status = (dsr & DSR_RPS) >> 8;
+
+	if (!(dsr & DSR_AVAILABLE))
+		pr_notice("DSR.15: (0) Device not Available\n");
+	if ((prog_status & 0x03) == 0x03)
+		pr_notice("DSR.9,8: (11) Attempt to program invalid half with 41h command\n");
+	else if (prog_status & 0x02)
+		pr_notice("DSR.9,8: (10) Object Mode Program attempt in region with Control Mode data\n");
+	else if (prog_status &  0x01)
+		pr_notice("DSR.9,8: (01) Program attempt in region with Object Mode data\n");
+	if (!(dsr & DSR_READY_STATUS))
+		pr_notice("DSR.7: (0) Device is Busy\n");
+	if (dsr & DSR_ESS)
+		pr_notice("DSR.6: (1) Erase Suspended\n");
+	if (dsr & DSR_ERASE_STATUS)
+		pr_notice("DSR.5: (1) Erase/Blank check error\n");
+	if (dsr & DSR_PROGRAM_STATUS)
+		pr_notice("DSR.4: (1) Program Error\n");
+	if (dsr & DSR_VPPS)
+		pr_notice("DSR.3: (1) Vpp low detect, operation aborted\n");
+	if (dsr & DSR_PSS)
+		pr_notice("DSR.2: (1) Program suspended\n");
+	if (dsr & DSR_DPS)
+		pr_notice("DSR.1: (1) Aborted Erase/Program attempt on locked block\n");
+}
+
 static int wait_for_ready(struct map_info *map, struct flchip *chip,
 		unsigned int chip_op_time)
 {
diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
index cd21c6768065..b3eae82eb03c 100644
--- a/include/linux/mtd/pfow.h
+++ b/include/linux/mtd/pfow.h
@@ -121,32 +121,4 @@ static inline void send_pfow_command(struct map_info *map,
 	map_write(map, CMD(LPDDR_START_EXECUTION),
 			map->pfow_base + PFOW_COMMAND_EXECUTE);
 }
-
-static inline void print_drs_error(unsigned dsr)
-{
-	int prog_status = (dsr & DSR_RPS) >> 8;
-
-	if (!(dsr & DSR_AVAILABLE))
-		pr_notice("DSR.15: (0) Device not Available\n");
-	if ((prog_status & 0x03) == 0x03)
-		pr_notice("DSR.9,8: (11) Attempt to program invalid half with 41h command\n");
-	else if (prog_status & 0x02)
-		pr_notice("DSR.9,8: (10) Object Mode Program attempt in region with Control Mode data\n");
-	else if (prog_status &  0x01)
-		pr_notice("DSR.9,8: (01) Program attempt in region with Object Mode data\n");
-	if (!(dsr & DSR_READY_STATUS))
-		pr_notice("DSR.7: (0) Device is Busy\n");
-	if (dsr & DSR_ESS)
-		pr_notice("DSR.6: (1) Erase Suspended\n");
-	if (dsr & DSR_ERASE_STATUS)
-		pr_notice("DSR.5: (1) Erase/Blank check error\n");
-	if (dsr & DSR_PROGRAM_STATUS)
-		pr_notice("DSR.4: (1) Program Error\n");
-	if (dsr & DSR_VPPS)
-		pr_notice("DSR.3: (1) Vpp low detect, operation aborted\n");
-	if (dsr & DSR_PSS)
-		pr_notice("DSR.2: (1) Program suspended\n");
-	if (dsr & DSR_DPS)
-		pr_notice("DSR.1: (1) Aborted Erase/Program attempt on locked block\n");
-}
 #endif /* __LINUX_MTD_PFOW_H */
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/3] mtd: lpddr: Fix bad logic in print_drs_error
  2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
@ 2020-04-27 20:08   ` Miquel Raynal
  2020-05-19 16:22     ` Gustavo A. R. Silva
  2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 1 reply; 11+ messages in thread
From: Miquel Raynal @ 2020-04-27 20:08 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: linux-kernel, Richard Weinberger, Vignesh Raghavendra, linux-mtd,
	Joe Perches

Hi Gustavo,

"Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote on Mon, 27 Apr
2020 14:50:37 -0500:

> Update logic for broken test. Use a more common logging style.
> 
> It appears the logic in this function is broken for the
> consecutive tests of
> 
>         if (prog_status & 0x3)
>                 ...
>         else if (prog_status & 0x2)
>                 ...
>         else (prog_status & 0x1)
>                 ...
> 
> Likely the first test should be
> 
>         if ((prog_status & 0x3) == 0x3)
> 
> Found by inspection of include files using printk.
> 
> Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
> Cc: stable@vger.kernel.org
> Reported-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> Changes in v2:
>  - None.
> 
>  include/linux/mtd/pfow.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
> index 122f3439e1af..c65d7a3be3c6 100644
> --- a/include/linux/mtd/pfow.h
> +++ b/include/linux/mtd/pfow.h
> @@ -128,7 +128,7 @@ static inline void print_drs_error(unsigned dsr)
>  
>  	if (!(dsr & DSR_AVAILABLE))
>  		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
> -	if (prog_status & 0x03)
> +	if ((prog_status & 0x03) == 0x03)
>  		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
>  						"half with 41h command\n");
>  	else if (prog_status & 0x02)


Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>


Thanks,
Miquèl

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice
  2020-04-27 19:54 ` [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice Gustavo A. R. Silva
@ 2020-04-27 20:09   ` Miquel Raynal
  2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2020-04-27 20:09 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: linux-kernel, Richard Weinberger, Vignesh Raghavendra, linux-mtd,
	Joe Perches

Hi Gustavo,

"Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote on Mon, 27 Apr
2020 14:54:13 -0500:

> pr_notice is preferred over printk.
> 
> Also, coalesce formats as coalescing is part of coding-style:
> "never break user-visible strings such as printk messages"
> 
> Suggested-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> Changes in v2:
>  - Coalesce formats and update changelog text, accordingly.
> 
>  include/linux/mtd/pfow.h | 27 +++++++++++----------------
>  1 file changed, 11 insertions(+), 16 deletions(-)
> 
> diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
> index c65d7a3be3c6..cd21c6768065 100644
> --- a/include/linux/mtd/pfow.h
> +++ b/include/linux/mtd/pfow.h
> @@ -127,31 +127,26 @@ static inline void print_drs_error(unsigned dsr)
>  	int prog_status = (dsr & DSR_RPS) >> 8;
>  
>  	if (!(dsr & DSR_AVAILABLE))
> -		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
> +		pr_notice("DSR.15: (0) Device not Available\n");
>  	if ((prog_status & 0x03) == 0x03)
> -		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
> -						"half with 41h command\n");
> +		pr_notice("DSR.9,8: (11) Attempt to program invalid half with 41h command\n");
>  	else if (prog_status & 0x02)
> -		printk(KERN_NOTICE"DSR.9,8: (10) Object Mode Program attempt "
> -					"in region with Control Mode data\n");
> +		pr_notice("DSR.9,8: (10) Object Mode Program attempt in region with Control Mode data\n");
>  	else if (prog_status &  0x01)
> -		printk(KERN_NOTICE"DSR.9,8: (01) Program attempt in region "
> -						"with Object Mode data\n");
> +		pr_notice("DSR.9,8: (01) Program attempt in region with Object Mode data\n");
>  	if (!(dsr & DSR_READY_STATUS))
> -		printk(KERN_NOTICE"DSR.7: (0) Device is Busy\n");
> +		pr_notice("DSR.7: (0) Device is Busy\n");
>  	if (dsr & DSR_ESS)
> -		printk(KERN_NOTICE"DSR.6: (1) Erase Suspended\n");
> +		pr_notice("DSR.6: (1) Erase Suspended\n");
>  	if (dsr & DSR_ERASE_STATUS)
> -		printk(KERN_NOTICE"DSR.5: (1) Erase/Blank check error\n");
> +		pr_notice("DSR.5: (1) Erase/Blank check error\n");
>  	if (dsr & DSR_PROGRAM_STATUS)
> -		printk(KERN_NOTICE"DSR.4: (1) Program Error\n");
> +		pr_notice("DSR.4: (1) Program Error\n");
>  	if (dsr & DSR_VPPS)
> -		printk(KERN_NOTICE"DSR.3: (1) Vpp low detect, operation "
> -					"aborted\n");
> +		pr_notice("DSR.3: (1) Vpp low detect, operation aborted\n");
>  	if (dsr & DSR_PSS)
> -		printk(KERN_NOTICE"DSR.2: (1) Program suspended\n");
> +		pr_notice("DSR.2: (1) Program suspended\n");
>  	if (dsr & DSR_DPS)
> -		printk(KERN_NOTICE"DSR.1: (1) Aborted Erase/Program attempt "
> -					"on locked block\n");
> +		pr_notice("DSR.1: (1) Aborted Erase/Program attempt on locked block\n");
>  }
>  #endif /* __LINUX_MTD_PFOW_H */


Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>


Thanks,
Miquèl

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
  2020-04-27 19:56 ` [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c Gustavo A. R. Silva
@ 2020-04-27 20:09   ` Miquel Raynal
  2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2020-04-27 20:09 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: linux-kernel, Richard Weinberger, Vignesh Raghavendra, linux-mtd,
	Joe Perches

Hi Gustavo,

"Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote on Mon, 27 Apr
2020 14:56:08 -0500:

> Function print_drs_error is only used in drivers/mtd/lpddr/lpddr_cmds.c
> so, better to move it there.
> 
> Also, notice that there's no need for inline as the function is used
> once.  Lastly, fix the following checkpatch warning:
> 
> WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
> +static void print_drs_error(unsigned dsr)
> 
> Suggested-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
> Changes in v2:
>  - Remove inline from print_drs_error and update changelog text,
>    accordingly.
> 

Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>

Thanks,
Miquèl

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/3] mtd: lpddr: Fix bad logic in print_drs_error
  2020-04-27 20:08   ` Miquel Raynal
@ 2020-05-19 16:22     ` Gustavo A. R. Silva
  0 siblings, 0 replies; 11+ messages in thread
From: Gustavo A. R. Silva @ 2020-05-19 16:22 UTC (permalink / raw)
  To: Miquel Raynal
  Cc: linux-kernel, Richard Weinberger, Vignesh Raghavendra, linux-mtd,
	Joe Perches

Hi all,

Friendly ping: who can take this?

Thanks
--
Gustavo

On 4/27/20 15:08, Miquel Raynal wrote:
> Hi Gustavo,
> 
> "Gustavo A. R. Silva" <gustavo@embeddedor.com> wrote on Mon, 27 Apr
> 2020 14:50:37 -0500:
> 
>> Update logic for broken test. Use a more common logging style.
>>
>> It appears the logic in this function is broken for the
>> consecutive tests of
>>
>>         if (prog_status & 0x3)
>>                 ...
>>         else if (prog_status & 0x2)
>>                 ...
>>         else (prog_status & 0x1)
>>                 ...
>>
>> Likely the first test should be
>>
>>         if ((prog_status & 0x3) == 0x3)
>>
>> Found by inspection of include files using printk.
>>
>> Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
>> Cc: stable@vger.kernel.org
>> Reported-by: Joe Perches <joe@perches.com>
>> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
>> ---
>> Changes in v2:
>>  - None.
>>
>>  include/linux/mtd/pfow.h | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h
>> index 122f3439e1af..c65d7a3be3c6 100644
>> --- a/include/linux/mtd/pfow.h
>> +++ b/include/linux/mtd/pfow.h
>> @@ -128,7 +128,7 @@ static inline void print_drs_error(unsigned dsr)
>>  
>>  	if (!(dsr & DSR_AVAILABLE))
>>  		printk(KERN_NOTICE"DSR.15: (0) Device not Available\n");
>> -	if (prog_status & 0x03)
>> +	if ((prog_status & 0x03) == 0x03)
>>  		printk(KERN_NOTICE"DSR.9,8: (11) Attempt to program invalid "
>>  						"half with 41h command\n");
>>  	else if (prog_status & 0x02)
> 
> 
> Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
> 
> 
> Thanks,
> Miquèl
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
  2020-04-27 19:56 ` [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c Gustavo A. R. Silva
  2020-04-27 20:09   ` Miquel Raynal
@ 2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2020-09-07  7:34 UTC (permalink / raw)
  To: Gustavo A. R. Silva, linux-kernel
  Cc: Miquel Raynal, Vignesh Raghavendra, Richard Weinberger,
	linux-mtd, Joe Perches

On Mon, 2020-04-27 at 19:56:08 UTC, "Gustavo A. R. Silva" wrote:
> Function print_drs_error is only used in drivers/mtd/lpddr/lpddr_cmds.c
> so, better to move it there.
> 
> Also, notice that there's no need for inline as the function is used
> once.  Lastly, fix the following checkpatch warning:
> 
> WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
> +static void print_drs_error(unsigned dsr)
> 
> Suggested-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice
  2020-04-27 19:54 ` [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice Gustavo A. R. Silva
  2020-04-27 20:09   ` Miquel Raynal
@ 2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2020-09-07  7:34 UTC (permalink / raw)
  To: Gustavo A. R. Silva, linux-kernel
  Cc: Miquel Raynal, Vignesh Raghavendra, Richard Weinberger,
	linux-mtd, Joe Perches

On Mon, 2020-04-27 at 19:54:13 UTC, "Gustavo A. R. Silva" wrote:
> pr_notice is preferred over printk.
> 
> Also, coalesce formats as coalescing is part of coding-style:
> "never break user-visible strings such as printk messages"
> 
> Suggested-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v2 1/3] mtd: lpddr: Fix bad logic in print_drs_error
  2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
  2020-04-27 20:08   ` Miquel Raynal
@ 2020-09-07  7:34   ` Miquel Raynal
  1 sibling, 0 replies; 11+ messages in thread
From: Miquel Raynal @ 2020-09-07  7:34 UTC (permalink / raw)
  To: Gustavo A. R. Silva, linux-kernel
  Cc: Miquel Raynal, Vignesh Raghavendra, Richard Weinberger,
	linux-mtd, Joe Perches

On Mon, 2020-04-27 at 19:50:37 UTC, "Gustavo A. R. Silva" wrote:
> Update logic for broken test. Use a more common logging style.
> 
> It appears the logic in this function is broken for the
> consecutive tests of
> 
>         if (prog_status & 0x3)
>                 ...
>         else if (prog_status & 0x2)
>                 ...
>         else (prog_status & 0x1)
>                 ...
> 
> Likely the first test should be
> 
>         if ((prog_status & 0x3) == 0x3)
> 
> Found by inspection of include files using printk.
> 
> Fixes: eb3db27507f7 ("[MTD] LPDDR PFOW definition")
> Cc: stable@vger.kernel.org
> Reported-by: Joe Perches <joe@perches.com>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next, thanks.

Miquel

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-09-07  7:35 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-27 19:48 [PATCH v2 0/3] mtd: lpddr: Fix bad logic bug in print_drs_error Gustavo A. R. Silva
2020-04-27 19:50 ` [PATCH v2 1/3] mtd: lpddr: Fix bad logic " Gustavo A. R. Silva
2020-04-27 20:08   ` Miquel Raynal
2020-05-19 16:22     ` Gustavo A. R. Silva
2020-09-07  7:34   ` Miquel Raynal
2020-04-27 19:54 ` [PATCH v2 2/3] mtd: lpddr: Replace printk with pr_notice Gustavo A. R. Silva
2020-04-27 20:09   ` Miquel Raynal
2020-09-07  7:34   ` Miquel Raynal
2020-04-27 19:56 ` [PATCH v2 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c Gustavo A. R. Silva
2020-04-27 20:09   ` Miquel Raynal
2020-09-07  7:34   ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).