[RFC][patch] NAND partial page read functionality
Hamish Moffatt
hamish at cloud.net.au
Thu Apr 24 03:45:26 EDT 2008
On Thu, Apr 24, 2008 at 09:34:36AM +0300, Artem Bityutskiy wrote:
> On Thu, 2007-12-13 at 18:15 +0000, Alexey Korolev wrote:
> > Hi
> >
> > Here is a patch providing partial page read functionality for NAND
> > devices.
> >
> > In many cases it gives performacne boost. I've added this feature
> > enabling under chip->options flag.
> > Setting NAND_PART_READ option in board driver will enable this feature.
>
> Hamish, this stuff should certainly help you. You could give it a try.
> Unfortunately Alexey gave up almost straight away and did not try to
> push his work harder.The arguments against the patch were weak, and
> addressable. This work needs some more efforts and it may get merged.
> Moreover, Alexey came with impressive numbers, and it is difficult to
> argue against. Would you give it a try? If it gives performance benefits
> for you, I think we could raise this again.
>
> Look here for the full story:
> http://lists.infradead.org/pipermail/linux-mtd/2007-December/020105.html
I reviewed the discussion.
Firstly it was suggested to talk about sub-page reads rather than
partial reads. I don't think this is quite correct. Unlike writes, the
chip does not care which part of the page you read - you can skip to any
column address within the page. In nand_base it is in 256-byte
increments because that is the software-ECC step size.
The rest of the discussion was about improved use of sub-page writes.
I'm sure that would be useful but it's not strictly relevant to the
partial read patch.
Also Alexey said:
> Setting NAND_PART_READ option in board driver will enable this
> feature.
which is not true, as nand_base.c masks out chip-options (like this)
inherited from the board driver. It must be set for the chip in
nand_ids.c instead.
Artem, were you able to try the patch on the OLPC with hardware ECC, as
you hinted in the original discussion?
Also I reverted your recent patch to combine the EC + VID header reads
in the UBI scan for this test. I think with partial reads it may make
things slower, because it will force 2K to be read (or 576 bytes if the
ALIGN() is removed, still more than 64 + 64). Because min_io_size = 2K
is not really accurate I guess.
Hamish
--
Hamish Moffatt VK3SB <hamish at debian.org> <hamish at cloud.net.au>
More information about the linux-mtd
mailing list