08 Apr, 2014

1 commit

  • Pull kbuild changes from Michal Marek:
    - cleanups in the main Makefiles and Documentation/DocBook/Makefile
    - make O=... directory is automatically created if needed
    - mrproper/distclean removes the old include/linux/version.h to make
    life easier when bisecting across the commit that moved the version.h
    file

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: docbook: fix the include error when executing "make help"
    kbuild: create a build directory automatically for out-of-tree build
    kbuild: remove redundant '.*.cmd' pattern from make distclean
    kbuild: move "quote" to Kbuild.include to be consistent
    kbuild: docbook: use $(obj) and $(src) rather than specific path
    kbuild: unconditionally clobber include/linux/version.h on distclean
    kbuild: docbook: specify KERNELDOC dependency correctly
    kbuild: docbook: include cmd files more simply
    kbuild: specify build_docproc as a phony target

    Linus Torvalds
     

30 Mar, 2014

1 commit


04 Mar, 2014

1 commit


20 Feb, 2014

2 commits

  • Unlike other build products in the Linux kernel, there is no 'make
    *install' mechanism to put devicetree blobs in a standard place.

    This commit adds a new 'dtbs_install' make target which copies all of
    the dtbs into the INSTALL_DTBS_PATH directory. INSTALL_DTBS_PATH can be
    set before calling make to change the default install directory. If not
    set then it defaults to:

    $INSTALL_PATH/dtbs/$KERNELRELEASE.

    This is done to keep dtbs from different kernel versions separate until
    things have settled down. Once the dtbs are stable, and not so strongly
    linked to the kernel version, the devicetree files will most likely move
    to their own repo. Users will need to upgrade install scripts at that
    time.

    v7: (reworked by Grant Likely)
    - Moved rules from arch/arm/Makefile to arch/arm/boot/dts/Makefile so
    that each dtb install could have a separate target and be reported as
    part of the make output.
    - Fixed dependency problem to ensure $KERNELRELEASE is calculated before
    attempting to install
    - Removed option to call external script. Copying the files should be
    sufficient and a build system can post-process the install directory.
    Despite the fact an external script is used for installing the kernel,
    I don't think that is a pattern that should be encouraged. I would
    rather see buildroot type tools post process the install directory to
    rename or move dtb files after installing to a staging directory.
    - Plus it is easy to add a hook after the fact without blocking the
    rest of this feature.
    - Move the helper targets into scripts/Makefile.lib with the rest of the
    common dtb rules

    Signed-off-by: Jason Cooper
    Signed-off-by: Grant Likely
    Cc: Michal Marek
    Cc: Russell King
    Cc: Rob Herring

    Jason Cooper
     
  • The testcase data is usable by any platform. This patch moves it into
    the drivers/of directory so it can be included by any architecture.

    Using the test cases requires manually adding #include
    to the end of the boards .dtsi file and enabling CONFIG_OF_SELFTEST. Not
    pretty though. A useful project would be to make the testcase code
    easier to execute.

    Signed-off-by: Grant Likely

    Grant Likely
     

11 Jul, 2013

1 commit

  • Pull kbuild updates from Michal Marek:
    - fix for make headers_install argv explosion with too long path
    - scripts/setlocalversion does not call git update-index needlessly
    - fix for the src.rpm produced by make rpm-pkg. The new make
    image_name can be useful also for other packaging tools.
    - scripts/mod/devicetable-offsets.o is not rebuilt during each make run
    - make modules_install dependency fix
    - scripts/sortextable portability fix
    - fix for kbuild to generate the output directory for all object files
    in subdirs.
    - a couple of minor fixes

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: create directory for dir/file.o
    tools/include: use stdint types for user-space byteshift headers
    Makefile: Fix install error with make -j option
    Fix a build warning in scripts/mod/file2alias.c
    improve modalias building
    scripts/mod: Spelling s/DEVICEVTABLE/DEVICETABLE/
    kbuild: fix error when building from src rpm
    scripts/setlocalversion on write-protected source tree
    Makefile.lib: align DTB quiet_cmd
    kbuild: fix make headers_install when path is too long

    Linus Torvalds
     

10 Jul, 2013

