All, Dario On Tue, Sep 17, 2024 at 2:20 AM William Zhang <[email protected]> wrote: > > > -----Original Message----- > > From: Linus Walleij <[email protected]> > > Sent: Monday, September 16, 2024 2:59 AM > > To: [email protected]; Dario Binacchi > > <[email protected]>; Michael Trimarchi > > <[email protected]>; Anand Gore > > <[email protected]>; William Zhang > > <[email protected]>; Kursad Oney > > <[email protected]>; Philippe Reynes > > <[email protected]> > > Cc: Linus Walleij <[email protected]>; Florian Fainelli > > <[email protected]>; Miquel Raynal > > <[email protected]> > > Subject: [PATCH v2 2/7] mtd: rawnand: brcmnand: Fix potential false time > > out warning > > > > From: William Zhang <[email protected]> > > > > Backport from the Linux kernel: > > commit 9cc0a598b944816f2968baf2631757f22721b996 > > "mtd: rawnand: brcmnand: Fix potential false time out warning" > > > > If system is busy during the command status polling function, the driver > > may not get the chance to poll the status register till the end of time > > out and return the premature status. Do a final check after time out > > happens to ensure reading the correct status. > > > > Signed-off-by: William Zhang <[email protected]> > > Reviewed-by: Florian Fainelli <[email protected]> > > Signed-off-by: Miquel Raynal <[email protected]> > > Link: https://lore.kernel.org/linux-mtd/20230706182909.79151-3- > > [email protected] > > Signed-off-by: Linus Walleij <[email protected]> > > --- > > drivers/mtd/nand/raw/brcmnand/brcmnand.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > > b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > > index 700d1122639f..46a4107a83a9 100644 > > --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c > > +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c > > @@ -1011,6 +1011,14 @@ static int bcmnand_ctrl_poll_status(struct > > brcmnand_controller *ctrl, > > } while (get_timer(base) < limit); > > #endif /* __UBOOT__ */ > > > > + /* > > + * do a final check after time out in case the CPU was busy and the > > driver > > + * did not get enough time to perform the polling to avoid false > > alarms > > + */ > > + val = brcmnand_read_reg(ctrl, BRCMNAND_INTFC_STATUS); > > + if ((val & mask) == expected_val) > > + return 0; > > + > > dev_warn(ctrl->dev, "timeout on status poll (expected %x got %x)\n", > > expected_val, val & mask); > > > > > > -- > > 2.46.0 > > Reviewed-by: William Zhang <[email protected]>
Acked-by; Michael Trimarchi <[email protected]> -- Michael Nazzareno Trimarchi Co-Founder & Chief Executive Officer M. +39 347 913 2170 [email protected] __________________________________ Amarula Solutions BV Joop Geesinkweg 125, 1114 AB, Amsterdam, NL T. +31 (0)85 111 9172 [email protected] www.amarulasolutions.com

