1. 27 2月, 2019 13 次提交
    • M
      kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing · 9390dff6
      Masahiro Yamada 提交于
      If include/config/auto.conf.cmd is lost for some reasons, it is not
      self-healing, so the top Makefile misses to run syncconfig.
      Move include/config/auto.conf.cmd to the target side.
      
      I used a pattern rule instead of a normal rule here although it is
      a bit gross.
      
      If the rule were written with a normal rule like this,
      
        include/config/auto.conf \
        include/config/auto.conf.cmd \
        include/config/tristate.conf: $(KCONFIG_CONFIG)
                $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
      
      ... syncconfig would be executed per target.
      
      Using a pattern rule makes sure that syncconfig is executed just once
      because Make assumes the recipe will create all of the targets.
      
      Here is a quote from the GNU Make manual [1]:
      
      "Pattern rules may have more than one target. Unlike normal rules,
      this does not act as many different rules with the same prerequisites
      and recipe. If a pattern rule has multiple targets, make knows that
      the rule's recipe is responsible for making all of the targets. The
      recipe is executed only once to make all the targets. When searching
      for a pattern rule to match a target, the target patterns of a rule
      other than the one that matches the target in need of a rule are
      incidental: make worries only about giving a recipe and prerequisites
      to the file presently in question. However, when this file's recipe is
      run, the other targets are marked as having been updated themselves."
      
      [1]: https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.htmlSigned-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      9390dff6
    • M
      kbuild: simplify single target rules · 6b12de69
      Masahiro Yamada 提交于
      The dependency will be checked anyway after Kbuild descends into a
      sub-directory. Skip object/source dependency checks in top Makefile.
      
      VPATH can be simpler since the top Makefile no longer checks the
      presence of the source file, which is located in in the external
      module directory.
      
      One good thing is, it can compile an object from a generated source
      file.
      
        $ make crypto/rsapubkey.asn1.o
          ...
        ASN.1   crypto/rsapubkey.asn1.c
        CC      crypto/rsapubkey.asn1.o
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      6b12de69
    • M
      kbuild: remove empty rules for makefiles · b999923c
      Masahiro Yamada 提交于
      The previous commit made 'MAKEFLAGS += -rR' effective in the top
      Makefile regardless of O= option, GNU Make versions.
      
      The top Makefile does not need to cancel implicit rules for makefiles.
      
      There is still one place where an empty rule is useful. Since -rR is
      effective only after sub-make, GNU Make would try implicit rules to
      update the top Makefile. Although it is not a big overhead, cancel it
      just in case.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      b999923c
    • M
      kbuild: make -r/-R effective in top Makefile for old Make versions · 3812b8c5
      Masahiro Yamada 提交于
      Adding -rR to MAKEFLAGS is important because we do not want to
      be bothered by built-in implicit rules or variables.
      
      One problem that used to exist in older GNU Make versions is
      
        MAKEFLAGS += -rR
      
      ... does not become effective in the current Makefile. When you are
      building with O= option, it becomes effective in the top Makefile
      since it recurses via 'sub-make' target. Otherwise, the top Makefile
      tries implicit rules. That is why we explicitly add empty rules for
      Makefiles, but we often miss to do that.
      
      In fact, adding -d option to older GNU Make versions shows it is
      trying a bunch of implicit pattern rules.
      
       Considering target file `scripts/Makefile.kcov'.
        Looking for an implicit rule for `scripts/Makefile.kcov'.
        Trying pattern rule with stem `Makefile.kcov'.
        Trying implicit prerequisite `scripts/Makefile.kcov.o'.
        Trying pattern rule with stem `Makefile.kcov'.
        Trying implicit prerequisite `scripts/Makefile.kcov.c'.
        Trying pattern rule with stem `Makefile.kcov'.
        Trying implicit prerequisite `scripts/Makefile.kcov.cc'.
        Trying pattern rule with stem `Makefile.kcov'.
        Trying implicit prerequisite `scripts/Makefile.kcov.C'.
        ...
      
      This issue was fixed by GNU Make commit 58dae243526b ("[Savannah #20501]
      Handle adding -r/-R to MAKEFLAGS in the makefile"). So, it is no longer
      a problem if you use GNU Make 4.0 or later. However, older versions are
      still widely used.
      
      So, I decided to patch the kernel Makefile to invoke sub-make regardless
      of O= option. This will allow further cleanups.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      3812b8c5
    • M
      kbuild: move tools_silent to a more relevant place · f47a23ce
      Masahiro Yamada 提交于
      This would disturb the change the sub-make part. Move it near the
      tools/ target.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      f47a23ce
    • M
      kbuild: compute false-positive -Wmaybe-uninitialized cases in Kconfig · b303c6df
      Masahiro Yamada 提交于
      Since -Wmaybe-uninitialized was introduced by GCC 4.7, we have patched
      various false positives:
      
       - commit e74fc973 ("Turn off -Wmaybe-uninitialized when building
         with -Os") turned off this option for -Os.
      
       - commit 815eb71e ("Kbuild: disable 'maybe-uninitialized' warning
         for CONFIG_PROFILE_ALL_BRANCHES") turned off this option for
         CONFIG_PROFILE_ALL_BRANCHES
      
       - commit a76bcf55 ("Kbuild: enable -Wmaybe-uninitialized warning
         for "make W=1"") turned off this option for GCC < 4.9
         Arnd provided more explanation in https://lkml.org/lkml/2017/3/14/903
      
      I think this looks better by shifting the logic from Makefile to Kconfig.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/350Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NNathan Chancellor <natechancellor@gmail.com>
      Tested-by: NNick Desaulniers <ndesaulniers@google.com>
      b303c6df
    • M
      kbuild: refactor cc-cross-prefix implementation · bd55f96f
      Masahiro Yamada 提交于
      - $(word 1, <text>) is equivalent to $(firstword <text>)
      
       - hardcode "gcc" instead of $(CC)
      
       - minimize the shell script part
      
      A little more notes in case $(filter-out -%, ...) is not clear.
      
      arch/mips/Makefile passes prefixes depending on the configuration.
      
      CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- \
          $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-)
      
      In the Kconfig stage (e.g. when you run 'make defconfig'), neither
      CONFIG_32BIT nor CONFIG_64BIT is defined. So, $(tool-archpref) is
      empty. As a result, "-linux -linux-gnu- -unknown-linux-gnu" is passed
      into cc-cross-prefix. The command 'which' assumes arguments starting
      with a hyphen as command options, then emits the following messages:
      
        Illegal option -l
        Illegal option -l
        Illegal option -u
      
      I think it is strange to define CROSS_COMPILE depending on the CONFIG
      options since you need to feed $(CC) to Kconfig, but it is how MIPS
      Makefile currently works. Anyway, it would not hurt to filter-out
      invalid strings beforehand.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      bd55f96f
    • M
      kbuild: hardcode genksyms path and remove GENKSYMS variable · 88110713
      Masahiro Yamada 提交于
      The genksyms source was integrated into the kernel tree in 2003.
      
      I do not expect anybody still using the external /sbin/genksyms.
      Kbuild does not need to provide the ability to override GENKSYMS.
      
      Let's remove the GENKSYMS variable, and use the hardcoded path.
      
      Since it occurred in the pre-git era, I attached the commit message
      in case somebody is interested in the historical background.
      
        | Author: Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
        | Date:   Wed Feb 19 04:17:28 2003 -0600
        |
        | kbuild: [PATCH] put genksyms in scripts dir
        |
        | This puts genksyms into scripts/genksyms/.
        |
        | genksyms used to be maintained externally, though the only possible user
        | was the kernel build. Moving it into the kernel sources makes it easier to
        | keep it uptodate, like for example updating it to generate linker scripts
        | directly instead of postprocessing the generated header file fragments
        | with sed, as we do currently.
        |
        | Also, genksyms does not handle __typeof__, which needs to be fixed since
        | some of the exported symbol in the kernel are defined using __typeof__.
        |
        | (Rusty Russell/me)
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      88110713
    • M
      scripts/gdb: refactor rules for symlink creation · b513adf4
      Masahiro Yamada 提交于
      gdb-scripts is not a real object, but (ab)used like a phony target.
      
      Rewrite the code in a more Kbuild-ish way. Add symlinks to extra-y
      and use if_changed.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      b513adf4
    • M
      kbuild: create symlink to vmlinux-gdb.py in scripts_gdb target · 8d2e5200
      Masahiro Yamada 提交于
      It is weird to create gdb stuff as a side-effect of vmlinux.
      
      Move it to a more relevant place.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      8d2e5200
    • M
      scripts/gdb: do not descend into scripts/gdb from scripts · 1e5ff84f
      Masahiro Yamada 提交于
      Currently, Kbuild descends from scripts/Makefile to scripts/gdb/Makefile
      just for creating symbolic links, but it does not need to do it so early.
      
      Merge the two descending paths to simplify the code.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      1e5ff84f
    • M
      kbuild: remove unimportant comments from ./Kbuild · 01d509a4
      Masahiro Yamada 提交于
      Every time we add/remove a target, we need to touch the header part,
      including renumbering. This is not so important information.
      
      Numbering targets is rather misleading because they are not necessarily
      generated in this order. For example, 1) and 2) can be executed
      simultaneously when the -j option is given.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      01d509a4
    • M
      scripts/gdb: delay generation of gdb constants.py · 67274c08
      Masahiro Yamada 提交于
      scripts/gdb/linux/constants.py is never used in the kernel build
      process. There is no good reason to create it so early.
      
      Get it out of the 'prepare' stage.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Reviewed-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      67274c08
  2. 20 2月, 2019 6 次提交
  3. 19 2月, 2019 4 次提交
  4. 28 1月, 2019 17 次提交
    • M
      kbuild: remove meaningless prepare2 target · 4f1c1008
      Masahiro Yamada 提交于
      There is no build order among the following:
        prepare3
        outputmakefile
        asm-generic
        $(version_h)
        $(autoksyms_h)
        include/generated/utsrelease.h
      
      It is meaningless to insert the prepare2 target between the first
      three and the last three.
      
      The comment says, "prepare2 creates a makefile if using a separate
      output directory." Let me explain it more precisely. The prepare
      targets cannot be executed without the .config file. Because the
      configuration targets depend on the outputmakefile target, the
      generated makefile is already there before the parepare2 is run.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      4f1c1008
    • M
      kbuild: remove unnecessary in-subshell execution · b79c6aa6
      Masahiro Yamada 提交于
      The commands surrounded by ( ) are executed in a subshell, but in
      most cases, we do not need to spawn an extra subshell.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      b79c6aa6
    • M
      kbuild: add real-prereqs shorthand for $(filter-out FORCE,$^) · afa974b7
      Masahiro Yamada 提交于
      In Kbuild, if_changed and friends must have FORCE as a prerequisite.
      
      Hence, $(filter-out FORCE,$^) or $(filter-out $(PHONY),$^) is a common
      idiom to get the names of all the prerequisites except phony targets.
      
      Add real-prereqs as a shorthand.
      
      Note:
      We cannot replace $(filter %.o,$^) in cmd_link_multi-m because $^ may
      include auto-generated dependencies from the .*.cmd file when a single
      object module is changed into a multi object module. Refer to commit
      69ea912f ("kbuild: remove unneeded link_multi_deps"). I added some
      comment to avoid accidental breakage.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NRob Herring <robh@kernel.org>
      afa974b7
    • M
      s390: make built-in.a not directly depend on *.o.chkbss files · 5d680056
      Masahiro Yamada 提交于
      When I was refactoring cmd_ar_builtin in scripts/Makefile.build,
      I noticed the build breakage of s390.
      
      Some Makefiles of s390 add extra dependencies to built-in.a;
      built-in.a depends on timestamp files *.o.chkbss, but $(AR) does
      not want to include them into built-in.a.
      
      Insert a phony target 'chkbss' in between so that $(AR) can take
      $(filter-out $(PHONY), $^) as input.
      
      While I was here, I refactored Makefile.chkbss a little bit.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      5d680056
    • M
      kbuild: simplify rules of data compression with size appending · ecbd10d9
      Masahiro Yamada 提交于
      All the callers of size_append pass $(filter-out FORCE,$^).
      Move $(filter-out FORCE,$^) to the definition of size_append.
      
      This makes the callers cleaner because $(call ...) is unneeded
      for a macro with no argument.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      ecbd10d9
    • M
      kbuild: merge KBUILD_VMLINUX_{INIT,MAIN} into KBUILD_VMLINUX_OBJS · d151e971
      Masahiro Yamada 提交于
      The top Makefile does not need to export KBUILD_VMLINUX_INIT and
      KBUILD_VMLINUX_MAIN separately.
      
      Put every built-in.a into KBUILD_VMLINUX_OBJS. The order of
      $(head-y), $(init-y), $(core-y), ... is still retained.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      d151e971
    • M
      kbuild: remove top-level built-in.a · dee94953
      Masahiro Yamada 提交于
      The symbol table in the final archive is unneeded; the linker does not
      require the symbol table after the --whole-archive option. Every object
      file in the archive is included in the link anyway.
      
      Pass thin archives from subdirectories directly to the linker, and
      remove the final archiving step.
      
      Fix up the document and comments as well.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      Acked-by: NNicholas Piggin <npiggin@gmail.com>
      dee94953
    • M
      kbuild: skip 'addtree' and 'flags' magic for external module build · 58156ba4
      Masahiro Yamada 提交于
      When building an external module, $(obj) is the absolute path to it.
      
      The header search paths from ccflags-y etc. should not be tweaked.
      Signed-off-by: NMasahiro Yamada <yamada.masahiro@socionext.com>
      58156ba4
    • L
      Linux 5.0-rc4 · f17b5f06
      Linus Torvalds 提交于
      f17b5f06
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8a5f0605
      Linus Torvalds 提交于
      Pull x86 fixes from Thomas Gleixner:
       "A set of fixes for x86:
      
         - Fix the swapped outb() parameters in the KASLR code
      
         - Fix the PKEY handling at fork which missed to preserve the pkey
           state for the child. Comes with a test case to validate that.
      
         - Fix the entry stack handling for XEN PV to respect that XEN PV
           systems enter the function already on the current thread stack and
           not on the trampoline.
      
         - Fix kexec load failure caused by using a stale value when the
           kexec_buf structure is reused for subsequent allocations.
      
         - Fix a bogus sizeof() in the memory encryption code
      
         - Enforce PCI dependency for the Intel Low Power Subsystem
      
         - Enforce PCI_LOCKLESS_CONFIG when PCI is enabled"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/Kconfig: Select PCI_LOCKLESS_CONFIG if PCI is enabled
        x86/entry/64/compat: Fix stack switching for XEN PV
        x86/kexec: Fix a kexec_file_load() failure
        x86/mm/mem_encrypt: Fix erroneous sizeof()
        x86/selftests/pkeys: Fork() to check for state being preserved
        x86/pkeys: Properly copy pkey state at fork()
        x86/kaslr: Fix incorrect i8254 outb() parameters
        x86/intel/lpss: Make PCI dependency explicit
      8a5f0605
    • L
      Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 351e1aa6
      Linus Torvalds 提交于
      Pull x86 timer fixes from Thomas Gleixner:
       "Two commits which were missed to be sent during the merge window.
      
         - The TSC calibration fix turns out to be more urgent as recent
           Skylake-X systems seem to have massive trouble with calibration
           disturbance. This should go back into stable for that reason and it
           the risk of breakage is rather low.
      
         - Drop an unused define"
      
      * 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/hpet: Remove unused FSEC_PER_NSEC define
        x86/tsc: Make calibration refinement more robust
      351e1aa6
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f907bb4c
      Linus Torvalds 提交于
      Pull timer fix from Thomas Glexiner:
       "A single regression fix to address the unintended breakage of posix
        cpu timers.
      
        This is caused by a new sanity check in the common code, which fails
        for posix cpu timers under certain conditions because the posix cpu
        timer code never updates the variable which is checked"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        posix-cpu-timers: Unbreak timer rearming
      f907bb4c
    • L
      Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 98810518
      Linus Torvalds 提交于
      Pull locking fixes from Thomas Gleixner:
       "A small series of fixes which all address possible missed wakeups:
      
         - Document and fix the wakeup ordering of wake_q
      
         - Add the missing barrier in rcuwait_wake_up(), which was documented
           in the comment but missing in the code
      
         - Fix the possible missed wakeups in the rwsem and futex code"
      
      * 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        locking/rwsem: Fix (possible) missed wakeup
        futex: Fix (possible) missed wakeup
        sched/wake_q: Fix wakeup ordering for wake_q
        sched/wake_q: Document wake_q_add()
        sched/wait: Fix rcuwait_wake_up() ordering
      98810518
    • L
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0d484375
      Linus Torvalds 提交于
      Pull irq fixes from Thomas Gleixner:
       "A small set of fixes for the interrupt subsystem:
      
         - Fix a double increment in the irq descriptor allocator which
           resulted in a sanity check only being done for every second
           affinity mask
      
         - Add a missing device tree translation in the stm32-exti driver.
           Without that the interrupt association is completely wrong.
      
         - Initialize the mutex in the GIC-V3 MBI driver
      
         - Fix the alignment for aliasing devices in the GIC-V3-ITS driver so
           multi MSI allocations work correctly
      
         - Ensure that the initial affinity of a interrupt is not empty at
           startup time.
      
         - Drop bogus include in the madera irq chip driver
      
         - Fix KernelDoc regression"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irqchip/gic-v3-its: Align PCI Multi-MSI allocation on their size
        genirq/irqdesc: Fix double increment in alloc_descs()
        genirq: Fix the kerneldoc comment for struct irq_affinity_desc
        irqchip/madera: Drop GPIO includes
        irqchip/gic-v3-mbi: Fix uninitialized mbi_lock
        irqchip/stm32-exti: Add domain translate function
        genirq: Make sure the initial affinity is not empty
      0d484375
    • L
      Merge tag 'edac_fix_for_5.0' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 98354243
      Linus Torvalds 提交于
      Pull EDAC fix from Borislav Petkov:
       "Fix persistent register offsets of altera_edac, from Thor Thayer"
      
      * tag 'edac_fix_for_5.0' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        EDAC, altera: Fix S10 persistent register offset
      98354243
    • L
      Merge tag 'for-linus-20190127' of git://git.kernel.dk/linux-block · 419967d5
      Linus Torvalds 提交于
      Pull block revert from Jens Axboe:
       "Silly error snuck into a patch from the last series, let's do a revert
        to avoid a potential use-after-free"
      
      * tag 'for-linus-20190127' of git://git.kernel.dk/linux-block:
        Revert "block: cover another queue enter recursion via BIO_QUEUE_ENTERED"
      419967d5
    • L
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 1fc7f56d
      Linus Torvalds 提交于
      Pull KVM fixes from Paolo Bonzini:
       "Quite a few fixes for x86: nested virtualization save/restore, AMD
        nested virtualization and virtual APIC, 32-bit fixes, an important fix
        to restore operation on older processors, and a bunch of hyper-v
        bugfixes. Several are marked stable.
      
        There are also fixes for GCC warnings and for a GCC/objtool interaction"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: x86: Mark expected switch fall-throughs
        KVM: x86: fix TRACE_INCLUDE_PATH and remove -I. header search paths
        KVM: selftests: check returned evmcs version range
        x86/kvm/hyper-v: nested_enable_evmcs() sets vmcs_version incorrectly
        KVM: VMX: Move vmx_vcpu_run()'s VM-Enter asm blob to a helper function
        kvm: selftests: Fix region overlap check in kvm_util
        kvm: vmx: fix some -Wmissing-prototypes warnings
        KVM: nSVM: clear events pending from svm_complete_interrupts() when exiting to L1
        svm: Fix AVIC incomplete IPI emulation
        svm: Add warning message for AVIC IPI invalid target
        KVM: x86: WARN_ONCE if sending a PV IPI returns a fatal error
        KVM: x86: Fix PV IPIs for 32-bit KVM host
        x86/kvm/hyper-v: recommend using eVMCS only when it is enabled
        x86/kvm/hyper-v: don't recommend doing reset via synthetic MSR
        kvm: x86/vmx: Use kzalloc for cached_vmcs12
        KVM: VMX: Use the correct field var when clearing VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL
        KVM: x86: Fix single-step debugging
        x86/kvm/hyper-v: don't announce GUEST IDLE MSR support
      1fc7f56d