[GIT PULL] RISC-V updates for v7.2
Paul Walmsley
pjw at kernel.org
Wed Jun 17 15:51:04 PDT 2026
Linus,
Please pull the following RISC-V changes for v7.2-rc1. These are
mostly fixes and cleanups. Seems primarily due to more people using
RISC-V systems, rather than increased LLM usage; but, hard to be
certain. In any case, I hope we'll be able to focus more on features
for the next merge window.
thanks,
- Paul
The following changes since commit 15b4155138505669d3d43d7692459ee8ea2a86e7:
riscv: cfi: reject unknown flags in PR_SET_CFI (2026-06-06 20:17:05 -0600)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux tags/riscv-for-linus-7.2-mw1
for you to fetch changes up to 319fafd9a3743b617b8547d81c41c99fb67857b1:
riscv: traps_misaligned: Avoid redundant unaligned access speed probe (2026-06-08 10:47:22 -0600)
----------------------------------------------------------------
RISC-V updates for v7.2
- Prevent get_free_mem_region() from returning regions that are
unmappable in certain circumstances by defining
DIRECT_MAP_PHYSMEM_END for RISC-V
- Fix an early boot problem with kexec_file when the amount of
installed physical memory installed on the system exceeds the direct
map size, which is possible in certain RISC-V virtual memory modes
- Unconditionally sfence.vma in the new vmalloc area handling code in
the page fault handler, since even the presence of Svvptc doesn't
guarantee that the CPU won't immediately fault again after the
exception handler completes and subsequently crash
- Fix ftrace_graph_ret_addr() to use the correct task pointer
(aligning with what other architectures do)
- Fix the misaligned access performance checking code in cases when
performance is specified on the kernel command line and when CPUs
have been brought offline and back online
- Get rid of a bogus address offset in the non-frame-pointer version
of walk_stackframe(), aligning it with the frame pointer-based code
- Fix a RISC-V kfence issue causing bogus use-after-free warnings
- Add ARCH_HAS_CC_CAN_LINK for RISC-V, which needs different compiler
command line flags than other architectures
- Implement _THIS_IP_ using RISC-V-specific assembly, which seems to
be less brittle (from a compiler point of view) than taking the
address of a label
- Reduce kernel startup overhead by defining
HAVE_BUILDTIME_MCOUNT_SORT, since arch/riscv meets all the
requirements
- Patch the CFI vDSO during alternatives processing, not only the
standard vDSO
- Fix a potential memory leak in the cacheinfo code
- Clean up kernel/setup.c:add_resource() to pass along the return
value from insert_resource() and to improve the display of
resource ranges
- Clean up our purgatory.[ch] by aligning our purgatory() prototype
to what's in arch/x86, and by cleaning up verify_sha256_digest()
- Clean up cpu_is_stopped() to align its function a little more
closely to its name
- Replace some unbounded string function usage in get_early_cmdline()
and the ptdump code with strscpy()
- Replace sprintf() with sysfs_emit() in cpu_show_ghostwrite() for
safer bounds checking
- Standardize how compiler output flags are specified in the RISC-V
kselftests, aligning them with what other architectures do
- Use the Linux-generic cmp_int() macro in place of an open-coded
"cmp_3way()" macro in kernel/module-sections.c
- Panic early in boot if IRQ handler stacks can't be allocated rather
than pretending to continue normally
- Add support for Eswin SoCs in the RISC-V defconfig
- Remove some unnecessary conditionals in sbi_hsm_hart_{start,stop}()
- Clean up some Kconfig infelicities found by Kconfirm
- Replace an open-coded version of min() in the kexec_elf code with
the standard min() function
----------------------------------------------------------------
Anirudh Srinivasan (1):
riscv: defconfig: Enable Eswin SoCs
Chen Pei (1):
riscv: ftrace: select HAVE_BUILDTIME_MCOUNT_SORT
Florian Schmaus (1):
riscv: module: Use generic cmp_int() instead of custom cmp_3way()
Han Gao (2):
riscv: kexec_file: Constrain segment placement to direct map
riscv: also select ARCH_KEEP_MEMBLOCK if kexec is selected
Hui Wang (3):
riscv: kexec_elf: Remove unused pr_fmt definition
riscv: cpu_ops: Change return value type of cpu_is_stopped() to bool
riscv: cpu_ops_sbi: No need to be bothered to check ret.error
Julian Braha (2):
riscv: replace select with dependency for visible RELOCATABLE
riscv: dead code cleanup in kconfig for RISCV_PROBE_VECTOR_UNALIGNED_ACCESS
Marco Elver (1):
riscv: Implement _THIS_IP_ using inline asm
Nam Cao (2):
riscv: misaligned: Fix fast_unaligned_access_speed_key init
riscv: traps_misaligned: Avoid redundant unaligned access speed probe
Osama Abdelkader (1):
riscv: panic if IRQ handler stacks cannot be allocated
Rui Qi (2):
riscv: Fix ftrace_graph_ret_addr() to use the correct task pointer
riscv: stacktrace: Remove bogus -0x4 offset in non-FP walk_stackframe
Thomas Weißschuh (5):
riscv: Implement ARCH_HAS_CC_CAN_LINK
riscv: vdso: Always declare vdso_start symbols
riscv: alternative: Use IS_ENABLED() over ifdeffery for apply_vdso_alternatives()
riscv: alternative: Pass vDSO start as parameter to apply_vdso_alternatives()
riscv: alternative: Also patch the CFI vDSO
Thorsten Blum (7):
riscv/purgatory: return bool from verify_sha256_digest
riscv/purgatory: add asm/purgatory.h
riscv: ptdump: Replace unbounded sprintf() in dump_prot()
riscv: pi: replace strlcat with strscpy in get_early_cmdline
riscv: use sysfs_emit in cpu_show_ghostwrite
riscv: propagate insert_resource result from add_resource
riscv: kexec: use min to simplify riscv_kexec_elf_load
Vivian Wang (6):
riscv: mm: Define DIRECT_MAP_PHYSMEM_END
riscv: mm: Extract helper mark_new_valid_map()
riscv: kfence: Call mark_new_valid_map() for kfence_unprotect()
riscv: mm: Rename new_vmalloc into new_valid_map_cpus
riscv: mm: Use the bitmap API for new_valid_map_cpus
riscv: mm: Unconditionally sfence.vma for spurious fault
Zishun Yi (1):
riscv: cacheinfo: Fix node reference leak in populate_cache_leaves
Zong Li (1):
selftests/riscv: fix compiler output flag spacing in all Makefiles
arch/riscv/Kconfig | 21 ++++++--
arch/riscv/configs/defconfig | 1 +
arch/riscv/include/asm/cacheflush.h | 25 ++++-----
arch/riscv/include/asm/cpu_ops.h | 2 +-
arch/riscv/include/asm/kfence.h | 7 ++-
arch/riscv/include/asm/linkage.h | 2 +
arch/riscv/include/asm/pgtable.h | 10 ++++
arch/riscv/include/asm/purgatory.h | 11 ++++
arch/riscv/include/asm/vdso.h | 10 ++--
arch/riscv/kernel/alternative.c | 14 ++---
arch/riscv/kernel/bugs.c | 12 ++---
arch/riscv/kernel/cacheinfo.c | 2 +-
arch/riscv/kernel/cpu-hotplug.c | 4 +-
arch/riscv/kernel/cpu_ops_sbi.c | 22 ++++----
arch/riscv/kernel/entry.S | 51 ++++++++++--------
arch/riscv/kernel/irq.c | 22 +++++---
arch/riscv/kernel/kexec_elf.c | 10 +---
arch/riscv/kernel/machine_kexec_file.c | 3 +-
arch/riscv/kernel/module-sections.c | 6 +--
arch/riscv/kernel/pi/cmdline_early.c | 16 +++---
arch/riscv/kernel/setup.c | 11 ++--
arch/riscv/kernel/stacktrace.c | 4 +-
arch/riscv/kernel/traps_misaligned.c | 4 +-
arch/riscv/kernel/unaligned_access_speed.c | 69 ++++++++----------------
arch/riscv/mm/init.c | 2 +-
arch/riscv/mm/ptdump.c | 13 ++---
arch/riscv/purgatory/purgatory.c | 16 +++---
tools/testing/selftests/riscv/abi/Makefile | 2 +-
tools/testing/selftests/riscv/cfi/Makefile | 2 +-
tools/testing/selftests/riscv/hwprobe/Makefile | 6 +--
tools/testing/selftests/riscv/mm/Makefile | 2 +-
tools/testing/selftests/riscv/sigreturn/Makefile | 2 +-
tools/testing/selftests/riscv/vector/Makefile | 12 ++---
33 files changed, 205 insertions(+), 191 deletions(-)
create mode 100644 arch/riscv/include/asm/purgatory.h
vmlinux size differences in bytes (from 15b415513850):
text data bss dec hex filename
+3913 +48816 -64 +52665 +cdb9 vmlinux.defconfig.gcc-15
-2056 +192 -8 -1872 -750 vmlinux.nosmp_defconfig.gcc-15
+4225 +30056 -64 +34217 +85a9 vmlinux.rv32_defconfig.gcc-15
-2340 +128 -8 -2220 -8ac vmlinux.rv32_nosmp_defconfig.gcc-15
+19 . -120 -101 -65 vmlinux.nommu_virt_defconfig.gcc-15
+4357 +47344 -64 +51637 +c9b5 vmlinux.defconfig.clang-20
+3856 -3252 . +604 +25c vmlinux.nosmp_defconfig.clang-20
+7613 +29256 -64 +36805 +8fc5 vmlinux.rv32_defconfig.clang-20
+7344 -4656 -64 +2624 +a40 vmlinux.rv32_nosmp_defconfig.clang-20
-97 +4096 -64 +3935 +f5f vmlinux.nommu_virt_defconfig.clang-20
+3873 +52784 -64 +56593 +dd11 vmlinux.defconfig.gcc-14
-2472 +180 -8 -2300 -8fc vmlinux.nosmp_defconfig.gcc-14
+4217 +29992 -64 +34145 +8561 vmlinux.rv32_defconfig.gcc-14
-2728 +116 -8 -2620 -a3c vmlinux.rv32_nosmp_defconfig.gcc-14
+31 . -120 -89 -59 vmlinux.nommu_virt_defconfig.gcc-14
+4437 +47408 -64 +51781 +ca45 vmlinux.defconfig.clang-19
+3908 -3308 -8 +592 +250 vmlinux.nosmp_defconfig.clang-19
+7677 +28680 -64 +36293 +8dc5 vmlinux.rv32_defconfig.clang-19
+7392 -4756 -16 +2620 +a3c vmlinux.rv32_nosmp_defconfig.clang-19
-113 -64 -56 -233 -e9 vmlinux.nommu_virt_defconfig.clang-19
+3829 +48784 -64 +52549 +cd45 vmlinux.defconfig.gcc-13
-2836 +128 -8 -2716 -a9c vmlinux.nosmp_defconfig.gcc-13
+4045 +30024 -64 +34005 +84d5 vmlinux.rv32_defconfig.gcc-13
-2952 +96 -8 -2864 -b30 vmlinux.rv32_nosmp_defconfig.gcc-13
-1 . -120 -121 -79 vmlinux.nommu_virt_defconfig.gcc-13
+4481 +47408 -64 +51825 +ca71 vmlinux.defconfig.clang-18
+3812 -3564 -8 +240 +f0 vmlinux.nosmp_defconfig.clang-18
+7589 +28744 -64 +36269 +8dad vmlinux.rv32_defconfig.clang-18
+7456 -4756 -16 +2684 +a7c vmlinux.rv32_nosmp_defconfig.clang-18
-133 . -56 -189 -bd vmlinux.nommu_virt_defconfig.clang-18
+4453 +48848 -64 +53237 +cff5 vmlinux.defconfig.gcc-12
-2572 +256 -8 -2324 -914 vmlinux.nosmp_defconfig.gcc-12
+3533 +29992 -64 +33461 +82b5 vmlinux.rv32_defconfig.gcc-12
-3272 +128 -8 -3152 -c50 vmlinux.rv32_nosmp_defconfig.gcc-12
-13 . -120 -133 -85 vmlinux.nommu_virt_defconfig.gcc-12
+4545 +47536 -64 +52017 +cb31 vmlinux.defconfig.clang-17
+3964 -3564 -8 +392 +188 vmlinux.nosmp_defconfig.clang-17
+7489 +28584 -64 +36009 +8ca9 vmlinux.rv32_defconfig.clang-17
+7528 -4748 -16 +2764 +acc vmlinux.rv32_nosmp_defconfig.clang-17
-101 . -56 -157 -9d vmlinux.nommu_virt_defconfig.clang-17
+4205 +48704 -64 +52845 +ce6d vmlinux.defconfig.gcc-11
-2660 +160 -8 -2508 -9cc vmlinux.nosmp_defconfig.gcc-11
+3469 +29944 -64 +33349 +8245 vmlinux.rv32_defconfig.gcc-11
-2724 +72 -8 -2660 -a64 vmlinux.rv32_nosmp_defconfig.gcc-11
-9 . -120 -129 -81 vmlinux.nommu_virt_defconfig.gcc-11
-76 . -8 -84 -54 vmlinux.allnoconfig.gcc-14
-78761 +608 +1800 -76353 -12a41 vmlinux.allmodconfig.gcc-14
-48 -160 -8 -216 -d8 vmlinux.allnoconfig.clang-19
+4179 -19204 -256 -15281 -3bb1 vmlinux.allmodconfig.clang-19
More information about the linux-riscv
mailing list