1 commit

  • Add support for extracting LZ4-compressed kernel images, as well as
    LZ4-compressed ramdisk images in the kernel boot process.

    Signed-off-by: Kyungsik Lee
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Russell King
    Cc: Borislav Petkov
    Cc: Florian Fainelli
    Cc: Yann Collet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kyungsik Lee
     

04 Jul, 2013

1 commit

  • When add a obj with dir to obj-y, like this

    obj-y += dir/file.o

    The $(obj)/dir not created, this patch fix this.

    When try to add a file(which in a subdir) to my board's obj-y, the build
    progress crashed.

    For example, I use at91rm9200ek board, and in kernel dir run:

    mkdir objtree
    make O=objtree at91rm9200_defconfig
    mkdir arch/arm/mach-at91/dir
    touch arch/arm/mach-at91/dir/file.c

    and edit arch/arm/mach-at91/dir/file.c to add some code.
    then edit arch/arm/mach-at91/Makefile, change the following line:

    obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o

    to:

    obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o dir/file.o

    Now build it:

    make O=objtree

    Then the error appears:
    ...
    CC arch/arm/mach-at91/board-rm9200dk.o
    CC arch/arm/mach-at91/board-rm9200ek.o
    CC arch/arm/mach-at91/dir/file.o
    linux-2.6/arch/arm/mach-at91/dir/file.c:5:
    fatal error: opening dependency file
    arch/arm/mach-at91/dir/.file.o.d: No such file or directory

    Check the objtree:
    LANG=en ls objtree/arch/arm/mach-at91/dir
    ls: cannot access objtree/arch/arm/mach-at91/dir: No such file or directory

    It's apparently that the target dir not created for file.o

    Check kbuild source code. It seems that kbuild create dirs for that in
    $(obj-dirs). But if the dir need not to create a built-in.o, It should
    never in $(obj-dirs).

    So I make this patch to make sure It in $(obj-dirs)

    this bug caused by commit
    f5fb976520a53f45f8bbf2e851f16b3b5558d485

    Signed-off-by: 张忠山
    Signed-off-by: Michal Marek

    张忠山
     

14 Jun, 2013

1 commit


13 Jun, 2013

1 commit

  • The unaligned dtb.S filename in make output started to irritate me:
    DTC arch/metag/boot/dts/skeleton.dtb
    DTB arch/metag/boot/dts/skeleton.dtb.S
    AS arch/metag/boot/dts/skeleton.dtb.o
    LD arch/metag/boot/dts/built-in.o

    Add an extra space to quiet_cmd_dt_S_dtb so the dtb.S filename aligns
    with all the others.

    Signed-off-by: James Hogan
    Cc: Dirk Brandewie
    Cc: Grant Likely
    Cc: trivial@kernel.org
    Signed-off-by: Michal Marek

    James Hogan
     

23 May, 2013

1 commit

  • In commit b40b25ff (kbuild: always run gcc -E on *.dts, remove cmd_dtc_cpp),
    dts building was changed to always use the C preprocessor. This meant
    that the .dts file passed to dtc is not the original, but the
    preprocessed one.

    When compiling with a separate build directory (i.e., with O=), this
    preprocessed file will not live in the same directory as the original.
    When the .dts file includes .dtsi files, dtc will look for them in the
    build directory, not in the source directory and compilation will fail.

    The commit referenced above tried to fix this by passing arch/*/boot/dts
    as an include path to dtc. However, for mips, the .dts files are not in
    this directory, so dts compilation on mips breaks for some targets.

    Instead of hardcoding this particular include path, this commit just
    uses the directory of the .dts file that is being compiled, which
    effectively restores the previous behaviour wrt includes. For most .dts
    files, this path is just the same as the previous hardcoded
    arch/*/boot/dts path.

    This was tested on a mips (rt3052) and an arm (bcm2835) target.

    Signed-off-by: Matthijs Kooijman
    Reviewed-by: Stephen Warren
    Signed-off-by: Michal Marek

    Matthijs Kooijman
     

06 May, 2013

