01 Dec, 2010

1 commit

  • Define the __initramfs_size variable using VMLINUX_SYMBOL() to take care
    of symbol-prefixed architectures, for example, blackfin.

    Signed-off-by: Hendrik Brueckner
    Cc: Mike Frysinger
    Cc: Hendrik Brueckner ,
    Cc: Michal Marek
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    [mmarek: leave out Makefile change, since d63f6d1 already takes care of the
    SYMBOL_PREFIX define]
    Signed-off-by: Michal Marek

    Hendrik Brueckner
     

31 Oct, 2010

1 commit

  • Commit ffe8018c3424 ("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 , 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: Geert Uytterhoeven
    [ I think we should just make it "u64" on all architectures and get
    rid of the whole #ifdef CONFIG_xxBIT - Linus ]
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

29 Sep, 2010

2 commits

  • 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 :
    540a9c: eb cf f0 78 00 24 stmg %r12,%r15,120(%r15),
    540aa2: c0 10 00 01 8a af larl %r1,572000
    540aa8: c0 c0 00 03 e1 2e larl %r12,5bcd04
    (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: Michael Holzheu
    Signed-off-by: Hendrik Brueckner
    Reviewed-by: WANG Cong
    Acked-by: Michal Marek
    Acked-by: "H. Peter Anvin"
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Michal Marek

    Hendrik Brueckner
     
  • 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: Hendrik Brueckner
    Cc: WANG Cong
    Acked-by: Michal Marek
    Acked-by: "H. Peter Anvin"
    Cc: Hendrik Brueckner
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Michal Marek

    Hendrik Brueckner
     

07 Jan, 2009

1 commit

  • 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: Alain Knaff
    Signed-off-by: H. Peter Anvin

    Alain Knaff
     

17 Apr, 2005

1 commit

  • 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!

    Linus Torvalds