1. 15 Jul, 2024 11 commits
    • Masahiro Yamada's avatar
      kbuild: merge temporary vmlinux for BTF and kallsyms · b1a9a5e0
      Masahiro Yamada authored
      CONFIG_DEBUG_INFO_BTF=y requires one additional link step.
      (.tmp_vmlinux.btf)
      
      CONFIG_KALLSYMS=y requires two additional link steps.
      (.tmp_vmlinux.kallsyms1 and .tmp_vmlinux.kallsyms2)
      
      Enabling both requires three additional link steps.
      
      When CONFIG_DEBUG_INFO_BTF=y and CONFIG_KALLSYMS=y, the current build
      process is as follows:
      
          KSYMS   .tmp_vmlinux.kallsyms0.S
          AS      .tmp_vmlinux.kallsyms0.o
          LD      .tmp_vmlinux.btf             # temporary vmlinux for BTF
          BTF     .btf.vmlinux.bin.o
          LD      .tmp_vmlinux.kallsyms1       # temporary vmlinux for kallsyms step 1
          NM      .tmp_vmlinux.kallsyms1.syms
          KSYMS   .tmp_vmlinux.kallsyms1.S
          AS      .tmp_vmlinux.kallsyms1.o
          LD      .tmp_vmlinux.kallsyms2       # temporary vmlinux for kallsyms step 2
          NM      .tmp_vmlinux.kallsyms2.syms
          KSYMS   .tmp_vmlinux.kallsyms2.S
          AS      .tmp_vmlinux.kallsyms2.o
          LD      vmlinux                      # final vmlinux
      
      This is redundant because the BTF generation and the kallsyms step 1 can
      be performed against the same temporary vmlinux.
      
      When both CONFIG_DEBUG_INFO_BTF and CONFIG_KALLSYMS are enabled, we can
      reduce the number of link steps by one.
      
      This commit changes the build process as follows:
      
          KSYMS   .tmp_vmlinux0.kallsyms.S
          AS      .tmp_vmlinux0.kallsyms.o
          LD      .tmp_vmlinux1                # temporary vmlinux for BTF and kallsyms step 1
          BTF     .tmp_vmlinux1.btf.o
          NM      .tmp_vmlinux1.syms
          KSYMS   .tmp_vmlinux1.kallsyms.S
          AS      .tmp_vmlinux1.kallsyms.o
          LD      .tmp_vmlinux2                # temporary vmlinux for kallsyms step 2
          NM      .tmp_vmlinux2.syms
          KSYMS   .tmp_vmlinux2.kallsyms.S
          AS      .tmp_vmlinux2.kallsyms.o
          LD      vmlinux                      # final vmlinux
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
      b1a9a5e0
    • Masahiro Yamada's avatar
      kbuild: remove PROVIDE() for kallsyms symbols · c442db3f
      Masahiro Yamada authored
      This reimplements commit 951bcae6 ("kallsyms: Avoid weak references
      for kallsyms symbols") because I am not a big fan of PROVIDE().
      
      As an alternative solution, this commit prepends one more kallsyms step.
      
          KSYMS   .tmp_vmlinux.kallsyms0.S          # added
          AS      .tmp_vmlinux.kallsyms0.o          # added
          LD      .tmp_vmlinux.btf
          BTF     .btf.vmlinux.bin.o
          LD      .tmp_vmlinux.kallsyms1
          NM      .tmp_vmlinux.kallsyms1.syms
          KSYMS   .tmp_vmlinux.kallsyms1.S
          AS      .tmp_vmlinux.kallsyms1.o
          LD      .tmp_vmlinux.kallsyms2
          NM      .tmp_vmlinux.kallsyms2.syms
          KSYMS   .tmp_vmlinux.kallsyms2.S
          AS      .tmp_vmlinux.kallsyms2.o
          LD      vmlinux
      
      Step 0 takes /dev/null as input, and generates .tmp_vmlinux.kallsyms0.o,
      which has a valid kallsyms format with the empty symbol list, and can be
      linked to vmlinux. Since it is really small, the added compile-time cost
      is negligible.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      c442db3f
    • Masahiro Yamada's avatar
      kbuild: refactor variables in scripts/link-vmlinux.sh · ddf41329
      Masahiro Yamada authored
      Clean up the variables in scripts/link-vmlinux.sh
      
       - Specify the extra objects directly in vmlinux_link()
       - Move the AS rule to kallsyms()
       - Set kallsymso and btf_vmlinux_bin_o where they are generated
       - Remove unneeded variable, kallsymso_prev
       - Introduce the btf_data variable
       - Introduce the strip_debug flag instead of checking the output name
      
      No functional change intended.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      ddf41329
    • Masahiro Yamada's avatar
      kconfig: refactor conf_write_defconfig() to reduce indentation level · 995150e4
      Masahiro Yamada authored
      Reduce the indentation level by continue'ing the loop earlier
      if (!sym || sym_is_choice(sym)).
      
      No functional change intended.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      995150e4
    • Masahiro Yamada's avatar
      kconfig: refactor conf_set_all_new_symbols() to reduce indentation level · 826ee96d
      Masahiro Yamada authored
      The outer switch statement can be avoided by continue'ing earlier the
      loop when the symbol type is neither S_BOOLEAN nor S_TRISTATE.
      
      Remove it to reduce the indentation level by one. In addition, avoid
      the repetition of sym->def[S_DEF_USER].tri.
      
      No functional change intended.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      826ee96d
    • Masahiro Yamada's avatar
      kconfig: remove tristate choice support · fde19251
      Masahiro Yamada authored
      I previously submitted a fix for a bug in the choice feature [1], where
      I mentioned, "Another (much cleaner) approach would be to remove the
      tristate choice support entirely".
      
      There are more issues in the tristate choice feature. For example, you
      can observe a couple of bugs in the following test code.
      
      [Test Code]
      
          config MODULES
                  def_bool y
                  modules
      
          choice
                  prompt "tristate choice"
                  default A
      
          config A
                  tristate "A"
      
          config B
                  tristate "B"
      
          endchoice
      
      Bug 1: the 'default' property is not correctly processed
      
      'make alldefconfig' produces:
      
          CONFIG_MODULES=y
          # CONFIG_A is not set
          # CONFIG_B is not set
      
      However, the correct output should be:
      
          CONFIG_MODULES=y
          CONFIG_A=y
          # CONFIG_B is not set
      
      The unit test file, scripts/kconfig/tests/choice/alldef_expected_config,
      is wrong as well.
      
      Bug 2: choice members never get 'y' with randconfig
      
      For the test code above, the following combinations are possible:
      
                     A    B
              (1)    y    n
              (2)    n    y
              (3)    m    m
              (4)    m    n
              (5)    n    m
              (6)    n    n
      
      'make randconfig' never produces (1) or (2).
      
      These bugs are fixable, but a more critical problem is the lack of a
      sensible syntax to specify the default for the tristate choice.
      The default for the choice must be one of the choice members, which
      cannot specify any of the patterns (3) through (6) above.
      
      In addition, I have never seen it being used in a useful way.
      
      The following commits removed unnecessary use of tristate choices:
      
       - df8df5e4 ("usb: get rid of 'choice' for legacy gadget drivers")
       - bfb57ef0 ("rapidio: remove choice for enumeration")
      
      This commit removes the tristate choice support entirely, which allows
      me to delete a lot of code, making further refactoring easier.
      
      Note:
      This includes the revert of commit fa64e5f6 ("kconfig/symbol.c:
      handle choice_values that depend on 'm' symbols"). It was suspicious
      because it did not address the root cause but introduced inconsistency
      in visibility between choice members and other symbols.
      
      [1]: https://lore.kernel.org/linux-kbuild/20240427104231.2728905-1-masahiroy@kernel.org/T/#m0a1bb6992581462ceca861b409bb33cb8fd7dbaeSigned-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      fde19251
    • Masahiro Yamada's avatar
      kconfig: pass new conf_changed value to the callback · 03638aaa
      Masahiro Yamada authored
      Commit ee06a3ef ("kconfig: Update config changed flag before calling
      callback") pointed out that conf_updated flag must be updated _before_
      calling the callback, which needs to know the new value.
      
      Given that, it makes sense to directly pass the new value to the
      callback.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      03638aaa
    • Masahiro Yamada's avatar
      kconfig: gconf: move conf_changed() definition up · 0b62fe46
      Masahiro Yamada authored
      Define conf_changed() before its call site to remove the forward
      declaration.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      0b62fe46
    • Masahiro Yamada's avatar
      kconfig: gconf: remove unnecessary forward declarations · 300bf53e
      Masahiro Yamada authored
      These are defined before their call sites.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      300bf53e
    • Masahiro Yamada's avatar
      kconfig: qconf: remove initial call to conf_changed() · 060e05c3
      Masahiro Yamada authored
      If any CONFIG option is changed while loading the .config file,
      conf_read() calls conf_set_changed(true) and then the conf_changed()
      callback.
      
      With conf_read() moved after window initialization, the explicit
      conf_changed() call can be removed.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      060e05c3
    • Masahiro Yamada's avatar
      initramfs: shorten cmd_initfs in usr/Makefile · fb3f7f0f
      Masahiro Yamada authored
      Avoid repetition of long variables.
      
      No functional change intended.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      fb3f7f0f
  2. 07 Jul, 2024 3 commits
    • Linus Torvalds's avatar
      Linux 6.10-rc7 · 256abd8e
      Linus Torvalds authored
      256abd8e
    • Linus Torvalds's avatar
      Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 5a4bd506
      Linus Torvalds authored
      Pull clk fixes from Stephen Boyd:
       "A set of clk fixes for the Qualcomm, Mediatek, and Allwinner drivers:
      
         - Fix the Qualcomm Stromer Plus PLL set_rate() clk_op to explicitly
           set the alpha enable bit and not set bits that don't exist
      
         - Mark Qualcomm IPQ9574 crypto clks as voted to avoid stuck clk
           warnings
      
         - Fix the parent of some PLLs on Qualcomm sm6530 so their rate is
           correct
      
         - Fix the min/max rate clamping logic in the Allwinner driver that
           got broken in v6.9
      
         - Limit runtime PM enabling in the Mediatek driver to only
           mt8183-mfgcfg so that system wide resume doesn't break on other
           Mediatek SoCs"
      
      * tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg
        clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without common
        clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag
        clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer pll configs
        clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs
        clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents
      5a4bd506
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · c6653f49
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix unnecessary copy to 0 when kernel is booted at address 0
      
       - Fix usercopy crash when dumping dtl via debugfs
      
       - Avoid possible crash when PCI hotplug races with error handling
      
       - Fix kexec crash caused by scv being disabled before other CPUs
         call-in
      
       - Fix powerpc selftests build with USERCFLAGS set
      
      Thanks to Anjali K, Ganesh Goudar, Gautam Menghani, Jinglin Wen,
      Nicholas Piggin, Sourabh Jain, Srikar Dronamraju, and Vishal Chourasia.
      
      * tag 'powerpc-6.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        selftests/powerpc: Fix build with USERCFLAGS set
        powerpc/pseries: Fix scv instruction crash with kexec
        powerpc/eeh: avoid possible crash when edev->pdev changes
        powerpc/pseries: Whitelist dtl slub object for copying to userspace
        powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0
      c6653f49
  3. 06 Jul, 2024 3 commits
    • Linus Torvalds's avatar
      Merge tag '6.10-rc6-smb3-client-fix' of git://git.samba.org/sfrench/cifs-2.6 · 256fdd4b
      Linus Torvalds authored
      Pull smb client fix from Steve French:
       "Fix for smb3 readahead performance regression"
      
      * tag '6.10-rc6-smb3-client-fix' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Fix read-performance regression by dropping readahead expansion
      256fdd4b
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 22f902df
      Linus Torvalds authored
      Pull i2c fix from Wolfram Sang:
       "An i2c driver fix"
      
      * tag 'i2c-for-6.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: pnx: Fix potential deadlock warning from del_timer_sync() call in isr
      22f902df
    • Michael Ellerman's avatar
      selftests/powerpc: Fix build with USERCFLAGS set · 8b7f59de
      Michael Ellerman authored
      Currently building the powerpc selftests with USERCFLAGS set to anything
      causes the build to break:
      
        $ make -C tools/testing/selftests/powerpc V=1 USERCFLAGS=-Wno-error
        ...
        gcc -Wno-error    cache_shape.c ...
        cache_shape.c:18:10: fatal error: utils.h: No such file or directory
           18 | #include "utils.h"
              |          ^~~~~~~~~
        compilation terminated.
      
      This happens because the USERCFLAGS are added to CFLAGS in lib.mk, which
      causes the check of CFLAGS in powerpc/flags.mk to skip setting CFLAGS at
      all, resulting in none of the usual CFLAGS being passed. That can
      be seen in the output above, the only flag passed to the compiler is
      -Wno-error.
      
      Fix it by dropping the conditional setting of CFLAGS in flags.mk.
      Instead always set CFLAGS, but also append USERCFLAGS if they are set.
      
      Note that appending to CFLAGS (with +=) wouldn't work, because flags.mk
      is included by multiple Makefiles (to support partial builds), causing
      CFLAGS to be appended to multiple times. Additionally that would place
      the USERCFLAGS prior to the standard CFLAGS, meaning the USERCFLAGS
      couldn't override the standard flags. Being able to override the
      standard flags is desirable, for example for adding -Wno-error.
      
      With the fix in place, the CFLAGS are set correctly, including the
      USERCFLAGS:
      
        $ make -C tools/testing/selftests/powerpc V=1 USERCFLAGS=-Wno-error
        ...
        gcc -std=gnu99 -O2 -Wall -Werror -DGIT_VERSION='"v6.10-rc2-7-gdea17e7e56c3"'
        -I/home/michael/linux/tools/testing/selftests/powerpc/include -Wno-error
        cache_shape.c ...
      
      Fixes: 5553a793 ("selftests/powerpc: Add flags.mk to support pmu buildable")
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/20240706120833.909853-1-mpe@ellerman.id.au
      8b7f59de
  4. 05 Jul, 2024 11 commits
  5. 04 Jul, 2024 12 commits