1 commit

  • Pull mudule updates from Rusty Russell:
    "We get rid of the general module prefix confusion with a binary config
    option, fix a remove/insert race which Never Happens, and (my
    favorite) handle the case when we have too many modules for a single
    commandline. Seriously, the kernel is full, please go away!"

    * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
    modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
    X.509: Support parse long form of length octets in Authority Key Identifier
    module: don't unlink the module until we've removed all exposure.
    kernel: kallsyms: memory override issue, need check destination buffer length
    MODSIGN: do not send garbage to stderr when enabling modules signature
    modpost: handle huge numbers of modules.
    modpost: add -T option to read module names from file/stdin.
    modpost: minor cleanup.
    genksyms: pass symbol-prefix instead of arch
    module: fix symbol versioning with symbol prefixes
    CONFIG_SYMBOL_PREFIX: cleanup.

    Linus Torvalds
     

06 Apr, 2013

3 commits

  • Replace cmd_dtc with cmd_dtc_cpp, and delete the latter.

    Previously, a special file extension (.dtsp) was required to trigger
    the C pre-processor to run on device tree files. This was ugly. Now that
    previous changes have enhanced cmd_dtc_cpp to collect dependency
    information from both gcc -E and dtc, we can transparently run the pre-
    processor on all device tree files, irrespective of whether they
    use /include/ or #include syntax to include *.dtsi.

    Signed-off-by: Stephen Warren
    Acked-by: Rob Herring

    Stephen Warren
     
  • Prior to this change, when compiling *.dts to *.dtb, the dependency
    output from dtc would be used, and when compiling *.dtsp to *.dtb, the
    dependency output from gcc -E alone would be used, despite dtc also
    being invoked (on a temporary file that was guaranteed to have no
    dependencies).

    With this change, when compiling *.dtsp to *.dtb, the dependency files
    from both gcc -E and dtc are used. This will allow cmd_dtc_cpp to
    replace cmd_dtc in a future change. In turn, that will allow the C pre-
    processor to be run transparently on *.dts, without the need to a
    separate rule or file extension to trigger it.

    Signed-off-by: Stephen Warren
    Acked-by: Rob Herring

    Stephen Warren
     
  • The recent dtc+cpp support allows header files and C pre-processor
    defines/macros to be used when compiling device tree files. These
    headers will typically define various constants that are part of the
    device tree bindings.

    The original patch which set up the dtc+cpp include path only considered
    using those headers from device tree files. However, most are also
    useful for kernel code which needs to interpret the device tree.

    In both the DT files and the kernel, I'd like to include the DT-related
    headers in the same way, for example, .
    That will simplify any text which discusses the DT header locations.

    Creating a for kernel source to use is as simple as
    placing files into include/dt-bindings/.

    However, when compiling DT files, the include path should be restricted
    so that only the dt-bindings path is available; arbitrary kernel headers
    shouldn't be exposed. For this reason, create a specific include
    directory for use by dtc+cpp, and symlink dt-bindings from there to the
    actual location of include/dt-bindings/. For want of a better location,
    place this "include chroot" into the existing dts/ directory.

    arch/*/boot/dts/include/dt-bindings -> ../../../../../include/dt-bindings

    Some headers used by device tree files may not be useful to the kernel;
    they may be used simply to aid in constructing the DT file (e.g. macros
    to create a node), but not define any information that the kernel needs
    to share. These may be placed directly into arch/*/boot/dts/ along with
    the DT files themselves.

    Acked-by: Michal Marek
    Acked-by: Shawn Guo
    Acked-by: Rob Herring
    Signed-off-by: Stephen Warren

    Stephen Warren
     

15 Mar, 2013

