[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