RISC-V Software News

December 2024 — Upstream Open Source Activity

The Big Picture

A strong December for the RISC-V software stack: 364 commits across 12 projects. The most active projects were LLVM (RISC-V) (166), QEMU (RISC-V) (46), OpenSBI (42). Virtualisation saw 12 KVM-related patches.

RISC-V International

The spec repos saw 22 commits this month, led by ISA Manual with 10 commits.

Spec Repository Activity

RepositoryCommitsContributors
ISA Manual 10 10
SBI Spec 4 3
ELF psABI 4 3
Debug Spec 3 3
Profiles 1 1

Linux Kernel (RISC-V)

31
Commits
17
Contributors
295
Lines Added
94
Lines Removed

A steady month for Linux Kernel (RISC-V) with 31 commits from 17 contributors. Masami Hiramatsu (Google) was the most active contributor with 6 commits. New feature work included 11 commits: "RISC-V: KVM: Add new exit statstics for redirected traps"; "RISC-V: KVM: Add SBI system suspend support". KVM and virtualisation received 9 patches.

11 New features & support 9 KVM / Virtualisation 3 ISA extensions 3 Bug fixes 3 Device tree / platform support 2 Performance optimisations 1 Interrupt controllers (AIA/APLIC/PLIC)

Notable Changes

  • riscv: defconfig: enable pinctrl and dwmac support for TH1520 (e7177ecdd2, Drew Fustini)
  • riscv: defconfig: enable pinctrl and dwmac support for TH1520 (0207244ea0, Drew Fustini)
  • RISC-V: KVM: Add new exit statstics for redirected traps (af79caa83f, Atish Patra)
  • RISC-V: KVM: Add SBI system suspend support (023c15151f, Andrew Jones)
  • lib/crc32: expose whether the lib is really optimized at runtime (and 2 more) (b5ae12e0ee, Eric Biggers)
  • tracing: Add ftrace_partial_regs() for converting ftrace_regs to pt_regs (b9b55c8912, Masami Hiramatsu (Google))
  • riscv: dts: starfive: jh7110-pine64-star64: enable usb0 host function (03bd268ae0, E Shattow)
  • riscv: dts: starfive: jh7110-milkv-mars: enable usb0 host function (708d55db3e, E Shattow)
  • kexec: Consolidate machine_kexec_mask_interrupts() implementation (bad6722e47, Eliav Farber)
  • riscv: Fix wrong usage of __pa() on a fixmap address (c796e18720, Alexandre Ghiti)
  • fprobe: Rewrite fprobe on function-graph tracer (4346ba1604, Masami Hiramatsu (Google))
  • fprobe: Add fprobe_header encoding feature (b5fa903b7f, Masami Hiramatsu (Google))
  • ftrace: Add CONFIG_HAVE_FTRACE_GRAPH_FUNC (a762e9267d, Masami Hiramatsu (Google))
  • riscv/futex: Optimize atomic cmpxchg (9d0593da94, Davidlohr Bueso)
  • riscv: dts: thead: Add mailbox node (c95c1362e5, Michal Wilczynski)

Top Contributors

AuthorCommits
Masami Hiramatsu (Google)6
Quan Zhou4
Eric Biggers3
Atish Patra2
Drew Fustini2
Alexandre Ghiti2
E Shattow2
Nathan Chancellor1
Andrew Jones1
Celeste Liu1

OpenSBI

42
Commits
11
Contributors
6038
Lines Added
177
Lines Removed

A productive month for OpenSBI with 42 commits from 11 contributors. Top contributor: Anup Patel with 14 commits. New feature work included 21 commits: "top: add ~ files to .gitignore"; "Makefile: Don't enable V-extension using -march option". AIA and interrupt controller work accounted for 10 patches. Bug fixes accounted for 7 commits (16%). Board and device tree support got 6 commits.

21 New features & support 10 Interrupt controllers (AIA/APLIC/PLIC) 7 Bug fixes 6 Device tree / platform support 3 ISA extensions 1 Vector extension (RVV) 1 Compiler backend / code generation 1 Cleanup & refactoring