1 commit

  • We have CONFIG_SYMBOL_PREFIX, which three archs define to the string
    "_". But Al Viro broke this in "consolidate cond_syscall and
    SYSCALL_ALIAS declarations" (in linux-next), and he's not the first to
    do so.

    Using CONFIG_SYMBOL_PREFIX is awkward, since we usually just want to
    prefix it so something. So various places define helpers which are
    defined to nothing if CONFIG_SYMBOL_PREFIX isn't set:

    1) include/asm-generic/unistd.h defines __SYMBOL_PREFIX.
    2) include/asm-generic/vmlinux.lds.h defines VMLINUX_SYMBOL(sym)
    3) include/linux/export.h defines MODULE_SYMBOL_PREFIX.
    4) include/linux/kernel.h defines SYMBOL_PREFIX (which differs from #7)
    5) kernel/modsign_certificate.S defines ASM_SYMBOL(sym)
    6) scripts/modpost.c defines MODULE_SYMBOL_PREFIX
    7) scripts/Makefile.lib defines SYMBOL_PREFIX on the commandline if
    CONFIG_SYMBOL_PREFIX is set, so that we have a non-string version
    for pasting.

    (arch/h8300/include/asm/linkage.h defines SYMBOL_NAME(), too).

    Let's solve this properly:
    1) No more generic prefix, just CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
    2) Make linux/export.h usable from asm.
    3) Define VMLINUX_SYMBOL() and VMLINUX_SYMBOL_STR().
    4) Make everyone use them.

    Signed-off-by: Rusty Russell
    Reviewed-by: James Hogan
    Tested-by: James Hogan (metag)

    Rusty Russell
     

13 Feb, 2013

1 commit

  • Device tree source files may now include header files. The intent is
    that those header files define/name constants used as part of the DT
    bindings. Currently this feature is open to abuse, since any kernel
    header file at all can be included, This could allow device tree files
    to become dependant on kernel headers files, and thus make them no
    longer OS-independent. This would also prevent separating the device
    tree source files from the kernel repository.

    Solve this by limiting the cpp include path for device tree files to
    separate directories.

    Signed-off-by: Stephen Warren
    Signed-off-by: Grant Likely

    Stephen Warren
     

08 Feb, 2013

1 commit

  • Create cmd_dtc_cpp to run the C pre-processor on *.dts file before
    passing them to dtc for final compilation. This allows the use of #define
    and #include within the .dts file.

    Acked-by: Simon Glass
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Michal Marek
    Acked-by: Srinivas Kandagatla
    Signed-off-by: Stephen Warren
    Signed-off-by: Grant Likely

    Stephen Warren
     

01 Dec, 2012

1 commit

  • All architectures that use cmd_dtc do so in almost the same way. Create
    a central build rule to avoid duplication. The one difference is that
    most current uses of dtc build $(obj)/%.dtb from $(src)/dts/%.dts rather
    than building the .dtb in the same directory as the .dts file. This
    difference will be eliminated arch-by-arch in future patches.

    MIPS is the exception here; it already uses the exact same rule as the
    new common rule, so the duplicate is removed in this patch to avoid any
    conflict. arch/mips changes courtesy of Ralf Baechle.

    Update Documentation/kbuild to remove the explicit call to cmd_dtc from
    the example, now that the rule exists in a centralized location.

    Cc: Arnd Bergmann
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Olof Johansson
    Cc: Russell King
    Acked-by: Catalin Marinas
    Cc: Jonas Bonn
    Cc: linux@lists.openrisc.net
    Cc: Aurelien Jacquiot
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: Mark Salter
    Cc: Michal Simek
    Cc: microblaze-uclinux@itee.uq.edu.au
    Cc: Chris Zankel
    Cc: linux-xtensa@linux-xtensa.org
    Cc: Max Filippov
    Signed-off-by: Ralf Baechle
    Signed-off-by: Stephen Warren
    Signed-off-by: Rob Herring

    Stephen Warren
     

26 Mar, 2012

1 commit

  • All ARCHs have the same definition of MKIMAGE. Move it to Makefile.lib
    to avoid duplication.

    All ARCHs have similar definitions of cmd_uimage. Place a sufficiently
    parameterized version in Makefile.lib to avoid duplication.

    Signed-off-by: Stephen Warren
    Acked-by: Nicolas Pitre
    Tested-by: Mike Frysinger [Blackfin]
    Tested-by: Michal Simek [Microblaze]
    Tested-by: Guan Xuetao [unicore32]
    Signed-off-by: Michal Marek

    Stephen Warren
     

15 Jan, 2012

