Re: [PATCH 2.6.21] cramfs: add cramfs Linear XIP

From: JÃrn Engel
Date: Fri Jun 08 2007 - 10:14:50 EST


On Thu, 7 June 2007 22:15:19 +0100, Christoph Hellwig wrote:
>
> With the filemap_xip.c helpers adding xip support to any filesystem
> is pretty trivial for the highlevel filesystem operations. The only
> interesting bit is the lowlevel code (the get_xip_page method and
> the others Carsten mentioned), but we need to do these lowlevel
> code in a generic and proper way anyway.
>
> I'll try to hack up an xip prototype for jffs2 next week.

I'd absolutely love to see this code! However, it may be a little
harder than you think.

XIP is basically limited to NOR flash. And the NOR interface is to
simply map all flash to some physical memory area and interpret
reads/writes to/from this area in a special way. Internally the flash
chip is implementing a state machine that is controlled by writes and
defines the data read.

Easiest case: read_array state. In this state, every address will
return the flash content associated to that address on read. Pretty
much any write will cause a transition to a different state, though.
Any state other than read_array will return flash registers on any read.

In other words, writing to flash prohibits XIP, at least temporarily. A
read-write xip flash filesystem needs to tear down any xip mapping
before writing and have the flash chip return to read_array mode before
setting up a new mapping.

If the underlying device consists of several chips or of chips that
implement seperate state machines for different areas of the chip (some
Intel chips), only mappings belonging to the chip/area currently being
written are affected. That should make quite a nice optimizations,
although it can be ignored for a first shot.

JÃrn

--
Joern's library part 12:
http://physics.nist.gov/cuu/Units/binary.html
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/