1. May 08, 2022
    • Masahiro Yamada's avatar
      kbuild: make *.mod not depend on *.o · fc93a4cd
      Masahiro Yamada authored
      
      
      The dependency
      
          $(obj)/%.mod: $(obj)/%$(mod-prelink-ext).o
      
      ... exists because *.mod files previously contained undefined symbols,
      which are computed from *.o files when CONFIG_TRIM_UNUSED_KSYMS=y.
      
      Now that the undefined symbols are put into separate *.usyms files,
      there is no reason to make *.mod depend on *.o files.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      fc93a4cd
    • Masahiro Yamada's avatar
      kbuild: get rid of duplication in *.mod files · 22f26f21
      Masahiro Yamada authored
      
      
      It is allowed to add the same objects multiple times to obj-y / obj-m:
      
        obj-y += foo.o foo.o foo.o
        obj-m += bar.o bar.o bar.o
      
      It is also allowed to add the same objects multiple times to a composite
      module:
      
        obj-m += foo.o
        foo-y := foo1.o foo2.o foo2.o foo1.o
      
      This flexibility is useful because the same object might be selected by
      different CONFIG options, like this:
      
        obj-m               += foo.o
        foo-y               := foo1.o
        foo-$(CONFIG_FOO_X) += foo2.o
        foo-$(CONFIG_FOO_Y) += foo2.o
      
      The duplicated objects are omitted at link time. It works naturally in
      Makefiles because GNU Make removes duplication in $^ without changing
      the order.
      
      It is working well, almost...
      
      A small flaw I notice is, *.mod contains duplication in such a case.
      
      This is probably not a big deal. As far as I know, the only small
      problem is scripts/mod/sumversion.c parses the same file multiple
      times.
      
      I am fixing this because I plan to reuse *.mod for other purposes,
      where the duplication can be problematic.
      
      The code change is quite simple. We already use awk to drop duplicated
      lines in modules.order (see cmd_modules_order in the same file).
      I copied the code, but changed RS to use spaces as record separators.
      
      I also changed the file format to list one object per line.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      22f26f21
    • Masahiro Yamada's avatar
      kbuild: split the second line of *.mod into *.usyms · 9413e764
      Masahiro Yamada authored
      The *.mod files have two lines; the first line lists the member objects
      of the module, and the second line, if CONFIG_TRIM_UNUSED_KSYMS=y, lists
      the undefined symbols.
      
      Currently, we generate *.mod after constructing composite modules,
      otherwise, we cannot compute the second line. No prerequisite is
      required to print the first line.
      
      They are orthogonal. Splitting them into separate commands will ease
      further cleanups.
      
      This commit splits the list of undefined symbols out to *.usyms files.
      
      Previously, the list of undefined symbols ended up with a very long
      line, but now it has one symbol per line.
      
      Use sed like we did before commit 7d32358b
      
       ("kbuild: avoid split
      lines in .mod files").
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
      9413e764
    • Masahiro Yamada's avatar
      kbuild: reuse real-search to simplify cmd_mod · b3591e06
      Masahiro Yamada authored
      
      
      The first command in cmd_mod is similar to the real-search macro.
      Reuse it.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      b3591e06
    • Masahiro Yamada's avatar
      kbuild: make multi_depend work with targets in subdirectory · f97cf399
      Masahiro Yamada authored
      Precisely speaking, when you get the stem of the path, you should use
      $(patsubst $(obj)/%,%,...) instead of $(notdir ...).
      
      I do not see this usecase, but if you create a composite object in a
      subdirectory, the Makefile should look like this:
      
         obj-$(CONFIG_FOO) += dir/foo.o
         dir/foo-objs      := dir/foo1.o dir/foo2.o
      
      The member objects should be assigned to dir/foo-objs instead of
      foo-objs.
      
      This syntax is more consistent with commit 54b8ae66
      
       ("kbuild:
      change *FLAGS_<basetarget>.o to take the path relative to $(obj)").
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      f97cf399
    • Masahiro Yamada's avatar
      kbuild: reuse suffix-search to refactor multi_depend · 9eef99f7
      Masahiro Yamada authored
      
      
      The complicated part of multi_depend is the same as suffix-search.
      
      Reuse it.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      9eef99f7
    • Masahiro Yamada's avatar
      kbuild: refactor cmd_modversions_S · 7cfa2fcb
      Masahiro Yamada authored
      
      
      Split the code into two macros, cmd_gen_symversions_S for running
      genksyms, and cmd_modversions for running $(LD) to update the object
      with CRCs.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      7cfa2fcb
    • Masahiro Yamada's avatar
      kbuild: refactor cmd_modversions_c · 8017ce50
      Masahiro Yamada authored
      
      
      cmd_modversions_c implements two parts; run genksyms to calculate CRCs
      of exported symbols, run $(LD) to update the object with the CRCs. The
      latter is not executed for CONFIG_LTO_CLANG=y since the object is not
      ELF but LLVM bit code at this point.
      
      The first part can be unified because we can always use $(NM) instead
      of "$(OBJDUMP) -h" to dump the symbols.
      
      Split the code into the two macros, cmd_gen_symversions_c and
      cmd_modversions.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      8017ce50
    • Masahiro Yamada's avatar
      modpost: remove annoying namespace_from_kstrtabns() · 79f646e8
      Masahiro Yamada authored
      
      
      There are two call sites for sym_update_namespace().
      
      When the symbol has no namespace, s->namespace is set to NULL,
      but the conversion from "" to NULL is done in two different places.
      
      [1] read_symbols()
      
        This gets the namespace from __kstrtabns_<symbol>. If the symbol has
        no namespace, sym_get_data(info, sym) returns the empty string "".
        namespace_from_kstrtabns() converts it to NULL before it is passed to
        sym_update_namespace().
      
      [2] read_dump()
      
        This gets the namespace from the dump file, *.symvers. If the symbol
        has no namespace, the 'namespace' is the empty string "", which is
        directly passed into sym_update_namespace(). The conversion from
        "" to NULL is done in sym_update_namespace().
      
      namespace_from_kstrtabns() exists only for creating this inconsistency.
      
      Remove namespace_from_kstrtabns() so that sym_update_namespace() is
      consistently passed with "" instead of NULL.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      79f646e8
    • Masahiro Yamada's avatar
      modpost: remove redundant initializes for static variables · b5f1a52a
      Masahiro Yamada authored
      
      
      These are initialized with zeros without explicit initializers.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      b5f1a52a
    • Masahiro Yamada's avatar
      modpost: move export_from_secname() call to more relevant place · 535b3e05
      Masahiro Yamada authored
      
      
      The assigned 'export' is only used when
      
          if (strstarts(symname, "__ksymtab_"))
      
      is met. The else-part of the assignment is the dead code.
      
      Move the export_from_secname() call to where it is used.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      535b3e05
    • Masahiro Yamada's avatar
      modpost: remove useless export_from_sec() · 7ce3e410
      Masahiro Yamada authored
      With commit 1743694e
      
       ("modpost: stop symbol preloading for
      modversion CRC") applied, now export_from_sec() is useless.
      
      handle_symbol() is called for every symbol in the ELF.
      
      When 'symname' does not start with "__ksymtab", export_from_sec() is
      called, and the returned value is stored in 'export'.
      
      It is used in the last part of handle_symbol():
      
          if (strstarts(symname, "__ksymtab_")) {
                  name = symname + strlen("__ksymtab_");
                  sym_add_exported(name, mod, export);
          }
      
      'export' is used only when 'symname' starts with "__ksymtab_".
      
      So, the value returned by export_from_sec() is never used.
      
      Remove useless export_from_sec(). This makes further cleanups possible.
      
      I put the temporary code:
      
          export = export_unknown;
      
      Otherwise, I would get the compiler warning:
      
          warning: 'export' may be used uninitialized in this function [-Wmaybe-uninitialized]
      
      This is apparently false positive because
      
          if (strstarts(symname, "__ksymtab_")
      
      ... is a stronger condition than:
      
          if (strstarts(symname, "__ksymtab")
      
      Anyway, this part will be cleaned up by the next commit.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
      7ce3e410
  2. Apr 06, 2022
  3. Apr 05, 2022
  4. Apr 04, 2022
    • Linus Torvalds's avatar
      Linux 5.18-rc1 · 31231092
      Linus Torvalds authored
      31231092
    • Linus Torvalds's avatar
      Merge tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 09bb8856
      Linus Torvalds authored
      Pull more tracing updates from Steven Rostedt:
      
       - Rename the staging files to give them some meaning. Just
         stage1,stag2,etc, does not show what they are for
      
       - Check for NULL from allocation in bootconfig
      
       - Hold event mutex for dyn_event call in user events
      
       - Mark user events to broken (to work on the API)
      
       - Remove eBPF updates from user events
      
       - Remove user events from uapi header to keep it from being installed.
      
       - Move ftrace_graph_is_dead() into inline as it is called from hot
         paths and also convert it into a static branch.
      
      * tag 'trace-v5.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Move user_events.h temporarily out of include/uapi
        ftrace: Make ftrace_graph_is_dead() a static branch
        tracing: Set user_events to BROKEN
        tracing/user_events: Remove eBPF interfaces
        tracing/user_events: Hold event_mutex during dyn_event_add
        proc: bootconfig: Add null pointer check
        tracing: Rename the staging files for trace_events
      09bb8856
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 34a53ff9
      Linus Torvalds authored
      Pull clk fix from Stephen Boyd:
       "A single revert to fix a boot regression seen when clk_put() started
        dropping rate range requests. It's best to keep various systems
        booting so we'll kick this out and try again next time"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        Revert "clk: Drop the rate range on clk_put()"
      34a53ff9
    • Linus Torvalds's avatar
      Merge tag 'x86-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 8b5656bc
      Linus Torvalds authored
      Pull x86 fixes from Thomas Gleixner:
       "A set of x86 fixes and updates:
      
         - Make the prctl() for enabling dynamic XSTATE components correct so
           it adds the newly requested feature to the permission bitmap
           instead of overwriting it. Add a selftest which validates that.
      
         - Unroll string MMIO for encrypted SEV guests as the hypervisor
           cannot emulate it.
      
         - Handle supervisor states correctly in the FPU/XSTATE code so it
           takes the feature set of the fpstate buffer into account. The
           feature sets can differ between host and guest buffers. Guest
           buffers do not contain supervisor states. So far this was not an
           issue, but with enabling PASID it needs to be handled in the buffer
           offset calculation and in the permission bitmaps.
      
         - Avoid a gazillion of repeated CPUID invocations in by caching the
           values early in the FPU/XSTATE code.
      
         - Enable CONFIG_WERROR in x86 defconfig.
      
         - Make the X86 defconfigs more useful by adapting them to Y2022
           reality"
      
      * tag 'x86-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/fpu/xstate: Consolidate size calculations
        x86/fpu/xstate: Handle supervisor states in XSTATE permissions
        x86/fpu/xsave: Handle compacted offsets correctly with supervisor states
        x86/fpu: Cache xfeature flags from CPUID
        x86/fpu/xsave: Initialize offset/size cache early
        x86/fpu: Remove unused supervisor only offsets
        x86/fpu: Remove redundant XCOMP_BV initialization
        x86/sev: Unroll string mmio with CC_ATTR_GUEST_UNROLL_STRING_IO
        x86/config: Make the x86 defconfigs a bit more usable
        x86/defconfig: Enable WERROR
        selftests/x86/amx: Update the ARCH_REQ_XCOMP_PERM test
        x86/fpu/xstate: Fix the ARCH_REQ_XCOMP_PERM implementation
      8b5656bc
    • Linus Torvalds's avatar
      Merge tag 'core-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e235f419
      Linus Torvalds authored
      Pull RT signal fix from Thomas Gleixner:
       "Revert the RT related signal changes. They need to be reworked and
        generalized"
      
      * tag 'core-urgent-2022-04-03' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        Revert "signal, x86: Delay calling signals in atomic on RT enabled kernels"
      e235f419
    • Linus Torvalds's avatar
      Merge tag 'dma-mapping-5.18-1' of git://git.infradead.org/users/hch/dma-mapping · 63d12cc3
      Linus Torvalds authored
      Pull more dma-mapping updates from Christoph Hellwig:
      
       - fix a regression in dma remap handling vs AMD memory encryption (me)
      
       - finally kill off the legacy PCI DMA API (Christophe JAILLET)
      
      * tag 'dma-mapping-5.18-1' of git://git.infradead.org/users/hch/dma-mapping:
        dma-mapping: move pgprot_decrypted out of dma_pgprot
        PCI/doc: cleanup references to the legacy PCI DMA API
        PCI: Remove the deprecated "pci-dma-compat.h" API
      63d12cc3
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm · 5dee8721
      Linus Torvalds authored
      Pull ARM fixes from Russell King:
      
       - avoid unnecessary rebuilds for library objects
      
       - fix return value of __setup handlers
      
       - fix invalid input check for "crashkernel=" kernel option
      
       - silence KASAN warnings in unwind_frame
      
      * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
        ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame()
        ARM: 9190/1: kdump: add invalid input check for 'crashkernel=0'
        ARM: 9187/1: JIVE: fix return value of __setup handler
        ARM: 9189/1: decompressor: fix unneeded rebuilds of library objects
      5dee8721
  5. Apr 03, 2022
  6. Apr 02, 2022