[GIT PULL] RISC-V updates for v7.2-rc4
Paul Walmsley
pjw at kernel.org
Sun Jul 19 09:47:00 PDT 2026
Linus,
Please pull these RISC-V updates for v7.2-rc4. From a maintenance
perspective, there's a change in common code to now call
flush_cache_vmap() after setting up new vmemmap pages on configs using
CONFIG_SPARSEMEM_VMEMMAP. This is to avoid spurious faults on
microarchitectures that support caching PTEs marked non-present, such as
RISC-V and PowerPC.
Otherwise, not much to note. In the event you notice a significant kernel
size reduction on RISC-V (below), it comes from a fix to relax function
alignment constraints when dynamic ftrace is disabled.
thanks,
- Paul
The following changes since commit a13c140cc289c0b7b3770bce5b3ad42ab35074aa:
Linux 7.2-rc3 (2026-07-12 14:16:39 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux tags/riscv-for-linus-7.2-rc4
for you to fetch changes up to 5caae1deee89a6582c761d5dcd4b924b744426cc:
riscv: hwprobe: Avoid uninitialized read in hwprobe_get_cpus() (2026-07-15 11:12:40 -0600)
----------------------------------------------------------------
RISC-V updates for v7.2-rc4
- Call flush_cache_vmap() after populating new vmemmap pages, on all
architectures. This avoids spurious faults on RISC-V
microarchitectures that cache PTEs marked as non-present
- Disable LTO for the vDSO to prevent the compiler from eliding
functions that are used, but which don't appear to be
- Fix an issue with libgcc's unwinder and signal handlers by dropping
an unnecessary CFI landing pad instruction in __vdso_rt_sigreturn
(similar to what was done on ARM64)
- Avoid reading uninitialized memory under certain conditions in
hwprobe_get_cpus()
- Save some memory and I$ when CONFIG_DYNAMIC_FTRACE=n by avoiding
our four-byte function alignment requirement in that case
- Avoid clang warnings about null-pointer arithmetic in the I/O-port
accessor macros (inb, outb, etc.) by ifdeffing them out when
!CONFIG_HAS_IOPORT
- Make the build of the lazy TLB flushing code in the vmalloc path
depend on CONFIG_64BIT and CONFIG_MMU (since those platforms are the
only ones that use it)
----------------------------------------------------------------
Aurelien Jarno (1):
arch/riscv: vdso: remove CFI landing pad from rt_sigreturn
Mark Harris (1):
riscv: hwprobe: Avoid uninitialized read in hwprobe_get_cpus()
Rui Qi (1):
riscv: Gate FUNCTION_ALIGNMENT_4B on DYNAMIC_FTRACE
Thomas Weißschuh (1):
riscv: vdso: Do not use LTO for the vDSO
Vivian Wang (2):
riscv: mm: Make mark_new_valid_map() stuff depend on 64BIT && MMU
mm/sparse-vmemmap: flush_cache_vmap() after hotplugging vmemmap
Yunhui Cui (1):
riscv: io: avoid null-pointer arithmetic in PIO helpers
arch/riscv/Kconfig | 2 +-
arch/riscv/include/asm/cacheflush.h | 5 +++--
arch/riscv/include/asm/io.h | 8 ++++++++
arch/riscv/kernel/entry.S | 2 +-
arch/riscv/kernel/sys_hwprobe.c | 1 +
arch/riscv/kernel/vdso/Makefile | 6 +++---
arch/riscv/kernel/vdso/rt_sigreturn.S | 10 +++++++++-
arch/riscv/mm/init.c | 2 ++
mm/sparse-vmemmap.c | 2 ++
9 files changed, 30 insertions(+), 8 deletions(-)
vmlinux size differences in bytes (from a13c140cc289):
text data bss dec hex filename
-52032 +96 . -51936 -cae0 vmlinux.defconfig.gcc-16
-55224 -4000 . -59224 -e758 vmlinux.nosmp_defconfig.gcc-16
-51598 +96 -64 -51566 -c96e vmlinux.rv32_defconfig.gcc-16
-49942 +96 . -49846 -c2b6 vmlinux.rv32_nosmp_defconfig.gcc-16
-175 +64 . -111 -6f vmlinux.nommu_virt_defconfig.gcc-16
-47958 +96 . -47862 -baf6 vmlinux.defconfig.clang-20
-45794 -4000 . -49794 -c282 vmlinux.nosmp_defconfig.clang-20
-48052 +64 . -47988 -bb74 vmlinux.rv32_defconfig.clang-20
-46754 +96 . -46658 -b642 vmlinux.rv32_nosmp_defconfig.clang-20
-179 . -64 -243 -f3 vmlinux.nommu_virt_defconfig.clang-20
-51822 +64 . -51758 -ca2e vmlinux.defconfig.gcc-15
-54878 +64 . -54814 -d61e vmlinux.nosmp_defconfig.gcc-15
-51306 +96 -64 -51274 -c84a vmlinux.rv32_defconfig.gcc-15
-49928 +64 . -49864 -c2c8 vmlinux.rv32_nosmp_defconfig.gcc-15
-175 . . -175 -af vmlinux.nommu_virt_defconfig.gcc-15
-51546 -4000 . -55546 -d8fa vmlinux.defconfig.gcc-14
-54146 +64 . -54082 -d342 vmlinux.nosmp_defconfig.gcc-14
-50974 +64 -64 -50974 -c71e vmlinux.rv32_defconfig.gcc-14
-49990 +96 . -49894 -c2e6 vmlinux.rv32_nosmp_defconfig.gcc-14
-171 . . -171 -ab vmlinux.nommu_virt_defconfig.gcc-14
-48012 +128 . -47884 -bb0c vmlinux.defconfig.clang-19
-46590 +96 . -46494 -b59e vmlinux.nosmp_defconfig.clang-19
-47570 +64 . -47506 -b992 vmlinux.rv32_defconfig.clang-19
-46914 +64 . -46850 -b702 vmlinux.rv32_nosmp_defconfig.clang-19
-179 +64 . -115 -73 vmlinux.nommu_virt_defconfig.clang-19
+1340 +64 . +1404 +57c vmlinux.defconfig.gcc-13
+1380 +64 . +1444 +5a4 vmlinux.nosmp_defconfig.gcc-13
+16 +64 -64 +16 +10 vmlinux.rv32_defconfig.gcc-13
. +64 . +64 +40 vmlinux.rv32_nosmp_defconfig.gcc-13
-171 +64 -64 -171 -ab vmlinux.nommu_virt_defconfig.gcc-13
-48100 -4000 . -52100 -cb84 vmlinux.defconfig.clang-18
-46248 +96 . -46152 -b448 vmlinux.nosmp_defconfig.clang-18
-47328 +96 . -47232 -b880 vmlinux.rv32_defconfig.clang-18
-46848 +96 . -46752 -b6a0 vmlinux.rv32_nosmp_defconfig.clang-18
-179 . . -179 -b3 vmlinux.nommu_virt_defconfig.clang-18
+1272 +64 . +1336 +538 vmlinux.defconfig.gcc-12
+1360 +64 . +1424 +590 vmlinux.nosmp_defconfig.gcc-12
+8 +96 -64 +40 +28 vmlinux.rv32_defconfig.gcc-12
. +96 . +96 +60 vmlinux.rv32_nosmp_defconfig.gcc-12
-171 +64 -64 -171 -ab vmlinux.nommu_virt_defconfig.gcc-12
-51446 +96 . -51350 -c896 vmlinux.defconfig.clang-17
-46236 +96 . -46140 -b43c vmlinux.nosmp_defconfig.clang-17
-47106 +64 . -47042 -b7c2 vmlinux.rv32_defconfig.clang-17
-46356 +96 . -46260 -b4b4 vmlinux.rv32_nosmp_defconfig.clang-17
-179 +64 . -115 -73 vmlinux.nommu_virt_defconfig.clang-17
+1276 +64 . +1340 +53c vmlinux.defconfig.gcc-11
+1396 +64 . +1460 +5b4 vmlinux.nosmp_defconfig.gcc-11
+16 +96 -64 +48 +30 vmlinux.rv32_defconfig.gcc-11
. +64 . +64 +40 vmlinux.rv32_nosmp_defconfig.gcc-11
-155 . -64 -219 -db vmlinux.nommu_virt_defconfig.gcc-11
-13158 -4096 . -17254 -4366 vmlinux.allnoconfig.gcc-15
+40288 +2908 -128 +43068 +a83c vmlinux.allmodconfig.gcc-15
-11930 +12288 . +358 +166 vmlinux.allnoconfig.clang-19
+3980 +856 . +4836 +12e4 vmlinux.allmodconfig.clang-19
More information about the linux-riscv
mailing list