Messages in this thread | | | Date | Mon, 20 May 2019 16:31:31 +0200 | From | Miquel Raynal <> | Subject | Re: [PATCH] mtd: rawnand: use longest matching pattern |
| |
Hi Stefan,
Stefan Agner <stefan@agner.ch> wrote on Fri, 19 Apr 2019 09:47:17 +0200:
> Sometimes the exec_op parser does not choose the optimal pattern if > multiple patterns with optional elements are available. Since the stack > automatically splits operations in multiple exec_op calls, a non-optimal > pattern gets broken up into multiple calls. E.g. an OOB read using the > vf610 driver: > nand: executing subop: > nand: ->CMD [0x00] > nand: ->ADDR [5 cyc: 00 08 ea 94 02] > nand: ->CMD [0x30] > nand: ->WAITRDY [max 200000 ms] > nand: DATA_IN [64 B] > nand: executing subop: > nand: CMD [0x00] > nand: ADDR [5 cyc: 00 08 ea 94 02] > nand: CMD [0x30] > nand: WAITRDY [max 200000 ms] > nand: ->DATA_IN [64 B] > > However, the vf610 driver has a pattern which can execute the complete > command in a single go... > > This patch makes sure that the longest matching pattern is chosen > instead of the first (potentially only partial) match. With this > change the vf610 reads the OOB in a single exec_op call: > nand: executing subop: > nand: ->CMD [0x00] > nand: ->ADDR [5 cyc: 00 08 c0 1d 00] > nand: ->CMD [0x30] > nand: ->WAITRDY [max 200000 ms] > nand: ->DATA_IN [64 B] > > Reported-by: Sascha Hauer <s.hauer@pengutronix.de> > Suggested-by: Boris Brezillon <boris.brezillon@collabora.com> > Tested-by: Stefan Agner <stefan@agner.ch> > Signed-off-by: Stefan Agner <stefan@agner.ch> > ---
Applied, thanks.
Miquèl
| |