summaryrefslogtreecommitdiff
path: root/arch
AgeCommit message (Collapse)Author
2026-04-01arm64: dts: qcom: glymur-crd: Enable DisplayPort supportAbel Vesa
The two Type-C ports found on Glymur CRD are DisplayPort alternate mode capable. Everything is in place already for the USB, but for DisplayPort the controllers need to be enabled. So enable the related DisplayPort controller for each of these two ports. Also define the supported link frequencies for each output. Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Link: https://lore.kernel.org/r/20260330-glymur-enable-displayport-v1-1-1543ad6dac3a@oss.qualcomm.com Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2026-04-01Merge tag 'arm-soc/for-7.1/devicetree' of ↵Arnd Bergmann
https://github.com/Broadcom/stblinux into soc/dt This pull request contains Broadcom ARM-based SoCs Device Tree updates for 7.1, please pull the following: - Rafal provides a complete description of the PCIe Root Complex nodes in order to silence a number of dtc warnings - Rosen provides the necessary NVMEM properties to allow describing the WAN device MAC address from NVRAM, also adds better LEDs, USB GPIOs and Wi-Fi buttons for the Linksys EA9200 router - Linus completes the BCA devices description by adding the I2C block and fixing interrupts for the DMA block on 63138 and 6878 * tag 'arm-soc/for-7.1/devicetree' of https://github.com/Broadcom/stblinux: ARM: dts: BCM5301X: EA9200: specify partitions ARM: dts: BCM5301X: EA9200: add LEDs ARM: dts: BCM5301X: EA9200: add USB GPIOs ARM: dts: BCM5301X: EA9200: add WiFi button ARM: dts: broadcom: bcm2835-rpi: Move non simple-bus nodes to root level ARM: dts: bcm63148: Add I2C block ARM: dts: bcm63138: Add I2C block ARM: dts: bcm6878: Add I2C bus block ARM: dts: bcm6855: Add I2C bus blocks ARM: dts: bcm6846: Add I2C bus block ARM: dts: bcm63138: Fix DMA IRQ ARM: dts: bcm6878: Fix PL081 DMA block IRQ ARM: dts: BCM5301X: AC5300: set WAN MAC from nvram ARM: dts: BCM5301X: AC3100: set WAN MAC from nvram ARM: dts: BCM5301X: panamera: set WAN MAC from nvram ARM: dts: BCM5301X: EA9200: set WAN MAC from nvram ARM: dts: BCM5301X: add root pcie bridges ARM: dts: BCM5301X: Drop extra NAND controller compatible ARM: dts: BCM5301X: Describe PCIe controllers fully Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2026-04-01arm64: Use static call trampolines when kCFI is enabledArd Biesheuvel
Implement arm64 support for the 'unoptimized' static call variety, which routes all calls through a trampoline that performs a tail call to the chosen function, and wire it up for use when kCFI is enabled. This works around an issue with kCFI and generic static calls, where the prototypes of default handlers such as __static_call_nop() and __static_call_ret0() don't match the expected prototype of the call site, resulting in kCFI false positives [0]. Since static call targets may be located in modules loaded out of direct branching range, this needs an ADRP/LDR pair to load the branch target into R16 and a branch-to-register (BR) instruction to perform an indirect call. Unlike on x86, there is no pressing need on arm64 to avoid indirect calls at all cost, but hiding it from the compiler as is done here does have some benefits: - the literal is located in .rodata, which gives us the same robustness advantage that code patching does; - no D-cache pollution from fetching hash values from .text sections. From an execution speed PoV, this is unlikely to make any difference at all. Cc: Sami Tolvanen <samitolvanen@google.com> Cc: Sean Christopherson <seanjc@google.com> Cc: Kees Cook <kees@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will McVicker <willmcvicker@google.com> Reported-by: Carlos Llamas <cmllamas@google.com> Closes: https://lore.kernel.org/all/20260311225822.1565895-1-cmllamas@google.com/ [0] Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2026-04-01KVM: arm64: Don't hold 'vm_table_lock' across guest page reclaimWill Deacon
Now that the teardown of a VM cannot be finalised as long as a reference is held on the VM, rework __pkvm_reclaim_dying_guest_page() to hold a reference to the dying VM rather than take the global 'vm_table_lock' during the reclaim operation. Signed-off-by: Will Deacon <will@kernel.org> Link: https://patch.msgid.link/20260331155056.28220-4-will@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
2026-04-01KVM: arm64: Allow get_pkvm_hyp_vm() to take a reference to a dying VMWill Deacon
Now that completion of the teardown path requires a refcount of zero for the target VM, we can allow get_pkvm_hyp_vm() to take a reference on a dying VM, which is necessary to unshare pages with a non-protected VM during the teardown process itself. Note that vCPUs belonging to a dying VM cannot be loaded and pages can only be reclaimed from a protected VM (via __pkvm_reclaim_dying_guest_page()) if the target VM is in the dying state. Signed-off-by: Will Deacon <will@kernel.org> Link: https://patch.msgid.link/20260331155056.28220-3-will@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
2026-04-01KVM: arm64: Prevent teardown finalisation of referenced 'hyp_vm'Will Deacon
Destroying a 'hyp_vm' with an elevated referenced count in __pkvm_finalize_teardown_vm() is only going to lead to tears. In preparation for allowing limited references to be acquired on dying VMs during the teardown process, factor out the handle-to-vm logic for the teardown path and reuse it for both the 'start' and 'finalise' stages of the teardown process. Signed-off-by: Will Deacon <will@kernel.org> Link: https://patch.msgid.link/20260331155056.28220-2-will@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
2026-04-01Merge tag 'hisi-dts-fixes-for-7.0' of ↵Krzysztof Kozlowski
https://github.com/hisilicon/linux-hisi into arm/fixes HiSilicon dts fixes for v7.0 - Correct the PCIe reset GPIO polarity for hi3798cv200-poplar - Add the missing dma-ranges for hi3798cv200 * tag 'hisi-dts-fixes-for-7.0' of https://github.com/hisilicon/linux-hisi: arm64: dts: hisilicon: hi3798cv200: Add missing dma-ranges arm64: dts: hisilicon: poplar: Correct PCIe reset GPIO polarity Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-04-01Merge tag 'nuvoton-arm64-7.1-devicetree-0' of ↵Krzysztof Kozlowski
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/bmc/linux into soc/dt nuvoton: first batch of arm64 devicetree changes for v7.1 Just the one change this time, dropping syscon properties where they weren't defined. * tag 'nuvoton-arm64-7.1-devicetree-0' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/bmc/linux: arm64: dts: nuvoton: drop unused syscon property from watchdog node Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-04-01Merge tag 'aspeed-7.1-devicetree-0' of ↵Krzysztof Kozlowski
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/bmc/linux into soc/dt aspeed: first batch of devicetree changes for v7.1 New platforms: - Asus Kommando IPMI card - Asrock Paul IPMI card Updated platforms: - Anacapa (Meta): NFC and EEPROMs - MSX4 (Nvidia): 128M layout for the alternate boot flash * tag 'aspeed-7.1-devicetree-0' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/bmc/linux: ARM: dts: aspeed: anacapa: Add retimer EEPROMs ARM: dts: aspeed: anacapa: add NFC device ARM: dts: aspeed: Add Asrock Paul IPMI card dt-bindings: arm: aspeed: Add Asrock Paul IPMI card ARM: dts: aspeed: Add 128M alt flash layout to NVIDIA MSX4 ARM: dts: aspeed: Add Asus Kommando IPMI card dt-bindings: arm: aspeed: Add Asus Kommando IPMI card Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
2026-04-01memblock, treewide: make memblock_free() handle late freeingMike Rapoport (Microsoft)
It shouldn't be responsibility of memblock users to detect if they free memory allocated from memblock late and should use memblock_free_late(). Make memblock_free() and memblock_phys_free() take care of late memory freeing and drop memblock_free_late(). Link: https://patch.msgid.link/20260323074836.3653702-9-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
2026-04-01memblock: make free_reserved_area() update memblock if ARCH_KEEP_MEMBLOCK=yMike Rapoport (Microsoft)
On architectures that keep memblock after boot, freeing of reserved memory with free_reserved_area() is paired with an update of memblock arrays, usually by a call to memblock_free(). Make free_reserved_area() directly update memblock.reserved when ARCH_KEEP_MEMBLOCK is enabled. Remove the now-redundant explicit memblock_free() call from arm64::free_initmem() and the #ifdef CONFIG_ARCH_KEEP_MEMBLOCK block from the generic free_initrd_mem(). Link: https://patch.msgid.link/20260323074836.3653702-8-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
2026-04-01powerpc: opal-core: pair alloc_pages_exact() with free_pages_exact()Mike Rapoport (Microsoft)
opal-core allocates buffers with alloc_pages_exact(), but then marks them as reserved and frees using free_reserved_area(). This is completely unnecessary and the pages allocated with alloc_pages_exact() can be naturally freed with free_pages_exact(). Replace freeing of memory in opalcore_cleanup() with free_pages_exact() and simplify allocation code so that it won't mark allocated pages as reserved. Link: https://patch.msgid.link/20260323074836.3653702-4-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
2026-04-01powerpc: fadump: pair alloc_pages_exact() with free_pages_exact()Mike Rapoport (Microsoft)
fadump allocates buffers with alloc_pages_exact(), but then marks them as reserved and frees using free_reserved_area(). This is completely unnecessary and the pages allocated with alloc_pages_exact() can be naturally freed with free_pages_exact(). Replace freeing of memory in fadump_free_buffer() with free_pages_exact() and simplify allocation code so that it won't mark allocated pages as reserved. Link: https://patch.msgid.link/20260323074836.3653702-3-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
2026-04-01powerpc: pci-ioda: Optimize pnv_ioda_pick_m64_pe()Yury Norov (NVIDIA)
bitmap_empty() in pnv_ioda_pick_m64_pe() is O(N) and useless because the following find_next_bit() does the same work. Drop it, and while there replace a while() loop with the dedicated for_each_set_bit(). Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com> Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20250814190936.381346-3-yury.norov@gmail.com
2026-04-01powerpc: pci-ioda: use bitmap_alloc() in pnv_ioda_pick_m64_pe()Yury Norov (NVIDIA)
Use the dedicated bitmap_alloc() in pnv_ioda_pick_m64_pe() and drop some housekeeping code. Because pe_alloc is local, annotate it with __free() and get rid of the explicit kfree() calls. Suggested-by: Jiri Slaby <jirislaby@kernel.org> Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20250814190936.381346-2-yury.norov@gmail.com
2026-04-01powerpc/net: Inline checksum wrappers and convert to scoped user accessChristophe Leroy (CS GROUP)
Commit 861574d51bbd ("powerpc/uaccess: Implement masked user access") provides optimised user access by avoiding the cost of access_ok(). Convert csum_and_copy_to_user() and csum_and_copy_from_user() to scoped user access to benefit from masked user access. csum_and_copy_to_user() and csum_and_copy_from_user() are only called respectively by csum_and_copy_to_iter() and csum_and_copy_from_iter_full() and they are only called twice. Those functions used to be large but they were first reduced by commit c693cc4676a0 ("saner calling conventions for csum_and_copy_..._user()") then commit 70d65cd555c5 ("ppc: propagate the calling conventions change down to csum_partial_copy_generic()"). With the additional size reduction provided by conversion to scoped user access they are not worth being kept out of line. $ ./scripts/bloat-o-meter vmlinux.0 vmlinux.1 add/remove: 0/2 grow/shrink: 2/0 up/down: 136/-176 (-40) Function old new delta csum_and_copy_to_iter 2416 2488 +72 csum_and_copy_from_iter_full 2272 2336 +64 csum_and_copy_to_user 88 - -88 csum_and_copy_from_user 88 - -88 Total: Before=11514471, After=11514431, chg -0.00% Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/f44e1b2760dbed35b237040001a91bc8304b726b.1773137098.git.chleroy@kernel.org
2026-04-01powerpc/sstep: Convert to scoped user accessChristophe Leroy (CS GROUP)
Commit 861574d51bbd ("powerpc/uaccess: Implement masked user access") provides optimised user access by avoiding the cost of access_ok(). Convert single step emulation functions to scoped user access to benefit from masked user access. Scoped user access also make the code simpler. Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/8f2d85bddacff18046096dc255fd94f6a0f8b230.1773137010.git.chleroy@kernel.org
2026-04-01powerpc/align: Convert emulate_spe() to scoped user accessChristophe Leroy (CS GROUP)
Commit 861574d51bbd ("powerpc/uaccess: Implement masked user access") provides optimised user access by avoiding the cost of access_ok(). Convert emulate_spe() to scoped user access to benefit from masked user access. Scoped user access also make the code simpler. Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/4ff83cb240da4e2d0c34e2bce4b8b6ef19a33777.1773136880.git.chleroy@kernel.org
2026-04-01powerpc/ptrace: Convert gpr32_set_common_user() to scoped user accessChristophe Leroy (CS GROUP)
Commit 861574d51bbd ("powerpc/uaccess: Implement masked user access") provides optimised user access by avoiding the cost of access_ok(). Convert gpr32_set_common_user() to scoped user access to benefit from masked user access. Scoped user access also make the code simpler. Also changes label from Efault to efault to avoid checkpatch complaining about CamelCase. Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/2409643daab08b4bc07004c2b88f42085d1ef45a.1773136838.git.chleroy@kernel.org
2026-04-01powerpc/futex: Use masked user accessChristophe Leroy (CS GROUP)
Commit 861574d51bbd ("powerpc/uaccess: Implement masked user access") provides optimised user access by avoiding the cost of access_ok(). Use masked user access in arch_futex_atomic_op_inuser() Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/e29f6a5c14e5938df68d94bfac6b2f762fb922aa.1773136636.git.chleroy@kernel.org
2026-04-01powerpc/audit: Convert powerpc to AUDIT_ARCH_COMPAT_GENERICChristophe Leroy
Commit e65e1fc2d24b ("[PATCH] syscall class hookup for all normal targets") added generic support for AUDIT but that didn't include support for bi-arch like powerpc. Commit 4b58841149dc ("audit: Add generic compat syscall support") added generic support for bi-arch. Convert powerpc to that bi-arch generic audit support. With this change generated text is similar. Thomas has confirmed that the previously failing filter_exclude/test is now successful both without and with this patch, see [1] [1] https://lore.kernel.org/all/20260306115350-ef265661-6d6b-4043-9bd0-8e6b437d0d67@linutronix.de/ Link: https://github.com/linuxppc/issues/issues/412 Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Reviewed-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/261b1be5b8dc526b83d73e8281e682a73536ea28.1773155031.git.chleroy@kernel.org
2026-04-01powerpc/ps3: spu.c: fix enum and Return kernel-doc warningsRandy Dunlap
Fix enum and function return value kernel-doc warnings: Warning: spu.c:36 Excess enum value '%spe_type_logical' description in 'spe_type' Warning: spu.c:78 Excess enum value '%spe_ex_state_unexecutable' description in 'spe_ex_state' Warning: spu.c:78 Excess enum value '%spe_ex_state_executable' description in 'spe_ex_state' Warning: spu.c:78 Excess enum value '%spe_ex_state_executed' description in 'spe_ex_state' Warning: spu.c:190 No description found for return value of 'setup_areas' Fixes: de91a5342995 ("[POWERPC] ps3: add spu support") Fixes: b47027795a22 ("powerpc/ps3: Fix ioremap of spu shadow regs") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260225055328.249204-1-rdunlap@infradead.org
2026-04-01powerpc: kgdb: fix kernel-doc warningsRandy Dunlap
Remove empty comment line at the beginning of a kernel-doc function block. Add a "Return:" section for this function. These changes prevent 2 kernel-doc warnings: Warning: ../arch/powerpc/kernel/kgdb.c:103 Cannot find identifier on line: * Warning: kgdb.c:113 No description found for return value of 'kgdb_skipexception' Fixes: 949616cf2d30 ("powerpc/kgdb: Bail out of KGDB when we've been triggered") Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260225055314.247966-1-rdunlap@infradead.org
2026-04-01powerpc/ps3: fix ps3.h kernel-doc warningsRandy Dunlap
Fix some kernel-doc warnings in ps3.h: - add @dev to struct ps3_dma_region - don't mark a function as "struct" - add Returns: description for one function - add a short description for ps3_system_bus_set_drvdata() - correct an enum @name - move intervening "struct ps3_system_bus_device;" from between kernel-doc for ps3_dma_region_init() and the function declaration to eliminate these warnings: Warning: arch/powerpc/include/asm/ps3.h:96 struct member 'dev' not described in 'ps3_dma_region' Warning: arch/powerpc/include/asm/ps3.h:118 struct ps3_system_bus_device; error: Cannot parse struct or union! Warning: arch/powerpc/include/asm/ps3.h:166 int ps3_mmio_region_init(struct ps3_system_bus_device *dev, struct ps3_mmio_region *r, unsigned long bus_addr, unsigned long len, enum ps3_mmio_page_size page_size); error: Cannot parse struct or union! Warning: arch/powerpc/include/asm/ps3.h:167 No description found for return value of 'ps3_mmio_region_init' Warning: arch/powerpc/include/asm/ps3.h:407 missing initial short description on line: * ps3_system_bus_set_drvdata - Warning: arch/powerpc/include/asm/ps3.h:473 Enum value 'PS3_LPM_TB_TYPE_INTERNAL' not described in enum 'ps3_lpm_tb_type' Warning: arch/powerpc/include/asm/ps3.h:473 Excess enum value '@PS3_LPM_RIGHTS_USE_TB' description in 'ps3_lpm_tb_type' This leaves struct members in several structs and function parameters in one function still undescribed. Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20251129183636.1893634-1-rdunlap@infradead.org
2026-04-01powerpc: wii: Fix LED name patternJ. Neuschäfer
Adjust the name of the drive slot LED node to comply with the schema in Documentation/devicetree/bindings/leds/leds-gpio.yaml. arch/powerpc/boot/dts/wii.dtb: gpio-leds: 'drive-slot' does not match any of the regexes: '(^led-[0-9a-f]$|led)', 'pinctrl-[0-9]+' Signed-off-by: J. Neuschäfer <j.ne@posteo.net> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260311-wii-schema-v1-3-1563ac4aefa8@posteo.net
2026-04-01powerpc: wii: Fix GPIO key name patternJ. Neuschäfer
Adjust the names of GPIO key nodes to comply with the schema in Documentation/devicetree/bindings/input/gpio-keys.yaml. Signed-off-by: J. Neuschäfer <j.ne@posteo.net> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260311-wii-schema-v1-2-1563ac4aefa8@posteo.net
2026-04-01powerpc: wii: Add unit address to /memoryJ. Neuschäfer
This fixes the following dtschema warning: arch/powerpc/boot/dts/wii.dtb: /: memory: False schema does not allow {'device_type': ['memory'], 'reg': [[0, 25165824], [268435456, 67108864]]} Signed-off-by: J. Neuschäfer <j.ne@posteo.net> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260311-wii-schema-v1-1-1563ac4aefa8@posteo.net
2026-04-01powerpc: Move GameCube/Wii options under EMBEDDED6xxJ. Neuschäfer
Move CONFIG_GAMECUBE and CONFIG_WII directly below other embedded6xx boards, and above options such as TSI108_BRIDGE. This has two advantages for the GC/Wii options: - They won't be moved around by USBGECKO_UDBG appearing or disappearing - They will be intendented in menuconfig/nconfig, to make it clear they are part of the embedded6xx platforms Signed-off-by: J. Neuschäfer <j.ne@posteo.net> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260303-gcwii-kconfig-v1-1-636b288e7270@posteo.net
2026-04-01powerpc/44x/uic: Consolidate chained IRQ handler install/removeChen Ni
The driver currently sets the handler data and the chained handler in two separate steps. This creates a theoretical race window where an interrupt could fire after the handler is set but before the data is assigned, leading to a NULL pointer dereference. Replace the two calls with irq_set_chained_handler_and_data() to set both the handler and its data atomically under the irq_desc->lock. Signed-off-by: Chen Ni <nichen@iscas.ac.cn> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260119063507.940782-1-nichen@iscas.ac.cn
2026-04-01powerpc/52xx/mpc52xx_gpt: consolidate chained IRQ handler install/removeChen Ni
The driver currently sets the handler data and the chained handler in two separate steps. This creates a theoretical race window where an interrupt could fire after the handler is set but before the data is assigned, leading to a NULL pointer dereference. Replace the two calls with irq_set_chained_handler_and_data() to set both the handler and its data atomically under the irq_desc->lock. Signed-off-by: Chen Ni <nichen@iscas.ac.cn> Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260119061232.889236-1-nichen@iscas.ac.cn
2026-04-01powerpc/52xx/media5200: Consolidate chained IRQ handler install/removeChen Ni
The driver currently sets the handler data and the chained handler in two separate steps. This creates a theoretical race window where an interrupt could fire after the handler is set but before the data is assigned, leading to a NULL pointer dereference. Replace the two calls with irq_set_chained_handler_and_data() to set both the handler and its data atomically under the irq_desc->lock. Signed-off-by: Chen Ni <nichen@iscas.ac.cn> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260119060450.889119-1-nichen@iscas.ac.cn
2026-04-01powerpc/xive: rework xive_find_target_in_mask()Yury Norov
Switch the function to using modern cpumask API and drop most of the housekeeping code. Notice, if first >= nr_cpu_ids, for_each_cpu_wrap() iterator behaves just like for_each_cpu(), i.e. begins from 0. So even if WARN_ON() is triggered, no special handling is needed. Signed-off-by: Yury Norov <ynorov@nvidia.com> Tested-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com> Reviewed-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260319033647.881246-3-ynorov@nvidia.com
2026-04-01Revert "powerpc/xive: Fix the size of the cpumask used in ↵Yury Norov
xive_find_target_in_mask()" This reverts commit a9dadc1c512807f955f0799e85830b420da47932. The commit message states: When called from xive_irq_startup(), the size of the cpumask can be larger than nr_cpu_ids. This can result in a WARN_ON. [...] This happens because we're being called with our affinity mask set to irq_default_affinity. That in turn was populated using cpumask_setall(), which sets NR_CPUs worth of bits, not nr_cpu_ids worth. Finally cpumask_weight() will return > nr_cpu_ids when passed a mask which has > nr_cpu_ids bits set. In modern kernel, cpumask_weight() can't return > nr_cpu_ids. In inline case, cpumask_setall() explicitly clears all bits above nr_cpu_ids, see commit 63355b9884b3 ("cpumask: be more careful with 'cpumask_setall()'"). So, despite that cpumask_weight() is passed with small_cpumask_bits, which is NR_CPUS in this case, it can't count over the nr_cpu_ids. In outline case, cpumask_setall() may set bits beyond the limit up to the next byte alignment, but in this case small_cpumask_bits is wired to nr_cpu_ids, thus making overcounting impossible. Signed-off-by: Yury Norov <ynorov@nvidia.com> Tested-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Reviewed-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260319033647.881246-2-ynorov@nvidia.com
2026-04-01powerpc/crash: Update backup region offset in elfcorehdr on memory hotplugSourabh Jain
When elfcorehdr is prepared for kdump, the program header representing the first 64 KB of memory is expected to have its offset point to the backup region. This is required because purgatory copies the first 64 KB of the crashed kernel memory to this backup region following a kernel crash. This allows the capture kernel to use the first 64 KB of memory to place the exception vectors and other required data. When elfcorehdr is recreated due to memory hotplug, the offset of the program header representing the first 64 KB is not updated. As a result, the capture kernel exports the first 64 KB at offset 0, even though the data actually resides in the backup region. Fix this by calling sync_backup_region_phdr() to update the program header offset in the elfcorehdr created during memory hotplug. sync_backup_region_phdr() works for images loaded via the kexec_file_load syscall. However, it does not work for kexec_load, because image->arch.backup_start is not initialized in that case. So introduce machine_kexec_post_load() to process the elfcorehdr prepared by kexec-tools and initialize image->arch.backup_start for kdump images loaded via kexec_load syscall. Rename update_backup_region_phdr() to sync_backup_region_phdr() and extend it to synchronize the backup region offset between the kdump image and the ELF core header. The helper now supports updating either the kdump image from the ELF program header or updating the ELF program header from the kdump image, avoiding code duplication. Define ARCH_HAS_KIMAGE_ARCH and struct kimage_arch when CONFIG_KEXEC_FILE or CONFIG_CRASH_DUMP is enabled so that kimage->arch.backup_start is available with the kexec_load system call. This patch depends on the patch titled "powerpc/crash: fix backup region offset update to elfcorehdr". Fixes: 849599b702ef ("powerpc/crash: add crash memory hotplug support") Reviewed-by: Aditya Gupta <adityag@linux.ibm.com> Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260312083051.1935737-3-sourabhjain@linux.ibm.com
2026-04-01powerpc/crash: fix backup region offset update to elfcorehdrSourabh Jain
update_backup_region_phdr() in file_load_64.c iterates over all the program headers in the kdump kernel’s elfcorehdr and updates the p_offset of the program header whose physical address starts at 0. However, the loop logic is incorrect because the program header pointer is not updated during iteration. Since elfcorehdr typically contains PT_NOTE entries first, the PT_LOAD program header with physical address 0 is never reached. As a result, its p_offset is not updated to point to the backup region. Because of this behavior, the capture kernel exports the first 64 KB of the crashed kernel’s memory at offset 0, even though that memory actually lives in the backup region. When a crash happens, purgatory copies the first 64 KB of the crashed kernel’s memory into the backup region so the capture kernel can safely use it. This has not caused problems so far because the first 64 KB is usually identical in both the crashed and capture kernels. However, this is just an assumption and is not guaranteed to always hold true. Fix update_backup_region_phdr() to correctly update the p_offset of the program header with a starting physical address of 0 by correcting the logic used to iterate over the program headers. Fixes: cb350c1f1f86 ("powerpc/kexec_file: Prepare elfcore header for crashing kernel") Reviewed-by: Aditya Gupta <adityag@linux.ibm.com> Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com> Reviewed-by: Hari Bathini <hbathini@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260312083051.1935737-2-sourabhjain@linux.ibm.com
2026-03-31ARM: dts: am335x: Add Seeed Studio BeagleBone HDMI cape overlayKory Maincent (TI)
Add devicetree overlay for the Seeed Studio BeagleBone HDMI cape, which provides HDMI output via an ITE IT66121 HDMI bridge and audio support through McASP. The cape is designed for BeagleBone Green but is also compatible with BeagleBone and BeagleBone Black due to pin compatibility. Link: https://www.seeedstudio.com/Seeed-Studio-BeagleBoner-Green-HDMI-Cape.html Signed-off-by: Kory Maincent (TI) <kory.maincent@bootlin.com> Signed-off-by: Kevin Hilman (TI) <khilman@baylibre.com>
2026-03-31ARM: dts: qcom: msm8974: Drop RPM bus clocksDmitry Baryshkov
Some nodes are abusingly referencing some of the internal bus clocks, that were recently removed in Linux (because the original implementation did not make much sense), managing them as if they were the only devices on an NoC bus. These clocks are now handled from within the icc framework and are no longer registered from within the CCF. Remove them. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Tested-by: Luca Weiss <luca.weiss@fairphone.com> # fairphone-fp2 Tested-by: Alexandre Messier <alex@me.ssier.org> Link: https://lore.kernel.org/r/20260324-msm8974-icc-v2-9-527280043ad8@oss.qualcomm.com Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2026-03-31riscv: dts: microchip: update mpfs gpio interrupts to better match the SoCConor Dooley
There are 3 GPIO controllers on this SoC, of which: - GPIO controller 0 has 14 GPIOs - GPIO controller 1 has 24 GPIOs - GPIO controller 2 has 32 GPIOs All GPIOs are capable of generating interrupts, for a total of 70. There are only 41 IRQs available however, so a configurable mux is used to ensure all GPIOs can be used for interrupt generation. 38 of the 41 interrupts are in what the documentation calls "direct mode", as they provide an exclusive connection from a GPIO to the PLIC. The 3 remaining interrupts are used to mux the interrupts which do not have a exclusive connection, one for each GPIO controller. The mux was overlooked when the bindings and driver were originally written for the GPIO controllers on Polarfire SoC, and the interrupts property in the GPIO nodes used to try and convey what the mapping was. Instead, the mux should be a device in its own right, and the GPIO controllers should be connected to it, rather than to the PLIC. Now that a binding exists for that mux, fix the inaccurate description of the interrupt controller hierarchy. GPIO controllers 0 and 1 do not have all 32 possible GPIO lines, so ngpios needs to be set to match the number of lines/interrupts. The m100pfsevp has conflicting interrupt mappings for controllers 0 and 2, as they cannot both be using an interrupt in "direct mode" at the same time, so the default replaces this impossible configuration. Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
2026-03-31KVM: s390: Fix lpsw/e breaking event handlingJanosch Frank
LPSW and LPSWE need to set the gbea on completion but currently don't. Time to fix this up. LPSWEY was designed to not set the bear. Fixes: 48a3e950f4cee ("KVM: s390: Add support for machine checks.") Reported-by: Christian Borntraeger <borntraeger@linux.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
2026-03-31KVM: s390: only deliver service interrupt with payloadEric Farman
Routine __inject_service() may set both the SERVICE and SERVICE_EV pending bits, and in the case of a pure service event the corresponding trip through __deliver_service_ev() will clear the SERVICE_EV bit only. This necessitates an additional trip through __deliver_service() for the other pending interrupt bit, however it is possible that the external interrupt parameters are zero and there is nothing to be delivered to the guest. To avoid sending empty data to the guest, let's only write out the SCLP data when there is something for the guest to do, otherwise bail out. Signed-off-by: Eric Farman <farman@linux.ibm.com> Acked-by: Christian Borntraeger <borntraeger@linux.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
2026-03-31x86/vdso: Drop pointless #ifdeffery in vvar_vclock_fault()Thomas Weißschuh
Sparse complains rightfully when CONFIG_PARAVIRT_CLOCK and CONFIG_HYPERV_TIMER are both not set: arch/x86/entry/vdso/vma.c:94:9: warning: switch with no cases The #ifdeffery is not actually necessary as the compiler can optimize away the branches already if these config options are not set. Remove the #ifdeffery to make the code simpler and Sparse happy. Closes: https://lore.kernel.org/lkml/20260117215542.405790227@kernel.org/ Reported-by: Thomas Gleixner <tglx@kernel.org> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Andy Lutomirski <luto@kernel.org> Link: https://patch.msgid.link/20260331-vdso-x86-ifdef-v1-1-6be9a58b1e7e@linutronix.de
2026-03-31x86/platform/geode: Fix on-stack property data use-after-return bugDmitry Torokhov
The PROPERTY_ENTRY_GPIO macro (and by extension PROPERTY_ENTRY_REF) creates a temporary software_node_ref_args structure on the stack when used in a runtime assignment. This results in the property pointing to data that is invalid once the function returns. Fix this by ensuring the GPIO reference data is not stored on stack and using PROPERTY_ENTRY_REF_ARRAY_LEN() to point directly to the persistent reference data. Fixes: 298c9babadb8 ("x86/platform/geode: switch GPIO buttons and LEDs to software properties") Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: Rafael J. Wysocki <rafael@kernel.org> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Daniel Scally <djrscally@gmail.com> Cc: Danilo Krummrich <dakr@kernel.org> Cc: Hans de Goede <hansg@kernel.org> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: Sakari Ailus <sakari.ailus@linux.intel.com> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20260329-property-gpio-fix-v2-1-3cca5ba136d8@gmail.com
2026-03-31x86/tls: Clean up 'sel' variable usage in do_set_thread_area()Uros Bizjak
The top-level 'sel' variable in do_set_thread_area() was previously marked __maybe_unused, but it is now only needed locally when updating the current task. Remove the unused top-level declaration and introduce a local 'sel' variable where it is actually used No functional change intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://patch.msgid.link/20260330085938.67985-4-ubizjak@gmail.com
2026-03-31x86/process/32: Use correct type for 'gs' variable in __show_regs() to avoid ↵Uros Bizjak
zero-extension Change the type of 'gs' variable in __show_regs() from 'unsigned short' to 'unsigned int'. This prevents unwanted zero-extension when storing the 16-bit segment register into a wider general purpose register. The code improves from: 50: 8c ee mov %gs,%esi 52: 0f b7 f6 movzwl %si,%esi ... be: 89 74 24 14 mov %esi,0x14(%esp) to: 50: 8c ef mov %gs,%edi ... bb: 89 7c 24 14 mov %edi,0x14(%esp) No functional change intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://patch.msgid.link/20260330085938.67985-3-ubizjak@gmail.com
2026-03-31x86/process/64: Use savesegment() in __show_regs() instead of inline asmUros Bizjak
Replace direct 'movl' instructions for DS, ES, FS, and GS read in __show_regs() with the savesegment() helper. This improves readability, consistency, and ensures proper handling of segment registers on x86_64. No functional change intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://patch.msgid.link/20260330085938.67985-2-ubizjak@gmail.com
2026-03-31x86/elf: Use savesegment() for segment register reads in ELF core dumpUros Bizjak
ELF_CORE_COPY_REGS() currently reads %ds, %es, %fs, and %gs using inline assembly and manual zero-extension. This results in redundant instructions like `mov %eax,%eax`. Replace the inline assembly with the `savesegment()` helper, which automatically zero-extends the value to the full register width, eliminating unnecessary instructions. For example, the %ds load sequence changes from: d03: 8c d8 mov %ds,%eax d05: 89 c0 mov %eax,%eax d07: 48 89 84 24 38 01 00 mov %rax,0x138(%rsp) d0e: 00 to: ce8: 8c d8 mov %ds,%eax cea: 48 89 84 24 38 01 00 mov %rax,0x138(%rsp) cf1: 00 thus eliminating the unnecessary zero-extending `mov %eax,%eax`. No functional change intended. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Link: https://patch.msgid.link/20260330085938.67985-1-ubizjak@gmail.com
2026-03-31x86/vdso: Clean up remnants of VDSO32_NOTE_MASKThomas Weißschuh
VDSO32_NOTE_MASK is not used or provided anymore, remove it. Fixes: a13f2ef168cb ("x86/xen: remove 32-bit Xen PV guest support") Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Juergen Gross <jgross@suse.com> Link: https://patch.msgid.link/20260330-vdso-x86-vdso32_note_mask-v1-1-2f5c473327bf@linutronix.de
2026-03-30arm64: dts: intel: agilex5: Drop CPU masks from GICv3 PPI interruptsGeert Uytterhoeven
Unlike older GIC variants, the GICv3 DT bindings do not support specifying a CPU mask in PPI interrupt specifiers. Drop the masks. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
2026-03-30arm64: dts: socfpga: stratix10: Add emmc supportNg Tze Yee
The Stratix10 devkit supports a separate eMMC daughter card. The eMMC daughter card replaces the SDMMC slot that is on the default daughter card and thus requires a separate board dts file. Signed-off-by: Ng Tze Yee <tzeyee.ng@altera.com> Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
2026-03-30x86-64/arm64/powerpc: clean up and rename __copy_from_user_flushcacheLinus Torvalds
This finishes the work on these odd functions that were only implemented by a handful of architectures. The 'flushcache' function was only used from the iterator code, and let's make it do the same thing that the nontemporal version does: remove the two underscores and add the user address checking. Yes, yes, the user address checking is also done at iovec import time, but we have long since walked away from the old double-underscore thing where we try to avoid address checking overhead at access time, and these functions shouldn't be so special and old-fashioned. The arm64 version already did the address check, in fact, so there it's just a matter of renaming it. For powerpc and x86-64 we now do the proper user access boilerplate. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>