06 Dec, 2018

1 commit

  • commit 4cd24de3a0980bf3100c9dcb08ef65ca7c31af48 upstream

    Since retpoline capable compilers are widely available, make
    CONFIG_RETPOLINE hard depend on the compiler capability.

    Break the build when CONFIG_RETPOLINE is enabled and the compiler does not
    support it. Emit an error message in that case:

    "arch/x86/Makefile:226: *** You are building kernel with non-retpoline
    compiler, please update your compiler.. Stop."

    [dwmw: Fail the build with non-retpoline compiler]

    Suggested-by: Peter Zijlstra
    Signed-off-by: Zhenzhong Duan
    Signed-off-by: Thomas Gleixner
    Cc: David Woodhouse
    Cc: Borislav Petkov
    Cc: Daniel Borkmann
    Cc: H. Peter Anvin
    Cc: Konrad Rzeszutek Wilk
    Cc: Andy Lutomirski
    Cc: Masahiro Yamada
    Cc: Michal Marek
    Cc:
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/cca0cb20-f9e2-4094-840b-fb0f8810cd34@default
    Signed-off-by: Greg Kroah-Hartman

    Zhenzhong Duan
     

19 Sep, 2018

1 commit


30 Aug, 2018

1 commit

  • Commit cafa0010cd51 ("Raise the minimum required gcc version to 4.6")
    bumped the minimum GCC version to 4.6 for all architectures.

    This effectively reverts commit da541b20021c ("objtool: Skip unreachable
    warnings for GCC 4.4 and older"), which was a workaround for GCC 4.4 or
    older.

    Signed-off-by: Masahiro Yamada
    Signed-off-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Peter Zijlstra
    Cc: Michal Marek
    Cc: linux-kbuild@vger.kernel.org
    Link: https://lkml.kernel.org/r/1535341183-19994-1-git-send-email-yamada.masahiro@socionext.com

    Masahiro Yamada
     

24 Aug, 2018

2 commits

  • Commit a0f97e06a43c ("kbuild: enable 'make CFLAGS=...' to add
    additional options to CC") renamed CFLAGS to KBUILD_CFLAGS.

    Commit 222d394d30e7 ("kbuild: enable 'make AFLAGS=...' to add
    additional options to AS") renamed AFLAGS to KBUILD_AFLAGS.

    Commit 06c5040cdb13 ("kbuild: enable 'make CPPFLAGS=...' to add
    additional options to CPP") renamed CPPFLAGS to KBUILD_CPPFLAGS.

    For some reason, LDFLAGS was not renamed.

    Using a well-known variable like LDFLAGS may result in accidental
    override of the variable.

    Kbuild generally uses KBUILD_ prefixed variables for the internally
    appended options, so here is one more conversion to sanitize the
    naming convention.

    I did not touch Makefiles under tools/ since the tools build system
    is a different world.

    Signed-off-by: Masahiro Yamada
    Acked-by: Kirill A. Shutemov
    Reviewed-by: Palmer Dabbelt

    Masahiro Yamada
     
  • Since commit 0fbe9a245c60 ("microblaze: add endianness options to
    LDFLAGS instead of LD"), you cannot build the kernel for microblaze
    with CONFIG_DYNAMIC_FTRACE.

    Fixes: 0fbe9a245c60 ("microblaze: add endianness options to LDFLAGS instead of LD")
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

21 Aug, 2018

1 commit

  • Pull tracing updates from Steven Rostedt:

    - Restructure of lockdep and latency tracers

    This is the biggest change. Joel Fernandes restructured the hooks
    from irqs and preemption disabling and enabling. He got rid of a lot
    of the preprocessor #ifdef mess that they caused.

    He turned both lockdep and the latency tracers to use trace events
    inserted in the preempt/irqs disabling paths. But unfortunately,
    these started to cause issues in corner cases. Thus, parts of the
    code was reverted back to where lockdep and the latency tracers just
    get called directly (without using the trace events). But because the
    original change cleaned up the code very nicely we kept that, as well
    as the trace events for preempt and irqs disabling, but they are
    limited to not being called in NMIs.

    - Have trace events use SRCU for "rcu idle" calls. This was required
    for the preempt/irqs off trace events. But it also had to not allow
    them to be called in NMI context. Waiting till Paul makes an NMI safe
    SRCU API.

    - New notrace SRCU API to allow trace events to use SRCU.

    - Addition of mcount-nop option support

    - SPDX headers replacing GPL templates.

    - Various other fixes and clean ups.

    - Some fixes are marked for stable, but were not fully tested before
    the merge window opened.

    * tag 'trace-v4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (44 commits)
    tracing: Fix SPDX format headers to use C++ style comments
    tracing: Add SPDX License format tags to tracing files
    tracing: Add SPDX License format to bpf_trace.c
    blktrace: Add SPDX License format header
    s390/ftrace: Add -mfentry and -mnop-mcount support
    tracing: Add -mcount-nop option support
    tracing: Avoid calling cc-option -mrecord-mcount for every Makefile
    tracing: Handle CC_FLAGS_FTRACE more accurately
    Uprobe: Additional argument arch_uprobe to uprobe_write_opcode()
    Uprobes: Simplify uprobe_register() body
    tracepoints: Free early tracepoints after RCU is initialized
    uprobes: Use synchronize_rcu() not synchronize_sched()
    tracing: Fix synchronizing to event changes with tracepoint_synchronize_unregister()
    ftrace: Remove unused pointer ftrace_swapper_pid
    tracing: More reverting of "tracing: Centralize preemptirq tracepoints and unify their usage"
    tracing/irqsoff: Handle preempt_count for different configs
    tracing: Partial revert of "tracing: Centralize preemptirq tracepoints and unify their usage"
    tracing: irqsoff: Account for additional preempt_disable
    trace: Use rcu_dereference_raw for hooks from trace-event subsystem
    tracing/kprobes: Fix within_notrace_func() to check only notrace functions
    ...

    Linus Torvalds
     

16 Aug, 2018

1 commit

  • Currently if CONFIG_FTRACE_MCOUNT_RECORD is enabled -mrecord-mcount
    compiler flag support is tested for every Makefile.

    Top 4 cc-option usages:
    511 -mrecord-mcount
    11 -fno-stack-protector
    9 -Wno-override-init
    2 -fsched-pressure

    To address that move cc-option from scripts/Makefile.build to top Makefile
    and export CC_USING_RECORD_MCOUNT to be used in original place.

    While doing that also add -mrecord-mcount to CC_FLAGS_FTRACE (if gcc
    actually supports it).

    Link: http://lkml.kernel.org/r/patch-2.thread-aa7b8d.git-de935bace15a.your-ad-here.call-01533557518-ext-9465@work.hours

    Acked-by: Andi Kleen
    Signed-off-by: Vasily Gorbik
    Signed-off-by: Steven Rostedt (VMware)

    Vasily Gorbik
     

09 Aug, 2018

1 commit

  • The host-progs has been kept as an alias of hostprogs-y for a long time
    (at least since the beginning of Git era), with the clear prompt:
    Usage of host-progs is deprecated. Please replace with hostprogs-y!

    Enough time for the migration has passed.

    Signed-off-by: Masahiro Yamada
    Acked-by: Max Filippov

    Masahiro Yamada
     

06 Jul, 2018

1 commit


22 Jun, 2018

1 commit

  • Non gcc-5 builds with CONFIG_STACK_VALIDATION=y and
    SKIP_STACK_VALIDATION=1 fail.
    Example output:
    /bin/sh: init/.tmp_main.o: Permission denied

    commit 96f60dfa5819 ("trace: Use -mcount-record for dynamic ftrace"),
    added a mismatched endif. This causes cmd_objtool to get mistakenly
    set.

    Relocate endif to balance the newly added -record-mcount check.

    Link: http://lkml.kernel.org/r/20180608214746.136554-1-gthelen@google.com

    Fixes: 96f60dfa5819 ("trace: Use -mcount-record for dynamic ftrace")
    Acked-by: Andi Kleen
    Tested-by: David Rientjes
    Signed-off-by: Greg Thelen
    Signed-off-by: Steven Rostedt (VMware)

    Greg Thelen
     

07 Jun, 2018

1 commit

  • Pull tracing updates from Steven Rostedt:
    "One new feature was added to ftrace, which is the trace_marker now
    supports triggers. For example:

    # cd /sys/kernel/debug/tracing
    # echo 'snapshot' > events/ftrace/print/trigger
    # echo 'cause snapshot' > trace_marker

    The rest of the changes are various clean ups and also one stable fix
    that was added late in the cycle"

    * tag 'trace-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (21 commits)
    tracing: Use match_string() instead of open coding it in trace_set_options()
    branch-check: fix long->int truncation when profiling branches
    ring-buffer: Fix typo in comment
    ring-buffer: Fix a bunch of typos in comments
    tracing/selftest: Add test to test simple snapshot trigger for trace_marker
    tracing/selftest: Add test to test hist trigger between kernel event and trace_marker
    tracing/selftest: Add selftests to test trace_marker histogram triggers
    ftrace/selftest: Fix reset_trigger() to handle triggers with filters
    ftrace/selftest: Have the reset_trigger code be a bit more careful
    tracing: Document trace_marker triggers
    tracing: Allow histogram triggers to access ftrace internal events
    tracing: Prevent further users of zero size static arrays in trace events
    tracing: Have zero size length in filter logic be full string
    tracing: Add trigger file for trace_markers tracefs/ftrace/print
    tracing: Do not show filter file for ftrace internal events
    tracing: Add brackets in ftrace event dynamic arrays
    tracing: Have event_trace_init() called by trace_init_tracefs()
    tracing: Add __find_event_file() to find event files without restrictions
    tracing: Do not reference event data in post call triggers
    tracepoints: Fix the descriptions of tracepoint_probe_register{_prio}
    ...

    Linus Torvalds
     

29 May, 2018

1 commit

  • gcc 5 supports a new -mcount-record option to generate ftrace
    tables directly. This avoids the need to run record_mcount
    manually.

    Use this option when available.

    So far doesn't use -mcount-nop, which also exists now.

    This is needed to make ftrace work with LTO because the
    normal record-mcount script doesn't run over the link
    time output.

    It should also improve build times slightly in the general
    case.
    Link: http://lkml.kernel.org/r/20171127213423.27218-12-andi@firstfloor.org

    Signed-off-by: Andi Kleen
    Signed-off-by: Steven Rostedt (VMware)

    Andi Kleen
     

17 May, 2018

2 commits

  • CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX was selected by BLACKFIN, METAG.
    They were removed by commit 4ba66a976072 ("arch: remove blackfin port"),
    commit bb6fb6dfcc17 ("metag: Remove arch/metag/"), respectively.

    No more architecture enables CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX.
    Clean up the rest of scripts, and remove the Kconfig entry.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Sam Ravnborg

    Masahiro Yamada
     
  • CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX was selected by BLACKFIN, METAG.
    They were removed by commit 4ba66a976072 ("arch: remove blackfin port"),
    commit bb6fb6dfcc17 ("metag: Remove arch/metag/"), respectively.

    No more architecture enables CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX,
    hence the -s (--symbol-prefix) option is unnecessary.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Sam Ravnborg

    Masahiro Yamada
     

07 Apr, 2018

4 commits

  • GNU Make automatically deletes intermediate files that are updated
    in a chain of pattern rules.

    Example 1) %.dtb.o
    Acked-by: Frank Rowand
    Acked-by: Ingo Molnar

    Masahiro Yamada
     
  • Our convention is to distinguish file types by suffixes with a period
    as a separator.

    *-asn1.[ch] is a different pattern from other generated sources such
    as *.lex.c, *.tab.[ch], *.dtb.S, etc. More confusing, files with
    '-asn1.[ch]' are generated files, but '_asn1.[ch]' are checked-in
    files:
    net/netfilter/nf_conntrack_h323_asn1.c
    include/linux/netfilter/nf_conntrack_h323_asn1.h
    include/linux/sunrpc/gss_asn1.h

    Rename generated files to *.asn1.[ch] for consistency.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Another common pattern that consists of chained commands is to compile
    a DTB as binary data into the kernel image or a module. It is used in
    several places in the source tree. Support it in the core Makefile.

    $(call if_changed,dt_S_dtb) is more suitable than $(call cmd,dt_S_dtb)
    in case cmd_dt_S_dtb is changed in the future.

    Signed-off-by: Masahiro Yamada
    Acked-by: Frank Rowand

    Masahiro Yamada
     
  • Files generated by if_changed* must be added to 'targets' to include
    *.cmd files. Otherwise, they would be regenerated every time.

    The build system automatically adds objects to 'targets' where
    appropriate, such as obj-y, extra-y, etc. but does nothing for
    intermediate files. So, each Makefile needs to add them by itself.

    There are some common cases where objects are generated by chained
    rules. Lexers and parsers are compiled like follows:

    %.lex.o
    Acked-by: Frank Rowand

    Masahiro Yamada
     

26 Mar, 2018

10 commits

  • cmd_link_multi-link is used only for cmd_link_multi-m.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • With the incremental linking entirely dropped, we can simplify
    the Makefile.

    While I am here, I renamed cmd_link_o_target to cmd_ar_builtin.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • When built-in.o was incrementally linked with 'ld -r', the section
    mismatch analysis for the individual built-in.o was possible when
    CONFIG_DEBUG_SECTION_MISMATCH was enabled.

    With the migration to the thin archive, built-in.a (former, built-in.o)
    is no longer an ELF file. So, the modpost does nothing useful.
    scripts/mod/modpost.c just checks the header to bail out, as follows:

    /* Is this a valid ELF file? */
    if ((hdr->e_ident[EI_MAG0] != ELFMAG0) ||
    (hdr->e_ident[EI_MAG1] != ELFMAG1) ||
    (hdr->e_ident[EI_MAG2] != ELFMAG2) ||
    (hdr->e_ident[EI_MAG3] != ELFMAG3)) {
    /* Not an ELF file - silently ignore it */
    return 0;
    }

    We have the full analysis in the final link stage anyway, so we would
    not miss the section mismatching.

    I do not see a good reason to require extra linking only for the
    purpose of the per-directory analysis. Just get rid of this part.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • In Kbuild, Makefiles can add the same object to obj-y multiple
    times. So,

    obj-y += foo.o
    obj-y += foo.o

    is fine.

    However, this is not true when the same object is added multiple
    times via composite objects. For example,

    obj-y += foo.o bar.o
    foo-objs := foo-bar-common.o foo-only.o
    bar-objs := foo-bar-common.o bar-only.o

    causes build error because two instances of foo-bar-common.o are
    linked into the vmlinux.

    Makefiles tend to invent ugly work-around, for example
    - lib/zstd/Makefile
    - drivers/net/ethernet/cavium/liquidio/Makefile

    The technique used in Kbuild to avoid the multiple definition error
    is to use $(filter $(obj-y), $^). Here, $^ lists the names of all
    the prerequisites with duplicated names removed.

    By replacing it with $(filter $(real-obj-y), $^) we can do likewise
    for composite objects. For built-in objects, we do not need to keep
    the composite object structure. We can simply expand them, and link
    $(real-obj-y) to built-in.a.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • When I was refactoring Makefiles, I stupidly mistook 'real-obj-y' for
    'real-objs-y' over and over again. Finally, I decide to rename it to
    'real-obj-y'. This is consistent with 'obj-y', 'subdir-obj-y'.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Just a cosmetic change to put related code close together.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Cao jin

    Masahiro Yamada
     
  • modname can be calculated much more simply. If modname-multi is
    empty, it is a single-used object. So, modname = $(basetarget).
    Otherwise, modname = $(modname-multi).

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Cao jin

    Masahiro Yamada
     
  • Incremental linking is gone, so rename built-in.o to built-in.a, which
    is the usual extension for archive files.

    This patch does two things, first is a simple search/replace:

    git grep -l 'built-in\.o' | xargs sed -i 's/built-in\.o/built-in\.a/g'

    The second is to invert nesting of nested text manipulations to avoid
    filtering built-in.a out from libs-y2:

    -libs-y2 := $(filter-out %.a, $(patsubst %/, %/built-in.a, $(libs-y)))
    +libs-y2 := $(patsubst %/, %/built-in.a, $(filter-out %.a, $(libs-y)))

    Signed-off-by: Nicholas Piggin
    Signed-off-by: Masahiro Yamada

    Nicholas Piggin
     
  • This removes the old `ld -r` incremental link option, which has not
    been selected by any architecture since June 2017.

    Signed-off-by: Nicholas Piggin
    Signed-off-by: Masahiro Yamada

    Nicholas Piggin
     
  • * Use BREs where EREs aren't necessary.
    * Pass -E instead of -r to use EREs. This will be standardized in the
    next POSIX revision[0]. GNU sed supports this since 4.2 (May 2009),
    and busybox since 1.22.0 (Jan 2014).
    * Use the [:space:] character class instead of ` \t` in bracket
    expressions. In bracket expressions, POSIX says that loses
    its special meaning, so a conforming implementation cannot expand \t
    to [1].
    * In BREs, use interval expressions (\{n,m\}) instead of non-standard
    features like \+ and \?.
    * Use a loop instead of -s flag.

    There are still plenty of other cases of non-standard sed invocations
    (use of ERE features in BREs, in-place editing), but this fixes some
    core ones.

    [0] http://austingroupbugs.net/view.php?id=528
    [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05

    Signed-off-by: Michael Forney
    Signed-off-by: Masahiro Yamada

    Michael Forney
     

21 Feb, 2018

3 commits

  • Disable retpoline validation in objtool if your compiler sucks, and otherwise
    select the validation stuff for CONFIG_RETPOLINE=y (most builds would already
    have it set due to ORC).

    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Thomas Gleixner
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • David allowed retpolines in .init.text, except for modules, which will
    trip up objtool retpoline validation, fix that.

    Requested-by: David Woodhouse
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • David requested a objtool validation pass for CONFIG_RETPOLINE=y enabled
    builds, where it validates no unannotated indirect jumps or calls are
    left.

    Add an additional .discard.retpoline_safe section to allow annotating
    the few indirect sites that are required and safe.

    Requested-by: David Woodhouse
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: David Woodhouse
    Acked-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

18 Jan, 2018

1 commit

  • Pull x86 pti bits and fixes from Thomas Gleixner:
    "This last update contains:

    - An objtool fix to prevent a segfault with the gold linker by
    changing the invocation order. That's not just for gold, it's a
    general robustness improvement.

    - An improved error message for objtool which spares tearing hairs.

    - Make KASAN fail loudly if there is not enough memory instead of
    oopsing at some random place later

    - RSB fill on context switch to prevent RSB underflow and speculation
    through other units.

    - Make the retpoline/RSB functionality work reliably for both Intel
    and AMD

    - Add retpoline to the module version magic so mismatch can be
    detected

    - A small (non-fix) update for cpufeatures which prevents cpu feature
    clashing for the upcoming extra mitigation bits to ease
    backporting"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    module: Add retpoline tag to VERMAGIC
    x86/cpufeature: Move processor tracing out of scattered features
    objtool: Improve error message for bad file argument
    objtool: Fix seg fault with gold linker
    x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
    x86/retpoline: Fill RSB on context switch for affected CPUs
    x86/kasan: Panic if there is not enough memory to boot

    Linus Torvalds
     

16 Jan, 2018

1 commit

  • Objtool segfaults when the gold linker is used with
    CONFIG_MODVERSIONS=y and CONFIG_UNWINDER_ORC=y.

    With CONFIG_MODVERSIONS=y, the .o file gets passed to the linker before
    being passed to objtool. The gold linker seems to strip unused ELF
    symbols by default, which confuses objtool and causes the seg fault when
    it's trying to generate ORC metadata.

    Objtool should really be running immediately after GCC anyway, without a
    linker call in between. Change the makefile ordering so that objtool is
    called before the linker.

    Reported-and-tested-by: Markus
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Fixes: ee9f8fce9964 ("x86/unwind: Add the ORC unwinder")
    Link: http://lkml.kernel.org/r/355f04da33581f4a3bf82e5b512973624a1e23a2.1516025651.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

17 Dec, 2017

1 commit


26 Nov, 2017

1 commit

  • Pull more Kbuild updates from Masahiro Yamada:

    - use 'pwd' instead of '/bin/pwd' for portability

    - clean up Makefiles

    - fix ld-option for clang

    - fix malloc'ed data size in Kconfig

    - fix parallel building along with coccicheck

    - fix a minor issue of package building

    - prompt to use "rpm-pkg" instead of "rpm"

    - clean up *.i and *.lst patterns by "make clean"

    * tag 'kbuild-v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kbuild: drop $(extra-y) from real-objs-y
    kbuild: clean up *.i and *.lst patterns by make clean
    kbuild: rpm: prompt to use "rpm-pkg" if "rpm" target is used
    kbuild: pkg: use --transform option to prefix paths in tar
    coccinelle: fix parallel build with CHECK=scripts/coccicheck
    kconfig/symbol.c: use correct pointer type argument for sizeof
    kbuild: Set KBUILD_CFLAGS before incl. arch Makefile
    kbuild: remove all dummy assignments to obj-
    kbuild: create built-in.o automatically if parent directory wants it
    kbuild: /bin/pwd -> pwd

    Linus Torvalds
     

24 Nov, 2017

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "A few late-arriving docs updates that have no real reason to wait.

    There's a new "Co-Developed-by" tag described by Greg, and a build
    enhancement from Willy to generate docs warnings during a kernel build
    (but only when additional warnings have been requested in general)"

    * tag 'docs-4.15-2' of git://git.lwn.net/linux:
    Add optional check for bad kernel-doc comments
    Documentation: fix profile= options in kernel-parameters.txt
    documentation/svga.txt: update outdated file
    kokr/memory-barriers.txt: Fix typo in paring example
    kokr/memory-barriers/txt: Replace uses of "transitive"
    Documentation/process: add Co-Developed-by: tag for patches with multiple authors

    Linus Torvalds
     

21 Nov, 2017

1 commit

  • Implement a '-none' output mode for kernel-doc which will only output
    warning messages, and suppresses the warning message about there being
    no kernel-doc in the file.

    If the build has requested additional warnings, automatically check all
    .c files. This patch does not check .h files. Enabling the warning
    by default would add about 1300 warnings, so it's default off for now.
    People who care can use this to check they didn't break the docs and
    maybe we'll get all the warnings fixed and be able to enable this check
    by default in the future.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: Jonathan Corbet

    Matthew Wilcox
     

18 Nov, 2017

2 commits

  • "obj-y += foo/" syntax requires Kbuild to visit the "foo" subdirectory
    and link built-in.o from that directory. This means foo/Makefile is
    responsible for creating built-in.o even if there is no object to
    link (in this case, built-in.o is an empty archive).

    We have had several fixups like commit 4b024242e8a4 ("kbuild: Fix
    linking error built-in.o no such file or directory"), then ended up
    with a complex condition as follows:

    ifneq ($(strip $(obj-y) $(obj-m) $(obj-) $(subdir-m) $(lib-target)),)
    builtin-target := $(obj)/built-in.o
    endif

    We still have more cases not covered by the above, so we need to add
    obj- := dummy.o
    in several places just for creating empty built-in.o.

    A key point is, the parent Makefile knows whether built-in.o is needed
    or not. If a subdirectory needs to create built-in.o, its parent can
    tell the fact when descending.

    If non-empty $(need-builtin) flag is passed from the parent, built-in.o
    should be created. $(obj-y) should be still checked to support the
    single target "%/". All of ugly tricks will go away.

    Signed-off-by: Masahiro Yamada
    Reviewed-by: Sam Ravnborg

    Masahiro Yamada
     
  • Pull Kbuild updates from Masahiro Yamada:
    "One of the most remarkable improvements in this cycle is, Kbuild is
    now able to cache the result of shell commands. Some variables are
    expensive to compute, for example, $(call cc-option,...) invokes the
    compiler. It is not efficient to redo this computation every time,
    even when we are not actually building anything. Kbuild creates a
    hidden file ".cache.mk" that contains invoked shell commands and their
    results. The speed-up should be noticeable.

    Summary:

    - Fix arch build issues (hexagon, sh)

    - Clean up various Makefiles and scripts

    - Fix wrong usage of {CFLAGS,LDFLAGS}_MODULE in arch Makefiles

    - Cache variables that are expensive to compute

    - Improve cc-ldopton and ld-option for Clang

    - Optimize output directory creation"

    * tag 'kbuild-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (30 commits)
    kbuild: move coccicheck help from scripts/Makefile.help to top Makefile
    sh: decompressor: add shipped files to .gitignore
    frv: .gitignore: ignore vmlinux.lds
    selinux: remove unnecessary assignment to subdir-
    kbuild: specify FORCE in Makefile.headersinst as .PHONY target
    kbuild: remove redundant mkdir from ./Kbuild
    kbuild: optimize object directory creation for incremental build
    kbuild: create object directories simpler and faster
    kbuild: filter-out PHONY targets from "targets"
    kbuild: remove redundant $(wildcard ...) for cmd_files calculation
    kbuild: create directory for make cache only when necessary
    sh: select KBUILD_DEFCONFIG depending on ARCH
    kbuild: fix linker feature test macros when cross compiling with Clang
    kbuild: shrink .cache.mk when it exceeds 1000 lines
    kbuild: do not call cc-option before KBUILD_CFLAGS initialization
    kbuild: Cache a few more calls to the compiler
    kbuild: Add a cache for generated variables
    kbuild: add forward declaration of default target to Makefile.asm-generic
    kbuild: remove KBUILD_SUBDIR_ASFLAGS and KBUILD_SUBDIR_CCFLAGS
    hexagon/kbuild: replace CFLAGS_MODULE with KBUILD_CFLAGS_MODULE
    ...

    Linus Torvalds
     

16 Nov, 2017

1 commit

  • The previous commit largely optimized the object directory creation.
    We can optimize it more for incremental build.

    There are already *.cmd files in the output directory. The existing
    *.cmd files have been picked up by $(wildcard ...). Obviously,
    directories containing them exist too, so we can skip "mkdir -p".

    With this, Kbuild runs almost zero "mkdir -p" in incremental building.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada