tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: spiflash.c process_write()



Hi.

I am not exactly qualified in the area of spiflash internals, but I have used it on several occasions. 

> On 08 Sep 2015, at 08:12, David Holland <dholland-tech%netbsd.org@localhost> wrote:
> 
> As noted in passing elsewhere, it seems that process_write() in
> spiflash.c allocates a scratch buffer on every call... and leaks it on
> every call too. This clearly isn't a good thing.
> 
> Meanwhile the size of buffer it tries to allocate doesn't have any
> obvious bound; I suspect it's limited to MAXPHYS, and if so that's
> probably ok, but if not there could be problems even if the leak is
> fixed.
> 
> Meanwhile, spiflash.c has only one client (m25p) which, in its man
> page, says:
> 
> BUGS
>     Some important bits that are vital for use as a mass storage device are
>     still missing.  Specifically, there is no API to erase the device, and
>     there is no support for device partitioning.
> 
> So, presumably this code is only lightly tested.

A few years ago, when I worked on bringing Armada XP into our tree, I had (still have somewhere in my closet) a Marvell dev board which featured m25p. The spiflash worked just fine, for what it is. So, yes, I never used it in the block device sense, but it was OK as a character device used to access the firmware contents. 

> ISTM that the code probably ought to be rewritten to handle one erase
> block at a time; and, unless there's a reason to worry about
> concurrent throughput (how fast is SPI anyway?), it ought to allocate
> one write buffer up front instead of churning through them on every
> write request.

Current SPI variants can be pretty fast. Some modern M25P derivatives like MT25Q can transfer 4 bits at 133MHz (around 66MB/s). 

> And the driver isn't MPSAFE, which seems fairly readily fixed if one's
> going to hack it anyhow. But it isn't clear to me how important this
> is. Among other things, NOR flash is in general not the future.
> 
> There has been some discussion of these points since the issue
> appeared (in maxv's Brainy posting a couple weeks ago) but no
> conclusions. I guess the questions at this point are:
> - does anyone have an m25p they can test driver changes with?

Yep. Probably it's easier for me to attach a standalone M25P16 to RPI than to search for that dev board.

> - how much do we care about this driver?

Not very much but it's nice to have it :P. Perhaps it should be converted to use flash(9)...

> I'm willing to fix the memory leak without testing, but no more than
> that.

I can test it.

Best regards,
Radoslaw



Home | Main Index | Thread Index | Old Index