1. 15 May, 2024 1 commit
  2. 14 May, 2024 10 commits
  3. 09 May, 2024 16 commits
    • Masahiro Yamada's avatar
      kconfig: use menu_list_for_each_sym() in sym_check_choice_deps() · dfff05cc
      Masahiro Yamada authored
      Choices and their members are associated via the P_CHOICE property.
      
      Currently, sym_get_choice_prop() and expr_list_for_each_sym() are
      used to iterate on choice members.
      
      Replace them with menu_for_each_sub_entry(), which achieves the same
      without relying on P_CHOICE.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      dfff05cc
    • Masahiro Yamada's avatar
      kconfig: use sym_get_choice_menu() in conf_write_defconfig() · fb8dd482
      Masahiro Yamada authored
      Choices and their members are associated via the P_CHOICE property.
      
      Currently, prop_get_symbol(sym_get_choice_prop()) is used to obtain
      the choice of the given choice member.
      
      Replace it with sym_get_choice_menu(), which retrieves the choice
      without relying on P_CHOICE.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      fb8dd482
    • Masahiro Yamada's avatar
      kconfig: add sym_get_choice_menu() helper · 7bcf2e03
      Masahiro Yamada authored
      Choices and their members are associated via the P_CHOICE property.
      
      Currently, prop_get_symbol(sym_get_choice_prop()) is used to obtain
      the choice of the given choice member.
      
      We can do this without relying on P_CHOICE by checking the parent in
      the menu structure.
      
      Introduce a new helper to retrieve the choice if the given symbol is a
      choice member.
      
      This is intended to replace prop_get_symbol(sym_get_choice_prop()) and
      deprecate P_CHOICE eventually.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      7bcf2e03
    • Masahiro Yamada's avatar
      kconfig: turn defaults and additional prompt for choice members into error · 8a22f867
      Masahiro Yamada authored
      menu_finalize() warns default properties for choice members and prompts
      outside the choice block. These should be hard errors.
      
      While I was here, I moved the checks to slim down menu_finalize().
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      8a22f867
    • Masahiro Yamada's avatar
      kconfig: turn missing prompt for choice members into error · 700e7a8d
      Masahiro Yamada authored
      Choice members must have a prompt; hence make it an error.
      
      While I was here, I moved the check to the parser to slim down
      _menu_finalize().
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      700e7a8d
    • Masahiro Yamada's avatar
      kconfig: turn conf_choice() into void function · 8c00e580
      Masahiro Yamada authored
      The return value of conf_choice() is not used.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      8c00e580
    • Masahiro Yamada's avatar
      kconfig: use linked list in sym_set_changed() · 7d280674
      Masahiro Yamada authored
      Following the approach employed in commit bedf9236 ("kconfig: use
      linked list in get_symbol_str() to iterate over menus"), simplify the
      iteration on the menus of the specified symbol.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      7d280674
    • Masahiro Yamada's avatar
      kconfig: gconf: use MENU_CHANGED instead of SYMBOL_CHANGED · 4cc7e6ce
      Masahiro Yamada authored
      SYMBOL_CHANGED and MENU_CHANGED are used to update GUI frontends
      when the symbol value is changed. These are used inconsistently:
      SYMBOL_CHANGED in gconf.c and MENU_CHANGE in qconf.cc.
      
      MENU_CHANGED works more properly when a symbol has multiple prompts
      (although such code is not ideal).
      
      [test code]
      
          config FOO
                  bool "foo prompt 1"
      
          config FOO
                  bool "foo prompt 2"
      
      In gconfig, if one of the two checkboxes is clicked, only the first
      one is toggled. In xconfig, the two checkboxes work in sync.
      
      Replace SYMBOL_CHANGED in gconf.c with MENU_CHANGED to align with
      the xconfig behavior.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      4cc7e6ce
    • Masahiro Yamada's avatar
      kconfig: gconf: remove debug code · a7efb160
      Masahiro Yamada authored
      This is not so useful. If necessary, you can insert printf() or
      whatever during debugging.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      a7efb160
    • Masahiro Yamada's avatar
      kconfig: gconf: update pane correctly after loading a config file · 4763175a
      Masahiro Yamada authored
      Every time a config file is loaded (either by clicking the "Load" button
      or selecting "File" -> "Load" from the menu), a new list is appended to
      the pane.
      
      The current tree needs to be cleared by calling gtk_tree_store_clear().
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      4763175a
    • Emil Renner Berthing's avatar
      kbuild: buildtar: install riscv compressed images as vmlinuz · a0b49a91
      Emil Renner Berthing authored
      Use the KBUILD_IMAGE variable to determine the right kernel image to
      install and install compressed images to /boot/vmlinuz-$version like the
      'make install' target already does.
      Signed-off-by: default avatarEmil Renner Berthing <emil.renner.berthing@canonical.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      a0b49a91
    • Masahiro Yamada's avatar
      kbuild: simplify generic vdso installation code · 1c369b6c
      Masahiro Yamada authored
      With commit 4b0bf9a0 ("riscv: compat_vdso: install compat_vdso.so.dbg
      to /lib/modules/*/vdso/") applied, all debug VDSO files are installed in
      $(MODLIB)/vdso/.
      
      Simplify the installation rule.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      1c369b6c
    • Masahiro Yamada's avatar
      kbuild: add 'private' to target-specific variables · d98dba88
      Masahiro Yamada authored
      Currently, Kbuild produces inconsistent results in some cases.
      
      You can do an interesting experiment using the --shuffle option, which
      is supported by GNU Make 4.4 or later.
      
      Set CONFIG_KVM_INTEL=y and CONFIG_KVM_AMD=m (or vice versa), and repeat
      incremental builds w/wo --shuffle=reverse.
      
        $ make
          [ snip ]
          CC      arch/x86/kvm/kvm-asm-offsets.s
      
        $ make --shuffle=reverse
          [ snip ]
          CC [M]  arch/x86/kvm/kvm-asm-offsets.s
      
        $ make
          [ snip ]
          CC      arch/x86/kvm/kvm-asm-offsets.s
      
      arch/x86/kvm/kvm-asm-offsets.s is rebuilt every time w/wo the [M] marker.
      
      arch/x86/kvm/kvm-asm-offsets.s is built as built-in when it is built as
      a prerequisite of arch/x86/kvm/kvm-intel.o, which is built-in.
      
      arch/x86/kvm/kvm-asm-offsets.s is built as modular when it is built as
      a prerequisite of arch/x86/kvm/kvm-amd.o, which is a module.
      
      Another odd example is single target builds.
      
      When CONFIG_LKDTM=m, drivers/misc/lkdtm/rodata.o can be built as
      built-in or modular, depending on how it is built.
      
        $ make drivers/misc/lkdtm/lkdtm.o
          [ snip ]
          CC [M]  drivers/misc/lkdtm/rodata.o
      
        $ make drivers/misc/lkdtm/rodata.o
          [ snip ]
          CC      drivers/misc/lkdtm/rodata.o
      
      drivers/misc/lkdtm/rodata.o is built as modular when it is built as a
      prerequisite of another, but built as built-in when it is a final
      target.
      
      The same thing happens to drivers/memory/emif-asm-offsets.s when
      CONFIG_TI_EMIF_SRAM=m.
      
        $ make drivers/memory/ti-emif-sram.o
          [ snip ]
          CC [M]  drivers/memory/emif-asm-offsets.s
      
        $ make drivers/memory/emif-asm-offsets.s
          [ snip ]
          CC      drivers/memory/emif-asm-offsets.s
      
      This is because the part-of-module=y flag defined for the modules is
      inherited by its prerequisites.
      
      Target-specific variables are likely intended only for local use.
      This commit adds 'private' to them.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      d98dba88
    • Masahiro Yamada's avatar
      kbuild: remove redundant $(wildcard ) for rm-files · 770202a2
      Masahiro Yamada authored
      The $(wildcard ) is called in quiet_cmd_rmfiles.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      770202a2
    • Masahiro Yamada's avatar
      kbuild: use $(src) instead of $(srctree)/$(src) for source directory · b1992c37
      Masahiro Yamada authored
      Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for
      checked-in source files. It is merely a convention without any functional
      difference. In fact, $(obj) and $(src) are exactly the same, as defined
      in scripts/Makefile.build:
      
          src := $(obj)
      
      When the kernel is built in a separate output directory, $(src) does
      not accurately reflect the source directory location. While Kbuild
      resolves this discrepancy by specifying VPATH=$(srctree) to search for
      source files, it does not cover all cases. For example, when adding a
      header search path for local headers, -I$(srctree)/$(src) is typically
      passed to the compiler.
      
      This introduces inconsistency between upstream and downstream Makefiles
      because $(src) is used instead of $(srctree)/$(src) for the latter.
      
      To address this inconsistency, this commit changes the semantics of
      $(src) so that it always points to the directory in the source tree.
      
      Going forward, the variables used in Makefiles will have the following
      meanings:
      
        $(obj)     - directory in the object tree
        $(src)     - directory in the source tree  (changed by this commit)
        $(objtree) - the top of the kernel object tree
        $(srctree) - the top of the kernel source tree
      
      Consequently, $(srctree)/$(src) in upstream Makefiles need to be replaced
      with $(src).
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      b1992c37
    • Masahiro Yamada's avatar
      kbuild: use $(obj)/ instead of $(src)/ for common pattern rules · 9a0ebe50
      Masahiro Yamada authored
      Kbuild conventionally uses $(obj)/ for generated files, and $(src)/ for
      checked-in source files. It is merely a convention without any functional
      difference. In fact, $(obj) and $(src) are exactly the same, as defined
      in scripts/Makefile.build:
      
        src := $(obj)
      
      Before changing the semantics of $(src) in the next commit, this commit
      replaces $(obj)/ with $(src)/ in pattern rules where the prerequisite
      might be a generated file.
      
      C, assembly, Rust, and DTS files are sometimes generated by tools, so
      they could be either generated files or real sources. The $(obj)/ prefix
      works for both cases with the help of VPATH.
      
      As mentioned above, $(obj) and $(src) are the same at this point, hence
      this commit has no functional change.
      
      I did not modify scripts/Makefile.userprogs because there is no use
      case where userspace C files are generated.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      9a0ebe50
  4. 07 May, 2024 1 commit
  5. 02 May, 2024 12 commits
    • Masahiro Yamada's avatar
      arch: use $(obj)/ instead of $(src)/ for preprocessed linker scripts · b957df3b
      Masahiro Yamada authored
      These are generated files. Prefix them with $(obj)/ instead of $(src)/.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarHelge Deller <deller@gmx.de>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      b957df3b
    • Masahiro Yamada's avatar
      kconfig: remove SYMBOL_NO_WRITE flag · a7c79cf3
      Masahiro Yamada authored
      This flag is set to symbols that are not intended to be written
      to the .config file.
      
      Since commit b75b0a81 ("kconfig: change defconfig_list option to
      environment variable"), SYMBOL_NO_WRITE is only set to choices.
      
      Therefore, (sym->flags & SYMBOL_NO_WRITE) is equivalent to
      sym_is_choice(sym). This flag is no longer necessary.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      a7c79cf3
    • Nathan Chancellor's avatar
      kbuild: Remove support for Clang's ThinLTO caching · aba09154
      Nathan Chancellor authored
      There is an issue in clang's ThinLTO caching (enabled for the kernel via
      '--thinlto-cache-dir') with .incbin, which the kernel occasionally uses
      to include data within the kernel, such as the .config file for
      /proc/config.gz. For example, when changing the .config and rebuilding
      vmlinux, the copy of .config in vmlinux does not match the copy of
      .config in the build folder:
      
        $ echo 'CONFIG_LTO_NONE=n
        CONFIG_LTO_CLANG_THIN=y
        CONFIG_IKCONFIG=y
        CONFIG_HEADERS_INSTALL=y' >kernel/configs/repro.config
      
        $ make -skj"$(nproc)" ARCH=x86_64 LLVM=1 clean defconfig repro.config vmlinux
        ...
      
        $ grep CONFIG_HEADERS_INSTALL .config
        CONFIG_HEADERS_INSTALL=y
      
        $ scripts/extract-ikconfig vmlinux | grep CONFIG_HEADERS_INSTALL
        CONFIG_HEADERS_INSTALL=y
      
        $ scripts/config -d HEADERS_INSTALL
      
        $ make -kj"$(nproc)" ARCH=x86_64 LLVM=1 vmlinux
        ...
          UPD     kernel/config_data
          GZIP    kernel/config_data.gz
          CC      kernel/configs.o
        ...
          LD      vmlinux
        ...
      
        $ grep CONFIG_HEADERS_INSTALL .config
        # CONFIG_HEADERS_INSTALL is not set
      
        $ scripts/extract-ikconfig vmlinux | grep CONFIG_HEADERS_INSTALL
        CONFIG_HEADERS_INSTALL=y
      
      Without '--thinlto-cache-dir' or when using full LTO, this issue does
      not occur.
      
      Benchmarking incremental builds on a few different machines with and
      without the cache shows a 20% increase in incremental build time without
      the cache when measured by touching init/main.c and running 'make all'.
      
      ARCH=arm64 defconfig + CONFIG_LTO_CLANG_THIN=y on an arm64 host:
      
        Benchmark 1: With ThinLTO cache
          Time (mean ± σ):     56.347 s ±  0.163 s    [User: 83.768 s, System: 24.661 s]
          Range (min … max):   56.109 s … 56.594 s    10 runs
      
        Benchmark 2: Without ThinLTO cache
          Time (mean ± σ):     67.740 s ±  0.479 s    [User: 718.458 s, System: 31.797 s]
          Range (min … max):   67.059 s … 68.556 s    10 runs
      
        Summary
          With ThinLTO cache ran
            1.20 ± 0.01 times faster than Without ThinLTO cache
      
      ARCH=x86_64 defconfig + CONFIG_LTO_CLANG_THIN=y on an x86_64 host:
      
        Benchmark 1: With ThinLTO cache
          Time (mean ± σ):     85.772 s ±  0.252 s    [User: 91.505 s, System: 8.408 s]
          Range (min … max):   85.447 s … 86.244 s    10 runs
      
        Benchmark 2: Without ThinLTO cache
          Time (mean ± σ):     103.833 s ±  0.288 s    [User: 232.058 s, System: 8.569 s]
          Range (min … max):   103.286 s … 104.124 s    10 runs
      
        Summary
          With ThinLTO cache ran
            1.21 ± 0.00 times faster than Without ThinLTO cache
      
      While it is unfortunate to take this performance improvement off the
      table, correctness is more important. If/when this is fixed in LLVM, it
      can potentially be brought back in a conditional manner. Alternatively,
      a developer can just disable LTO if doing incremental compiles quickly
      is important, as a full compile cycle can still take over a minute even
      with the cache and it is unlikely that LTO will result in functional
      differences for a kernel change.
      
      Cc: stable@vger.kernel.org
      Fixes: dc5723b0 ("kbuild: add support for Clang LTO")
      Reported-by: default avatarYifan Hong <elsk@google.com>
      Closes: https://github.com/ClangBuiltLinux/linux/issues/2021Reported-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Closes: https://lore.kernel.org/r/20220327115526.cc4b0ff55fc53c97683c3e4d@kernel.org/Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      aba09154
    • Masahiro Yamada's avatar
      kconfig: remove 'optional' property support · 6a121588
      Masahiro Yamada authored
      The 'choice' statement is primarily used to exclusively select one
      option, but the 'optional' property allows all entries to be disabled.
      
      In the following example, both A and B can be disabled simultaneously:
      
          choice
                  prompt "choose A, B, or nothing"
                  optional
      
          config A
                  bool "A"
      
          config B
                  bool "B"
      
          endchoice
      
      You can achieve the equivalent outcome by other means.
      
      A common solution is to add another option to guard the choice block.
      In the following example, you can set ENABLE_A_B_CHOICE=n to disable
      the entire choice block:
      
          choice
                  prompt "choose A or B"
                  depends on ENABLE_A_B_CHOICE
      
          config A
                  bool "A"
      
          config B
                  bool "B"
      
          endchoice
      
      Another approach is to insert one more entry:
      
          choice
                  prompt "choose A, B, or disable both"
      
          config A
                  bool "A"
      
          config B
                  bool "B"
      
          config DISABLE_A_AND_B
                  bool "choose this to disable both A and B"
      
          endchoice
      
      Some real examples are DEBUG_INFO_NONE, INITRAMFS_COMPRESSION_NONE,
      LTO_NONE, etc.
      
      The 'optional' property is even more unnecessary for a tristate choice.
      
      Without the 'optional' property, you can disable A and B; you can set
      'm' in the choice prompt, and disable A and B individually:
      
          choice
                  prompt "choose one built-in or make them modular"
      
          config A
                  tristate "A"
      
          config B
                  tristate "B"
      
          endchoice
      
      In conclusion, the 'optional' property was unneeded.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      6a121588
    • Masahiro Yamada's avatar
      sh: Convert the last use of 'optional' property in Kconfig · d9a1dab6
      Masahiro Yamada authored
      The 'choice' statement is primarily used to exclusively select one
      option, but the 'optional' property allows all entries to be disabled.
      
      This feature is rarely used. In fact, it is only used in arch/sh/Kconfig
      because the equivalent outcome can be achieved by inserting one more
      entry.
      
      The 'optional' property support will be removed from Kconfig.
      
      This commit replaces the 'optional' property with a dummy option,
      CMDLINE_FROM_BOOTLOADER, as seen in some other architectures.
      
      Note:
       The 'default CMDLINE_OVERWRITE' statement does not work as intended
       in combination with 'optional'. If neither CONFIG_CMDLINE_OVERWRITE
       nor CONFIG_CMDLINE_EXTEND is specified in a defconfig file, both of
       them are disabled. This is a bug. To maintain the current behavior,
       I added CONFIG_CMDLINE_FROM_BOOTLOADER=y to those defconfig files.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarJohn Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
      d9a1dab6
    • Masahiro Yamada's avatar
      kconfig: remove SYMBOL_CHOICE flag · 1da251c6
      Masahiro Yamada authored
      All symbols except choices have a name.
      
      Previously, choices were allowed to have a name, but commit c83f0209
      ("kconfig: remove named choice support") eliminated that possibility.
      
      Now, it is easy to distinguish choices from normal symbols; if the name
      is NULL, it is a choice.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <n.schier@avm.de>
      1da251c6
    • Masahiro Yamada's avatar
      kbuild: buildtar: remove warning for the default case · 2b1ab140
      Masahiro Yamada authored
      Given KBUILD_IMAGE properly set in arch/*/Makefile, the default case
      should work in most scenarios. The only oddity is the naming of the
      copy destination, vmlinux-kbuild-${KERNELRELEASE}. Let's rename it
      to vmlinuz-${KERNELRELEASE} because the kernel is often compressed.
      Remove the warning to avoid unnecessary patch submissions when the
      default case suffices.
      
      Remove the x86 case, which is now equivalent to the default.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNathan Chancellor <nathan@kernel.org>
      2b1ab140
    • Masahiro Yamada's avatar
      kconfig: remove unneeded if-conditional in conf_choice() · c2af3d03
      Masahiro Yamada authored
      All symbols except choices have a name.
      
      child->sym->name never becomes NULL inside choice blocks.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      c2af3d03
    • Masahiro Yamada's avatar
      kconfig: use menu_for_each_entry() to traverse menu tree · 03c4ecaa
      Masahiro Yamada authored
      Use menu_for_each_entry() to traverse the menu tree instead of
      implementing similar logic in each function.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      03c4ecaa
    • Masahiro Yamada's avatar
      kconfig: add menu_next() function and menu_for_each(_sub)_entry macros · 7284b4fb
      Masahiro Yamada authored
      Several functions require traversing menu entries sequentially. This
      commit introduces some helpers to simplify such operations.
      
      The menu_next() function facilitates depth-first traversal:
      
       1. Descend to the child level if the current menu has one
       2. Move to the next sibling at the same level if available
       3. Ascend to the parent level if there is no more child or sibling
      
      The menu_for_each_sub_entry() macro iterates over all submenu entries
      using depth-first traverse.
      
      The menu_for_each_entry() macro is the same, but over all menu entries.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      7284b4fb
    • Ard Biesheuvel's avatar
      vmlinux: Avoid weak reference to notes section · 377d9095
      Ard Biesheuvel authored
      Weak references are references that are permitted to remain unsatisfied
      in the final link. This means they cannot be implemented using place
      relative relocations, resulting in GOT entries when using position
      independent code generation.
      
      The notes section should always exist, so the weak annotations can be
      omitted.
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      377d9095
    • Ard Biesheuvel's avatar
      kallsyms: Avoid weak references for kallsyms symbols · 951bcae6
      Ard Biesheuvel authored
      kallsyms is a directory of all the symbols in the vmlinux binary, and so
      creating it is somewhat of a chicken-and-egg problem, as its non-zero
      size affects the layout of the binary, and therefore the values of the
      symbols.
      
      For this reason, the kernel is linked more than once, and the first pass
      does not include any kallsyms data at all. For the linker to accept
      this, the symbol declarations describing the kallsyms metadata are
      emitted as having weak linkage, so they can remain unsatisfied. During
      the subsequent passes, the weak references are satisfied by the kallsyms
      metadata that was constructed based on information gathered from the
      preceding passes.
      
      Weak references lead to somewhat worse codegen, because taking their
      address may need to produce NULL (if the reference was unsatisfied), and
      this is not usually supported by RIP or PC relative symbol references.
      
      Given that these references are ultimately always satisfied in the final
      link, let's drop the weak annotation, and instead, provide fallback
      definitions in the linker script that are only emitted if an unsatisfied
      reference exists.
      
      While at it, drop the FRV specific annotation that these symbols reside
      in .rodata - FRV is long gone.
      
      Tested-by: Nick Desaulniers <ndesaulniers@google.com> # Boot
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Link: https://lkml.kernel.org/r/20230504174320.3930345-1-ardb%40kernel.orgSigned-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      951bcae6