1 commit

  • This hooks dtc into Kbuild's dependency system.

    Thus, for example, "make dtbs" will rebuild tegra-harmony.dtb if only
    tegra20.dtsi has changed yet tegra-harmony.dts has not. The previous
    lack of this feature recently caused me to have very confusing "git
    bisect" results.

    For ARM, it's obvious what to add to $(targets). I'm not familiar enough
    with other architectures to know what to add there. Powerpc appears to
    already add various .dtb files into $(targets), but the other archs may
    need something added to $(targets) to work.

    Signed-off-by: Stephen Warren
    Acked-by: Shawn Guo
    [mmarek: Dropped arch/c6x part to avoid merging commits from the middle
    of the merge window]
    Signed-off-by: Michal Marek

    Stephen Warren
     

09 Jan, 2012

1 commit

  • KBUILD_MODNAME is not defined for files that are linked into multiple
    modules, and trying to change reality to match documentation would
    result in all sorts of trouble. E.g. options for built-in modules would
    be called either foo_bar.param, foo.param, or bar.param, depending on
    the configuration. So just change the comment.

    Signed-off-by: Michal Marek

    Michal Marek
     

31 Aug, 2011

1 commit

  • commit 7373f4f (kbuild: add implicit rules for parser generation)
    created a implicit rule chain (%.c: %.c_shipped: %.y).
    Make considers the _shipped files to be intermediate files which
    causes them to be deleted if they didn't exist before make was run.
    Mark the _shipped files PRECIOUS to prevent make from deleting them.

    Signed-off-by: Peter Foley
    Acked-by: Arnaud Lacombe
    Signed-off-by: Michal Marek

    Peter Foley
     

10 Jun, 2011

2 commits


18 Apr, 2011

1 commit


14 Jan, 2011

1 commit

  • In userspace, the .lzma format has become mostly a legacy file format that
    got superseded by the .xz format. Similarly, LZMA Utils was superseded by
    XZ Utils.

    These patches add support for XZ decompression into the kernel. Most of
    the code is as is from XZ Embedded .
    It was written for the Linux kernel but is usable in other projects too.

    Advantages of XZ over the current LZMA code in the kernel:
    - Nice API that can be used by other kernel modules; it's
    not limited to kernel, initramfs, and initrd decompression.
    - Integrity check support (CRC32)
    - BCJ filters improve compression of executable code on
    certain architectures. These together with LZMA2 can
    produce a few percent smaller kernel or Squashfs images
    than plain LZMA without making the decompression slower.

    This patch: Add the main decompression code (xz_dec), testing module
    (xz_dec_test), wrapper script (xz_wrap.sh) for the xz command line tool,
    and documentation. The xz_dec module is enough to have a usable XZ
    decompressor e.g. for Squashfs.

    Signed-off-by: Lasse Collin
    Cc: "H. Peter Anvin"
    Cc: Alain Knaff
    Cc: Albin Tonnerre
    Cc: Phillip Lougher
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lasse Collin
     

24 Dec, 2010

1 commit

  • This patch adds support for linking device tree blob(s) into
    vmlinux. Modifies asm-generic/vmlinux.lds.h to add linking
    .dtb sections into vmlinux. To maintain compatiblity with the of/fdt
    driver code platforms MUST copy the blob to a non-init memory location
    before the kernel frees the .init.* sections in the image.

    Modifies scripts/Makefile.lib to add a kbuild command to
    compile DTS files to device tree blobs and a rule to create objects to
    wrap the blobs for linking.

    STRUCT_ALIGNMENT is defined in vmlinux.lds.h for use in the rule to
    create wrapper objects for the dtb in Makefile.lib. The
    STRUCT_ALIGN() macro in vmlinux.lds.h is modified to use the
    STRUCT_ALIGNMENT definition.

    The DTB's are placed on 32 byte boundries to allow parsing the blob
    with driver/of/fdt.c during early boot without having to copy the blob
    to get the structure alignment GCC expects.

    A DTB is linked in by adding the DTB object to the list of objects to
    be linked into vmlinux in the archtecture specific Makefile using
    obj-y += foo.dtb.o

    Signed-off-by: Dirk Brandewie
    Acked-by: Michal Marek
    [grant.likely@secretlab.ca: cleaned up whitespace inconsistencies]
    Signed-off-by: Grant Likely

    Dirk Brandewie
     

