1. 23 May, 2024 8 commits
    • Steven Rostedt (Google)'s avatar
      eventfs: Do not use attributes for events directory · 2dd00ac1
      Steven Rostedt (Google) authored
      The top "events" directory has a static inode (it's created when it is and
      removed when the directory is removed). There's no need to use the events
      ei->attr to determine its permissions. But it is used for saving the
      permissions of the "events" directory for when it is created, as that is
      needed for the default permissions for the files and directories
      underneath it.
      
      For example:
      
       # cd /sys/kernel/tracing
       # mkdir instances/foo
       # chown 1001 instances/foo/events
      
      The files under instances/foo/events should still have the same owner as
      instances/foo (which the instances/foo/events ei->attr will hold), but the
      events directory now has owner 1001.
      
      Link: https://lore.kernel.org/lkml/20240522165032.104981011@goodmis.org
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      2dd00ac1
    • Steven Rostedt (Google)'s avatar
      eventfs: Cleanup permissions in creation of inodes · 6e3d7c90
      Steven Rostedt (Google) authored
      The permissions being set during the creation of the inodes was updating
      eventfs_inode attributes as well. Those attributes should only be touched
      by the setattr or remount operations, not during the creation of inodes.
      The eventfs_inode attributes should only be used to set the inodes and
      should not be modified during the inode creation.
      
      Simplify the code and fix the situation by:
      
       1) Removing the eventfs_find_events() and doing a simple lookup for
          the events descriptor in eventfs_get_inode()
      
       2) Remove update_events_attr() as the attributes should only be used
          to update the inode and should not be modified here.
      
       3) Add update_inode_attr() that uses the attributes to determine what
          the inode permissions should be.
      
       4) As the parent_inode of the eventfs_root_inode structure is no longer
          needed, remove it.
      
      Now on creation, the inode gets the proper permissions without causing
      side effects to the ei->attr field.
      
      Link: https://lore.kernel.org/lkml/20240522165031.944088388@goodmis.org
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      6e3d7c90
    • Steven Rostedt (Google)'s avatar
      eventfs: Remove getattr and permission callbacks · 37cd0d12
      Steven Rostedt (Google) authored
      Now that inodes have their permissions updated on remount, the only other
      places to update the inode permissions are when they are created and in
      the setattr callback. The getattr and permission callbacks are not needed
      as the inodes should already be set at their proper settings.
      
      Remove the callbacks, as it not only simplifies the code, but also allows
      more flexibility to fix the inconsistencies with various corner cases
      (like changing the permission of an instance directory).
      
      Link: https://lore.kernel.org/lkml/20240522165031.782066021@goodmis.org
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      37cd0d12
    • Steven Rostedt (Google)'s avatar
      eventfs: Consolidate the eventfs_inode update in eventfs_get_inode() · 625acf9d
      Steven Rostedt (Google) authored
      To simplify the code, create a eventfs_get_inode() that is used when an
      eventfs file or directory is created. Have the internal tracefs_inode
      updated the appropriate flags in this function and update the inode's
      mode as well.
      
      Link: https://lore.kernel.org/lkml/20240522165031.624864160@goodmis.org
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      625acf9d
    • Steven Rostedt (Google)'s avatar
      tracefs: Clear EVENT_INODE flag in tracefs_drop_inode() · 0bcfd9aa
      Steven Rostedt (Google) authored
      When the inode is being dropped from the dentry, the TRACEFS_EVENT_INODE
      flag needs to be cleared to prevent a remount from calling
      eventfs_remount() on the tracefs_inode private data. There's a race
      between the inode is dropped (and the dentry freed) to where the inode is
      actually freed. If a remount happens between the two, the eventfs_inode
      could be accessed after it is freed (only the dentry keeps a ref count on
      it).
      
      Currently the TRACEFS_EVENT_INODE flag is cleared from the dentry iput()
      function. But this is incorrect, as it is possible that the inode has
      another reference to it. The flag should only be cleared when the inode is
      really being dropped and has no more references. That happens in the
      drop_inode callback of the inode, as that gets called when the last
      reference of the inode is released.
      
      Remove the tracefs_d_iput() function and move its logic to the more
      appropriate tracefs_drop_inode() callback function.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20240523051539.908205106@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Fixes: baa23a8d ("tracefs: Reset permissions on remount if permissions are options")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      0bcfd9aa
    • Steven Rostedt (Google)'s avatar
      eventfs: Update all the eventfs_inodes from the events descriptor · 340f0c70
      Steven Rostedt (Google) authored
      The change to update the permissions of the eventfs_inode had the
      misconception that using the tracefs_inode would find all the
      eventfs_inodes that have been updated and reset them on remount.
      The problem with this approach is that the eventfs_inodes are freed when
      they are no longer used (basically the reason the eventfs system exists).
      When they are freed, the updated eventfs_inodes are not reset on a remount
      because their tracefs_inodes have been freed.
      
      Instead, since the events directory eventfs_inode always has a
      tracefs_inode pointing to it (it is not freed when finished), and the
      events directory has a link to all its children, have the
      eventfs_remount() function only operate on the events eventfs_inode and
      have it descend into its children updating their uid and gids.
      
      Link: https://lore.kernel.org/all/CAK7LNARXgaWw3kH9JgrnH4vK6fr8LDkNKf3wq8NhMWJrVwJyVQ@mail.gmail.com/
      Link: https://lore.kernel.org/linux-trace-kernel/20240523051539.754424703@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Fixes: baa23a8d ("tracefs: Reset permissions on remount if permissions are options")
      Reported-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      340f0c70
    • Steven Rostedt (Google)'s avatar
      tracefs: Update inode permissions on remount · 27c04648
      Steven Rostedt (Google) authored
      When a remount happens, if a gid or uid is specified update the inodes to
      have the same gid and uid. This will allow the simplification of the
      permissions logic for the dynamically created files and directories.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20240523051539.592429986@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Fixes: baa23a8d ("tracefs: Reset permissions on remount if permissions are options")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      27c04648
    • Steven Rostedt (Google)'s avatar
      eventfs: Keep the directories from having the same inode number as files · 8898e7f2
      Steven Rostedt (Google) authored
      The directories require unique inode numbers but all the eventfs files
      have the same inode number. Prevent the directories from having the same
      inode numbers as the files as that can confuse some tooling.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20240523051539.428826685@goodmis.org
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Masahiro Yamada <masahiroy@kernel.org>
      Fixes: 834bf76a ("eventfs: Save directory inodes in the eventfs_inode structure")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      8898e7f2
  2. 18 May, 2024 7 commits
    • Linus Torvalds's avatar
      Merge tag 'trace-user-events-v6.10' of... · fa3889d9
      Linus Torvalds authored
      Merge tag 'trace-user-events-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
      
      Pull tracing user-event updates from Steven Rostedt:
      
       - Minor update to the user_events interface
      
        The ABI of creating a user event states that the fields are separated
        by semicolons, and spaces should be ignored.
      
        But the parsing expected at least one space to be there (which was
        incorrect). Fix the reading of the string to handle fields separated
        by semicolons but no space between them.
      
        This does extend the API sightly as now "field;field" will now be
        parsed and not cause an error. But it should not cause any regressions
        as no logic should expect it to fail.
      
        Note, that the logic that parses the event fields to create the
        trace_event works with no spaces after the semi-colon. It is
        the logic that tests against existing events that is inconsistent.
        This causes registering an event without using spaces to succeed
        if it doesn't exist, but makes the same call that tries to register
        to the same event, but doesn't use spaces, fail.
      
      * tag 'trace-user-events-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        selftests/user_events: Add non-spacing separator check
        tracing/user_events: Fix non-spaced field matching
      fa3889d9
    • Linus Torvalds's avatar
      Merge tag 'trace-ringbuffer-v6.10' of... · 53683e40
      Linus Torvalds authored
      Merge tag 'trace-ringbuffer-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
      
      Pull tracing ring buffer updates from Steven Rostedt:
       "Add ring_buffer memory mappings.
      
        The tracing ring buffer was created based on being mostly used with
        the splice system call. It is broken up into page ordered sub-buffers
        and the reader swaps a new sub-buffer with an existing sub-buffer
        that's part of the write buffer. It then has total access to the
        swapped out sub-buffer and can do copyless movements of the memory
        into other mediums (file system, network, etc).
      
        The buffer is great for passing around the ring buffer contents in the
        kernel, but is not so good for when the consumer is the user space
        task itself.
      
        A new interface is added that allows user space to memory map the ring
        buffer. It will get all the write sub-buffers as well as reader
        sub-buffer (that is not written to). It can send an ioctl to change
        which sub-buffer is the new reader sub-buffer.
      
        The ring buffer is read only to user space. It only needs to call the
        ioctl when it is finished with a sub-buffer and needs a new sub-buffer
        that the writer will not write over.
      
        A self test program was also created for testing and can be used as an
        example for the interface to user space. The libtracefs (external to
        the kernel) also has code that interacts with this, although it is
        disabled until the interface is in a official release. It can be
        enabled by compiling the library with a special flag. This was used
        for testing applications that perform better with the buffer being
        mapped.
      
        Memory mapped buffers have limitations. The main one is that it can
        not be used with the snapshot logic. If the buffer is mapped,
        snapshots will be disabled. If any logic is set to trigger snapshots
        on a buffer, that buffer will not be allowed to be mapped"
      
      * tag 'trace-ringbuffer-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        ring-buffer: Add cast to unsigned long addr passed to virt_to_page()
        ring-buffer: Have mmapped ring buffer keep track of missed events
        ring-buffer/selftest: Add ring-buffer mapping test
        Documentation: tracing: Add ring-buffer mapping
        tracing: Allow user-space mapping of the ring-buffer
        ring-buffer: Introducing ring-buffer mapping functions
        ring-buffer: Allocate sub-buffers with __GFP_COMP
      53683e40
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · 594d2815
      Linus Torvalds authored
      Pull tracing updates from Steven Rostedt:
      
       - Remove unused ftrace_direct_funcs variables
      
       - Fix a possible NULL pointer dereference race in eventfs
      
       - Update do_div() usage in trace event benchmark test
      
       - Speedup direct function registration with asynchronous RCU callback.
      
         The synchronization was done in the registration code and this caused
         delays when registering direct callbacks. Move the freeing to a
         call_rcu() that will prevent delaying of the registering.
      
       - Replace simple_strtoul() usage with kstrtoul()
      
      * tag 'trace-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        eventfs: Fix a possible null pointer dereference in eventfs_find_events()
        ftrace: Fix possible use-after-free issue in ftrace_location()
        ftrace: Remove unused global 'ftrace_direct_func_count'
        ftrace: Remove unused list 'ftrace_direct_funcs'
        tracing: Improve benchmark test performance by using do_div()
        ftrace: Use asynchronous grace period for register_ftrace_direct()
        ftrace: Replaces simple_strtoul in ftrace
      594d2815
    • Linus Torvalds's avatar
      Merge tag 'probes-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · 70a66320
      Linus Torvalds authored
      Pull probes updates from Masami Hiramatsu:
      
       - tracing/probes: Add new pseudo-types %pd and %pD support for dumping
         dentry name from 'struct dentry *' and file name from 'struct file *'
      
       - uprobes performance optimizations:
          - Speed up the BPF uprobe event by delaying the fetching of the
            uprobe event arguments that are not used in BPF
          - Avoid locking by speculatively checking whether uprobe event is
            valid
          - Reduce lock contention by using read/write_lock instead of
            spinlock for uprobe list operation. This improved BPF uprobe
            benchmark result 43% on average
      
       - rethook: Remove non-fatal warning messages when tracing stack from
         BPF and skip rcu_is_watching() validation in rethook if possible
      
       - objpool: Optimize objpool (which is used by kretprobes and fprobe as
         rethook backend storage) by inlining functions and avoid caching
         nr_cpu_ids because it is a const value
      
       - fprobe: Add entry/exit callbacks types (code cleanup)
      
       - kprobes: Check ftrace was killed in kprobes if it uses ftrace
      
      * tag 'probes-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        kprobe/ftrace: bail out if ftrace was killed
        selftests/ftrace: Fix required features for VFS type test case
        objpool: cache nr_possible_cpus() and avoid caching nr_cpu_ids
        objpool: enable inlining objpool_push() and objpool_pop() operations
        rethook: honor CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING in rethook_try_get()
        ftrace: make extra rcu_is_watching() validation check optional
        uprobes: reduce contention on uprobes_tree access
        rethook: Remove warning messages printed for finding return address of a frame.
        fprobe: Add entry/exit callbacks types
        selftests/ftrace: add fprobe test cases for VFS type "%pd" and "%pD"
        selftests/ftrace: add kprobe test cases for VFS type "%pd" and "%pD"
        Documentation: tracing: add new type '%pd' and '%pD' for kprobe
        tracing/probes: support '%pD' type for print struct file's name
        tracing/probes: support '%pd' type for print struct dentry's name
        uprobes: add speculative lockless system-wide uprobe filter check
        uprobes: prepare uprobe args buffer lazily
        uprobes: encapsulate preparation of uprobe args buffer
      70a66320
    • Linus Torvalds's avatar
      Merge tag 'bootconfig-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · e9d68251
      Linus Torvalds authored
      Pull bootconfig updates from Masami Hiramatsu:
      
       - Do not put unneeded quotes on the extra command line items which was
         inserted from the bootconfig.
      
       - Remove redundant spaces from the extra command line.
      
      * tag 'bootconfig-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        init/main.c: Minor cleanup for the setup_command_line() function
        init/main.c: Remove redundant space from saved_command_line
        bootconfig: do not put quotes on cmdline items unless necessary
      e9d68251
    • Linus Torvalds's avatar
      Merge tag 'sysctl-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl · 91b6163b
      Linus Torvalds authored
      Pull sysctl updates from Joel Granados:
      
       - Remove sentinel elements from ctl_table structs in kernel/*
      
         Removing sentinels in ctl_table arrays reduces the build time size
         and runtime memory consumed by ~64 bytes per array. Removals for
         net/, io_uring/, mm/, ipc/ and security/ are set to go into mainline
         through their respective subsystems making the next release the most
         likely place where the final series that removes the check for
         proc_name == NULL will land.
      
         This adds to removals already in arch/, drivers/ and fs/.
      
       - Adjust ctl_table definitions and references to allow constification
           - Remove unused ctl_table function arguments
           - Move non-const elements from ctl_table to ctl_table_header
           - Make ctl_table pointers const in ctl_table_root structure
      
         Making the static ctl_table structs const will increase safety by
         keeping the pointers to proc_handler functions in .rodata. Though no
         ctl_tables where made const in this PR, the ground work for making
         that possible has started with these changes sent by Thomas
         Weißschuh.
      
      * tag 'sysctl-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/sysctl/sysctl:
        sysctl: drop now unnecessary out-of-bounds check
        sysctl: move sysctl type to ctl_table_header
        sysctl: drop sysctl_is_perm_empty_ctl_table
        sysctl: treewide: constify argument ctl_table_root::permissions(table)
        sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table)
        bpf: Remove the now superfluous sentinel elements from ctl_table array
        delayacct: Remove the now superfluous sentinel elements from ctl_table array
        kprobes: Remove the now superfluous sentinel elements from ctl_table array
        printk: Remove the now superfluous sentinel elements from ctl_table array
        scheduler: Remove the now superfluous sentinel elements from ctl_table array
        seccomp: Remove the now superfluous sentinel elements from ctl_table array
        timekeeping: Remove the now superfluous sentinel elements from ctl_table array
        ftrace: Remove the now superfluous sentinel elements from ctl_table array
        umh: Remove the now superfluous sentinel elements from ctl_table array
        kernel misc: Remove the now superfluous sentinel elements from ctl_table array
      91b6163b
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 06f054b1
      Linus Torvalds authored
      Pull devicetree updates from Rob Herring:
       "DT Bindings:
      
         - Convert samsung,exynos5-dp, atmel,lcdc, aspeed,ast2400-wdt bindings
           to schemas
      
         - Add bindings for Allwinner H616 NMI controller, Renesas r8a779g0
           irqc, Renesas R-Car V4M TMU and CMT timers, Freescale S32G3
           linflexuart, and Mediatek MT7988 XHCI
      
         - Add 'reg' constraints on DSI and SPI display panels
      
         - More dropping of unnecessary quotes in schemas
      
         - Use full paths rather than relative paths in schema $refs
      
         - Drop redundant storing of phandle for reserved memory
      
        DT Core:
      
         - Use scope based cleanups for kfree() and of_node_put()
      
         - Track interrupt-map and power-supplies for fw_devlink
      
         - Add buffer overflow check in of_modalias()
      
         - Add and use __of_prop_free() helper for freeing struct property"
      
      * tag 'devicetree-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (25 commits)
        of: property: Add fw_devlink support for interrupt-map property
        dt-bindings: display: panel: constrain 'reg' in DSI panels
        dt-bindings: display: panel: constrain 'reg' in SPI panels
        dt-bindings: display: samsung,ams495qa01: add missing SPI properties ref
        dt-bindings: Use full path to other schemas
        dt-bindings: PCI: qcom,pcie-sm8350: Drop redundant 'oneOf' sub-schema
        of: module: add buffer overflow check in of_modalias()
        dt-bindings: PCI: microchip: increase number of items in ranges property
        dt-bindings: Drop unnecessary quotes on keys
        dt-bindings: interrupt-controller: mediatek,mt6577-sysirq: Drop unnecessary quotes
        of: property: Use scope based cleanup on port_node
        of: reserved_mem: Remove the use of phandle from the reserved_mem APIs
        of: property: fw_devlink: Add support for "power-supplies" binding
        dt-bindings: watchdog: aspeed,ast2400-wdt: Convert to DT schema
        dt-bindings: irq: sun7i-nmi: Add binding for the H616 NMI controller
        dt-bindings: interrupt-controller: renesas,irqc: Add r8a779g0 support
        dt-bindings: timer: renesas,tmu: Add R-Car V4M support
        dt-bindings: timer: renesas,cmt: Add R-Car V4M support
        of: Use scope based of_node_put() cleanups
        of: Use scope based kfree() cleanups
        ...
      06f054b1
  3. 17 May, 2024 3 commits
    • Linus Torvalds's avatar
      Merge tag 'parisc-for-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · 7ee332c9
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
      
       -  define sigset_t in parisc uapi header to fix build of util-linux
      
       -  define HAVE_ARCH_HUGETLB_UNMAPPED_AREA to avoid compiler warning
      
       -  drop unused 'exc_reg' struct in math-emu code
      
      * tag 'parisc-for-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: Define HAVE_ARCH_HUGETLB_UNMAPPED_AREA
        parisc/math-emu: Remove unused struct 'exc_reg'
        parisc: Define sigset_t in parisc uapi header
      7ee332c9
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · ff2632d7
      Linus Torvalds authored
      Pull powerpc updates from Michael Ellerman:
      
       - Enable BPF Kernel Functions (kfuncs) in the powerpc BPF JIT.
      
       - Allow per-process DEXCR (Dynamic Execution Control Register) settings
         via prctl, notably NPHIE which controls hashst/hashchk for ROP
         protection.
      
       - Install powerpc selftests in sub-directories. Note this changes the
         way run_kselftest.sh needs to be invoked for powerpc selftests.
      
       - Change fadump (Firmware Assisted Dump) to better handle memory
         add/remove.
      
       - Add support for passing additional parameters to the fadump kernel.
      
       - Add support for updating the kdump image on CPU/memory add/remove
         events.
      
       - Other small features, cleanups and fixes.
      
      Thanks to Andrew Donnellan, Andy Shevchenko, Aneesh Kumar K.V, Arnd
      Bergmann, Benjamin Gray, Bjorn Helgaas, Christian Zigotzky, Christophe
      Jaillet, Christophe Leroy, Colin Ian King, Cédric Le Goater, Dr. David
      Alan Gilbert, Erhard Furtner, Frank Li, GUO Zihua, Ganesh Goudar, Geoff
      Levand, Ghanshyam Agrawal, Greg Kurz, Hari Bathini, Joel Stanley, Justin
      Stitt, Kunwu Chan, Li Yang, Lidong Zhong, Madhavan Srinivasan, Mahesh
      Salgaonkar, Masahiro Yamada, Matthias Schiffer, Naresh Kamboju, Nathan
      Chancellor, Nathan Lynch, Naveen N Rao, Nicholas Miehlbradt, Ran Wang,
      Randy Dunlap, Ritesh Harjani, Sachin Sant, Shirisha Ganta, Shrikanth
      Hegde, Sourabh Jain, Stephen Rothwell, sundar, Thorsten Blum, Vaibhav
      Jain, Xiaowei Bao, Yang Li, and Zhao Chenhui.
      
      * tag 'powerpc-6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (85 commits)
        powerpc/fadump: Fix section mismatch warning
        powerpc/85xx: fix compile error without CONFIG_CRASH_DUMP
        powerpc/fadump: update documentation about bootargs_append
        powerpc/fadump: pass additional parameters when fadump is active
        powerpc/fadump: setup additional parameters for dump capture kernel
        powerpc/pseries/fadump: add support for multiple boot memory regions
        selftests/powerpc/dexcr: Fix spelling mistake "predicition" -> "prediction"
        KVM: PPC: Book3S HV nestedv2: Fix an error handling path in gs_msg_ops_kvmhv_nestedv2_config_fill_info()
        KVM: PPC: Fix documentation for ppc mmu caps
        KVM: PPC: code cleanup for kvmppc_book3s_irqprio_deliver
        KVM: PPC: Book3S HV nestedv2: Cancel pending DEC exception
        powerpc/xmon: Check cpu id in commands "c#", "dp#" and "dx#"
        powerpc/code-patching: Use dedicated memory routines for patching
        powerpc/code-patching: Test patch_instructions() during boot
        powerpc64/kasan: Pass virtual addresses to kasan_init_phys_region()
        powerpc: rename SPRN_HID2 define to SPRN_HID2_750FX
        powerpc: Fix typos
        powerpc/eeh: Fix spelling of the word "auxillary" and update comment
        macintosh/ams: Fix unused variable warning
        powerpc/Makefile: Remove bits related to the previous use of -mcmodel=large
        ...
      ff2632d7
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rmk/linux · 4853f1f6
      Linus Torvalds authored
      Pull ARM updates from Russell King:
      
       - Updates to AMBA bus subsystem to drop .owner struct device_driver
         initialisations, moving that to code instead.
      
       - Add LPAE privileged-access-never support
      
       - Add support for Clang CFI
      
       - clkdev: report over-sized device or connection strings
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rmk/linux: (36 commits)
        ARM: 9398/1: Fix userspace enter on LPAE with CC_OPTIMIZE_FOR_SIZE=y
        clkdev: report over-sized strings when creating clkdev entries
        ARM: 9393/1: mm: Use conditionals for CFI branches
        ARM: 9392/2: Support CLANG CFI
        ARM: 9391/2: hw_breakpoint: Handle CFI breakpoints
        ARM: 9390/2: lib: Annotate loop delay instructions for CFI
        ARM: 9389/2: mm: Define prototypes for all per-processor calls
        ARM: 9388/2: mm: Type-annotate all per-processor assembly routines
        ARM: 9387/2: mm: Rewrite cacheflush vtables in CFI safe C
        ARM: 9386/2: mm: Use symbol alias for cache functions
        ARM: 9385/2: mm: Type-annotate all cache assembly routines
        ARM: 9384/2: mm: Make tlbflush routines CFI safe
        ARM: 9382/1: ftrace: Define ftrace_stub_graph
        ARM: 9358/2: Implement PAN for LPAE by TTBR0 page table walks disablement
        ARM: 9357/2: Reduce the number of #ifdef CONFIG_CPU_SW_DOMAIN_PAN
        ARM: 9356/2: Move asm statements accessing TTBCR into C functions
        ARM: 9355/2: Add TTBCR_* definitions to pgtable-3level-hwdef.h
        ARM: 9379/1: coresight: tpda: drop owner assignment
        ARM: 9378/1: coresight: etm4x: drop owner assignment
        ARM: 9377/1: hwrng: nomadik: drop owner assignment
        ...
      4853f1f6
  4. 16 May, 2024 14 commits
    • Linus Torvalds's avatar
      Merge tag 'platform-drivers-x86-v6.10-1' of... · ea5f6ad9
      Linus Torvalds authored
      Merge tag 'platform-drivers-x86-v6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
      
      Pull x86 platform driver updates from Hans de Goede:
      
       - New drivers/platform/arm64 directory for arm64 embedded-controller
         drivers
      
       - New drivers:
          - Acer Aspire 1 embedded controllers (for arm64 models)
          - ACPI quickstart PNP0C32 buttons
          - Dell All-In-One backlight support (dell-uart-backlight)
          - Lenovo WMI camera buttons
          - Lenovo Yoga Tablet 2 Pro 1380F/L fast charging
          - MeeGoPad ANX7428 Type-C Cross Switch (power sequencing only)
          - MSI WMI sensors (fan speed sensors only for now)
      
       - Asus WMI:
          - 2024 ROG Mini-LED support
          - MCU powersave support
          - Vivobook GPU MUX support
          - Misc. other improvements
      
       - Ideapad laptop:
          - Export FnLock LED as LED class device
          - Switch platform profiles using thermal management key
      
       - Intel drivers:
          - IFS: various improvements
          - PMC: Lunar Lake support
          - SDSI: various improvements
          - TPMI/ISST: various improvements
          - tools: intel-speed-select: various improvements
      
       - MS Surface drivers:
          - Fan profile switching support
          - Surface Pro thermal sensors support
      
       - ThinkPad ACPI:
          - Reworked hotkey support to use sparse keymaps
          - Add support for new trackpoint-doubletap, Fn+N and Fn+G hotkeys
      
       - WMI core:
          - New WMI driver development guide
      
       - x86 Android tablets:
          - Lenovo Yoga Tablet 2 Pro 1380F/L support
          - Xiaomi MiPad 2 status LED and bezel touch buttons backlight
            support
      
       - Miscellaneous cleanups / fixes / improvements
      
      * tag 'platform-drivers-x86-v6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86: (128 commits)
        platform/x86: Add new MeeGoPad ANX7428 Type-C Cross Switch driver
        devm-helpers: Fix a misspelled cancellation in the comments
        tools arch x86: Add dell-uart-backlight-emulator
        platform/x86: Add new Dell UART backlight driver
        platform/x86: x86-android-tablets: Create LED device for Xiaomi Pad 2 bottom bezel touch buttons
        platform/x86: x86-android-tablets: Xiaomi pad2 RGB LED fwnode updates
        platform/x86: x86-android-tablets: Pass struct device to init()
        platform/x86/amd: pmc: Add new ACPI ID AMDI000B
        platform/x86/amd: pmf: Add new ACPI ID AMDI0105
        platform/x86: p2sb: Don't init until unassigned resources have been assigned
        platform/surface: aggregator: Log critical errors during SAM probing
        platform/x86: ISST: Support SST-BF and SST-TF per level
        platform/x86/fujitsu-laptop: Replace sprintf() with sysfs_emit()
        tools/power/x86/intel-speed-select: v1.19 release
        tools/power/x86/intel-speed-select: Display CPU as None for -1
        tools/power/x86/intel-speed-select: SST BF/TF support per level
        tools/power/x86/intel-speed-select: Increase number of CPUs displayed
        tools/power/x86/intel-speed-select: Present all TRL levels for turbo-freq
        tools/power/x86/intel-speed-select: Fix display for unsupported levels
        tools/power/x86/intel-speed-select: Support multiple dies
        ...
      ea5f6ad9
    • Linus Torvalds's avatar
      Merge tag 'mtd/for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · b426433c
      Linus Torvalds authored
      Pull MTD updates from Miquel Raynal:
       "MTD:
      
         - Simon Glass wanted to support binman's output properties in order
           to check their validity using the binding checks and proposed
           changes with the missing properties as well as a binman compatible.
      
         - Krzysztof Kozlowski on his side shared a new yaml for describing
           Samsung's OneNAND interface.
      
         - The interface with NVMEM has also been slightly improved/fixed,
           especially now that OTP are also supported in the NAND subsystem.
      
         - Along with these changes, small cleanups have also been contributed
           around ID tables, structure sizes, arithmetic checks and comments.
      
        Raw NAND subsystem:
      
         - Two small fixes, one in the Hynix vendor code for properly
           returning an error which might have been ignored and another in the
           Davinci driver to properly synchronize the controller with the gpio
           domain.
      
        SPI NOR subsystem:
      
         - SPI NOR now uses div_u64() instead of div64_u64() in places where
           the divisor is 32 bits. Many 32 bit architectures can optimize this
           variant better than a full 64 bit divide"
      
      * tag 'mtd/for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
        mtd: spi-nor: replace unnecessary div64_u64() with div_u64()
        mtd: mchp23k256: drop unneeded MODULE_ALIAS
        dt-bindings: mtd: fixed-partition: Add binman compatibles
        dt-bindings: mtd: fixed-partitions: Add alignment properties
        mtd: maps: sa1100-flash: Prefer struct_size over open coded arithmetic
        mtd: core: Align comment with an action in mtd_otp_nvmem_add()
        mtd: rawnand: hynix: fixed typo
        mtd: rawnand: davinci: Add dummy read after sending command
        mtd: partitions: redboot: Added conversion of operands to a larger type
        dt-bindings: mtd: Add Samsung S5Pv210 OneNAND
        mtd: core: Don't fail mtd_otp_nvmem_add() if OTP is unsupported
        mtd: core: Report error if first mtd_otp_size() call fails in mtd_otp_nvmem_add()
      b426433c
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 8b06f753
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Increase the timeout period of the ACMD41 command
         - Add card entry for quirks to debugfs
         - Add mmc_gpiod_set_cd_config() function
         - Store owner from SDIO modules with sdio_register_driver()
      
        MMC host:
         - atmel-mci: Some cleanups and a switch to use dev_err_probe()
         - renesas_sdhi:
            - Add support for RZ/G2L, RZ/G3S and RZ/V2M variants
            - Set the SDBUF after reset
         - sdhci: Add support for "Tuning Error" interrupts
         - sdhci-acpi:
            - Add quirk to enable pull-up on the card-detect GPIO on Asus
              T100TA
            - Disable write protect detection on Toshiba WT10-A
            - Fix Lenovo Yoga Tablet 2 Pro 1380 sdcard slot not working
         - sdhci_am654:
            - Re-work and fix the tuning support for multiple speed-modes
            - Add tuning algorithm for delay chain
         - sdhci-esdhc-imx: Add NXP S32G3 support
         - sdhci-of-dwcmshc:
            - Add tuning support for Sophgo CV1800B and SG200X
            - Implement SDHCI CQE support
         - sdhci-pci-gli: Use the proper pci_set_power_state() instead of
           PMCSR writes"
      
        MEMSTICK:
         - Convert a couple of drivers to use the ->remove_new() callback"
      
      * tag 'mmc-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (59 commits)
        mmc: renesas_sdhi: Add compatible string for RZ/G2L family, RZ/G3S, and RZ/V2M SoCs
        dt-bindings: mmc: renesas,sdhi: Document RZ/G2L family compatibility
        dt-bindings: mmc: renesas,sdhi: Group single const value items into an enum list
        mmc: renesas_sdhi: Set the SDBUF after reset
        mmc: core: Increase the timeout period of the ACMD41 command
        mmc: core: Convert to use __mmc_poll_for_busy() SD_APP_OP_COND too
        mmc: atmel-mci: Switch to use dev_err_probe()
        mmc: atmel-mci: Incapsulate used to be a platform data into host structure
        mmc: atmel-mci: Replace platform device pointer by generic one
        mmc: atmel-mci: Use temporary variable for struct device
        mmc: atmel-mci: Get rid of platform data leftovers
        mmc: sdhci-of-dwcmshc: Add tuning support for Sophgo CV1800B and SG200X
        mmc: sdhci-of-dwcmshc: Remove useless "&" of th1520_execute_tuning
        mmc: sdhci-s3c: Choose sdhci_ops based on variant
        mmc: sdhci_am654: Constify struct sdhci_ops
        mmc: sdhci-sprd: Constify struct sdhci_ops
        mmc: sdhci-omap: Constify struct sdhci_ops
        mmc: sdhci-esdhc-mcf: Constify struct sdhci_ops
        mmc: slot-gpio: Use irq_handler_t type
        mmc: sdhci-acpi: Add quirk to enable pull-up on the card-detect GPIO on Asus T100TA
        ...
      8b06f753
    • Linus Torvalds's avatar
      Merge tag 'pmdomain-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm · 8b35a3bb
      Linus Torvalds authored
      Pull pmdomain updates from Ulf Hansson:
       "pmdomain core:
         - Don't clear suspended_count at genpd_prepare()
         - Update the rejected/usage counters at system suspend too
      
        pmdomain providers:
         - ti-sci: Fix duplicate PD referrals
         - mediatek: Add MT8188 buck isolation setting
         - renesas: Add R-Car M3-W power-off delay quirk
         - renesas: Split R-Car M3-W and M3-W+ sub-drivers
      
        cpuidle-psci:
         - Update MAINTAINERS to set a git for DT IDLE PM DOMAIN/ARM PSCI PM
           DOMAIN
         - Update init level to core_initcall()
         - Drop superfluous wrappers psci_dt_attach|detach_cpu()"
      
      * tag 'pmdomain-v6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
        pmdomain: ti-sci: Fix duplicate PD referrals
        pmdomain: core: Don't clear suspended_count at genpd_prepare()
        pmdomain: core: Update the rejected/usage counters at system suspend too
        pmdomain: renesas: rcar-sysc: Add R-Car M3-W power-off delay quirk
        pmdomain: renesas: rcar-sysc: Remove rcar_sysc_nullify() helper
        pmdomain: renesas: rcar-sysc: Split R-Car M3-W and M3-W+ sub-drivers
        pmdomain: renesas: rcar-sysc: Absorb rcar_sysc_ch into rcar_sysc_pd
        MAINTAINERS: Add a git for the DT IDLE PM DOMAIN
        MAINTAINERS: Add a git for the ARM PSCI PM DOMAIN
        cpuidle: psci: Update init level to core_initcall()
        cpuidle: psci: Drop superfluous wrappers psci_dt_attach|detach_cpu()
        pmdomain: mediatek: Add MT8188 buck isolation setting
        pmdomain: mediatek: scpsys: drop driver owner assignment
      8b35a3bb
    • Linus Torvalds's avatar
      Merge tag 'media/v6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 6fd600d7
      Linus Torvalds authored
      Pull media updates from Mauro Carvalho Chehab:
      
       - New V4L2 ioctl VIDIOC_REMOVE_BUFS
      
       - experimental support for using generic metaformats on V4L2 core
      
       - New drivers: Intel IPU6 controller driver, Broadcom BCM283x/BCM271x
      
       - More cleanups at atomisp driver
      
       - Usual bunch of driver cleanups, improvements and fixes
      
      * tag 'media/v6.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (328 commits)
        media: bcm2835-unicam: Depend on COMMON_CLK
        Revert "media: v4l2-ctrls: show all owned controls in log_status"
        media: ov2740: Ensure proper reset sequence on probe()
        media: intel/ipu6: Don't print user-triggerable errors to kernel log
        media: bcm2835-unicam: Fix driver path in MAINTAINERS
        media: bcm2835-unicam: Fix a NULL vs IS_ERR() check
        media: bcm2835-unicam: Do not print error when irq not found
        media: bcm2835-unicam: Do not replace IRQ retcode during probe
        media: bcm2835-unicam: Convert to platform remove callback returning void
        media: media: intel/ipu6: Fix spelling mistake "remappinp" -> "remapping"
        media: intel/ipu6: explicitly include vmalloc.h
        media: cec.h: Fix kerneldoc
        media: uvcvideo: Refactor iterators
        media: v4l: async: refactor v4l2_async_create_ancillary_links
        media: intel/ipu6: Don't re-allocate memory for firmware
        media: dvb-frontends: tda10048: Fix integer overflow
        media: tc358746: Use the correct div_ function
        media: i2c: st-mipid02: Use the correct div function
        media: tegra-vde: Refactor timeout handling
        media: stk1160: Use min macro
        ...
      6fd600d7
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2024-05-16' of https://gitlab.freedesktop.org/drm/kernel · 972a2543
      Linus Torvalds authored
      Pull drm fix from Dave Airlie:
      
       - fix breakage in buddy allocator
      
      * tag 'drm-next-2024-05-16' of https://gitlab.freedesktop.org/drm/kernel:
        drm/tests: Add a unit test for range bias allocation
        drm/buddy: Fix the range bias clear memory allocation issue
      972a2543
    • Michael Ellerman's avatar
      powerpc/fadump: Fix section mismatch warning · 61700f81
      Michael Ellerman authored
      With some compilers/configs fadump_setup_param_area() isn't inlined into
      its caller (which is __init), leading to a section mismatch warning:
      
        WARNING: modpost: vmlinux: section mismatch in reference:
        fadump_setup_param_area+0x200 (section: .text.fadump_setup_param_area)
        -> memblock_phys_alloc_range (section: .init.text)
      
      Fix it by adding an __init annotation.
      
      Fixes: 683eab94 ("powerpc/fadump: setup additional parameters for dump capture kernel")
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Closes: https://lore.kernel.org/all/20240515163708.3380c4d1@canb.auug.org.au/Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/all/202405140922.oucLOx4Y-lkp@intel.com/Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Link: https://msgid.link/20240516132631.347956-1-mpe@ellerman.id.au
      61700f81
    • Russell King (Oracle)'s avatar
    • Miquel Raynal's avatar
      Merge tag 'nand/for-6.10' into mtd/next · 552c9380
      Miquel Raynal authored
      Raw NAND:
      
      Two small fixes, one in the Hynix vendor code for properly returning an
      error which might have been ignored and another in the Davinci driver to
      properly synchronize the controller with the gpio domain.
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      552c9380
    • Miquel Raynal's avatar
      Merge tag 'spi-nor/for-6.10' into mtd/next · 964b8998
      Miquel Raynal authored
      SPI NOR now uses div_u64() instead of div64_u64() in places where the
      divisor is 32 bits. Many 32 bit architectures can optimize this variant
      better than a full 64 bit divide.
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      964b8998
    • Arunpravin Paneer Selvam's avatar
      drm/tests: Add a unit test for range bias allocation · 431c590c
      Arunpravin Paneer Selvam authored
      Allocate cleared blocks in the bias range when the DRM
      buddy's clear avail is zero. This will validate the bias
      range allocation in scenarios like system boot when no
      cleared blocks are available and exercise the fallback
      path too. The resulting blocks should always be dirty.
      
      v1:(Matthew)
        - move the size to the variable declaration section.
        - move the mm.clear_avail init to allocator init.
      Signed-off-by: default avatarArunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240514145636.16253-2-Arunpravin.PaneerSelvam@amd.com
      431c590c
    • Arunpravin Paneer Selvam's avatar
      drm/buddy: Fix the range bias clear memory allocation issue · bb21700b
      Arunpravin Paneer Selvam authored
      Problem statement: During the system boot time, an application request
      for the bulk volume of cleared range bias memory when the clear_avail
      is zero, we dont fallback into normal allocation method as we had an
      unnecessary clear_avail check which prevents the fallback method leads
      to fb allocation failure following system goes into unresponsive state.
      
      Solution: Remove the unnecessary clear_avail check in the range bias
      allocation function.
      
      v2: add a kunit for this corner case (Daniel Vetter)
      Signed-off-by: default avatarArunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
      Fixes: 96950929 ("drm/buddy: Implement tracking clear page feature")
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240514145636.16253-1-Arunpravin.PaneerSelvam@amd.com
      bb21700b
    • Linus Torvalds's avatar
      Merge tag 'wq-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 3c999d1a
      Linus Torvalds authored
      Pull workqueue updates from Tejun Heo:
      
       - Work items can now be disabled and enabled, and cancel_work_sync()
         and disable_work() can be called form atomic contexts for BH work
         items.
      
         This closes feature gap with tasklet and should allow converting all
         existing tasklet users to BH workqueues.
      
       - Improve pool sharing for unbound workqueues with strict affinity.
      
       - Misc changes including doc updates, improved debug annotations and
         cleanups.
      
      * tag 'wq-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: Use "@..." in function comment to describe variable length argument
        workqueue: Add destroy_work_on_stack() in workqueue_softirq_dead()
        workqueue: remove unnecessary import and function in wq_monitor.py
        workqueue: Introduce enable_and_queue_work() convenience function
        workqueue: add function in event of workqueue_activate_work
        workqueue: Cleanup subsys attribute registration
        workqueue: Use list_last_entry() to get the last idle worker
        workqueue: Move attrs->cpumask out of worker_pool's properties when attrs->affn_strict
        workqueue: Use INIT_WORK_ONSTACK in workqueue_softirq_dead()
        workqueue: Allow cancel_work_sync() and disable_work() from atomic contexts on BH work items
        workqueue: Remember whether a work item was on a BH workqueue
        workqueue: Remove WORK_OFFQ_CANCELING
        workqueue: Implement disable/enable for (delayed) work items
        workqueue: Preserve OFFQ bits in cancel[_sync] paths
      3c999d1a
    • Linus Torvalds's avatar
      Merge tag 'cgroup-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · de6fef50
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
      
       - The locking around cpuset hotplug processing has always been a bit of
         mess which was worked around by making hotplug processing
         asynchronous. The asynchronity isn't great and led to other issues.
      
         We tried to make the behavior synchronous a while ago but that led to
         lockdep splats. Waiman took another stab at cleaning up and making it
         synchronous. The patch has been in -next for well over a month and
         there haven't been any complaints, so fingers crossed.
      
       - Tracepoints added to help understanding rstat lock contentions.
      
       - A bunch of minor changes - doc updates, code cleanups and selftests.
      
      * tag 'cgroup-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (24 commits)
        cgroup/rstat: add cgroup_rstat_cpu_lock helpers and tracepoints
        selftests/cgroup: Drop define _GNU_SOURCE
        docs: cgroup-v1: Update page cache removal functions
        selftests/cgroup: fix uninitialized variables in test_zswap.c
        selftests/cgroup: cpu_hogger init: use {} instead of {NULL}
        selftests/cgroup: fix clang warnings: uninitialized fd variable
        selftests/cgroup: fix clang build failures for abs() calls
        cgroup/cpuset: Remove outdated comment in sched_partition_write()
        cgroup/cpuset: Fix incorrect top_cpuset flags
        cgroup/cpuset: Avoid clearing CS_SCHED_LOAD_BALANCE twice
        cgroup/cpuset: Statically initialize more members of top_cpuset
        cgroup: Avoid unnecessary looping in cgroup_no_v1()
        cgroup, legacy_freezer: update comment for freezer_css_offline()
        docs, cgroup: add entries for pids to cgroup-v2.rst
        cgroup: don't call cgroup1_pidlist_destroy_all() for v2
        cgroup_freezer: update comment for freezer_css_online()
        cgroup/rstat: desc member cgrp in cgroup_rstat_flush_release
        cgroup/rstat: add cgroup_rstat_lock helpers and tracepoints
        cgroup/pids: Remove superfluous zeroing
        docs: cgroup-v1: Fix description for css_online
        ...
      de6fef50
  5. 15 May, 2024 8 commits
    • Stephen Brennan's avatar
      kprobe/ftrace: bail out if ftrace was killed · 1a7d0890
      Stephen Brennan authored
      If an error happens in ftrace, ftrace_kill() will prevent disarming
      kprobes. Eventually, the ftrace_ops associated with the kprobes will be
      freed, yet the kprobes will still be active, and when triggered, they
      will use the freed memory, likely resulting in a page fault and panic.
      
      This behavior can be reproduced quite easily, by creating a kprobe and
      then triggering a ftrace_kill(). For simplicity, we can simulate an
      ftrace error with a kernel module like [1]:
      
      [1]: https://github.com/brenns10/kernel_stuff/tree/master/ftrace_killer
      
        sudo perf probe --add commit_creds
        sudo perf trace -e probe:commit_creds
        # In another terminal
        make
        sudo insmod ftrace_killer.ko  # calls ftrace_kill(), simulating bug
        # Back to perf terminal
        # ctrl-c
        sudo perf probe --del commit_creds
      
      After a short period, a page fault and panic would occur as the kprobe
      continues to execute and uses the freed ftrace_ops. While ftrace_kill()
      is supposed to be used only in extreme circumstances, it is invoked in
      FTRACE_WARN_ON() and so there are many places where an unexpected bug
      could be triggered, yet the system may continue operating, possibly
      without the administrator noticing. If ftrace_kill() does not panic the
      system, then we should do everything we can to continue operating,
      rather than leave a ticking time bomb.
      
      Link: https://lore.kernel.org/all/20240501162956.229427-1-stephen.s.brennan@oracle.com/Signed-off-by: default avatarStephen Brennan <stephen.s.brennan@oracle.com>
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Acked-by: default avatarGuo Ren <guoren@kernel.org>
      Reviewed-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      1a7d0890
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · f4b0c4b5
      Linus Torvalds authored
      Pull KVM updates from Paolo Bonzini:
       "ARM:
      
         - Move a lot of state that was previously stored on a per vcpu basis
           into a per-CPU area, because it is only pertinent to the host while
           the vcpu is loaded. This results in better state tracking, and a
           smaller vcpu structure.
      
         - Add full handling of the ERET/ERETAA/ERETAB instructions in nested
           virtualisation. The last two instructions also require emulating
           part of the pointer authentication extension. As a result, the trap
           handling of pointer authentication has been greatly simplified.
      
         - Turn the global (and not very scalable) LPI translation cache into
           a per-ITS, scalable cache, making non directly injected LPIs much
           cheaper to make visible to the vcpu.
      
         - A batch of pKVM patches, mostly fixes and cleanups, as the
           upstreaming process seems to be resuming. Fingers crossed!
      
         - Allocate PPIs and SGIs outside of the vcpu structure, allowing for
           smaller EL2 mapping and some flexibility in implementing more or
           less than 32 private IRQs.
      
         - Purge stale mpidr_data if a vcpu is created after the MPIDR map has
           been created.
      
         - Preserve vcpu-specific ID registers across a vcpu reset.
      
         - Various minor cleanups and improvements.
      
        LoongArch:
      
         - Add ParaVirt IPI support
      
         - Add software breakpoint support
      
         - Add mmio trace events support
      
        RISC-V:
      
         - Support guest breakpoints using ebreak
      
         - Introduce per-VCPU mp_state_lock and reset_cntx_lock
      
         - Virtualize SBI PMU snapshot and counter overflow interrupts
      
         - New selftests for SBI PMU and Guest ebreak
      
         - Some preparatory work for both TDX and SNP page fault handling.
      
           This also cleans up the page fault path, so that the priorities of
           various kinds of fauls (private page, no memory, write to read-only
           slot, etc.) are easier to follow.
      
        x86:
      
         - Minimize amount of time that shadow PTEs remain in the special
           REMOVED_SPTE state.
      
           This is a state where the mmu_lock is held for reading but
           concurrent accesses to the PTE have to spin; shortening its use
           allows other vCPUs to repopulate the zapped region while the zapper
           finishes tearing down the old, defunct page tables.
      
         - Advertise the max mappable GPA in the "guest MAXPHYADDR" CPUID
           field, which is defined by hardware but left for software use.
      
           This lets KVM communicate its inability to map GPAs that set bits
           51:48 on hosts without 5-level nested page tables. Guest firmware
           is expected to use the information when mapping BARs; this avoids
           that they end up at a legal, but unmappable, GPA.
      
         - Fixed a bug where KVM would not reject accesses to MSR that aren't
           supposed to exist given the vCPU model and/or KVM configuration.
      
         - As usual, a bunch of code cleanups.
      
        x86 (AMD):
      
         - Implement a new and improved API to initialize SEV and SEV-ES VMs,
           which will also be extendable to SEV-SNP.
      
           The new API specifies the desired encryption in KVM_CREATE_VM and
           then separately initializes the VM. The new API also allows
           customizing the desired set of VMSA features; the features affect
           the measurement of the VM's initial state, and therefore enabling
           them cannot be done tout court by the hypervisor.
      
           While at it, the new API includes two bugfixes that couldn't be
           applied to the old one without a flag day in userspace or without
           affecting the initial measurement. When a SEV-ES VM is created with
           the new VM type, KVM_GET_REGS/KVM_SET_REGS and friends are rejected
           once the VMSA has been encrypted. Also, the FPU and AVX state will
           be synchronized and encrypted too.
      
         - Support for GHCB version 2 as applicable to SEV-ES guests.
      
           This, once more, is only accessible when using the new
           KVM_SEV_INIT2 flow for initialization of SEV-ES VMs.
      
        x86 (Intel):
      
         - An initial bunch of prerequisite patches for Intel TDX were merged.
      
           They generally don't do anything interesting. The only somewhat
           user visible change is a new debugging mode that checks that KVM's
           MMU never triggers a #VE virtualization exception in the guest.
      
         - Clear vmcs.EXIT_QUALIFICATION when synthesizing an EPT Misconfig
           VM-Exit to L1, as per the SDM.
      
        Generic:
      
         - Use vfree() instead of kvfree() for allocations that always use
           vcalloc() or __vcalloc().
      
         - Remove .change_pte() MMU notifier - the changes to non-KVM code are
           small and Andrew Morton asked that I also take those through the
           KVM tree.
      
           The callback was only ever implemented by KVM (which was also the
           original user of MMU notifiers) but it had been nonfunctional ever
           since calls to set_pte_at_notify were wrapped with
           invalidate_range_start and invalidate_range_end... in 2012.
      
        Selftests:
      
         - Enhance the demand paging test to allow for better reporting and
           stressing of UFFD performance.
      
         - Convert the steal time test to generate TAP-friendly output.
      
         - Fix a flaky false positive in the xen_shinfo_test due to comparing
           elapsed time across two different clock domains.
      
         - Skip the MONITOR/MWAIT test if the host doesn't actually support
           MWAIT.
      
         - Avoid unnecessary use of "sudo" in the NX hugepage test wrapper
           shell script, to play nice with running in a minimal userspace
           environment.
      
         - Allow skipping the RSEQ test's sanity check that the vCPU was able
           to complete a reasonable number of KVM_RUNs, as the assert can fail
           on a completely valid setup.
      
           If the test is run on a large-ish system that is otherwise idle,
           and the test isn't affined to a low-ish number of CPUs, the vCPU
           task can be repeatedly migrated to CPUs that are in deep sleep
           states, which results in the vCPU having very little net runtime
           before the next migration due to high wakeup latencies.
      
         - Define _GNU_SOURCE for all selftests to fix a warning that was
           introduced by a change to kselftest_harness.h late in the 6.9
           cycle, and because forcing every test to #define _GNU_SOURCE is
           painful.
      
         - Provide a global pseudo-RNG instance for all tests, so that library
           code can generate random, but determinstic numbers.
      
         - Use the global pRNG to randomly force emulation of select writes
           from guest code on x86, e.g. to help validate KVM's emulation of
           locked accesses.
      
         - Allocate and initialize x86's GDT, IDT, TSS, segments, and default
           exception handlers at VM creation, instead of forcing tests to
           manually trigger the related setup.
      
        Documentation:
      
         - Fix a goof in the KVM_CREATE_GUEST_MEMFD documentation"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (225 commits)
        selftests/kvm: remove dead file
        KVM: selftests: arm64: Test vCPU-scoped feature ID registers
        KVM: selftests: arm64: Test that feature ID regs survive a reset
        KVM: selftests: arm64: Store expected register value in set_id_regs
        KVM: selftests: arm64: Rename helper in set_id_regs to imply VM scope
        KVM: arm64: Only reset vCPU-scoped feature ID regs once
        KVM: arm64: Reset VM feature ID regs from kvm_reset_sys_regs()
        KVM: arm64: Rename is_id_reg() to imply VM scope
        KVM: arm64: Destroy mpidr_data for 'late' vCPU creation
        KVM: arm64: Use hVHE in pKVM by default on CPUs with VHE support
        KVM: arm64: Fix hvhe/nvhe early alias parsing
        KVM: SEV: Allow per-guest configuration of GHCB protocol version
        KVM: SEV: Add GHCB handling for termination requests
        KVM: SEV: Add GHCB handling for Hypervisor Feature Support requests
        KVM: SEV: Add support to handle AP reset MSR protocol
        KVM: x86: Explicitly zero kvm_caps during vendor module load
        KVM: x86: Fully re-initialize supported_mce_cap on vendor module load
        KVM: x86: Fully re-initialize supported_vm_types on vendor module load
        KVM: x86/mmu: Sanity check that __kvm_faultin_pfn() doesn't create noslot pfns
        KVM: x86/mmu: Initialize kvm_page_fault's pfn and hva to error values
        ...
      f4b0c4b5
    • Tejun Heo's avatar
      a2a58909
    • Linus Torvalds's avatar
      Merge tag 'cxl-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl · 2e925002
      Linus Torvalds authored
      Pull CXL updates from Dave Jiang:
      
       - Three CXL mailbox passthrough commands are added to support the
         populating and clearing of vendor debug logs:
           - Get Log Capabilities
           - Get Supported Log Sub-List Commands
           - Clear Log
      
       - Add support of Device Phyiscal Address (DPA) to Host Physical Address
         (HPA) translation for CXL events of cxl_dram and cxl_general media.
      
         This allows user space to figure out which CXL region the event
         occured via trace event.
      
       - Connect CXL to CPER reporting.
      
         If a device is configured for firmware first, CXL event records are
         not sent directly to the host. Those records are reported through EFI
         Common Platform Error Records (CPER). Add support to route the CPER
         records through the CXL sub-system in order to provide DPA to HPA
         translation and also event decoding and tracing. This is useful for
         users to determine which system issues may correspond to specific
         hardware events.
      
       - A number of misc cleanups and fixes:
           - Fix for compile warning of cxl_security_ops
           - Add debug message for invalid interleave granularity
           - Enhancement to cxl-test event testing
           - Add dev_warn() on unsupported mixed mode decoder
           - Fix use of phys_to_target_node() for x86
           - Use helper function for decoder enum instead of open coding
           - Include missing headers for cxl-event
           - Fix MAINTAINERS file entry
           - Fix cxlr_pmem memory leak
           - Cleanup __cxl_parse_cfmws via scope-based resource menagement
           - Convert cxl_pmem_region_alloc() to scope-based resource management
      
      * tag 'cxl-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl: (21 commits)
        cxl/cper: Remove duplicated GUID defines
        cxl/cper: Fix non-ACPI-APEI-GHES build
        cxl/pci: Process CPER events
        acpi/ghes: Process CXL Component Events
        cxl/region: Convert cxl_pmem_region_alloc to scope-based resource management
        cxl/acpi: Cleanup __cxl_parse_cfmws()
        cxl/region: Fix cxlr_pmem leaks
        cxl/core: Add region info to cxl_general_media and cxl_dram events
        cxl/region: Move cxl_trace_hpa() work to the region driver
        cxl/region: Move cxl_dpa_to_region() work to the region driver
        cxl/trace: Correct DPA field masks for general_media & dram events
        MAINTAINERS: repair file entry in COMPUTE EXPRESS LINK
        cxl/cxl-event: include missing <linux/types.h> and <linux/uuid.h>
        cxl/hdm: Debug, use decoder name function
        cxl: Fix use of phys_to_target_node() for x86
        cxl/hdm: dev_warn() on unsupported mixed mode decoder
        cxl/test: Enhance event testing
        cxl/hdm: Add debug message for invalid interleave granularity
        cxl: Fix compile warning for cxl_security_ops extern
        cxl/mbox: Add Clear Log mailbox command
        ...
      2e925002
    • Linus Torvalds's avatar
      Merge tag 'libnvdimm-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · c405aa3e
      Linus Torvalds authored
      Pull nvdimm updates from Ira Weiny:
       "The changes include removing duplicate code and updating the nvdimm
        tree to the current kernel interfaces such as using const for struct
        device_type and changing the platform remove callback signature"
      
      * tag 'libnvdimm-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        dax: remove redundant assignment to variable rc
        ndtest: Convert to platform remove callback returning void
        nvdimm/btt: always set max_integrity_segments
        nvdimm: remove nd_integrity_init
        dax: constify the struct device_type usage
        powerpc/papr_scm: Move duplicate definitions to common header files
      c405aa3e
    • Linus Torvalds's avatar
      Merge tag 'modules-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux · a4946824
      Linus Torvalds authored
      Pull modules updates from Luis Chamberlain:
       "Finally something fun. Mike Rapoport does some cleanup to allow us to
        take out module_alloc() out of modules into a new paint shedded
        execmem_alloc() and execmem_free() so to make emphasis these helpers
        are actually used outside of modules.
      
        It starts with a non-functional changes API rename / placeholders to
        then allow architectures to define their requirements into a new shiny
        struct execmem_info with ranges, and requirements for those ranges.
      
        Archs now can intitialize this execmem_info as the last part of
        mm_core_init() if they have to diverge from the norm. Each range is a
        known type clearly articulated and spelled out in enum execmem_type.
      
        Although a lot of this is major cleanup and prep work for future
        enhancements an immediate clear gain is we get to enable KPROBES
        without MODULES now. That is ultimately what motiviated to pick this
        work up again, now with smaller goal as concrete stepping stone"
      
      * tag 'modules-6.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux:
        bpf: remove CONFIG_BPF_JIT dependency on CONFIG_MODULES of
        kprobes: remove dependency on CONFIG_MODULES
        powerpc: use CONFIG_EXECMEM instead of CONFIG_MODULES where appropriate
        x86/ftrace: enable dynamic ftrace without CONFIG_MODULES
        arch: make execmem setup available regardless of CONFIG_MODULES
        powerpc: extend execmem_params for kprobes allocations
        arm64: extend execmem_info for generated code allocations
        riscv: extend execmem_params for generated code allocations
        mm/execmem, arch: convert remaining overrides of module_alloc to execmem
        mm/execmem, arch: convert simple overrides of module_alloc to execmem
        mm: introduce execmem_alloc() and execmem_free()
        module: make module_memory_{alloc,free} more self-contained
        sparc: simplify module_alloc()
        nios2: define virtual address space for modules
        mips: module: rename MODULE_START to MODULES_VADDR
        arm64: module: remove unneeded call to kasan_alloc_module_shadow()
        kallsyms: replace deprecated strncpy with strscpy
        module: allow UNUSED_KSYMS_WHITELIST to be relative against objtree.
      a4946824
    • Geert Uytterhoeven's avatar
      ARM: 9398/1: Fix userspace enter on LPAE with CC_OPTIMIZE_FOR_SIZE=y · eebadafc
      Geert Uytterhoeven authored
      Booting an LPAE-enabled kernel built with CONFIG_CC_OPTIMIZE_FOR_SIZE=y
      fails when starting userspace:
      
          Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004
          CPU: 1 PID: 1 Comm: init Tainted: G        W        N 6.9.0-rc1-koelsch-00004-g7af5b901 #1930
          Hardware name: Generic R-Car Gen2 (Flattened Device Tree)
          Call trace:
           unwind_backtrace from show_stack+0x10/0x14
           show_stack from dump_stack_lvl+0x78/0xa8
           dump_stack_lvl from panic+0x118/0x398
           panic from do_exit+0x1ec/0x938
           do_exit from sys_exit_group+0x0/0x10
          ---[ end Kernel panic - not syncing: Attempted to kill init!  exitcode=0x00000004 ]---
      
      Add the missing memory clobber to cpu_set_ttbcr(), as suggested by
      Russell King.
      
      Force inlining of uaccess_save_and_enable(), as suggested by Ard
      Biesheuvel.
      
      The latter fixes booting on Koelsch.
      
      Closes: https://lore.kernel.org/r/CAMuHMdWTAJcZ9BReWNhpmsgkOzQxLNb5OhNYxzxv6D5TSh2fwQ@mail.gmail.com/
      
      Fixes: 7af5b901 ("ARM: 9358/2: Implement PAN for LPAE by TTBR0 page table walks disablement")
      Acked-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Tested-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
      eebadafc
    • Linus Torvalds's avatar
      Merge tag 'livepatching-for-6.10' of... · 8c06da67
      Linus Torvalds authored
      Merge tag 'livepatching-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching
      
      Pull livepatching update from Petr Mladek:
      
       - Use more informative names for the livepatch transition states
      
      * tag 'livepatching-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching:
        livepatch: Rename KLP_* to KLP_TRANSITION_*
      8c06da67