• David Howells's avatar
    NOMMU: Support XIP on initramfs · cb6ff208
    David Howells authored
    Support XIP on files unpacked from the initramfs image on NOMMU systems.  This
    simply requires the length of the file to be preset so that the ramfs fs can
    attempt to garner sufficient contiguous storage to store the file (NOMMU mmap
    can only map contiguous RAM).
    
    All the other bits to do XIP on initramfs files are present:
    
     (1) ramfs's truncate attempts to allocate a contiguous run of pages when a
         file is truncated upwards from nothing.
    
     (2) ramfs sets BDI on its files to indicate direct mapping is possible, and
         that its files can be mapped for read, write and exec.
    
     (3) NOMMU mmap() will use the above bits to determine that it can do XIP.
         Possibly this needs better controls, because it will _always_ try and do
         XIP.
    
    One disadvantage of this very simplistic approach is that sufficient space
    will be allocated to store the whole file, and not just the bit that would be
    XIP'd.  To deal with this, though, the initramfs unpacker would have to be
    able to parse the file contents.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
    cb6ff208
initramfs.c 12.8 KB