[PATCH 1/6] nand_wait_ready timeout fix
Artem Bityutskiy
dedekind1 at gmail.com
Wed Jun 29 02:08:08 EDT 2011
On Tue, 2011-06-28 at 17:09 +0200, Matthieu CASTET wrote:
> >> struct nand_chip *chip = mtd->priv;
> >> - unsigned long timeo = jiffies + 2;
> >> + unsigned long timeo = jiffies + (2 * HZ) / 1000;
> >
> > I agree that the code is buggy, but your fix is strange: if HZ = 100, (2
> > * HZ) / 1000 will be zero?
> >
> > I think you should instead know for how many msecs you want to wait, and
> > use msecs_to_jiffies().
> >
> Your right, I assume the code was written for HZ=100, and the code should wait
> for 20 ms :
> unsigned long timeo = jiffies + (20 * HZ) / 1000;
>
> this will match with the
> static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
> {
>
> unsigned long timeo = jiffies;
> int status, state = chip->state;
>
> if (state == FL_ERASING)
> timeo += (HZ * 400) / 1000;
> else
> timeo += (HZ * 20) / 1000;
> [...]
> }
I think we should use msecs_to_jiffies() in nand_wait() as well. Why
relying on weird calculations with HZ?
--
Best Regards,
Artem Bityutskiy
More information about the linux-mtd
mailing list