Notable Changes

  • lib/utils: Add RPMI messaging protocol and shared memory transport support (91f46fb47e, Rahul Pathak)
  • lib: sbi_misaligned_ldst: Add handling of vector load/store (c2acc5e5b0, Nylon Chen)
  • Makefile: Don't enable V-extension using -march option (5545602f77, Anup Patel)
  • lib: utils/mailbox: Add simple FDT based mailbox framework (2244a34f0d, Anup Patel)
  • include: sbi: Fix compiling with C23 enabled compilers (d539d64a23, Michael Neuling)
  • lib: sbi: Add optional resume address to hart suspend (fdd7263536, Subrahmanya Lingappa)
  • lib: utils/suspend: Add RPMI system suspend driver (13f55f33a1, Subrahmanya Lingappa)
  • lib: utils/mpxy: Add RPMI client driver for MPXY (c5a8b15e39, Rahul Pathak)
  • lib: sbi: Add SBI Message Proxy (MPXY) framework (7939bf1329, Rahul Pathak)
  • lib: utils/mailbox: Add generic mailbox library (ad846a7cb8, Anup Patel)
  • lib/utils: reset: Add RPMI System Reset driver (6a26726e08, Rahul Pathak)
  • lib: utils/cppc: Add RPMI CPPC driver (591a98bdd5, Subrahmanya Lingappa)
  • lib: utils/hsm: Add RPMI HSM driver (33ee9b8240, Subrahmanya Lingappa)
  • top: add ~ files to .gitignore (c7866d99fe, Ben Dooks)
  • inclue: sbi_utils: Cleanup int vs bool in semihosting_init() definitions (91196d76b7, Michael Neuling)

Top Contributors

AuthorCommits
Anup Patel14
Atish Patra6
Rahul Pathak5
Ben Dooks4
Subrahmanya Lingappa4
Michael Neuling2
Samuel Holland2
Clément Léger2
Xiang W1
Nylon Chen1

Mailing List Activity

QEMU (RISC-V)

46
Commits
14
Contributors
1192
Lines Added
247
Lines Removed

A productive month for QEMU (RISC-V) with 46 commits from 14 contributors. Daniel Henrique Barboza was the most active contributor with 13 commits. New feature work included 18 commits: "target/riscv: add support for RV64 Xiangshan Nanhu CPU"; "target/riscv: add ssstateen". Interrupt controller infrastructure (AIA/APLIC/PLIC/IMSIC) received 4 patches. KVM and virtualisation received 2 patches.

18 New features & support 5 ISA extensions 4 Interrupt controllers (AIA/APLIC/PLIC) 2 KVM / Virtualisation 2 Bug fixes 2 Cleanup & refactoring 1 Compiler backend / code generation 1 Device tree / platform support

Notable Changes

  • target/riscv: add support for RV64 Xiangshan Nanhu CPU (2fc8f50ead, MollyChen)
  • hw/riscv/virt.c, riscv-iommu-sys.c: add MSIx support (01c1caa9d1, Daniel Henrique Barboza)
  • hw/riscv: Add the checking if DTB overlaps to kernel or initrd (and 2 more) (1a65064c1f, Jim Shu)
  • hw/acpi: Upgrade ACPI SPCR table to support SPCR table revision 4 format (6ab861421c, Sia Jee Heng)
  • hw/intc/riscv_aplic: add kvm_msicfgaddr for split mode aplic-imsic (e0c87e3067, Daniel Henrique Barboza)
  • hw/riscv/virt: Add IOMMU as platform device if the option is set (2c12de1460, Sunil V L)
  • target/riscv: Check svukte is not enabled in RV32 (and 5 more) (19d476ff13, Fea.Wang)
  • target/riscv: Include missing headers in 'vector_internals.h' (04480a0e22, Philippe Mathieu-Daudé)
  • hw/riscv/virt.c, riscv_aplic.c: add 'emulated_aplic' helpers (b319ef15b8, Daniel Henrique Barboza)
  • hw/riscv/riscv-iommu.c: add riscv_iommu_instance_init() (4876e6f7b5, Daniel Henrique Barboza)
  • hw/riscv/riscv-iommu: implement reset protocol (9afd26715e, Daniel Henrique Barboza)
  • hw/riscv: add riscv-iommu-sys platform device (5b128435dc, Tomasz Jeznach)
  • target/riscv: Add Tenstorrent Ascalon CPU (997570359e, Anton Blanchard)
  • hw/riscv: Add Microblaze V generic board (77aad42ee2, Sai Pavan Boddu)
  • target/riscv: add ssstateen (c3de19c0cc, Daniel Henrique Barboza)

