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
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
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
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
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
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
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
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
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