mtd: lpddr: Fix bad logic bug in print_drs_error
cover mtd: lpddr: Fix bad logic bug in print_drs_error
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
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 | 33 +++++++++++++++++++++++++++++++++ include/linux/mtd/pfow.h | 32 -------------------------------- 2 files changed, 33 insertions(+), 32 deletions(-)
Signature · 6 lines
2.26.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
PATCH 1/3 mtd: lpddr: Fix bad logic in print_drs_error
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.
--- include/linux/mtd/pfow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/mtd/pfow.h +1 -1
@@ -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 )
Signature · 1 line
2.26.0
PATCH 2/3 mtd: lpddr: Replace printk with pr_notice
In reply to Gustavo A. R. Silvapr_notice is preferred over printk.
--- include/linux/mtd/pfow.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
include/linux/mtd/pfow.h +11 -11
@@ -127,31 +127,31 @@ 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 " +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 " +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 " +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 " +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 " +pr_notice ("DSR.1: (1) Aborted Erase/Program attempt " "on locked block\n"); }#endif /* __LINUX_MTD_PFOW_H */
Signature · 6 lines
2.26.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
Re: [PATCH 2/3] mtd: lpddr: Replace printk with pr_notice
Quoted 1 line · Gustavo A. R. Silva
pr_noticeis preferred over printk.
So is coalescing formats
? diff --git a/include/linux/mtd/pfow.h b/include/linux/mtd/pfow.h []
include/linux/mtd/pfow.h static inline void print_drs_error(unsigned dsr) · line 133
Quoted 10 lines
include/linux/mtd/pfow.h +2
-2@@ -127,31 +127,31 @@ 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 " +pr_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");etc...
Re: [PATCH 2/3] mtd: lpddr: Replace printk with pr_notice
Quoted 10 lines · Joe Perches
Quoted 1 line · Gustavo A. R. Silva
pr_noticeis preferred over printk.So is coalescing formats
? diff --git
a/include/linux/mtd/pfow.hb/include/linux/mtd/pfow.h[]Quoted 3 lines
include/linux/mtd/pfow.h +0
-0@@ -127,31 +127,31 @@ static inline void print_drs_error(unsigned dsr)int prog_status = (dsr &DSR_RPS ) >>8 ;
Quoted 10 lines
include/linux/mtd/pfow.h static inline void print_drs_error(unsigned dsr) · line 133
Quoted 7 lines
include/linux/mtd/pfow.h +2
-2if (!(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 " +pr_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");
I didn't want to mess with the rest of format, because some maintainers don't like that. If Miquel is OK with that, I can fix that up, too.
Thanks
--
Gustavo
Re: [PATCH 2/3] mtd: lpddr: Replace printk with pr_notice
Quoted 23 lines · Gustavo A. R. Silva
Quoted 10 lines · Joe Perches
Quoted 1 line · Gustavo A. R. Silva
pr_noticeis preferred over printk.So is coalescing formats
? diff --git
a/include/linux/mtd/pfow.hb/include/linux/mtd/pfow.h[]Quoted 3 lines
include/linux/mtd/pfow.h +0
-0@@ -127,31 +127,31 @@ static inline void print_drs_error(unsigned dsr)int prog_status = (dsr &DSR_RPS ) >>8 ;Quoted 10 lines
include/linux/mtd/pfow.h static inline void print_drs_error(unsigned dsr) · line 133
Quoted 7 lines
include/linux/mtd/pfow.h +2
-2if (!(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 " +pr_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");
Quoted 2 lines
I didn't want to mess with the rest of format, because some maintainers don't like that. If Miquel is OK with that, I can fix that up, too.
He should. Coalescing is part of coding-style.
"never break user-visible strings such as printk messages"
cheers, Joe
Miquel Raynal
maintainerRe: [PATCH 2/3] mtd: lpddr: Replace printk with pr_notice
Hi Joe,
Joe Perches <[email protected]> wrote on Mon, 27 Apr 2020 12:15:02 -0700:
Quoted 24 lines · Gustavo A. R. Silva
Quoted 23 lines · Joe Perches
Quoted 20 lines · Gustavo A. R. Silva
Quoted 1 line
pr_noticeis preferred over printk.So is coalescing formats
? diff --git
a/include/linux/mtd/pfow.hb/include/linux/mtd/pfow.h[]include/linux/mtd/pfow.h static inline void print_drs_error(unsigned dsr) · line 133
Quoted 10 lines
include/linux/mtd/pfow.h +2
-2@@ -127,31 +127,31 @@ 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 " +pr_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");
Quoted 9 lines
Quoted 2 lines
I didn't want to mess with the rest of format, because some maintainers don't like that. If Miquel is OK with that, I can fix that up, too.
He should. Coalescing is part of coding-style.
"never break user-visible strings such as printk messages"
cheers, Joe
I suppose Gustavo meant that there are maintainers in the community (and I am part of it) that do not like when people fix style issues aside their own changes -specifically without writing it in commit logs. But in this situation I think s/printk(KEN_NOTICE/pr_notice(/ needs the second line to be re-aligned with the first one. While touching it, it seems reasonable to also fix this style issue and avoid keeping broken strings.
Thanks,
Miquèl
Miquel Raynal
maintainerRe: [PATCH 2/3] mtd: lpddr: Replace printk with pr_notice
In reply to Gustavo A. R. SilvaHi Gustavo,
"Gustavo A. R. Silva" <[email protected]> wrote on Mon, 27 Apr 2020 14:10:36 -0500:
Quoted 22 lines · Joe Perches
Quoted 10 lines · Gustavo A. R. Silva
Quoted 1 line
pr_noticeis preferred over printk.So is coalescing formats
? diff --git
a/include/linux/mtd/pfow.hb/include/linux/mtd/pfow.h[]Quoted 3 lines
include/linux/mtd/pfow.h +0
-0@@ -127,31 +127,31 @@ static inline void print_drs_error(unsigned dsr)int prog_status = (dsr &DSR_RPS ) >>8 ;Quoted 10 lines
include/linux/mtd/pfow.h static inline void print_drs_error(unsigned dsr) · line 133
Quoted 7 lines
include/linux/mtd/pfow.h +2
-2if (!(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 " +pr_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");
Quoted 6 lines
I didn't want to mess with the rest of format, because some maintainers don't like that. If Miquel is OK with that, I can fix that up, too.
Thanks
--
Gustavo
I'm fine with it in this case, just mention it in the commit log, please.
Thanks,
Miquèl
PATCH 3/3 mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
In reply to Gustavo A. R. SilvaFunction print_drs_error is only used in drivers/mtd/lpddr/lpddr_cmds.c so, better to move it there.
--- drivers/mtd/lpddr/lpddr_cmds.c | 33 +++++++++++++++++++++++++++++++++ include/linux/mtd/pfow.h | 32 -------------------------------- 2 files changed, 33 insertions(+), 32 deletions(-)
drivers/mtd/lpddr/lpddr_cmds.c +33 -0
@@ -94,6 +94,39 @@ struct mtd_info *lpddr_cmdset(struct map_info *map) }EXPORT_SYMBOL (lpddr_cmdset); +static inline 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) {
include/linux/mtd/pfow.h +0 -32
@@ -122,36 +122,4 @@ static inline void send_pfow_command(struct map_info *map, 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 */
Signature · 6 lines
2.26.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
Re: [PATCH 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
Quoted 2 lines · Gustavo A. R. Silva
Function
print_drs_erroris only used indrivers/mtd/lpddr/lpddr_cmds.cso, better to move it there.
[]
drivers/mtd/lpddr/lpddr_cmds.c
Quoted 1 line
drivers/mtd/lpddr/lpddr_cmds.c +0
-0
[]
drivers/mtd/lpddr/lpddr_cmds.c struct mtd_info *lpddr_cmdset(struct map_info *map) · line 97
Quoted 5 lines
drivers/mtd/lpddr/lpddr_cmds.c +1
-0@@ -94,6 +94,39 @@ struct mtd_info *lpddr_cmdset(struct map_info *map) }EXPORT_SYMBOL (lpddr_cmdset); +static inline void print_drs_error (unsigned int dsr)
There's no need for inline as it's used once.
Re: [PATCH 3/3] mtd: lpddr: Move function print_drs_error to lpddr_cmds.c
Quoted 6 lines · Joe Perches
Quoted 2 lines · Gustavo A. R. Silva
Function
print_drs_erroris only used indrivers/mtd/lpddr/lpddr_cmds.cso, better to move it there.[]
drivers/mtd/lpddr/lpddr_cmds.c
Quoted 1 line
drivers/mtd/lpddr/lpddr_cmds.c +0
-0[]
Quoted 8 lines
drivers/mtd/lpddr/lpddr_cmds.c struct mtd_info *lpddr_cmdset(struct map_info *map) · line 97
Quoted 5 lines
drivers/mtd/lpddr/lpddr_cmds.c +1
-0@@ -94,6 +94,39 @@ struct mtd_info *lpddr_cmdset(struct map_info *map) }EXPORT_SYMBOL (lpddr_cmdset); +static inline void print_drs_error (unsigned int dsr)There's no need for inline as it's used once.
That's correct. I didn't notice that at first sight.
I'll remove it in V2.
Thanks
--
Gustavo
Quoted 4 lines · 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.
AFAICT: This series is still not applied to any tree.
Can someone please apply it?
https://lore.kernel.org/linux-mtd/[email protected]/
Quoted 11 lines
Thanks
Gustavo A. R. Silva (3):
mtd: lpddr: Fix bad logic inprint_drs_error
mtd: lpddr: Replace printk withpr_notice
mtd: lpddr: Move functionprint_drs_errortolpddr_cmds.cdrivers/mtd/lpddr/lpddr_cmds.c | 33 +++++++++++++++++++++++++++++++++ include/linux/mtd/pfow.h | 32 -------------------------------- 2 files changed, 33 insertions(+), 32 deletions(-)
Miquel Raynal
maintainerHi Joe, Gustavo,
Joe Perches <[email protected]> wrote on Tue, 11 Aug 2020 16:47:36 -0700:
Quoted 9 lines · Gustavo A. R. Silva
Quoted 4 lines
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.AFAICT: This series is still not applied to any tree.
Can someone please apply it?
I thought a v2 was coming, Gustavo, can you please send an update? IIRC there are strings that need to be "unbroken" and an extra "inline" which needs to be dropped.
Thanks,
Miquèl
Hi Miquel,
Quoted 10 lines · Miquel Raynal
Hi Joe, Gustavo,
Joe Perches <[email protected]> wrote on Tue, 11 Aug 2020 16:47:36 -0700:
Quoted 6 lines · Gustavo A. R. Silva
Quoted 4 lines
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.
Quoted 8 lines
Quoted 3 lines
AFAICT: This series is still not applied to any tree.
Can someone please apply it?
I thought a v2 was coming, Gustavo, can you please send an update? IIRC there are strings that need to be "unbroken" and an extra "inline" which needs to be dropped.
V2 was sent quite a while ago, and you actually acked it already:
https://lore.kernel.org/lkml/[email protected]/
Thanks
--
Gustavo
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/