1. 01 Dec, 2010 1 commit
  2. 31 Oct, 2010 1 commit
    • Geert Uytterhoeven's avatar
      initramfs: Fix initramfs size for 32-bit arches · 96f93593
      Geert Uytterhoeven authored
      Commit ffe8018c ("initramfs: fix initramfs size calculation") broke
      32-bit big-endian arches like (on ARAnyM):
      
          VFS: Cannot open root device "hda1" or unknown-block(3,1)
          Please append a correct "root=" boot option; here are the available partitions:
          fe80         1059408 nfhd8  (driver?)
            fe81          921600 nfhd8p1 00000000-0000-0000-0000-000000000nfhd8p1
            fe82          137807 nfhd8p2 00000000-0000-0000-0000-000000000nfhd8p2
          0200            3280 fd0  (driver?)
          0201            3280 fd1  (driver?)
          0300         1059408 hda  driver: ide-gd
            0301          921600 hda1 00000000-0000-0000-0000-000000000hda1
            0302          137807 hda2 00000000-0000-0000-0000-000000000hda2
          Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(3,1)
      
      As pointed out by Kerstin Jonsson <kerstin.jonsson@ericsson.com>, this
      is due to CONFIG_32BIT not being defined, so the initramfs size field is
      done as a 64-bit quad.  On little-endian (like x86) this doesn matter,
      but on a big-endian machine the 32-bit reads will see the (zero) high
      bits.
      
      Only mips, s390, and score set CONFIG_32BIT for 32-bit builds, so fix it for
      all other 32-bit arches by inverting the logic and testing for CONFIG_64BIT,
      which should be defined on all 64-bit arches.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      [ I think we should just make it "u64" on all architectures and get
        rid of the whole #ifdef CONFIG_xxBIT   - Linus ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      96f93593
  3. 29 Sep, 2010 2 commits
    • Hendrik Brueckner's avatar
      initramfs: fix initramfs size calculation · ffe8018c
      Hendrik Brueckner authored
      The size of a built-in initramfs is calculated in init/initramfs.c by
      "__initramfs_end - __initramfs_start".  Those symbols are defined in the
      linker script include/asm-generic/vmlinux.lds.h:
      
      #define INIT_RAM_FS                                                     \
              . = ALIGN(PAGE_SIZE);                                           \
              VMLINUX_SYMBOL(__initramfs_start) = .;                          \
              *(.init.ramfs)                                                  \
              VMLINUX_SYMBOL(__initramfs_end) = .;
      
      If the initramfs file has an odd number of bytes, the "__initramfs_end"
      symbol points to an odd address, for example, the symbols in the
      System.map might look like:
      
          0000000000572000 T __initramfs_start
          00000000005bcd05 T __initramfs_end	  <-- odd address
      
      At least on s390 this causes a problem:
      
      Certain s390 instructions, especially instructions for loading addresses
      (larl) or branch addresses must be on even addresses.  The compiler loads
      the symbol addresses with the "larl" instruction.  This instruction sets
      the last bit to 0 and, therefore, for odd size files, the calculated size
      is one byte less than it should be:
      
          0000000000540a9c <populate_rootfs>:
            540a9c:     eb cf f0 78 00 24       stmg    %r12,%r15,120(%r15),
            540aa2:     c0 10 00 01 8a af       larl    %r1,572000 <__initramfs_start>
            540aa8:     c0 c0 00 03 e1 2e       larl    %r12,5bcd04 <initramfs_end>
                                                        (Instead of  5bcd05)
            ...
            540abe:     1b c1                   sr      %r12,%r1
      
      To fix the problem, this patch introduces the global variable
      __initramfs_size, which is calculated in the "usr/initramfs_data.S" file.
      The populate_rootfs() function can then use the start marker of the
      .init.ramfs section and the value of __initramfs_size for loading the
      initramfs.  Because the start marker and size is sufficient, the
      __initramfs_end symbol is no longer needed and is removed.
      Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
      Signed-off-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Reviewed-by: default avatarWANG Cong <xiyou.wangcong@gmail.com>
      Acked-by: default avatarMichal Marek <mmarek@suse.cz>
      Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      ffe8018c
    • Hendrik Brueckner's avatar
      initramfs: generalize initramfs_data.xxx.S variants · 6ae64e42
      Hendrik Brueckner authored
      Remove initramfs_data.{lzo,lzma,gz,bz2}.S variants and use a common
      implementation in initramfs_data.S.  The common implementation expects the
      file name of the initramfs to be defined in INITRAMFS_IMAGE.
      
      Change the Makefile to set the INITRAMFS_IMAGE define symbol according
      to the selected compression method.
      Signed-off-by: default avatarHendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Cc: WANG Cong <xiyou.wangcong@gmail.com>
      Acked-by: default avatarMichal Marek <mmarek@suse.cz>
      Acked-by: default avatar"H. Peter Anvin" <hpa@zytor.com>
      Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
      6ae64e42
  4. 07 Jan, 2009 1 commit
    • Alain Knaff's avatar
      bzip2/lzma: fix built-in initramfs vs CONFIG_RD_GZIP · a26ee60f
      Alain Knaff authored
      Impact: Resolves build failures in some configurations
      
      Makes it possible to disable CONFIG_RD_GZIP . In that case, the
      built-in initramfs will be compressed by whatever compressor is
      available (bzip2 or lzma) or left uncompressed if none is available.
      
      It also removes a couple of warnings which occur when no ramdisk
      compression at all is chosen.
      
      It also restores the select ZLIB_INFLATE in drivers/block/Kconfig
      which somehow came missing. This is needed to activate compilation of
      the stuff in zlib_deflate.
      Signed-off-by: default avatarAlain Knaff <alain@knaff.lu>
      Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
      a26ee60f
  5. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4