2003-06-22 23:46:30

by Russell King

[permalink] [raw]
Subject: [PATCH] Fix mtdblock / mtdpart / mtdconcat

Dirtily disable ECC support; it doesn't work when mtdpart is layered
on top of mtdconcat on top of CFI flash.

There is probably a better fix, but that's for someone else to find.

--- orig/drivers/mtd/mtdpart.c Sat Jun 14 22:33:58 2003
+++ linux/drivers/mtd/mtdpart.c Mon Jun 23 00:55:04 2003
@@ -55,12 +55,12 @@
len = 0;
else if (from + len > mtd->size)
len = mtd->size - from;
- if (part->master->read_ecc == NULL)
+// if (part->master->read_ecc == NULL)
return part->master->read (part->master, from + part->offset,
len, retlen, buf);
- else
- return part->master->read_ecc (part->master, from + part->offset,
- len, retlen, buf, NULL, &mtd->oobinfo);
+// else
+// return part->master->read_ecc (part->master, from + part->offset,
+// len, retlen, buf, NULL, &mtd->oobinfo);
}

static int part_point (struct mtd_info *mtd, loff_t from, size_t len,
@@ -134,12 +134,12 @@
len = 0;
else if (to + len > mtd->size)
len = mtd->size - to;
- if (part->master->write_ecc == NULL)
+// if (part->master->write_ecc == NULL)
return part->master->write (part->master, to + part->offset,
len, retlen, buf);
- else
- return part->master->write_ecc (part->master, to + part->offset,
- len, retlen, buf, NULL, &mtd->oobinfo);
+// else
+// return part->master->write_ecc (part->master, to + part->offset,
+// len, retlen, buf, NULL, &mtd->oobinfo);

}


--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html


2003-06-23 07:05:07

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Mon, 2003-06-23 at 01:00, Russell King wrote:
> Dirtily disable ECC support; it doesn't work when mtdpart is layered
> on top of mtdconcat on top of CFI flash.

Please define "doesn't work".

--
dwmw2

2003-06-23 07:08:32

by Russell King

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Mon, Jun 23, 2003 at 08:19:09AM +0100, David Woodhouse wrote:
> On Mon, 2003-06-23 at 01:00, Russell King wrote:
> > Dirtily disable ECC support; it doesn't work when mtdpart is layered
> > on top of mtdconcat on top of CFI flash.
>
> Please define "doesn't work".

Remember those errors I reported to you last night? That "doesn't work".

--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html

2003-06-23 07:18:36

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Mon, 2003-06-23 at 08:22, Russell King wrote:
> On Mon, Jun 23, 2003 at 08:19:09AM +0100, David Woodhouse wrote:
> > On Mon, 2003-06-23 at 01:00, Russell King wrote:
> > > Dirtily disable ECC support; it doesn't work when mtdpart is layered
> > > on top of mtdconcat on top of CFI flash.
> >
> > Please define "doesn't work".
>
> Remember those errors I reported to you last night? That "doesn't work".

/me reads the scrollback.... oh, I see.

You'd do better to disable it in mtdconcat not mtdpart.

--
dwmw2

2003-06-23 07:46:10

by Russell King

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Mon, Jun 23, 2003 at 08:32:41AM +0100, David Woodhouse wrote:
> On Mon, 2003-06-23 at 08:22, Russell King wrote:
> > On Mon, Jun 23, 2003 at 08:19:09AM +0100, David Woodhouse wrote:
> > > On Mon, 2003-06-23 at 01:00, Russell King wrote:
> > > > Dirtily disable ECC support; it doesn't work when mtdpart is layered
> > > > on top of mtdconcat on top of CFI flash.
> > >
> > > Please define "doesn't work".
> >
> > Remember those errors I reported to you last night? That "doesn't work".
>
> /me reads the scrollback.... oh, I see.
>
> You'd do better to disable it in mtdconcat not mtdpart.

As I said in the original mail, its a quick and dirty hack. I have
little interest in finding a better solution at present - I have more
pressing things that need my attention at present.

--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html

2003-06-25 12:28:59

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Mon, 2003-06-23 at 01:00, Russell King wrote:
> Dirtily disable ECC support; it doesn't work when mtdpart is layered
> on top of mtdconcat on top of CFI flash.
>
> There is probably a better fix, but that's for someone else to find.

I had to run 'indent' on mtdconcat.c before I could stand to even look
for it, so I haven't attached the patch here -- but could you try v1.6
from CVS, which should refrain from pretending to have ecc/oob access
functions of none of the subdevices have them, and hence fix the problem
you observed.

--
dwmw2

2003-06-29 20:20:40

by Russell King

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Wed, Jun 25, 2003 at 01:43:09PM +0100, David Woodhouse wrote:
> On Mon, 2003-06-23 at 01:00, Russell King wrote:
> > Dirtily disable ECC support; it doesn't work when mtdpart is layered
> > on top of mtdconcat on top of CFI flash.
> >
> > There is probably a better fix, but that's for someone else to find.
>
> I had to run 'indent' on mtdconcat.c before I could stand to even look
> for it, so I haven't attached the patch here -- but could you try v1.6
> from CVS, which should refrain from pretending to have ecc/oob access
> functions of none of the subdevices have them, and hence fix the problem
> you observed.

While looking over the changes between 1.5 and 1.6, I spotted this. You
may want to fix this change:

- concat->mtd.eccsize != subdev[i]->eccsize) {
+ concat->mtd.eccsize != subdev[i]->eccsize ||
+ !concat->mtd.read_ecc != !concat->mtd.read_ecc ||
+ !concat->mtd.write_ecc != !concat->mtd.write_ecc ||
+ !concat->mtd.read_oob != !concat->mtd.read_oob ||
+ !concat->mtd.write_oob != !concat->mtd.write_oob) {

--
Russell King ([email protected]) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html

2003-06-29 21:14:09

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Sun, 2003-06-29 at 21:34, Russell King wrote:
> While looking over the changes between 1.5 and 1.6, I spotted this. You
> may want to fix this change:
>
> - concat->mtd.eccsize != subdev[i]->eccsize) {
> + concat->mtd.eccsize != subdev[i]->eccsize ||
> + !concat->mtd.read_ecc != !concat->mtd.read_ecc ||
> + !concat->mtd.write_ecc != !concat->mtd.write_ecc ||
> + !concat->mtd.read_oob != !concat->mtd.read_oob ||
> + !concat->mtd.write_oob != !concat->mtd.write_oob) {

Oops. Fixed in CVS.

--
dwmw2

2003-06-30 05:54:31

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] Fix mtdblock / mtdpart / mtdconcat

On Sun, 2003-06-29 at 21:34, Russell King wrote:
> > could you try v1.6 from CVS, which should refrain from pretending to have
> > ecc/oob access functions of none of the subdevices have them, and hence
> > fix the problem you observed.
>
> While looking over the changes between 1.5 and 1.6, I spotted this. You
> may want to fix this change:
>
> - concat->mtd.eccsize != subdev[i]->eccsize) {
> + concat->mtd.eccsize != subdev[i]->eccsize ||
> + !concat->mtd.read_ecc != !concat->mtd.read_ecc ||
> + !concat->mtd.write_ecc != !concat->mtd.write_ecc ||
> + !concat->mtd.read_oob != !concat->mtd.read_oob ||
> + !concat->mtd.write_oob != !concat->mtd.write_oob) {

Hmmm. That'll optimise well :)

But it shouldn't bite you -- aside from that does it actually fix the
problem you'd observed?

--
dwmw2