1. 19 3月, 2020 1 次提交
  2. 13 3月, 2020 3 次提交
    • M
      kbuild: allow to run dt_binding_check without kernel configuration · 9dffecc1
      Masahiro Yamada 提交于
      The dt_binding_check target is located outside of the
      'ifneq ($(dtstree),) ... endif' block.
      
      So, you can run 'make dt_binding_check' on any architecture.
      This makes a perfect sense because the dt-schema is arch-agnostic.
      
      The only one problem I see is that scripts/dtc/dtc is not always built.
      For example, ARCH=x86 defconfig does not define CONFIG_DTC. Kbuild
      descends into scripts/dtc/ with doing nothing. Then, it fails to build
      *.example.dt.yaml files.
      
      Let's build scripts/dtc/dtc forcibly when running dt_binding_check.
      
      The dt-schema does not depend on any CONFIG option either, so you
      should be able to run dt_binding_check without the .config file.
      
      Going forward, you can directly run 'make dt_binding_check' in a
      pristine source tree.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NRob Herring <robh@kernel.org>
      9dffecc1
    • M
      kbuild: allow to run dt_binding_check and dtbs_check in a single command · e10c4321
      Masahiro Yamada 提交于
      Since commit 93512dad ("dt-bindings: Improve validation build error
      handling"), 'make dtbs_check' does not validate the schema fully.
      
      If you want to check everything, you need to run two commands separately.
      
        $ make ARCH=arm dt_binding_check
        $ make ARCH=arm dtbs_check
      
      They are exclusive each other, so you cannot do like this:
      
        $ make ARCH=arm dt_binding_check dtbs_check
      
      In this case, dt-doc-validate and dt-extract-example are skipped
      because CHECK_DTBS is set.
      
      Let's make it possible to run these two targets in a single command.
      It will be useful for schema writers.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NRob Herring <robh@kernel.org>
      e10c4321
    • M
      kbuild: avoid concurrency issue in parallel building dtbs and dtbs_check · b5154bf6
      Masahiro Yamada 提交于
      'make dtbs_check' checks the shecma in addition to building *.dtb files,
      in other words, 'make dtbs_check' is a super-set of 'make dtbs'.
      So, you do not have to do 'make dtbs dtbs_check', but I want to keep
      the build system as robust as possible in any use.
      
      Currently, 'dtbs' and 'dtbs_check' are independent of each other.
      In parallel building, two threads descend into arch/*/boot/dts/,
      one for dtbs and the other for dtbs_check, then end up with building
      the same DTB simultaneously.
      
      This commit fixes the concurrency issue. Otherwise, I see build errors
      like follows:
      
      $ make ARCH=arm64 defconfig
      $ make -j16 ARCH=arm64 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dtbs dtbs_check
        <snip>
        DTC     arch/arm64/boot/dts/qcom/sdm845-cheza-r2.dtb
        DTC     arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtb
        DTC     arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-lite2.dtb
        DTC     arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-lite2.dtb
        DTC     arch/arm64/boot/dts/freescale/imx8mn-evk.dtb
        DTC     arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dtb
        DTC     arch/arm64/boot/dts/zte/zx296718-pcbox.dtb
        DTC     arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dt.yaml
        DTC     arch/arm64/boot/dts/amlogic/meson-gxl-s905d-p230.dtb
        DTC     arch/arm64/boot/dts/xilinx/zynqmp-zc1254-revA.dtb
        DTC     arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dtb
        DTC     arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb
        DTC     arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dtb
        CHECK   arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dt.yaml
      fixdep: error opening file: arch/arm64/boot/dts/allwinner/.sun50i-h6-orangepi-lite2.dtb.d: No such file or directory
      make[2]: *** [scripts/Makefile.lib:296: arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-lite2.dtb] Error 2
      make[2]: *** Deleting file 'arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-lite2.dtb'
      make[2]: *** Waiting for unfinished jobs....
        DTC     arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb
        DTC     arch/arm64/boot/dts/amlogic/meson-gxl-s905d-p231.dtb
        DTC     arch/arm64/boot/dts/xilinx/zynqmp-zc1275-revA.dtb
        DTC     arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk.dtb
      fixdep: parse error; no targets found
      make[2]: *** [scripts/Makefile.lib:296: arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dtb] Error 1
      make[2]: *** Deleting file 'arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dtb'
      make[1]: *** [scripts/Makefile.build:505: arch/arm64/boot/dts/allwinner] Error 2
      make[1]: *** Waiting for unfinished jobs....
        DTC     arch/arm64/boot/dts/renesas/r8a77951-salvator-xs.dtb
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: NRob Herring <robh@kernel.org>
      b5154bf6
  3. 03 3月, 2020 2 次提交
    • Q
      kbuild: generate autoksyms.h early · 88694cff
      Quentin Perret 提交于
      When doing a cold build, autoksyms.h starts empty, and is updated late
      in the build process to have visibility over the symbols used by in-tree
      drivers. But since the symbol whitelist is known upfront, it can be used
      to pre-populate autoksyms.h and maximize the amount of code that can be
      compiled to its final state in a single pass, hence reducing build time.
      
      Do this by using gen_autoksyms.sh to initialize autoksyms.h instead of
      creating an empty file.
      Acked-by: NNicolas Pitre <nico@fluxnic.net>
      Tested-by: NMatthias Maennich <maennich@google.com>
      Reviewed-by: NMatthias Maennich <maennich@google.com>
      Signed-off-by: NQuentin Perret <qperret@google.com>
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      88694cff
    • M
      kbuild: use KBUILD_DEFCONFIG as the fallback for DEFCONFIG_LIST · 2a86f661
      Masahiro Yamada 提交于
      Most of the Kconfig commands (except defconfig and all*config) read
      the .config file as a base set of CONFIG options.
      
      When it does not exist, the files in DEFCONFIG_LIST are searched in
      this order and loaded if found.
      
      I do not see much sense in the last two lines in DEFCONFIG_LIST.
      
      [1] ARCH_DEFCONFIG
      
      The entry for DEFCONFIG_LIST is guarded by 'depends on !UML'. So, the
      ARCH_DEFCONFIG definition in arch/x86/um/Kconfig is meaningless.
      
      arch/{sh,sparc,x86}/Kconfig define ARCH_DEFCONFIG depending on 32 or
      64 bit variant symbols. This is a little bit strange; ARCH_DEFCONFIG
      should be a fixed string because the base config file is loaded before
      the symbol evaluation stage.
      
      Using KBUILD_DEFCONFIG makes more sense because it is fixed before
      Kconfig is invoked. Fortunately, arch/{sh,sparc,x86}/Makefile define it
      in the same way, and it works as expected. Hence, replace ARCH_DEFCONFIG
      with "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)".
      
      [2] arch/$(ARCH)/defconfig
      
      This file path is no longer valid. The defconfig files are always located
      in the arch configs/ directories.
      
        $ find arch -name defconfig | sort
        arch/alpha/configs/defconfig
        arch/arm64/configs/defconfig
        arch/csky/configs/defconfig
        arch/nds32/configs/defconfig
        arch/riscv/configs/defconfig
        arch/s390/configs/defconfig
        arch/unicore32/configs/defconfig
      
      The path arch/*/configs/defconfig is already covered by
      "arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)". So, this file path is
      not necessary.
      
      I moved the default KBUILD_DEFCONFIG to the top Makefile. Otherwise,
      the 7 architectures listed above would end up with endless loop of
      syncconfig.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      2a86f661
  4. 02 3月, 2020 2 次提交
  5. 27 2月, 2020 3 次提交
  6. 24 2月, 2020 1 次提交
  7. 17 2月, 2020 1 次提交
  8. 10 2月, 2020 1 次提交
  9. 06 2月, 2020 1 次提交
  10. 27 1月, 2020 1 次提交
  11. 20 1月, 2020 1 次提交
  12. 15 1月, 2020 1 次提交
  13. 13 1月, 2020 1 次提交
  14. 07 1月, 2020 1 次提交
    • M
      kbuild: create modules.builtin without Makefile.modbuiltin or tristate.conf · 8b41fc44
      Masahiro Yamada 提交于
      Commit bc081dd6 ("kbuild: generate modules.builtin") added
      infrastructure to generate modules.builtin, the list of all
      builtin modules.
      
      Basically, it works like this:
      
        - Kconfig generates include/config/tristate.conf, the list of
          tristate CONFIG options with a value in a capital letter.
      
        - scripts/Makefile.modbuiltin makes Kbuild descend into
          directories to collect the information of builtin modules.
      
      I am not a big fan of it because Kbuild ends up with traversing
      the source tree twice.
      
      I am not sure how perfectly it should work, but this approach cannot
      avoid false positives; even if the relevant CONFIG option is tristate,
      some Makefiles forces obj-m to obj-y.
      
      Some examples are:
      
        arch/powerpc/platforms/powermac/Makefile:
          obj-$(CONFIG_NVRAM:m=y)         += nvram.o
      
        net/ipv6/Makefile:
          obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_hashtables.o
      
        net/netlabel/Makefile:
          obj-$(subst m,y,$(CONFIG_IPV6)) += netlabel_calipso.o
      
      Nobody has complained about (or noticed) it, so it is probably fine to
      have false positives in modules.builtin.
      
      This commit simplifies the implementation. Let's exploit the fact
      that every module has MODULE_LICENSE(). (modpost shows a warning if
      MODULE_LICENSE is missing. If so, 0-day bot would already have blocked
      such a module.)
      
      I added MODULE_FILE to <linux/module.h>. When the code is being compiled
      as builtin, it will be filled with the file path of the module, and
      collected into modules.builtin.info. Then, scripts/link-vmlinux.sh
      extracts the list of builtin modules out of it.
      
      This new approach fixes the false-positives above, but adds another
      type of false-positives; non-modular code may have MODULE_LICENSE()
      by mistake. This is not a big deal, it is just the code is always
      orphan. We can clean it up if we like. You can see cleanup examples by:
      
        $ git log --grep='make.* explicitly non-modular'
      
      To sum up, this commits deletes lots of code, but still produces almost
      equivalent results. Please note it does not increase the vmlinux size at
      all. As you can see in include/asm-generic/vmlinux.lds.h, the .modinfo
      section is discarded in the link stage.
      Signed-off-by: NMasahiro Yamada <masahiroy@kernel.org>
      8b41fc44
  15. 06 1月, 2020 1 次提交
  16. 30 12月, 2019 1 次提交
  17. 23 12月, 2019 1 次提交
  18. 16 12月, 2019 1 次提交
  19. 14 12月, 2019 1 次提交
  20. 09 12月, 2019 1 次提交
  21. 25 11月, 2019 1 次提交
  22. 23 11月, 2019 1 次提交
  23. 18 11月, 2019 1 次提交
  24. 14 11月, 2019 3 次提交
  25. 11 11月, 2019 7 次提交
  26. 04 11月, 2019 1 次提交