1. 18 Sep, 2024 15 commits
    • Linus Torvalds's avatar
      Merge tag 'pmdomain-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm · 200289db
      Linus Torvalds authored
      Pull pmdomain updates from Ulf Hansson:
       "pmdomain core:
         - Add support for s2idle for CPU PM domains on PREEMPT_RT
         - Add device managed version of dev_pm_domain_attach|detach_list()
         - Improve layout of the debugfs summary table
      
        pmdomain providers:
         - amlogic: Remove obsolete vpu domain driver
         - bcm: raspberrypi: Add support for devices used as wakeup-sources
         - imx: Fixup clock handling for imx93 at driver remove
         - rockchip: Add gating support for RK3576
         - rockchip: Add support for RK3576 SoC
         - Some OF parsing simplifications
         - Some simplifications by using dev_err_probe() and guard()
      
        pmdomain consumers:
         - qcom/media/venus: Convert to the device managed APIs for PM domains
      
        cpuidle-psci:
         - Add support for s2idle/s2ram for the hierarchical topology on
           PREEMPT_RT
         - Some OF parsing simplifications"
      
      * tag 'pmdomain-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm: (39 commits)
        pmdomain: core: Reduce debug summary table width
        pmdomain: core: Move mode_status_str()
        pmdomain: core: Fix "managed by" alignment in debug summary
        pmdomain: core: Harden inter-column space in debug summary
        pmdomain: rockchip: Add gating masks for rk3576
        pmdomain: rockchip: Add gating support
        pmdomain: rockchip: Simplify dropping OF node reference
        pmdomain: mediatek: make use of dev_err_cast_probe()
        pmdomain: imx93-pd: drop the context variable "init_off"
        pmdomain: imx93-pd: don't unprepare clocks on driver remove
        pmdomain: imx93-pd: replace dev_err() with dev_err_probe()
        pmdomain: qcom: rpmpd: Simplify locking with guard()
        pmdomain: qcom: rpmhpd: Simplify locking with guard()
        pmdomain: qcom: cpr: Simplify locking with guard()
        pmdomain: qcom: cpr: Simplify with dev_err_probe()
        pmdomain: imx: gpcv2: Simplify with scoped for each OF child loop
        pmdomain: imx: gpc: Simplify with scoped for each OF child loop
        pmdomain: rockchip: SimplUlf Hanssonify locking with guard()
        pmdomain: rockchip: Simplify with scoped for each OF child loop
        pmdomain: qcom-cpr: Use scope based of_node_put() to simplify code.
        ...
      200289db
    • Linus Torvalds's avatar
      Merge tag 'pwrseq-updates-for-v6.12-rc1' of... · 2fe3c78a
      Linus Torvalds authored
      Merge tag 'pwrseq-updates-for-v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
      
      Pull power sequencing updates from Bartosz Golaszewski:
       "There's one change adding support for a new PMU model and another
        adding documentation for the subsystem which probably should have been
        part of the initial commit but better late than never:
      
         - add support for the new PMU variant inside the WCN6855 chipset
      
         - add documentation for the subsystem"
      
      * tag 'pwrseq-updates-for-v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        Documentation: add a driver API doc for the power sequencing subsystem
        power: sequencing: qcom-wcn: add support for the WCN6855 PMU
      2fe3c78a
    • Linus Torvalds's avatar
      Merge tag 'gpio-updates-for-v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 9b08f832
      Linus Torvalds authored
      Pull gpio updates from Bartosz Golaszewski:
       "Core GPIOLIB:
         - provide and add users for a macro allowing to iterate over accepted
           GPIO property names of consumer device nodes
         - remove legacy definitions that are no longer used
         - put legacy GPIO devres helpers together with the rest of the
           deprecated code
         - implement and use swnode_gpio_get_reference(): a wrapper
           simplifying the underlying calls to
           fwnode_property_get_reference_args()
         - use IS_ERR_OR_NULL() where it makes sense
         - replace of_find_property() with of_property_present()
         - simplify code with the scoped variant of OF-node children iterator
      
        Documentation:
         - update GPIO kerneldocs with Return sections
         - fix "Excess struct member description" warnings now being triggered
           with W=1
      
        New drivers:
         - add support for Analog Devices ADP5585
      
        Driver improvements:
         - add support for wake-on-GPIO to gpio-mpc8xxx
         - use GPIO_LOOKUP_IDX() in gpio-virtuser
         - use devm_clk_get_[optional_]enabled() where applicable in several
           drivers
         - replace OF-specific functions with provider-agnostic alternatives
           where possible
         - drop support for legacy platform data from gpio-ath79 and
           gpio-davinci
         - refactor gpio-stmpe
         - improve error reporting in gpio-pca953x
         - add support for reading the direction of pins for some models to
           gpio-vf610
      
        DT bindings:
         - convert the bindings for nxp,lpc3220 to YAML
         - add gpio-reserved-ranges to gpio-davinci
         - simplify the GPIO hog schema
         - fix a GPIO hog issue in bindings for fcs,fxl6408
      
        Other:
         - fix format specifiers in user-space tools
         - remove leftover files on make clean in tools/gpio/"
      
      * tag 'gpio-updates-for-v6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (54 commits)
        gpio: mpc8xxx: switch to using DEFINE_RUNTIME_DEV_PM_OPS()
        gpio: xilinx: Use helper function devm_clk_get_optional_enabled()
        gpio: mb86s7x: Use helper function devm_clk_get_optional_enabled()
        gpio: lpc18xx: Use helper function devm_clk_get_enabled()
        gpio: cadence: Use helper function devm_clk_get_enabled()
        gpio: sama5d2-piobu: convert comma to semicolon
        gpio: mpc8xxx: order headers alphabetically
        gpio: davinci: use devm_clk_get_enabled()
        gpio: davinci: drop platform data support
        gpio: stmpe: Sort headers
        gpio: stmpe: Make use of device properties
        gpio: stmpe: Utilise temporary variable for struct device
        gpio: stmpe: Remove unused 'dev' member of struct stmpe_gpio
        gpio: stmpe: Fix IRQ related error messages
        gpio: pch: kerneldoc fixes for excess members
        gpio: zynq: Simplify using devm_clk_get_enabled()
        gpio: mpc8xxx: Add wake on GPIO support
        gpio: syscon: fix excess struct member build warning
        gpio: stp-xway: Simplify using devm_clk_get_enabled()
        gpiolib: legacy: Consolidate devm_gpio_*() with other legacy APIs
        ...
      9b08f832
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux · cc52dc2f
      Linus Torvalds authored
      Pull pwm updates from Uwe Kleine-König:
       "This contains some cleanups to the core and some mostly minor updates
        to a bunch of drivers and device tree bindings. One thing worth
        pointing out is that it contains an immutable branch containing
        support for a new mfd chip (Analog Devices ADP5585) with several sub
        drivers.
      
        Thanks go to Andrew Kreimer, Clark Wang, Conor Dooley, David Lechner,
        Dmitry Rokosov, Frank Li, Geert Uytterhoeven, George Stark, Jiapeng
        Chong, Krzysztof Kozlowski, Laurent Pinchart, Liao Chen, Liu Ying, Rob
        Herring and Wolfram Sang for code contributions and reviews and to Lee
        Jones for preparing the above mentioned immutable branch"
      
      * tag 'pwm/for-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux: (21 commits)
        pwm: stm32: Fix a typo
        dt-bindings: pwm: amlogic: Add new bindings for meson A1 PWM
        dt-bindings: pwm: amlogic: Add optional power-domains
        pwm: Switch back to struct platform_driver::remove()
        dt-bindings: pwm: allwinner,sun4i-a10-pwm: add top-level constraints
        pwm: axi-pwmgen: use shared macro for version reg
        pwm: atmel-hlcdc: Drop trailing comma
        pwm: atmel-hlcdc: Enable module autoloading
        pwm: omap-dmtimer: Use of_property_read_bool()
        pwm: adp5585: Set OSC_EN bit to 1 when PWM state is enabled
        pwm: lp3943: Fix an incorrect type in lp3943_pwm_parse_dt()
        pwm: Simplify pwm_capture()
        pwm: lp3943: Use of_property_count_u32_elems() to get property length
        pwm: Don't export pwm_capture()
        pwm: Make info in traces about affected pwm more useful
        dt-bindings: pwm: renesas,tpu: Add r8a779h0 support
        dt-bindings: pwm: renesas,pwm-rcar: Add r8a779h0 support
        pwm: adp5585: Add Analog Devices ADP5585 support
        gpio: adp5585: Add Analog Devices ADP5585 support
        mfd: adp5585: Add Analog Devices ADP5585 core support
        ...
      cc52dc2f
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 7fced2a7
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Add documentation for the mmc-test driver
         - Register the eMMC RPMB partition with the RPMB subsystem
         - Some various cleanups
      
        MMC host:
         - dw_mmc-rockchip: Add support for the RK3576 variant
         - renesas_sdhi: Add support for the RZ/V2H(P) variant
         - sdhci_am654: Add a retry mechanism for tuning
         - sdhci-atmel: Convert DT bindings to json schema
         - sdhci-of-dwcmshc:
             - Add eMMC HW reset support for BlueField-3 SoC
             - Add support for the RK3576 variant
             - Add support for the Sophgo SG2042 variant
         - sdhci-of-ma35d1: Add new driver for the Nuvoton MA35D1 SDHCI
      
        Misc/Tee:
         - Add Replay Protected Memory Block (RPMB) subsystem
         - Let optee probe RPMB device using RPMB subsystem"
      
      * tag 'mmc-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (41 commits)
        mmc: core: Use dev_err_probe for deferred regulators
        optee: Fix a NULL vs IS_ERR() check
        mmc: sdhci_am654: Add prints to tuning algorithm
        mmc: sdhci_am654: Add retry tuning
        dt-bindings: mmc: Add support for rk3576 eMMC
        Documentation: mmc: Add mmc-test doc
        rpmb: fix error path in rpmb_dev_register()
        optee: add RPMB dependency
        mmc: block: add RPMB dependency
        mmc: core Convert UNSTUFF_BITS macro to inline function
        dt-bindings: mmc: sdhci-atmel: Convert to json schema
        mmc: core: Convert simple_stroul to kstroul
        mmc: core: Calculate size from pointer
        mmc: cqhci: Make use of cqhci_halted() routine
        mmc: core: Replace the argument of mmc_sd_switch() with defines
        mmc: dw_mmc-rockchip: Add support for rk3576 SoCs
        mmc: dw_mmc-rockchip: Add internal phase support
        dt-bindings: mmc: Add support for rk3576 dw-mshc
        mmc: sdhci-of-dwcmshc: Add hw_reset() support for BlueField-3 SoC
        mmc: core: remove left-over data structure declarations
        ...
      7fced2a7
    • Linus Torvalds's avatar
      Merge tag 'mtd/for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux · 2471d2b3
      Linus Torvalds authored
      Pull MTD updates from Miquel Raynal:
       "MTD changes:
      
         - No particularly important patchset this cycle, but we have a few
           usual improvements: like using a better/more recent helper or
           checking a return value.
      
        Raw NAND changes:
      
         - The use of for_each_child_of_node_scoped() has been spread into the
           subsystem drivers
      
         - a couple of exit path have been fixed (mtk, denali)
      
         - TI GPMC bindings have been enhanced to comply with up-to-date
           partition descriptions
      
         - a load of small and misc fixes
      
        SPI-NAND changes:
      
         - The most impacting series this cycle is bringing support for
           continuous reads in the SPI-NAND subsystem.
      
           This is a feature already merged in the raw NAND subsystem which
           allows optimizing the internal fetch times in the chip while
           reading sequential pages within an eraseblock.
      
           For now only Macronix NANDs benefit from this feature. While we are
           talking about Macronix, some of their chip need an explicit action
           for selecting a different plane, and support for it has also been
           brought.
      
         - The bitflip threshold has also been set to the same arbitrary level
           as in the raw NAND subsystem to optimize wear leveling decisions
      
         - Add upport for a new Winbond chip
      
        SPI NOR changes:
      
         - Add Write Protect support for N25Q064A.
      
         - New flash support for Zetta ZD25Q128C and Spansion S28HS256T.
      
         - Fix a NULL dereference in probe path for flashes without a name.
      
           The probe path tries to access the name without checking its
           existence first. S28HS256T is the first flash to define its entry
           without a name, uncovering this issue"
      
      * tag 'mtd/for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux: (41 commits)
        mtd: spi-nor: fix flash probing
        mtd: spi-nor: spansion: Add support for S28HS256T
        mtd: spi-nor: winbond: add Zetta ZD25Q128C support
        mtd: spi-nor: micron-st: Add n25q064a WP support
        mtd: spi-nor: sst: Factor out common write operation to `sst_nor_write_data()`
        mtd: spinand: macronix: Flag parts needing explicit plane select
        mtd: spinand: Add support for setting plane select bits
        dt-bindings: mtd: ti, gpmc-nand: support partitions node
        mtd: rawnand: mtk: Fix init error path
        mtd: powernv: Add check devm_kasprintf() returned value
        mtd: rawnand: mtk: Factorize out the logic cleaning mtk chips
        mtd: rawnand: atmel: Add message on DMA usage
        mtd: rawnand: meson: Fix typo in function name
        mtd: spi-nand: macronix: Continuous read support
        mtd: spi-nand: macronix: Add a possible bitflip status flag
        mtd: spi-nand: macronix: Extract the bitflip retrieval logic
        mtd: spi-nand: macronix: Fix helper name
        mtd: spi-nand: Expose spinand_write_reg_op()
        mtd: spi-nand: Add continuous read support
        mtd: spi-nand: Isolate the MTD read logic in a helper
        ...
      2471d2b3
    • Linus Torvalds's avatar
      Merge tag 'for-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · 288cb34e
      Linus Torvalds authored
      Pull power supply and reset updates from Sebastian Reichel:
       "Power-supply core:
         - introduce power_supply_show_enum_with_available() helper
         - change usb_types from an array into a bitmask
         - fix early usage of power_supply_property_is_writeable() resulting
           in sysfs files not being writable
         - fix missing temp1_max_alarm attribute in power-supply's hwmon
           devices
      
        Drivers:
         - max1720x: expose nvmem device
         - brcmstb: cleanup driver to use latest APIs
         - max77693: expose input and charging current limit
         - max17042_battery: fix state of charge reading for devices without
           current sensing
         - axp20x_battery: add AXP717 support
         - axp20x_battery: fix min/max voltage properties
         - axp20x_usb_power: add AXP717 support
         - axp20x_usb_power: add DT based input current limit
      
        Documentation updates
      
        Misc minor cleanups and fixes"
      
      * tag 'for-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (38 commits)
        power: supply: hwmon: Fix missing temp1_max_alarm attribute
        power: supply: Drop use_cnt check from power_supply_property_is_writeable()
        power: supply: ab8500: Constify struct kobj_type
        power: supply: max1720x: fix a double free on error in probe()
        power: supply: axp20x_battery: add support for AXP717
        power: supply: axp20x_usb_power: Add support for AXP717
        dt-bindings: power: supply: axp20x: Add AXP717 compatible
        dt-bindings: power: supply: axp20x: Add AXP717 compatible
        power: supply: axp20x_usb_power: Fix spelling mistake "reqested" -> "requested"
        power: supply: Change usb_types from an array into a bitmask
        power: supply: sysfs: Move power_supply_show_enum_with_available() up
        power: supply: sysfs: Add power_supply_show_enum_with_available() helper
        power: supply: rt9467-charger: Remove "usb_type" property write support
        power: supply: ucs1002: Adjust ucs1002_set_usb_type() to accept string values
        power: supply: "usb_type" property may be written to
        power: supply: max1720x: add read support for nvmem
        mfd: axp20x: Add ADC, BAT, and USB cells for AXP717
        power: supply: core: constify psy_tzd_ops
        power: reset: brcmstb: Do not go into infinite loop if reset fails
        power: reset: brcmstb: Use devm_register_sys_off_handler()
        ...
      288cb34e
    • Linus Torvalds's avatar
      Merge tag 'hsi-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · bfbb9632
      Linus Torvalds authored
      Pull HSI update from Sebastian Reichel:
      
       - omap-ssi: remove unnecessary debugfs_create_dir() error check
      
      * tag 'hsi-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        HSI: omap-ssi: Remove unnecessary debugfs_create_dir() error check
      bfbb9632
    • Linus Torvalds's avatar
      Merge tag 'slab-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab · bdf56c75
      Linus Torvalds authored
      Pull slab updates from Vlastimil Babka:
       "This time it's mostly refactoring and improving APIs for slab users in
        the kernel, along with some debugging improvements.
      
         - kmem_cache_create() refactoring (Christian Brauner)
      
           Over the years have been growing new parameters to
           kmem_cache_create() where most of them are needed only for a small
           number of caches - most recently the rcu_freeptr_offset parameter.
      
           To avoid adding new parameters to kmem_cache_create() and adjusting
           all its callers, or creating new wrappers such as
           kmem_cache_create_rcu(), we can now pass extra parameters using the
           new struct kmem_cache_args. Not explicitly initialized fields
           default to values interpreted as unused.
      
           kmem_cache_create() is for now a wrapper that works both with the
           new form: kmem_cache_create(name, object_size, args, flags) and the
           legacy form: kmem_cache_create(name, object_size, align, flags,
           ctor)
      
         - kmem_cache_destroy() waits for kfree_rcu()'s in flight (Vlastimil
           Babka, Uladislau Rezki)
      
           Since SLOB removal, kfree() is allowed for freeing objects
           allocated by kmem_cache_create(). By extension kfree_rcu() as
           allowed as well, which can allow converting simple call_rcu()
           callbacks that only do kmem_cache_free(), as there was never a
           kmem_cache_free_rcu() variant. However, for caches that can be
           destroyed e.g. on module removal, the cache owners knew to issue
           rcu_barrier() first to wait for the pending call_rcu()'s, and this
           is not sufficient for pending kfree_rcu()'s due to its internal
           batching optimizations. Ulad has provided a new
           kvfree_rcu_barrier() and to make the usage less error-prone,
           kmem_cache_destroy() calls it. Additionally, destroying
           SLAB_TYPESAFE_BY_RCU caches now again issues rcu_barrier()
           synchronously instead of using an async work, because the past
           motivation for async work no longer applies. Users of custom
           call_rcu() callbacks should however keep calling rcu_barrier()
           before cache destruction.
      
         - Debugging use-after-free in SLAB_TYPESAFE_BY_RCU caches (Jann Horn)
      
           Currently, KASAN cannot catch UAFs in such caches as it is legal to
           access them within a grace period, and we only track the grace
           period when trying to free the underlying slab page. The new
           CONFIG_SLUB_RCU_DEBUG option changes the freeing of individual
           object to be RCU-delayed, after which KASAN can poison them.
      
         - Delayed memcg charging (Shakeel Butt)
      
           In some cases, the memcg is uknown at allocation time, such as
           receiving network packets in softirq context. With
           kmem_cache_charge() these may be now charged later when the user
           and its memcg is known.
      
         - Misc fixes and improvements (Pedro Falcato, Axel Rasmussen,
           Christoph Lameter, Yan Zhen, Peng Fan, Xavier)"
      
      * tag 'slab-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab: (34 commits)
        mm, slab: restore kerneldoc for kmem_cache_create()
        io_uring: port to struct kmem_cache_args
        slab: make __kmem_cache_create() static inline
        slab: make kmem_cache_create_usercopy() static inline
        slab: remove kmem_cache_create_rcu()
        file: port to struct kmem_cache_args
        slab: create kmem_cache_create() compatibility layer
        slab: port KMEM_CACHE_USERCOPY() to struct kmem_cache_args
        slab: port KMEM_CACHE() to struct kmem_cache_args
        slab: remove rcu_freeptr_offset from struct kmem_cache
        slab: pass struct kmem_cache_args to do_kmem_cache_create()
        slab: pull kmem_cache_open() into do_kmem_cache_create()
        slab: pass struct kmem_cache_args to create_cache()
        slab: port kmem_cache_create_usercopy() to struct kmem_cache_args
        slab: port kmem_cache_create_rcu() to struct kmem_cache_args
        slab: port kmem_cache_create() to struct kmem_cache_args
        slab: add struct kmem_cache_args
        slab: s/__kmem_cache_create/do_kmem_cache_create/g
        memcg: add charging of already allocated slab objects
        mm/slab: Optimize the code logic in find_mergeable()
        ...
      bdf56c75
    • Linus Torvalds's avatar
      Merge tag 'lkmm.2024.09.14b' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · efdfcd40
      Linus Torvalds authored
      Pull memory model doc updates from Paul McKenney:
       "lkmm: Add documentation and mailing list
      
        This contains documentation updates from Andrea Parri and Akira
        Yokosawa. Also, there is now an lkmm@lists.linux.dev, and Boqun Feng's
        update adds this to the LKMM MAINTAINERS entry.
      
        Not included are a couple of more commits from Puranjay Mohan adding
        more atomic operations to LKMM, but these await a herdtools7 release
        that includes tool-side support for this functionality. With luck, I
        will send a separate pull request for these later in the merge window"
      
      * tag 'lkmm.2024.09.14b' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        MAINTAINERS: Add the dedicated maillist info for LKMM
        docs/memory-barriers.txt: Remove left-over references to "CACHE COHERENCY"
        tools/memory-model: simple.txt: Fix stale reference to recipes-pairs.txt
        tools/memory-model: Add locking.txt and glossary.txt to README
        tools/memory-model: Document herd7 (abstract) representation
      efdfcd40
    • Linus Torvalds's avatar
      Merge tag 'misc.2024.09.14a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · 6d450d12
      Linus Torvalds authored
      Pull core dump update from Paul McKenney:
       "Sleep at TASK_IDLE when waiting for application core dump
      
        This causes the coredump_task_exit() function to sleep at TASK_IDLE,
        thus preventing task-blocked splats in case of large core dumps to
        slow devices"
      
      * tag 'misc.2024.09.14a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        exit: Sleep at TASK_IDLE when waiting for application core dump
      6d450d12
    • Linus Torvalds's avatar
      Merge tag 'kcsan.2024.09.14a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu · e651e0a4
      Linus Torvalds authored
      Pull kcsan update from Paul McKenney:
       "Use min() to fix Coccinelle warning.
      
        Courtesy of Thorsten Blum"
      
      * tag 'kcsan.2024.09.14a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu:
        kcsan: Use min() to fix Coccinelle warning
      e651e0a4
    • Linus Torvalds's avatar
      Merge tag 'rcu.release.v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux · 067610eb
      Linus Torvalds authored
      Pull RCU updates from Neeraj Upadhyay:
       "Context tracking:
         - rename context tracking state related symbols and remove references
           to "dynticks" in various context tracking state variables and
           related helpers
         - force context_tracking_enabled_this_cpu() to be inlined to avoid
           leaving a noinstr section
      
        CSD lock:
         - enhance CSD-lock diagnostic reports
         - add an API to provide an indication of ongoing CSD-lock stall
      
        nocb:
         - update and simplify RCU nocb code to handle (de-)offloading of
           callbacks only for offline CPUs
         - fix RT throttling hrtimer being armed from offline CPU
      
        rcutorture:
         - remove redundant rcu_torture_ops get_gp_completed fields
         - add SRCU ->same_gp_state and ->get_comp_state functions
         - add generic test for NUM_ACTIVE_*RCU_POLL* for testing RCU and SRCU
           polled grace periods
         - add CFcommon.arch for arch-specific Kconfig options
         - print number of update types in rcu_torture_write_types()
         - add rcutree.nohz_full_patience_delay testing to the TREE07 scenario
         - add a stall_cpu_repeat module parameter to test repeated CPU stalls
         - add argument to limit number of CPUs a guest OS can use in
           torture.sh
      
        rcustall:
         - abbreviate RCU CPU stall warnings during CSD-lock stalls
         - Allow dump_cpu_task() to be called without disabling preemption
         - defer printing stall-warning backtrace when holding rcu_node lock
      
        srcu:
         - make SRCU gp seq wrap-around faster
         - add KCSAN checks for concurrent updates to ->srcu_n_exp_nodelay and
           ->reschedule_count which are used in heuristics governing
           auto-expediting of normal SRCU grace periods and
           grace-period-state-machine delays
         - mark idle SRCU-barrier callbacks to help identify stuck
           SRCU-barrier callback
      
        rcu tasks:
         - remove RCU Tasks Rude asynchronous APIs as they are no longer used
         - stop testing RCU Tasks Rude asynchronous APIs
         - fix access to non-existent percpu regions
         - check processor-ID assumptions during chosen CPU calculation for
           callback enqueuing
         - update description of rtp->tasks_gp_seq grace-period sequence
           number
         - add rcu_barrier_cb_is_done() to identify whether a given
           rcu_barrier callback is stuck
         - mark idle Tasks-RCU-barrier callbacks
         - add *torture_stats_print() functions to print detailed diagnostics
           for Tasks-RCU variants
         - capture start time of rcu_barrier_tasks*() operation to help
           distinguish a hung barrier operation from a long series of barrier
           operations
      
        refscale:
         - add a TINY scenario to support tests of Tiny RCU and Tiny
           SRCU
         - optimize process_durations() operation
      
        rcuscale:
         - dump stacks of stalled rcu_scale_writer() instances and
           grace-period statistics when rcu_scale_writer() stalls
         - mark idle RCU-barrier callbacks to identify stuck RCU-barrier
           callbacks
         - print detailed grace-period and barrier diagnostics on
           rcu_scale_writer() hangs for Tasks-RCU variants
         - warn if async module parameter is specified for RCU implementations
           that do not have async primitives such as RCU Tasks Rude
         - make all writer tasks report upon hang
         - tolerate repeated GFP_KERNEL failure in rcu_scale_writer()
         - use special allocator for rcu_scale_writer()
         - NULL out top-level pointers to heap memory to avoid double-free
           bugs on modprobe failures
         - maintain per-task instead of per-CPU callbacks count to avoid any
           issues with migration of either tasks or callbacks
         - constify struct ref_scale_ops
      
        Fixes:
         - use system_unbound_wq for kfree_rcu work to avoid disturbing
           isolated CPUs
      
        Misc:
         - warn on unexpected rcu_state.srs_done_tail state
         - better define "atomic" for list_replace_rcu() and
           hlist_replace_rcu() routines
         - annotate struct kvfree_rcu_bulk_data with __counted_by()"
      
      * tag 'rcu.release.v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux: (90 commits)
        rcu: Defer printing stall-warning backtrace when holding rcu_node lock
        rcu/nocb: Remove superfluous memory barrier after bypass enqueue
        rcu/nocb: Conditionally wake up rcuo if not already waiting on GP
        rcu/nocb: Fix RT throttling hrtimer armed from offline CPU
        rcu/nocb: Simplify (de-)offloading state machine
        context_tracking: Tag context_tracking_enabled_this_cpu() __always_inline
        context_tracking, rcu: Rename rcu_dyntick trace event into rcu_watching
        rcu: Update stray documentation references to rcu_dynticks_eqs_{enter, exit}()
        rcu: Rename rcu_momentary_dyntick_idle() into rcu_momentary_eqs()
        rcu: Rename rcu_implicit_dynticks_qs() into rcu_watching_snap_recheck()
        rcu: Rename dyntick_save_progress_counter() into rcu_watching_snap_save()
        rcu: Rename struct rcu_data .exp_dynticks_snap into .exp_watching_snap
        rcu: Rename struct rcu_data .dynticks_snap into .watching_snap
        rcu: Rename rcu_dynticks_zero_in_eqs() into rcu_watching_zero_in_eqs()
        rcu: Rename rcu_dynticks_in_eqs_since() into rcu_watching_snap_stopped_since()
        rcu: Rename rcu_dynticks_in_eqs() into rcu_watching_snap_in_eqs()
        rcu: Rename rcu_dynticks_eqs_online() into rcu_watching_online()
        context_tracking, rcu: Rename rcu_dynticks_curr_cpu_in_eqs() into rcu_is_watching_curr_cpu()
        context_tracking, rcu: Rename rcu_dynticks_task*() into rcu_task*()
        refscale: Constify struct ref_scale_ops
        ...
      067610eb
    • Linus Torvalds's avatar
      Merge tag 'wq-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 85a77db9
      Linus Torvalds authored
      Pull workqueue updates from Tejun Heo:
       "Nothing major:
      
         - workqueue.panic_on_stall boot param added
      
         - alloc_workqueue_lockdep_map() added (used by DRM)
      
         - Other cleanusp and doc updates"
      
      * tag 'wq-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        kernel/workqueue.c: fix DEFINE_PER_CPU_SHARED_ALIGNED expansion
        workqueue: Fix another htmldocs build warning
        workqueue: fix null-ptr-deref on __alloc_workqueue() error
        workqueue: Don't call va_start / va_end twice
        workqueue: Fix htmldocs build warning
        workqueue: Add interface for user-defined workqueue lockdep map
        workqueue: Change workqueue lockdep map to pointer
        workqueue: Split alloc_workqueue into internal function and lockdep init
        Documentation: kernel-parameters: add workqueue.panic_on_stall
        workqueue: add cmdline parameter workqueue.panic_on_stall
      85a77db9
    • Linus Torvalds's avatar
      Merge tag 'cgroup-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 78567e2b
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
      
       - cpuset isolation improvements
      
       - cpuset cgroup1 support is split into its own file behind the new
         config option CONFIG_CPUSET_V1. This makes it the second controller
         which makes cgroup1 support optional after memcg
      
       - Handling of unavailable v1 controller handling improved during
         cgroup1 mount operations
      
       - union_find applied to cpuset. It makes code simpler and more
         efficient
      
       - Reduce spurious events in pids.events
      
       - Cleanups and other misc changes
      
       - Contains a merge of cgroup/for-6.11-fixes to receive cpuset fixes
         that further changes build upon
      
      * tag 'cgroup-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (34 commits)
        cgroup: Do not report unavailable v1 controllers in /proc/cgroups
        cgroup: Disallow mounting v1 hierarchies without controller implementation
        cgroup/cpuset: Expose cpuset filesystem with cpuset v1 only
        cgroup/cpuset: Move cpu.h include to cpuset-internal.h
        cgroup/cpuset: add sefltest for cpuset v1
        cgroup/cpuset: guard cpuset-v1 code under CONFIG_CPUSETS_V1
        cgroup/cpuset: rename functions shared between v1 and v2
        cgroup/cpuset: move v1 interfaces to cpuset-v1.c
        cgroup/cpuset: move validate_change_legacy to cpuset-v1.c
        cgroup/cpuset: move legacy hotplug update to cpuset-v1.c
        cgroup/cpuset: add callback_lock helper
        cgroup/cpuset: move memory_spread to cpuset-v1.c
        cgroup/cpuset: move relax_domain_level to cpuset-v1.c
        cgroup/cpuset: move memory_pressure to cpuset-v1.c
        cgroup/cpuset: move common code to cpuset-internal.h
        cgroup/cpuset: introduce cpuset-v1.c
        selftest/cgroup: Make test_cpuset_prs.sh deal with pre-isolated CPUs
        cgroup/cpuset: Account for boot time isolated CPUs
        cgroup/cpuset: remove use_parent_ecpus of cpuset
        cgroup/cpuset: remove fetch_xcpus
        ...
      78567e2b
  2. 17 Sep, 2024 25 commits
    • Linus Torvalds's avatar
      Merge tag 'sound-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 2f27fce6
      Linus Torvalds authored
      Pull sound updates from Takashi Iwai:
       "A fairly big update at this time, both in core and driver sides.
      
        The core received rewrites in PCM buffer allocation handling and
        locking optimizations, PCM rate updates followed by lots of cleanups.
      
        In ASoC side, the legacy Intel drivers have been deprecated by AVS
        drivers which leaded to the significant amount of code reduction.
        SoundWire driver updates and other cleanups contributed more code
        reduction, too.
      
        USB-audio driver received a large cleanup of its big quirk table, and
        the old snd_print*() API usages in many legacy drivers are replaced
        with the standard print API.
      
        Here are some highlights:
      
        Core:
         - More optimized locking in ALSA control code
         - Rewrites of memalloc helpers for better DMA API usage
         - Drop of obsoleted vmalloc PCM buffer helper API
         - Continued MIDI2 UMP updates
         - Support of a new user-space driven timer instance
         - Update for more PCM support rates and cleanups
         - Xrun counter report in the proc files
      
        ASoC:
         - Continued simplification and cleanup works for ASoC
         - Extensive cleanups and refactoring of the Soundwire drivers
         - Removal of Intel machine support obsoleted by the AVS driver
         - Lots of DT schema conversions
         - Machine support for many AMD and Intel x86 platforms
         - Support for AMD ACP 7.1, Mediatek MT6367 and MT8365, Realtek
           RTL1320 SoundWire and rev C, and Texas Instruments TAS2563
      
        USB-audio:
         - Add support of multiple control interfaces
         - A large rewrite of quirk table with macros
         - Support for RME Digiface USB
      
        HD-audio:
         - Cleanup of quirk code for Samsung Galaxy laptops
         - Clean up of detection of Cirrus codecs
         - C-Media CM9825 HD-audio codec support
      
        Others:
         - Rewrites to standard print API in a lot of legacy drivers"
      
      * tag 'sound-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (410 commits)
        ASoC: topology: Fix redundant logical jump
        ASoC: tas2781: Add Calibration Kcontrols for Chromebook
        ASoC: amd: acp: refactor SoundWire machine driver code
        ASoC: sdw_utils/intel: move soundwire endpoint parsing helper functions
        ASoC: sdw_util/intel: move soundwire endpoint and dai link structures
        ASoC: intel: sof_sdw: rename soundwire parsing helper functions
        ASoC: intel: sof_sdw: rename soundwire endpoint and dailink structures
        ASoC: atmel: mchp-pdmc: Retain Non-Runtime Controls
        ALSA: hda/realtek: Add support for Galaxy Book2 Pro (NP950XEE)
        ASoC: mediatek: mt7986-afe-pcm: Remove redundant error message
        ALSA: memalloc: Use proper DMA mapping API for x86 S/G buffer allocations
        ALSA: memalloc: Use proper DMA mapping API for x86 WC buffer allocations
        ALSA: usb-audio: Add logitech Audio profile quirk
        ASoc: mediatek: mt8365: Remove unneeded assignment
        ASoC: Intel: ARL: Add entry for HDMI-In capture support to non-I2S codec boards.
        ASoC: Intel: sof_rt5682: Add HDMI-In capture with rt5682 support for ARL.
        ASoC: SOF: Intel: hda: remove common_hdmi_codec_drv
        ASoC: Intel: sof_pcm512x: do not check common_hdmi_codec_drv
        ASoC: Intel: ehl_rt5660: do not check common_hdmi_codec_drv
        ASoC: Intel: skl_hda_dsp_generic: use common module for DAI links
        ...
      2f27fce6
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-kunit-6.12-rc1' of... · 194fcd20
      Linus Torvalds authored
      Merge tag 'linux_kselftest-kunit-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kunit updates from Shuah Khan:
      
       - a new int_pow test suite
      
       - documentation update to clarify filename best practices
      
       - kernel-doc fix for EXPORT_SYMBOL_IF_KUNIT
      
       - change to build compile_commands.json automatically instead of
         requiring a manual build
      
      * tag 'linux_kselftest-kunit-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        lib/math: Add int_pow test suite
        kunit: tool: Build compile_commands.json
        kunit: Fix kernel-doc for EXPORT_SYMBOL_IF_KUNIT
        Documentation: KUnit: Update filename best practices
      194fcd20
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-next-6.12-rc1' of... · 32b72deb
      Linus Torvalds authored
      Merge tag 'linux_kselftest-next-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest update from Shuah Khan:
      
       - test coverage for dup_fd() failure handling in unshare_fd()
      
       - new selftest for the acct() syscall
      
       - basic uprobe testcase
      
       - several small fixes and cleanups to existing tests
      
       - user and strscpy removal as they became kunit tests
      
       - fixes to build failures and warnings
      
      * tag 'linux_kselftest-next-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (21 commits)
        selftests: kselftest: Use strerror() on nolibc
        selftests/timers: Remove unused NSEC_PER_SEC macro
        selftests:resctrl: Fix build failure on archs without __cpuid_count()
        selftests/ftrace: Fix eventfs ownership testcase to find mount point
        selftests: filesystems: fix warn_unused_result build warnings
        selftests:core: test coverage for dup_fd() failure handling in unshare_fd()
        selftests/ftrace: Fix test to handle both old and new kernels
        kselftest: timers: Fix const correctness
        selftests/ftrace: Add required dependency for kprobe tests
        selftests: rust: config: disable GCC_PLUGINS
        selftests: rust: config: add trailing newline
        tracing/selftests: Run the ownership test twice
        selftests/uprobes: Add a basic uprobe testcase
        selftests: harness: rename __constructor_order for clarification
        selftests: harness: remove unneeded __constructor_order_last()
        selftest: acct: Add selftest for the acct() syscall
        selftests: lib: remove strscpy test
        selftests: user: remove user suite
        kselftest: cpufreq: Add RTC wakeup alarm
        selftests/exec: Fix grammar in an error message.
        ...
      32b72deb
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-nolibc-6.12-rc1' of... · 395b1577
      Linus Torvalds authored
      Merge tag 'linux_kselftest-nolibc-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull nolibc updates from Shuah Khan:
       "Highlights:
      
         - Clang support (including LTO)
      
        Other Changes:
      
         - stdbool.h support
      
         - argc/argv/envp arguments for constructors
      
         - Small #include ordering fix"
      
      * tag 'linux_kselftest-nolibc-6.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (21 commits)
        tools/nolibc: x86_64: use local label in memcpy/memmove
        tools/nolibc: stackprotector: mark implicitly used symbols as used
        tools/nolibc: crt: mark _start_c() as used
        selftests/nolibc: run-tests.sh: allow building through LLVM
        selftests/nolibc: use correct clang target for s390/systemz
        selftests/nolibc: don't use libgcc when building with clang
        selftests/nolibc: run-tests.sh: avoid overwriting CFLAGS_EXTRA
        selftests/nolibc: add cc-option compatible with clang cross builds
        selftests/nolibc: add support for LLVM= parameter
        selftests/nolibc: determine $(srctree) first
        selftests/nolibc: avoid passing NULL to printf("%s")
        selftests/nolibc: report failure if no testcase passed
        tools/nolibc: compiler: use attribute((naked)) if available
        tools/nolibc: move entrypoint specifics to compiler.h
        tools/nolibc: compiler: introduce __nolibc_has_attribute()
        tools/nolibc: powerpc: limit stack-protector workaround to GCC
        tools/nolibc: mips: load current function to $t9
        tools/nolibc: arm: use clang-compatible asm syntax
        tools/nolibc: pass argc, argv and envp to constructors
        tools/nolibc: add stdbool.h header
        ...
      395b1577
    • Linus Torvalds's avatar
      Merge tag 'docs-6.12' of git://git.lwn.net/linux · d58db3f3
      Linus Torvalds authored
      Pull documentation update from Jonathan Corbet:
       "Another relatively mundane cycle for docs:
      
         - The beginning of an EEVDF scheduler document
      
         - More Chinese translations
      
         - A rethrashing of our bisection documentation
      
        ...plus the usual array of smaller fixes, and more than the usual
        number of typo fixes"
      
      * tag 'docs-6.12' of git://git.lwn.net/linux: (48 commits)
        Remove duplicate "and" in 'Linux NVMe docs.
        docs:filesystems: fix spelling and grammar mistakes
        docs:filesystem: fix mispelled words on autofs page
        docs:mm: fixed spelling and grammar mistakes on vmalloc kernel stack page
        Documentation: PCI: fix typo in pci.rst
        docs/zh_CN: add the translation of kbuild/gcc-plugins.rst
        docs/process: fix typos
        docs:mm: fix spelling mistakes in heterogeneous memory management page
        accel/qaic: Fix a typo
        docs/zh_CN: update the translation of security-bugs
        docs: block: Fix grammar and spelling mistakes in bfq-iosched.rst
        Documentation: Fix spelling mistakes
        Documentation/gpu: Fix typo in Documentation/gpu/komeda-kms.rst
        scripts: sphinx-pre-install: remove unnecessary double check for $cur_version
        Loongarch: KVM: Add KVM hypercalls documentation for LoongArch
        Documentation: Document the kernel flag bdev_allow_write_mounted
        docs: scheduler: completion: Update member of struct completion
        docs: kerneldoc-preamble.sty: Suppress extra spaces in CJK literal blocks
        docs: submitting-patches: Advertise b4
        docs: update dev-tools/kcsan.rst url about KTSAN
        ...
      d58db3f3
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v6.12-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 8202cc80
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - Use swap() helper for __arch_xchg()
      
       - Fix kernel_clone_args.flags in m68k_clone()
      
       - defconfig updates
      
      * tag 'm68k-for-v6.12-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: defconfig: Update defconfigs for v6.11-rc1
        m68k: Fix kernel_clone_args.flags in m68k_clone()
        m68k: cmpxchg: Use swap() to improve code
      8202cc80
    • Linus Torvalds's avatar
      Merge tag 'x86-timers-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fc1dc0d5
      Linus Torvalds authored
      Pull x86 timer updates from Thomas Gleixner:
      
       - Use the topology information of number of packages for making the
         decision about TSC trust instead of using the number of online nodes
         which is not reflecting the real topology.
      
       - Stop the PIT timer 0 when its not in use as to stop pointless
         emulation in the VMM.
      
       - Fix the PIT timer stop sequence for timer 0 so it truly stops both
         real hardware and buggy VMM emulations.
      
      * tag 'x86-timers-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Check for sockets instead of CPUs to make code match comment
        clockevents/drivers/i8253: Fix stop sequence for timer 0
        x86/i8253: Disable PIT timer 0 when not in use
        x86/tsc: Use topology_max_packages() to get package number
      fc1dc0d5
    • Linus Torvalds's avatar
      Merge tag 'x86-misc-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b5075354
      Linus Torvalds authored
      Pull misc x86 updates from Thomas Gleixner:
      
       - Rework kcpuid to handle the the autogenerated CSV file correctly and
         update the CSV file to cover the whole zoo of CPUID.
      
       - Avoid memcpy() for ia32 syscall_get_arguments() and use direct
         assignments as fortified memcpy() is unhappy about writing/reading
         beyond the end of the addresses destination/source struct member
      
       - A few new PCI IDs for AMD
      
       - Update MAINTAINERS to cover x86 specific selftests
      
      * tag 'x86-misc-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        MAINTAINERS: Add selftests/x86 entry
        x86/amd_nb: Add new PCI IDs for AMD family 1Ah model 60h-70h
        x86/syscall: Avoid memcpy() for ia32 syscall_get_arguments()
        MAINTAINERS: Add x86 cpuid database entry
        tools/x86/kcpuid: Introduce a complete cpuid bitfields CSV file
        tools/x86/kcpuid: Parse subleaf ranges if provided
        tools/x86/kcpuid: Recognize all leaves with subleaves
        tools/x86/kcpuid: Strip bitfield names leading/trailing whitespace
        tools/x86/kcpuid: Protect against faulty "max subleaf" values
        tools/x86/kcpuid: Set max possible subleaves count to 64
        tools/x86/kcpuid: Properly align long-description columns
        tools/x86/kcpuid: Remove unused variable
        x86/amd_nb: Add new PCI IDs for AMD family 1Ah model 60h
      b5075354
    • Linus Torvalds's avatar
      Merge tag 'x86-platform-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a3233da6
      Linus Torvalds authored
      Pull x86 platform update from Thomas Gleixner:
       "Remove a stale declaration from the UV platform code"
      
      * tag 'x86-platform-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/platform/uv: Remove unused declaration uv_irq_2_mmr_info()
      a3233da6
    • Linus Torvalds's avatar
      Merge tag 'x86-mm-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 70f43ea3
      Linus Torvalds authored
      Pull x86 memory management updates from Thomas Gleixner:
      
       - Make LAM enablement safe vs. kernel threads using a process mm
         temporarily as switching back to the process would not update CR3 and
         therefore not enable LAM causing faults in user space when using
         tagged pointers. Cure it by synchronizing LAM enablement via IPIs to
         all CPUs which use the related mm.
      
       - Cure a LAM harmless inconsistency between CR3 and the state during
         context switch. It's both confusing and prone to lead to real bugs
      
       - Handle alt stack handling for threads which run with a non-zero
         protection key. The non-zero key prevents the kernel to access the
         alternate stack. Cure it by temporarily enabling all protection keys
         for the alternate stack setup/restore operations.
      
       - Provide a EFI config table identity mapping for kexec kernel to
         prevent kexec fails because the new kernel cannot access the config
         table array
      
       - Use GB pages only when a full GB is mapped in the identity map as
         otherwise the CPU can speculate into reserved areas after the end of
         memory which causes malfunction on UV systems.
      
       - Remove the noisy and pointless SRAT table dump during boot
      
       - Use is_ioremap_addr() for iounmap() address range checks instead of
         high_memory. is_ioremap_addr() is more precise.
      
      * tag 'x86-mm-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/ioremap: Improve iounmap() address range checks
        x86/mm: Remove duplicate check from build_cr3()
        x86/mm: Remove unused NX related declarations
        x86/mm: Remove unused CR3_HW_ASID_BITS
        x86/mm: Don't print out SRAT table information
        x86/mm/ident_map: Use gbpages only where full GB page should be mapped.
        x86/kexec: Add EFI config table identity mapping for kexec kernel
        selftests/mm: Add new testcases for pkeys
        x86/pkeys: Restore altstack access in sigreturn()
        x86/pkeys: Update PKRU to enable all pkeys before XSAVE
        x86/pkeys: Add helper functions to update PKRU on the sigframe
        x86/pkeys: Add PKRU as a parameter in signal handling functions
        x86/mm: Cleanup prctl_enable_tagged_addr() nr_bits error checking
        x86/mm: Fix LAM inconsistency during context switch
        x86/mm: Use IPIs to synchronize LAM enablement
      70f43ea3
    • Linus Torvalds's avatar
      Merge tag 'x86-fred-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b1360211
      Linus Torvalds authored
      Pull x86 FRED updates from Thomas Gleixner:
      
       - Enable FRED right after init_mem_mapping() because at that point the
         early IDT fault handler is replaced by the real fault handler. The
         real fault handler retrieves the faulting address from the stack
         frame and not from CR2 when the FRED feature is set. But that
         obviously only works when FRED is enabled in the CPU as well.
      
       - Set SS to __KERNEL_DS when enabling FRED to prevent a corner case
         where ERETS can observe a SS mismatch and raises a #GP.
      
      * tag 'x86-fred-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/entry: Set FRED RSP0 on return to userspace instead of context switch
        x86/msr: Switch between WRMSRNS and WRMSR with the alternatives mechanism
        x86/entry: Test ti_work for zero before processing individual bits
        x86/fred: Set SS to __KERNEL_DS when enabling FRED
        x86/fred: Enable FRED right after init_mem_mapping()
        x86/fred: Move FRED RSP initialization into a separate function
        x86/fred: Parse cmdline param "fred=" in cpu_parse_early_param()
      b1360211
    • Linus Torvalds's avatar
      Merge tag 'x86-fpu-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c3056a7d
      Linus Torvalds authored
      Pull x86 fpu updates from Thomas Gleixner:
       "Provide FPU buffer layout in core dumps:
      
        Debuggers have guess the FPU buffer layout in core dumps, which is
        error prone. This is because AMD and Intel layouts differ.
      
        To avoid buggy heuristics add a ELF section which describes the buffer
        layout which can be retrieved by tools"
      
      * tag 'x86-fpu-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/elf: Add a new FPU buffer layout info to x86 core files
      c3056a7d
    • Linus Torvalds's avatar
      Merge tag 'x86-core-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · dea435d3
      Linus Torvalds authored
      Pull x86 core update from Thomas Gleixner:
       "Enable UBSAN traps for x86, which provides better reporting through
        metadata encodeded into UD1"
      
      * tag 'x86-core-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/traps: Enable UBSAN traps on x86
      dea435d3
    • Linus Torvalds's avatar
      Merge tag 'x86-apic-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 61d1ea91
      Linus Torvalds authored
      Pull x86 APIC updates from Thomas Gleixner:
      
       - Handle an allocation failure in the IO/APIC code gracefully instead
         of crashing the machine.
      
       - Remove support for APIC local destination mode on 64bit
      
         Logical destination mode of the local APIC is used for systems with
         up to 8 CPUs. It has an advantage over physical destination mode as
         it allows to target multiple CPUs at once with IPIs. That advantage
         was definitely worth it when systems with up to 8 CPUs were state of
         the art for servers and workstations, but that's history.
      
         In the recent past there were quite some reports of new laptops
         failing to boot with logical destination mode, but they work fine
         with physical destination mode. That's not a suprise because physical
         destination mode is guaranteed to work as it's the only way to get a
         CPU up and running via the INIT/INIT/STARTUP sequence. Some of the
         affected systems were cured by BIOS updates, but not all OEMs provide
         them.
      
         As the number of CPUs keep increasing, logical destination mode
         becomes less used and the benefit for small systems, like laptops, is
         not really worth the trouble. So just remove logical destination mode
         support for 64bit and be done with it.
      
       - Code and comment cleanups in the APIC area.
      
      * tag 'x86-apic-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/irq: Fix comment on IRQ vector layout
        x86/apic: Remove unused extern declarations
        x86/apic: Remove logical destination mode for 64-bit
        x86/apic: Remove unused inline function apic_set_eoi_cb()
        x86/ioapic: Cleanup remaining coding style issues
        x86/ioapic: Cleanup line breaks
        x86/ioapic: Cleanup bracket usage
        x86/ioapic: Cleanup comments
        x86/ioapic: Move replace_pin_at_irq_node() to the call site
        iommu/vt-d: Cleanup apic_printk()
        x86/mpparse: Cleanup apic_printk()s
        x86/ioapic: Cleanup guarded debug printk()s
        x86/ioapic: Cleanup apic_printk()s
        x86/apic: Cleanup apic_printk()s
        x86/apic: Provide apic_printk() helpers
        x86/ioapic: Use guard() for locking where applicable
        x86/ioapic: Cleanup structs
        x86/ioapic: Mark mp_alloc_timer_irq() __init
        x86/ioapic: Handle allocation failures gracefully
      61d1ea91
    • Linus Torvalds's avatar
      Merge tag 'x86-cleanups-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0279aa78
      Linus Torvalds authored
      Pull x86 cleanups from Thomas Gleixner:
       "A set of cleanups across x86:
      
         - Use memremap() for the EISA probe instead of ioremap(). EISA is
           strictly memory and not MMIO
      
         - Cleanups and enhancement all over the place"
      
      * tag 'x86-cleanups-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/EISA: Dereference memory directly instead of using readl()
        x86/extable: Remove unused declaration fixup_bug()
        x86/boot/64: Strip percpu address space when setting up GDT descriptors
        x86/cpu: Clarify the error message when BIOS does not support SGX
        x86/kexec: Add comments around swap_pages() assembly to improve readability
        x86/kexec: Fix a comment of swap_pages() assembly
        x86/sgx: Fix a W=1 build warning in function comment
        x86/EISA: Use memremap() to probe for the EISA BIOS signature
        x86/mtrr: Remove obsolete declaration for mtrr_bp_restore()
        x86/cpu_entry_area: Annotate percpu_setup_exception_stacks() as __init
      0279aa78
    • Linus Torvalds's avatar
      Merge tag 'x86-build-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5ba202a7
      Linus Torvalds authored
      Pull x86 build updates from Thomas Gleixner:
       "Updates for KCOV instrumentation on x86:
      
         - Prevent spurious KCOV coverage in common_interrupt()
      
         - Fixup the KCOV Makefile directive which got stale due to a source
           file rename
      
         - Exclude stack unwinding from KCOV as it creates large amounts of
           uninteresting coverage
      
         - Provide a self test to validate that KCOV coverage of the interrupt
           handling code starts not before preempt count got updated"
      
      * tag 'x86-build-2024-09-17' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Ignore stack unwinding in KCOV
        module: Fix KCOV-ignored file name
        kcov: Add interrupt handling self test
        x86/entry: Remove unwanted instrumentation in common_interrupt()
      5ba202a7
    • Linus Torvalds's avatar
      Merge tag 'soc-arm-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · a940d9a4
      Linus Torvalds authored
      Pull SoC ARM platform updates from Arnd Bergmann:
       "Most of these updates are for removing dead code on the Samsung S3C,
        NXP i.MX, TI OMAP and TI DaVinci platforms, though this appears to be
        a coincidence.
      
        There are also cleanups for the Marvell Orion family and the Arm
        integrator series and a Kconfig change for Broadcom"
      
      * tag 'soc-arm-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
        ARM: dove: Drop a write-only variable
        ARM: orion5x: Switch to new sys-off handler API
        ARM: mvebu: Warn about memory chunks too small for DDR training
        ARM: imx: Annotate imx7d_enet_init() as __init
        ARM: OMAP1: Remove unused declarations in arch/arm/mach-omap1/pm.h
        ARM: s3c: remove unused s3c2410_cpu_suspend() declaration
        ARM: s3c: remove unused declarations for s3c6400
        ARM: s3c: Remove unused s3c_init_uart_irqs() declaration
        ARM: davinci: remove unused cpuidle code
        ARM: davinci: remove unused davinci_init_ide() declaration
        ARM: davinci: remove unused davinci_cfg_reg_list() declaration
        ARM: mach-imx: imx6sx: Remove Ethernet refclock setting
        MAINTAINERS: Add entry for Samsung Exynos850 SoC
        ARM: bcm: Select ARM_GIC_V3 for ARCH_BRCMSTB
        ARM: omap2: Switch to use kmemdup_array()
        ARM: omap1: Remove unused struct 'dma_link_info'
        ARM: s3c: Drop explicit initialization of struct i2c_device_id::driver_data to 0
      a940d9a4
    • Linus Torvalds's avatar
      Merge tag 'soc-defconfig-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 38ea77ab
      Linus Torvalds authored
      Pull SoC defconfig updates from Arnd Bergmann:
       "The updates to the defconfig files are fairly small, enabling drivers
        for eight of the arm and riscv based platforms"
      
      * tag 'soc-defconfig-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
        arm64: defconfig: enable mt8365 sound
        riscv: defconfig: Enable pinctrl support for CV18XX Series SoC
        arm64: defconfig: Enable ADP5585 GPIO and PWM drivers
        arm64: defconfig: Enable Tegra194 PCIe Endpoint
        arm64: defconfig: Enable E5010 JPEG Encoder
        riscv: defconfig: sophgo: enable clks for sg2042
        arm64: defconfig: build CONFIG_REGULATOR_QCOM_REFGEN as module
        ARM: configs: at91: enable config flags for sam9x7 SoC family
        arm64: defconfig: Enable R-Car Ethernet-TSN support
        ARM: shmobile: defconfig: Enable slab hardening and kmalloc buckets
        arm64: defconfig: Enable AK4619 codec support
      38ea77ab
    • Linus Torvalds's avatar
      Merge tag 'soc-drivers-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · b8979c6b
      Linus Torvalds authored
      Pull SoC driver updates from Arnd Bergmann:
       "The driver updates seem larger this time around, with changes is many
        of the SoC specific drivers, both the custom drivers/soc ones and the
        closely related subsystems (memory, bus, firmware, reset, ...).
      
        The at91 platform gains support for sam9x7 chips in the soc and power
        management code. This is the latest variant of one of the oldest still
        supported SoC families, using the ARM9 (ARMv5) core.
      
        As usual, the qualcomm snapdragon platform gets a ton of updates in
        many of their drivers to add more features and additional SoC support.
        Most of these are somewhat firmware related as the platform has a
        number of firmware based interfaces to the kernel. A notable addition
        here is the inclusion of trace events to two of these drivers.
      
        Herve Codina and Christophe Leroy are now sending updates for
        drivers/soc/fsl/ code through the SoC tree, this contains both PowerPC
        and Arm specific platforms and has previously been problematic to
        maintain. The first update here contains support for newer PowerPC
        variants and some cleanups.
      
        The turris mox firmware driver has a number of updates, mostly
        cleanups.
      
        The Arm SCMI firmware driver gets a major rework to modularize the
        existing code into separately loadable drivers for the various
        transports, the addition of custom NXP i.MX9 interfaces and a number
        of smaller updates.
      
        The Arm FF-A firmware driver gets a feature update to support the v1.2
        version of the specification.
      
        The reset controller drivers have some smaller cleanups and a newly
        added driver for the Intel/Mobileye EyeQ5/EyeQ6 MIPS SoCs.
      
        The memory controller drivers get some cleanups and refactoring for
        Tegra, TI, Freescale/NXP and a couple more platforms.
      
        Finally there are lots of minor updates to firmware (raspberry pi,
        tegra, imx), bus (sunxi, omap, tegra) and soc (rockchips, tegra,
        amlogic, mediatek) drivers and their DT bindings"
      
      * tag 'soc-drivers-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (212 commits)
        firmware: imx: remove duplicate scmi_imx_misc_ctrl_get()
        platform: cznic: turris-omnia-mcu: Fix error check in omnia_mcu_register_trng()
        bus: sunxi-rsb: Simplify code with dev_err_probe()
        soc: fsl: qe: ucc: Export ucc_mux_set_grant_tsa_bkpt
        soc: fsl: cpm1: qmc: Fix dependency on fsl_soc.h
        dt-bindings: arm: rockchip: Add rk3576 compatible string to pmu.yaml
        soc: fsl: qbman: Remove redundant warnings
        soc: fsl: qbman: Use iommu_paging_domain_alloc()
        MAINTAINERS: Add QE files related to the Freescale QMC controller
        soc: fsl: cpm1: qmc: Handle QUICC Engine (QE) soft-qmc firmware
        soc: fsl: cpm1: qmc: Add support for QUICC Engine (QE) implementation
        soc: fsl: qe: Add missing PUSHSCHED command
        soc: fsl: qe: Add resource-managed muram allocators
        soc: fsl: cpm1: qmc: Introduce qmc_version
        soc: fsl: cpm1: qmc: Rename SCC_GSMRL_MODE_QMC
        soc: fsl: cpm1: qmc: Handle RPACK initialization
        soc: fsl: cpm1: qmc: Rename qmc_chan_command()
        soc: fsl: cpm1: qmc: Introduce qmc_{init,exit}_xcc() and their CPM1 version
        soc: fsl: cpm1: qmc: Introduce qmc_init_resource() and its CPM1 version
        soc: fsl: cpm1: qmc: Re-order probe() operations
        ...
      b8979c6b
    • Linus Torvalds's avatar
      Merge tag 'soc-dt-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 7b17f5eb
      Linus Torvalds authored
      Pull SoC devicetree updates from Arnd Bergmann:
       "New SoC support for Broadcom bcm2712 (Raspberry Pi 5) and Renesas
        R9A09G057 (RZ/V2H(P)) and Qualcomm Snapdragon 414 (MSM8929), all three
        of these are variants of already supported chips, in particular the
        last one is almost identical to MSM8939.
      
        Lots of updates to Mediatek, ASpeed, Rockchips, Amlogic, Qualcomm,
        STM32, NXP i.MX, Sophgo, TI K3, Renesas, Microchip at91, NVIDIA Tegra,
        and T-HEAD.
      
        The added Qualcomm platform support once again dominates the changes,
        with seven phones and three laptops getting added in addition to many
        new features on existing machines. The Snapdragon X1E support
        specifically keeps improving.
      
        The other new machines are:
      
         - eight new machines using various 64-bit Rockchips SoCs, both on the
           consumer/gaming side and developer boards
      
         - three industrial boards with 64-bit i.MX, which is a very low
           number for them.
      
         - four more servers using a 32-bit Speed BMC
      
         - three boards using STM32MP1 SoCs
      
         - one new machine each using allwinner, amlogic, broadcom and renesas
           chips"
      
      * tag 'soc-dt-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (672 commits)
        arm64: dts: allwinner: h5: NanoPi NEO Plus2: Use regulators for pio
        arm64: dts: mediatek: add audio support for mt8365-evk
        arm64: dts: mediatek: add afe support for mt8365 SoC
        arm64: dts: mediatek: mt8186-corsola: Disable DPI display interface
        arm64: dts: mediatek: mt8186: Add svs node
        arm64: dts: mediatek: mt8186: Add power domain for DPI
        arm64: dts: mediatek: mt8195: Correct clock order for dp_intf*
        arm64: dts: mt8183: add dpi node to mt8183
        arm64: dts: allwinner: h5: NanoPi Neo Plus2: Fix regulators
        arm64: dts: rockchip: add CAN0 and CAN1 interfaces to mecsbc board
        arm64: dts: rockchip: add CAN-FD controller nodes to rk3568
        arm64: dts: nuvoton: ma35d1: Add uart pinctrl settings
        arm64: dts: nuvoton: ma35d1: Add pinctrl and gpio nodes
        arm64: dts: nuvoton: Add syscon to the system-management node
        ARM: dts: Fix undocumented LM75 compatible nodes
        arm64: dts: toshiba: Fix pl011 and pl022 clocks
        ARM: dts: stm32: Use SAI to generate bit and frame clock on STM32MP15xx DHCOM PDK2
        ARM: dts: stm32: Switch bitclock/frame-master to flag on STM32MP15xx DHCOM PDK2
        ARM: dts: stm32: Sort properties in audio endpoints on STM32MP15xx DHCOM PDK2
        ARM: dts: stm32: Add MECIO1 and MECT1S board variants
        ...
      7b17f5eb
    • Linus Torvalds's avatar
      Merge tag 'spi-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 303ba85c
      Linus Torvalds authored
      Pull spi updates from Mark Brown:
       "This is quite a quiet release for SPI. The one new core feature here
        is support for configuring the state of the MOSI pin when the bus is
        idle, there are some devices which are very fragile in this regard
        even when the chip select signal is not asserted. Otherwise we have
        some new driver support, a bunch of small fixes and some general
        cleanup work.
      
         - Support for configuring the state of the MOSI pin when the the bus
           is idle
      
         - Add the Elgin JG0309-01 in spidev
      
         - Support for Marvell xSPI, Mediatek MTK7981, Microchip PIC64GX, NXP
           i.MX8ULP, and Rockchip RK3576 controllers
      
        I also accidentally pulled in an IIO DT bindings update due to a typo
        when applying the MOSI idle state patches"
      
      * tag 'spi-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (65 commits)
        spi: geni-qcom: Use devm functions to simplify code
        spi: remove spi_controller_is_slave() and spi_slave_abort()
        platform/olpc: olpc-xo175-ec: switch to use spi_target_abort().
        spi: slave-mt27xx: switch to use target_abort
        spi: spidev: switch to use spi_target_abort()
        spi: slave-system-control: switch to use spi_target_abort()
        spi: slave-time: switch to use spi_target_abort()
        spi: switch to use spi_controller_is_target()
        spi: fspi: add support for imx8ulp
        spi: fspi: involve lut_num for struct nxp_fspi_devtype_data
        dt-bindings: spi: nxp-fspi: add imx8ulp support
        spi: spidev_fdx: Fix the wrong format specifier
        spi: mxs: Switch to RUNTIME/SYSTEM_SLEEP_PM_OPS()
        spi: dt-bindings: Add rockchip,rk3576-spi compatible
        spi: Revert "spi: Insert the missing pci_dev_put()before return"
        spi: zynq-qspi: Replace kzalloc with kmalloc for buffer allocation
        spi: ppc4xx: Sort headers
        spi: ppc4xx: Revert "handle irq_of_parse_and_map() errors"
        spi: zynqmp-gqspi: Simplify with dev_err_probe()
        spi: zynqmp-gqspi: Use devm_spi_alloc_host()
        ...
      303ba85c
    • Linus Torvalds's avatar
      Merge tag 'regulator-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 6df92808
      Linus Torvalds authored
      Pull regulator updates from Mark Brown:
       "This release is almost all cleanup work of various kinds, while the
        diffstat for the core is quite large this is almost all cleanups and
        documentation improvments with some small fixes rather than any new
        feature work. We do have support for a couple of new devices but these
        are small additions to existing drivers rather than new drivers.
      
         - Removal of the SM5703 driver which does not have it's dependencies
           available.
      
         - Support for Allwinner AXP717, and Qualcomm WCN6855.
      
        The Allwinner support shares some commits with the MFD tree"
      
      * tag 'regulator-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (66 commits)
        regulator: sm5703: Remove because it is unused and fails to build
        regulator: Split up _regulator_get()
        regulator: update some comments ([gs]et_voltage_vsel vs [gs]et_voltage_sel)
        regulator: max8973: Use irq_get_trigger_type() helper
        regulator: core: fix the broken behavior of regulator_dev_lookup()
        regulator: max77650: Use container_of and constify static data
        regulator: hi6421v530: Use container_of and constify static data
        regulator: hi6421v530: Drop unused 'eco_microamp'
        regulator: qcom-refgen: Constify static data
        regulator: pfuze100: Constify static data
        regulator: pcap: Constify static data
        regulator: mtk-dvfsrc: Constify static data
        regulator: max77826: Constify static data
        regulator: max77826: Drop unused 'rdesc' in 'struct max77826_regulator_info'
        regulator: tps65023: Constify static data
        regulator: hi6421v600: Constify static data
        regulator: hi6421: Constify static data
        regulator: da9121: Constify static data
        regulator: da9063: Constify static data
        regulator: da9055: Constify static data
        ...
      6df92808
    • Linus Torvalds's avatar
      Merge tag 'regmap-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · 9179b73a
      Linus Torvalds authored
      Pull regmap updates from Mark Brown:
       "The main update here is Matti's work allowing regmap irqdomains to be
        given custom names (allowing multiple interrupt controllers associatd
        with a single struct device), this pulls in some commits from Thomas'
        tree which it depends on.
      
        Otherwise there's a bit of work on improving handling of regmaps
        protected with spinlocks when used with complex cache types, fixing
        some valid but harmless lockdep reports seen with some new driver
        work"
      
      * tag 'regmap-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
        regmap: kunit: Add coverage of spinlocked regmaps
        regcache: use map->alloc_flags also for allocating cache
        regmap: Use locking during kunit tests
        regmap: Hold the regmap lock when allocating and freeing the cache
        regmap: Allow setting IRQ domain name suffix
      9179b73a
    • Linus Torvalds's avatar
      Merge tag 'printk-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux · c903327d
      Linus Torvalds authored
      Pull printk updates from Petr Mladek:
       "This is the "last" part of the support for the new nbcon consoles.
        Where "nbcon" stays for "No Big console lock CONsoles" aka not under
        the console_lock.
      
        New callbacks are added to struct console:
      
         - write_thread() for flushing nbcon consoles in task context.
      
         - write_atomic() for flushing nbcon consoles in atomic context,
           including NMI.
      
         - con->device_lock() and device_unlock() for taking the driver
           specific lock, for example, port->lock.
      
        New printk-specific kthreads are created:
      
         - per-console kthreads which get responsible for flushing normal
           priority messages on nbcon consoles.
      
         - thread which gets responsible for flushing normal priority messages
           on all consoles when CONFIG_RT enabled.
      
        The new callbacks are called under a special per-console lock which
        has already been added back in v6.7. It allows to distinguish three
        severities: normal, emergency, and panic. A context with a higher
        priority could take over the ownership when it is safe even in the
        middle of handling a record. The panic context could do it even when
        it is not safe. But it is allowed only for the final desperate flush
        before entering the infinite loop.
      
        The new lock helps to flush the messages directly in emergency and
        panic contexts. But it is not enough in all situations:
      
         - console_lock() is still need for synchronization against boot
           consoles.
      
         - con->device_lock() is need for synchronization against other
           operations on the same HW, e.g. serial port speed setting,
           non-printk related read/write.
      
        The dependency on con->device_lock() is mutual. Any code taking the
        driver specific lock has to acquire the related nbcon console context
        as well. For example, see the new uart_port_lock() API. It provides
        the necessary synchronization against emergency and panic contexts
        where the messages are flushed only under the new per-console lock.
      
        Maybe surprisingly, a quite tricky part is the decision how to flush
        the consoles in various situations. It has to take into account:
      
         - message priority:    normal, emergency, panic
      
         - scheduling context:  task, atomic, deferred_legacy
      
         - registered consoles: boot, legacy, nbcon
      
         - threads are running: early boot, suspend, shutdown, panic
      
         - caller:              printk(), pr_flush(), printk_flush_in_panic(),
                                console_unlock(), console_start(), ...
      
        The primary decision is made in printk_get_console_flush_type(). It
        creates a hint what the caller should do:
      
         - flush nbcon consoles directly or via the kthread
      
         - call the legacy loop (console_unlock()) directly or via irq_work
      
        The existing behavior is preserved for the legacy consoles. The only
        exception is that they are not longer flushed directly from printk()
        in panic() before CPUs are stopped. But this blocking happens only
        when at least one nbcon console is registered. The motivation is to
        increase a chance to produce the crash dump. They legacy consoles
        might create a deadlock in compare with nbcon consoles. The nbcon
        console should allow to see the messages even when the crash dump
        fails.
      
        There are three possible ways how nbcon consoles are flushed:
      
         - The per-nbcon-console kthread is responsible for flushing messages
           added with the normal priority. This is the default mode.
      
         - The legacy loop, aka console_unlock(), is used when there is still
           a boot console registered. There is no easy way how to match an
           early console driver with a nbcon console driver. And the
           console_lock() provides the only reliable serialization at the
           moment.
      
           The legacy loop uses either con->write_atomic() or
           con->write_thread() callbacks depending on whether it is allowed to
           schedule. The atomic variant has to be used from printk().
      
         - In other situations, the messages are flushed directly using
           write_atomic() which can be called in any context, including NMI.
           It is primary needed during early boot or shutdown, in emergency
           situations, and panic.
      
        The emergency priority is used by a code called within
        nbcon_cpu_emergency_enter()/exit(). At the moment, it is used in four
        situations: WARN(), Oops, lockdep, and RCU stall reports.
      
        Finally, there is no nbcon console at the moment. It means that the
        changes should _not_ modify the existing behavior. The only exception
        is CONFIG_RT which would force offloading the legacy loop, for normal
        priority context, into the dedicated kthread"
      
      * tag 'printk-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/printk/linux: (54 commits)
        printk: Avoid false positive lockdep report for legacy printing
        printk: nbcon: Assign nice -20 for printing threads
        printk: Implement legacy printer kthread for PREEMPT_RT
        tty: sysfs: Add nbcon support for 'active'
        proc: Add nbcon support for /proc/consoles
        proc: consoles: Add notation to c_start/c_stop
        printk: nbcon: Show replay message on takeover
        printk: Provide helper for message prepending
        printk: nbcon: Rely on kthreads for normal operation
        printk: nbcon: Use thread callback if in task context for legacy
        printk: nbcon: Relocate nbcon_atomic_emit_one()
        printk: nbcon: Introduce printer kthreads
        printk: nbcon: Init @nbcon_seq to highest possible
        printk: nbcon: Add context to usable() and emit()
        printk: Flush console on unregister_console()
        printk: Fail pr_flush() if before SYSTEM_SCHEDULING
        printk: nbcon: Add function for printers to reacquire ownership
        printk: nbcon: Use raw_cpu_ptr() instead of open coding
        printk: Use the BITS_PER_LONG macro
        lockdep: Mark emergency sections in lockdep splats
        ...
      c903327d
    • Linus Torvalds's avatar
      Merge tag 'core-debugobjects-2024-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · daa394f0
      Linus Torvalds authored
      Pull debugobjects updates from Thomas Gleixner:
      
       - Use the threshold to check for the pool refill condition and not the
         run time recorded all time low fill value, which is lower than the
         threshold and therefore causes refills to be delayed.
      
       - KCSAN annotation updates and simplification of the fill_pool() code.
      
      * tag 'core-debugobjects-2024-09-16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        debugobjects: Remove redundant checks in fill_pool()
        debugobjects: Fix conditions in fill_pool()
        debugobjects: Fix the compilation attributes of some global variables
      daa394f0