Fw: [PATCH] [MTD] NAND nand_ecc.c: rewrite for improved performance

Frans Meulenbroeks fransmeulenbroeks at yahoo.com
Thu Jul 10 17:26:59 EDT 2008


Missed that the reply of Thomas was to the list.
Here is my reply.
Don't think I'm going to make it to come with a new version next 2 weeks.

Frans.


----- Forwarded Message ----

> 
> Hi Thomas,
> 
> Thanks for your reply.
> Some response  below.
> 
> 
> 
> 
> > First off, please use a mail client which does line breaks around 78
> > characters.
> 
> Ah ok. Actually I do only use webmail clients nowadays, and the yahoo one indeed 
> truncates quite early.
> Guess this is better (finally got a reason to switch to the new yahoo email 
> format).
> If not, let me know.
> > 
> > Secondly, we only bash advisory resistant repeat offenders :)
> 
> NP. I'll try to do my best to learn.
> 
> > It should go into Documentation/mtd. I read trough it and I want to
> > answer a question you asked there:
> 
> I'll put it there.
> > 
> > > Not too sure why the last invert is
> > > needed, but it happened also in the original code.
> > 
> > We want to have 0xff 0xff 0xff ECC code for a page full of 0xff's
> > (empty flash).
> 
> Ok. Will add that.
> > 
> > > I have included the complete nand_ecc.c file. It was derived from
> > > scratch so a patch would have been much bigger.
> > 
> > At the end, we need a patch anyway.
> 
> Aargh. I feared someone would say so. Reason for distributing the full file was:
> 1. it is smaller
> 2. it is less dependent on the original code (as a patch does require that the 
> original code is exactly the same
> and actually for this it does not matter as long as the API does not change.
> 
> Any suggestion how to best make such a patch?
> (I'm an oldtimer so unless advised otherwise, I'll just use diff -c :-) )
> > 
> > I'm not surprised about the effect of unrolling the loop, but it the
> > benefit depends on the CPU architecture as you have noticed
> > already. I'm curious what the speedup on ARM will be.
> 
> I have an unused NSLU2 which has an ARM on board (ARM5 if I am not mistaken).
> I can see if I can get that one up and running again and test on it as well
> 
> BTW: I also do have an improved version of the current driver, but that one did 
> give much less gain. 
> If you are interested I can sent you that one.
> 
> A lot of the gain also comes from going to one byte at a time, to one longword 
> at a time.
> longword instructions take the same time as byte instructions so this gives 4 
> times the gain.
> Didn't know how to do that in the original code anyway (actually I did not fully 
> understand the original code, but
> maybe I did not try hard enough :-)
> > 
> > I have no real objections to merge that code aside of formal aspects:
> > 
> > 1) Please keep at least a reference to the original authors of the ecc
> > code.
> 
> No problems with that. How do you propose to do that/what is the common 
> convention there.
> Note that I did not reuse any of the original code except the api and part of 
> the copyright message.
> I'm glad to give credit where credit is due. Then again I hate it if people get 
> blamed or so for whatever mistake I made :)
> > 
> > 2) Try to follow Documentation/Codingstyle
> 
> Will have a look at it. Guess one of the issues is that I always use {} whereas 
> the kernel code does not in case
> of an if statement with only one statement. Also I might have done the layout 
> differently.
> > 
> > 3) Create a patch and use scripts/checkpatch.pl on it. The current
> > output is: 
> > 
> > total: 160 errors, 17 warnings, 482 lines checked
> 
> Ouch. Will look at it. I was unaware of this script.
> > 
> > 4) Send it as a patch preferrably inline in the mail.
> 
> Will do. It will probably take a few weeks to do this (I'm leaving for a 2 week 
> vacation saturday early morning :)
> > 
> > Thanks,
> > 
> >     tglx
> 
> My pleasure.
> 
> One other question. 
> As you probably saw from my message or the copyright message I work for Philips.
> As such, the other day I bumped upon a snippet of code for bad block handling 
> for squashfs (or cramfs).
> This code seemed to come from linutronix (so probably even from you), but is not 
> in the official kernel.
> Guess it came to us through NXP (former Philips Semiconductors).
> Is this something to be added?
> (btw: I am not an expert in this area, but when reading the patch it seemed to 
> me that it would be more efficient to either record the bad blocks somewhere or, 
> even better, use the bad block list of the device, instead of testing each block 
> sequentially for being bad).
> 
> Best regards, Frans.



      



More information about the linux-mtd mailing list