Top Contributors

AuthorCommits
Daniel Henrique Barboza13
Philippe Mathieu-Daudé9
Fea.Wang6
Richard Henderson5
Jim Shu3
Peter Maydell2
Alexander Graf1
MollyChen1
Sia Jee Heng1
Sai Pavan Boddu1

GCC (RISC-V)

32
Commits
12
Contributors
1234
Lines Added
613
Lines Removed

GCC (RISC-V) kept moving with 32 commits from 12 contributors. Robin Dapp was the most active contributor with 8 commits. New feature work included 12 commits: "[PATCH v2 2/2] RISC-V: Add Tenstorrent Ascalon 8 wide architecture"; "RISC-V: Add new constraint R for register even-odd pairs". Compiler backend and code generation improvements accounted for 10 commits. RVV work continued with 5 commits touching vector-related code.

12 New features & support 10 Compiler backend / code generation 6 Cleanup & refactoring 5 Vector extension (RVV) 5 Bug fixes 1 ISA extensions 1 Performance optimisations

Notable Changes

  • RISC-V: Add intrinsics support for SiFive Xsfvfnrclipxfqf extensions. (1352d4dd09, yulong)
  • RISC-V: Add new constraint R for register even-odd pairs (and 4 more) (fcbb8456a5, Kito Cheng)
  • [RISC-V][PR target/118122] Fix modes in recently added risc-v pattern (64d31343d4, Jeff Law)
  • [PATCH v2 2/2] RISC-V: Add Tenstorrent Ascalon 8 wide architecture (4aa01ecc5c, Anton Blanchard)
  • Revert "RISC-V: Add const to function_shape::get_name [NFC]" (567b0405e3, Kito Cheng)
  • RISC-V: Add const to function_shape::get_name [NFC] (9bf4cad4e4, Kito Cheng)
  • diagnostics: UX: add doc URLs for attributes (v2) (5a022062d2, David Malcolm)
  • RISC-V: Add --with-cmodel configure option (feea589d78, Hau Hsu)
  • RISC-V: Fix the the operand alignment for strided load/store pattern [NFC] (and 3 more) (cf59bf8440, Pan Li)
  • [PATCH] RISC-V: optimization on checking certain bits set ((x & mask) == val) (d17b09c07a, Oliver Kozul)
  • sched1: parameterize pressure scheduling spilling aggressiveness [PR/114729] (7bef3482f2, Vineet Gupta)
  • [RISC-V] [V2] [PR target/116715] Remove bogus bitmanip pattern (7cea821aac, Jeff Law)
  • vect: Do not try to duplicate_and_interleave one-element mode. (99eef0cfa5, Robin Dapp)
  • [RISC-V][PR middle-end/118084] Fix brev based reflection code (145e462d55, Jeff Law)
  • RISC-V: Fix compress shuffle pattern [PR117383]. (and 6 more) (ec870d3b5f, Robin Dapp)

Top Contributors

AuthorCommits
Robin Dapp8
Kito Cheng7
Jeff Law5
Pan Li4
Oliver Kozul1
Anton Blanchard1
Matthew Malcomson1
David Malcolm1
Hau Hsu1
Vineet Gupta1

LLVM (RISC-V)

166
Commits
37
Contributors
28388
Lines Added
10972
Lines Removed

Plenty of action in LLVM (RISC-V) this month: 166 commits from 37 contributors. +28,388/-10,972 lines changed — a big diff. Craig Topper was the most active contributor with 55 commits. Code generation improvements dominated with 66 commits. New feature work included 63 commits: "[RISCV] Implement RISCVTTIImpl::getPreferredAddressingMode for HasVendorXCVmem (#120533)"; "[RISCV][VLOPT] Add getOperandInfo for saturating signed multiply (#120351)". RVV work continued with 14 commits touching vector-related code.

66 Compiler backend / code generation 63 New features & support 27 Cleanup & refactoring 14 Vector extension (RVV) 11 Bug fixes 10 ISA extensions 5 Performance optimisations 1 KVM / Virtualisation

