From: Todd Poynor <tpoynor@mvista.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: rpurdie@rpsys.net, lenz@cs.wisc.edu,
kernel list <linux-kernel@vger.kernel.org>,
Russell King <rmk@arm.linux.org.uk>,
dwmw2@infradead.org, Andrew Morton <akpm@osdl.org>
Subject: Re: latest mtd changes broke collie
Date: Wed, 09 Nov 2005 18:59:52 -0800 [thread overview]
Message-ID: <4372B7A8.5060904@mvista.com> (raw)
In-Reply-To: <20051109221712.GA28385@elf.ucw.cz>
Pavel Machek wrote:
> Latest mtd changes break collie...it now oopses during boot. This
> reverts the bad patch.
What tree was this generated against? It doesn't seem to match recent
linux-mtd or kernel.org trees. It looks like the tree used had
different version of a couple fixes recently added to linux-mtd (removal
of bogus udelays and 32-bit status datatype).
I'm guessing the important part is to add a missing spin_unlock_bh(),
which is definitely a bug in the mtd code, but this code is so different
than linux-mtd CVS that it seems more resyncing is needed. As it stands
now, force-fitting this patch would still leave an unbalanced
spin_lock_bh() without other changes. And it does look like this driver
hasn't been converted to modern mtd apis.
>
> Signed-off-by: Pavel Machek <pavel@suse.cz>
>
> diff --git a/drivers/mtd/chips/sharp.c b/drivers/mtd/chips/sharp.c
> --- a/drivers/mtd/chips/sharp.c
> +++ b/drivers/mtd/chips/sharp.c
> @@ -4,7 +4,7 @@
> * Copyright 2000,2001 David A. Schleef <ds@schleef.org>
> * 2000,2001 Lineo, Inc.
> *
> - * $Id: sharp.c,v 1.16 2005/11/07 11:14:23 gleixner Exp $
> + * $Id: sharp.c,v 1.14 2004/08/09 13:19:43 dwmw2 Exp $
> *
> * Devices supported:
> * LH28F016SCT Symmetrical block flash memory, 2Mx8
> @@ -32,7 +32,6 @@
> #include <linux/mtd/cfi.h>
> #include <linux/delay.h>
> #include <linux/init.h>
> -#include <linux/slab.h>
>
> #define CMD_RESET 0xffffffff
> #define CMD_READ_ID 0x90909090
> @@ -234,7 +233,7 @@ static int sharp_probe_map(struct map_in
> /* This function returns with the chip->mutex lock held. */
> static int sharp_wait(struct map_info *map, struct flchip *chip)
> {
> - int status, i;
> + __u32 status;
> unsigned long timeo = jiffies + HZ;
> DECLARE_WAITQUEUE(wait, current);
> int adr = 0;
> @@ -247,11 +246,13 @@ retry:
> map_write32(map, CMD_READ_STATUS, adr);
> chip->state = FL_STATUS;
> case FL_STATUS:
> - for(i=0;i<100;i++){
> - status = map_read32(map,adr);
> - if((status & SR_READY)==SR_READY)
> - break;
> - udelay(1);
> + status = map_read32(map,adr);
> + if ((status & SR_READY) == SR_READY)
> + break;
> + spin_unlock_bh(chip->mutex);
> + if (time_after(jiffies, timeo)) {
> + printk("Waiting for chip to be ready timed out in erase\n");
> + return -EIO;
> }
> sharp_udelay(1);
> goto retry;
> @@ -491,11 +492,7 @@ static inline int sharp_do_wait_for_read
> spin_lock_bh(chip->mutex);
>
> remove_wait_queue(&chip->wq, &wait);
> -
> - if (signal_pending(current)){
> - ret = -EINTR;
> - goto out;
> - }
> + set_current_state(TASK_RUNNING);
> }
> ret = -ETIME;
> out:
>
>
>
--
Todd
next prev parent reply other threads:[~2005-11-10 2:59 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-09 22:17 latest mtd changes broke collie Pavel Machek
2005-11-10 0:19 ` Josh Boyer
2005-11-10 9:48 ` Pavel Machek
2005-11-10 2:59 ` Todd Poynor [this message]
2005-11-10 9:50 ` Pavel Machek
2005-11-10 10:02 ` David Woodhouse
2005-11-10 10:38 ` Pavel Machek
2005-11-10 10:51 ` David Woodhouse
2005-11-10 10:59 ` Pavel Machek
2005-11-10 11:11 ` David Woodhouse
2005-11-10 11:44 ` Pavel Machek
2005-11-10 12:07 ` Pavel Machek
2005-11-10 13:02 ` David Vrabel
2005-11-10 13:02 ` David Vrabel
2005-11-10 13:09 ` Pavel Machek
2005-11-10 13:09 ` Pavel Machek
2005-11-10 17:41 ` Richard Purdie
2005-11-10 17:41 ` Richard Purdie
2005-11-10 18:09 ` Richard Purdie
2005-11-10 18:09 ` Richard Purdie
2005-11-10 22:06 ` Pavel Machek
2005-11-10 22:06 ` Pavel Machek
2005-11-10 22:41 ` Pavel Machek
2005-11-10 23:58 ` Todd Poynor
2005-11-10 23:58 ` Todd Poynor
2005-11-11 0:16 ` Pavel Machek
2005-11-11 0:16 ` Pavel Machek
2005-11-11 7:01 ` Ian Campbell
2005-11-12 21:33 ` Pavel Machek
2005-11-12 21:33 ` Pavel Machek
2005-11-13 10:35 ` Ian Campbell
2005-11-13 10:35 ` Ian Campbell
2005-11-14 12:10 ` Pavel Machek
2005-11-14 12:10 ` Pavel Machek
2005-11-13 19:40 ` Todd Poynor
2005-11-13 19:40 ` Todd Poynor
2005-11-14 12:08 ` Pavel Machek
2005-11-14 12:08 ` Pavel Machek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4372B7A8.5060904@mvista.com \
--to=tpoynor@mvista.com \
--cc=akpm@osdl.org \
--cc=dwmw2@infradead.org \
--cc=lenz@cs.wisc.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=rmk@arm.linux.org.uk \
--cc=rpurdie@rpsys.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.