29 Oct, 2010

2 commits


23 Sep, 2010

1 commit


01 Jun, 2010

1 commit

  • * 'for-35' of git://repo.or.cz/linux-kbuild: (81 commits)
    kbuild: Revert part of e8d400a to resolve a conflict
    kbuild: Fix checking of scm-identifier variable
    gconfig: add support to show hidden options that have prompts
    menuconfig: add support to show hidden options which have prompts
    gconfig: remove show_debug option
    gconfig: remove dbg_print_ptype() and dbg_print_stype()
    kconfig: fix zconfdump()
    kconfig: some small fixes
    add random binaries to .gitignore
    kbuild: Include gen_initramfs_list.sh and the file list in the .d file
    kconfig: recalc symbol value before showing search results
    .gitignore: ignore *.lzo files
    headerdep: perlcritic warning
    scripts/Makefile.lib: Align the output of LZO
    kbuild: Generate modules.builtin in make modules_install
    Revert "kbuild: specify absolute paths for cscope"
    kbuild: Do not unnecessarily regenerate modules.builtin
    headers_install: use local file handles
    headers_check: fix perl warnings
    export_report: fix perl warnings
    ...

    Linus Torvalds
     

07 Apr, 2010

1 commit

  • Add support for the hardware version of the Hamming weight function,
    popcnt, present in CPUs which advertize it under CPUID, Function
    0x0000_0001_ECX[23]. On CPUs which don't support it, we fallback to the
    default lib/hweight.c sw versions.

    A synthetic benchmark comparing popcnt with __sw_hweight64 showed almost
    a 3x speedup on a F10h machine.

    Signed-off-by: Borislav Petkov
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Borislav Petkov
     

11 Mar, 2010

1 commit


13 Jan, 2010

1 commit

  • In an x86 build with CONFIG_KERNEL_LZMA enabled and dash as sh,
    arch/x86/boot/compressed/vmlinux.bin.lzma ends with
    '\xf0\x7d\x39\x00' (16 bytes) instead of the 4 bytes intended and
    the resulting vmlinuz fails to boot. This improves on the
    previous behavior, in which the file contained the characters
    '-ne ' as well, but not by much.

    Previous commits replaced "echo -ne" first with "/bin/echo -ne",
    then "printf" in the hope of improving portability, but none of
    these commands is guaranteed to support hexadecimal escapes on
    POSIX systems. So use the shell to convert from hexadecimal to
    octal.

    With this change, an LZMA-compressed kernel built with dash as sh
    boots correctly again.

    Reported-by: Sebastian Dalfuß
    Reported-by: Oliver Hartkopp
    Reported-by: Michael Guntsche
    Signed-off-by: Jonathan Nieder
    Cc: Michael Tokarev
    Cc: Alek Du
    Cc: Andrew Morton
    Signed-off-by: Michal Marek

    Jonathan Nieder
     

12 Jan, 2010

1 commit

  • This patch series adds generic support for creating and extracting
    LZO-compressed kernel images, as well as support for using such images on
    the x86 and ARM architectures, and support for creating and using
    LZO-compressed initrd and initramfs images.

    Russell King said:

    : Testing on a Cortex A9 model:
    : - lzo decompressor is 65% of the time gzip takes to decompress a kernel
    : - lzo kernel is 9% larger than a gzip kernel
    :
    : which I'm happy to say confirms your figures when comparing the two.
    :
    : However, when comparing your new gzip code to the old gzip code:
    : - new is 99% of the size of the old code
    : - new takes 42% of the time to decompress than the old code
    :
    : What this means is that for a proper comparison, the results get even better:
    : - lzo is 7.5% larger than the old gzip'd kernel image
    : - lzo takes 28% of the time that the old gzip code took
    :
    : So the expense seems definitely worth the effort. The only reason I
    : can think of ever using gzip would be if you needed the additional
    : compression (eg, because you have limited flash to store the image.)
    :
    : I would argue that the default for ARM should therefore be LZO.

    This patch:

    The lzo compressor is worse than gzip at compression, but faster at
    extraction. Here are some figures for an ARM board I'm working on:

    Uncompressed size: 3.24Mo
    gzip 1.61Mo 0.72s
    lzo 1.75Mo 0.48s

    So for a compression ratio that is still relatively close to gzip, it's
    much faster to extract, at least in that case.

    This part contains:
    - Makefile routine to support lzo compression
    - Fixes to the existing lzo compressor so that it can be used in
    compressed kernels
    - wrapper around the existing lzo1x_decompress, as it only extracts one
    block at a time, while we need to extract a whole file here
    - config dialog for kernel compression

    [akpm@linux-foundation.org: coding-style fixes]
    [akpm@linux-foundation.org: cleanup]
    Signed-off-by: Albin Tonnerre
    Tested-by: Wu Zhangjin
    Acked-by: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Tested-by: Russell King
    Acked-by: Russell King
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Albin Tonnerre
     