Notable Changes

  • [RISCV][VLOPT] Add vector mask producing integer instructions to isSupportedInstr and getOperandInfo (#119733) (7442be68f7, Michael Maitland)
  • Reapply "[DAGCombiner] Add support for scalarising extracts of a vector setcc (#117566)" (#118823) (8630a7ba7c, David Sherwood)
  • [RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedInstr (#119602) (412ab602f1, Michael Maitland)
  • [RISCV][VLOPT] Add support for bitwise logical, single width shift, and vector move (#119412) (9bb29c3dc1, Michael Maitland)
  • Revert "[DAGCombiner] Add support for scalarising extracts of a vector setcc" (#118693) (d57892a2a1, Vitaly Buka)
  • [DAGCombiner] Add support for scalarising extracts of a vector setcc (#117566) (4675db5f39, David Sherwood)
  • [DAGCombine] Remove oneuse restrictions for RISCV in folding (shl (add_nsw x, c1)), c2) and folding (shl(sext(add x, c1)), c2) in some scenarios (#101294) (3083acc215, LiqinWeng)
  • [RISCV][VLOPT] Add support for mask-register logical instructions and set mask instructions (#112231) (d99c9994db, Michael Maitland)
  • [RISCV][GISel] Enable support for ArrayType arguments if the element type is also supported. (41c33cbf36, Craig Topper)
  • [RISCV][TTI] Model the cost of insert/extractelt when the vector split into multiple register group and idx exceed single group. (#118401) (a674209432, Elvis Wang)
  • [RISCV] Implement RISCVTTIImpl::getPreferredAddressingMode for HasVendorXCVmem (#120533) (f590963db8, Philipp van Kempen)
  • [SelectionDAG] Add empty implementation of SelectionDAGInfo to some targets (#119968) (03847f19f2, Sergei Barannikov)
  • [RISCV] Add Qualcomm uC Xqciac (Load-Store Adress calculation) extension (#121037) (1557eeda73, quic_hchandel)
  • [RISCV][VLOPT] Add support for more instructions in vl-opt-op-info.mir (#119416) (904849f297, Michael Maitland)
  • [RISCV][GISel] Support f64->f32 fptrunc and f32->f64 fpext without D extension. (9692242f51, Craig Topper)

Top Contributors

AuthorCommits
Craig Topper55
Michael Maitland20
Philip Reames16
Luke Lau9
Pengcheng Wang6
Luke Quinn5
Djordje Todorovic5
LiqinWeng5
Sergei Barannikov3
Sam Elliott3

glibc (RISC-V)

20
Commits
3
Contributors
196
Lines Added
121
Lines Removed

glibc (RISC-V) saw moderate activity with 20 commits from 3 contributors. Leading the charge was Adhemerval Zanella with 11 commits. New feature work included 9 commits: "Implement C23 atan2pi"; "Implement C23 atanpi".

9 New features & support

Notable Changes

  • nptl: Add for RISC-V (8dd1588794, Michael Jeanson)
  • nptl: add RSEQ_SIG for RISC-V (d3b3a12258, Michael Jeanson)
  • Implement C23 atan2pi (3374de9038, Joseph Myers)
  • Implement C23 atanpi (ffe79c446c, Joseph Myers)
  • Implement C23 asinpi (f962932206, Joseph Myers)
  • Implement C23 acospi (28d102d15c, Joseph Myers)
  • Implement C23 tanpi (f9e90e4b4c, Joseph Myers)
  • Implement C23 sinpi (776938e8b8, Joseph Myers)
  • Implement C23 cospi (0ae0af68d8, Joseph Myers)
  • math: Use tanhf from CORE-MATH (and 9 more) (0e0be3ed80, Adhemerval Zanella)
  • elf: Consolidate stackinfo.h (17a43505b3, Adhemerval Zanella)

Top Contributors

AuthorCommits
Adhemerval Zanella11
Joseph Myers7
Michael Jeanson2

Binutils (RISC-V)

4
Commits
3
Contributors
33
Lines Added
6
Lines Removed

A light month for Binutils (RISC-V) with 4 commits from 3 contributors.

1 ISA extensions 1 New features & support

Notable Changes

  • RISC-V: Add support for ssdbltrp and smdbltrp extension. (69a91bcd6e, Dongyan Chen)
  • RISC-V: PR27566, consider ELF_MAXPAGESIZE/COMMONPAGESIZE for gp relaxations. (6f8e75592c, Nelson Chu)
  • Remove _bfd_elf_link_hash_table_init target_id param (f92b077ee7, Alan Modra)
  • Remove bfd_elf_allocate_object object_id param (aa7a348b2f, Alan Modra)

Top Contributors

AuthorCommits
Alan Modra2
Nelson Chu1
Dongyan Chen1

GDB (RISC-V)

1
Commits
1
Contributors
12
Lines Added
12
Lines Removed

GDB (RISC-V) had exactly one commit this month.

Notable Changes

  • Run check-include-guards.py (cc70964032, Tom Tromey)

Top Contributors

AuthorCommits
Tom Tromey1

U-Boot (RISC-V)

14
Commits
5
Contributors
1088
Lines Added
1691
Lines Removed

U-Boot (RISC-V) saw lighter activity with 14 commits from 5 contributors. Notably, more code was removed than added (+1,088/-1,691). Hal Feng was the driving force, authoring 9 of 14 commits (64%). Platform and DT work accounted for 9 commits. New feature work included 8 commits: "riscv: spacemit: bananapi_f3: initial support added"; "riscv: dts: t-head: Add sdhci and emmc nodes".

9 Device tree / platform support 8 New features & support 1 Bug fixes

Notable Changes

  • riscv: spacemit: bananapi_f3: initial support added (1cd239f444, Kongyang Liu)
  • board: add support for LicheeRV Nano (04bcc87f0d, Thomas Bonnefille)
  • board: starfive: spl: Support multiple DTBs for JH7110 based boards (and 2 more) (8ace850059, Hal Feng)
  • riscv: dts: jh7110: Support multiple DTBs in a Fit image (and 3 more) (c9489a9d32, Hal Feng)
  • riscv: dts: sophgo: add device tree for LicheeRV Nano (4897de90c3, Thomas Bonnefille)
  • riscv: dts: t-head: Add sdhci and emmc nodes (dced3ec324, Maksim Kiselev)
  • riscv: cpu: jh7110: Sort the list of imply statements (2c1cb8837b, Hal Feng)
  • fdt: Swap the signature for board_fdt_blob_setup() (fc37a73e66, Simon Glass)
  • dts: starfive: Switch to using upstream DT (84d3911a01, Hal Feng)

Top Contributors

AuthorCommits
Hal Feng9
Thomas Bonnefille2
Simon Glass1
Kongyang Liu1
Maksim Kiselev1

Rust (RISC-V)

4
Commits
3
Contributors
20
Lines Added
14
Lines Removed

A light month for Rust (RISC-V) with 4 commits from 3 contributors.

2 Bug fixes 1 New features & support

Notable Changes

  • Mark all Linux/Android/BSD/Fuchsia as supporting "std" in target-spec metadata (e3638e2421, Taiki Endo)
  • Fix "std" support status of some tier 3 targets (76f9aa1d7e, Taiki Endo)
  • compiler: Set `target_abi = "ilp32e"` on all riscv32e targets (9a81dc97fb, Jubilee Young)
  • docs: fix typos (0ebdc0c431, dxsullivan)

Top Contributors

AuthorCommits
Taiki Endo2
dxsullivan1
Jubilee Young1

OpenOCD (RISC-V)

1
Commits
1
Contributors
1
Lines Added
1
Lines Removed

OpenOCD (RISC-V) had exactly one commit this month.

1 New features & support

Notable Changes

  • flash/nor/stm32l4x: Add support for STM32U0 series (66faa420a4, Marc Schink)

Top Contributors

AuthorCommits
Marc Schink1

OpenBLAS (RISC-V)

3
Commits
1
Contributors
269
Lines Added
306
Lines Removed

A light month for OpenBLAS (RISC-V) with 3 commits. Notably, more code was removed than added (+269/-306). tingbo.liao dominated with 3/3 commits (100%). Performance work included 2 commits. The vector extension (RVV) saw 1 commit of continued development.

2 Performance optimisations 1 Vector extension (RVV)

Notable Changes

  • Optimize the zgemm_tcopy_4_rvv function to be compatible with the situations where the vector lengths(vlens) are 128 and 256. (0bea1cfd9d, tingbo.liao)
  • Replaced the __riscv_vid_v_i32m2 and __riscv_vid_v_i64m2 with __riscv_vid_v_u32m2 and __riscv_vid_v_u64m2 for riscv64-unknown-linux-gnu-gcc compiling. (d00cc400b1, tingbo.liao)
  • Optimize the nrm2_rvv function to further improve performance. (c37509c213, tingbo.liao)

Top Contributors

AuthorCommits
tingbo.liao3