17 Dec, 2009

1 commit

  • * 'for-33' of git://repo.or.cz/linux-kbuild: (29 commits)
    net: fix for utsrelease.h moving to generated
    gen_init_cpio: fixed fwrite warning
    kbuild: fix make clean after mismerge
    kbuild: generate modules.builtin
    genksyms: properly consider EXPORT_UNUSED_SYMBOL{,_GPL}()
    score: add asm/asm-offsets.h wrapper
    unifdef: update to upstream revision 1.190
    kbuild: specify absolute paths for cscope
    kbuild: create include/generated in silentoldconfig
    scripts/package: deb-pkg: use fakeroot if available
    scripts/package: add KBUILD_PKG_ROOTCMD variable
    scripts/package: tar-pkg: use tar --owner=root
    Kbuild: clean up marker
    net: add net_tstamp.h to headers_install
    kbuild: move utsrelease.h to include/generated
    kbuild: move autoconf.h to include/generated
    drop explicit include of autoconf.h
    kbuild: move compile.h to include/generated
    kbuild: drop include/asm
    kbuild: do not check for include/asm-$ARCH
    ...

    Fixed non-conflicting clean merge of modpost.c as per comments from
    Stephen Rothwell (modpost.c had grown an include of linux/autoconf.h
    that needed to be changed to generated/autoconf.h)

    Linus Torvalds
     

15 Dec, 2009

1 commit

  • The next commit will require the use of MODULE_SYMBOL_PREFIX in
    .tmp_exports-asm.S. Currently it is mixed in with C structure
    definitions in "asm/module.h". Move the definition of this arch option
    into Kconfig, so it can be easily accessed by any code.

    This also lets modpost.c use the same definition. Previously modpost
    relied on a hardcoded list of architectures in mk_elfconfig.c.

    A build test for blackfin, one of the two MODULE_SYMBOL_PREFIX archs,
    showed the generated code was unchanged. vmlinux was identical save
    for build ids, and an apparently randomized suffix on a single "__key"
    symbol in the kallsyms data).

    Signed-off-by: Alan Jenkins
    Acked-by: Mike Frysinger (blackfin)
    CC: Sam Ravnborg
    Signed-off-by: Rusty Russell

    Alan Jenkins
     

12 Dec, 2009

1 commit

  • As has been discussed previously (and Sam has been CC'ed), the fix
    is still incorrect. It replaces "echo -ne" with "/bin/echo -ne",
    but neither of the two are guaranteed to support the necessary
    arguments and necessary (hexadecimal) escape sequences. What should
    be used here is printf(1). The trivial patch below (on top of these
    kbuild changes) fixes this issue.

    Signed-Off-By: Michael Tokarev
    Signed-off-by: Sam Ravnborg
    Signed-off-by: Michal Marek

    Michael Tokarev
     

12 Oct, 2009

1 commit

  • The Makefile.lib will call "echo -ne" to append uncompressed kernel size to
    bzip2/lzma kernel image.
    The "echo" here depends on the shell that /bin/sh pointing to.
    On Ubuntu system, the /bin/sh is pointing to dash, which does not support
    "echo -e" at all. Use /bin/echo instead of shell echo should always be safe.

    Signed-off-by: Alek Du
    Acked-by: WANG Cong
    Signed-off-by: Sam Ravnborg

    Alek Du