Skip to content

Latest commit

 

History

History
369 lines (270 loc) · 24.4 KB

2023-02-01.en.md

File metadata and controls

369 lines (270 loc) · 24.4 KB

This Month in PLCT: Issue 42 (February 1, 2023)

Preface

Happy Year of Rabbit!

As we recovered from COVID-19, we spent two weeks of precious down time during the Lunar New Year vacation. Let's wish for a fruitful year to come!

Featured Items

Vacation time!

V8 for RISC-V

  1. 4204830: [riscv] Fix atomics, https://chromium-review.googlesource.com/c/v8/v8/+/4204830.
  2. 4178897: [riscv] Rename CodeDataContainer to Code, https://chromium-review.googlesource.com/c/v8/v8/+/4178897.
  3. 4166713: [riscv][codet] Remove the CodeT=Code implementation, https://chromium-review.googlesource.com/c/v8/v8/+/4166713.

OpenJDK for RV32GC (Shi Ningning [史宁宁])

  1. Fix two temp regs in do_oop_load/do_oop_store, openjdk-riscv/jdk11u#583

OpenJDK Upstreaming (Mostly RV64-related)

  1. Pull requests to jdk-mainline:
  • openjdk/jdk#11858 (8299580: RISC-V: fail to build with GCC 12 due to stringop-overflow warning)
  • openjdk/jdk#11919 (8299847: RISC-V: Improve PrintOptoAssembly output of CMoveI/L nodes)
  • openjdk/jdk#11988 (8300109: RISC-V: Improve code generation for MinI/MaxI nodes)
  1. Co-authored pull requests to jdk-mainline:
  • openjdk/jdk#11004 (8293841: RISC-V: Implementation of Foreign Function & Memory API (Preview))
  • openjdk/jdk#12065 (8300247: Harden C1 xchg on AArch64 and PPC)
  • openjdk/jdk20#85 (8294744: AArch64: applications/kitchensink/Kitchensink.java crashed: assert(oopDesc::is_oop(obj)) failed: not an oop)
  • openjdk/jdk20#101 (8298400: Virtual thread instability when stack overflows)
  1. jdk-mainline pull requests reviewed:
  1. RISC-V port for Foreign-API:

OpenJDK Upstreaming (Zhang Dingli [张定立])

OpenJDK Upstreaming (Cao Gui [曹贵])

OpenJDK8 Backporting (Zhang Xiang [章翔])

Clang/LLVM for RISC-V

gollvm

GNU Toolchain for RISC-V

Arch Linux for RISC-V

Gentoo for RISC-V

Stats: 8056/19077, 42.23% (https://whale.plctlab.org/riscv/support-statistics/)

Nixpkgs for RISC-V

Firefox (SpiderMonkey) on RV64GCV

Patches for RISC-V JIT support has been merged upstream.

Enable DynamoRIO running on RV64GC

Please stay tuned.

OpenCV for RV64GCV

Please stay tuned.

Experimental/simd in LIBCXX

  • Added test cases for default construct functions.
  • Verified test cases under IBM/s390x big endian using Qemu and Docker.

LuaJIT RV64G porting

Please stay tuned.

gem5

Please stay tuned.

Spike

QEMU

Other Support for RISC-V International

Please stay tuned.

SAIL/ACT

Please stay tuned.

在方舟开源编译器社区的工作

Shi Ninging (史宁宁) continues to work on compiling the OpenArkCompiler Weekly, which just published its 147th issue.

You may find new weekly issues of the OpenArkCompiler Weekly on Sundays on...

MLIR

Please stay tuned.

Upstream MLIR

Buddy Compiler

Homepage, https://buddy-compiler.github.io/.

buddy-caas

buddy-mlir

https://github.com/buddy-compiler/buddy-mlir

  • [backend] Add gemmini instructions.
  • [RVV] Add Rsqrt operation.
  • [examples][MLIRVector] Improve vector dialect examples.

buddy-benchmark

https://github.com/buddy-compiler/buddy-benchmark

  • [benchmarks/ImageProcessing] Use dip.mlir directly instead of stand-alone compilation.

Chisel / FIRRTL (CAAT小队)

Please stay tuned.

coreboot for riscv

Please stay tuned.

openocd

Please stay tuned.

opensbi

  • Implement hart hotplug using HSM extension for AE350, ref
  • OpenSBI debug console support, ref
  • SBI system suspend (SUSP) extension, ref
  • treewide: Replace TRUE/FALSE with true/false, ref
  • Split RX and RW regions for separate pmp entries, ref
  • Add RISC-V TEE support, ref
  • platform/generic/renesas/rzfive: Configure the Local memory regions as part of root domain, ref
  • Renesas RZ/Five: add support to configure PMA and add vendor specific SBI extension, ref
  • lib/sbi_hsm: Use csr_set to restore the MIP, ref
  • lib/utils: Fix reserved memory node for firmware memory, ref
  • firmware: Fix fw_rw_offset computation in fw_base.S, ref
  • lib/utils: Mark only the largest region as reserved in FDT, ref
  • Add endianness conversion support, ref
  • Miscellaneous about sbi_tlb and sbi_ipi, ref

u-boot

Please stay tuned.

eBPF

The last few month's work has focused on interoperability between eBPF and Wasm. We have also refactored all Wasm components in the old source tree.

  • Implemented a generic Wasm + eBPF runtime platform and a code generator based on bpftool, ref
    • Life-cycle management, serialization between kernel-mode eBPF and user-mode Wasm, bi-directional communication in memory within Wasm for eBPF objects. You may now access virtually all low-level map classes in eBPF, perf event, and ring buffer. This is applicable for almost all eBPF use cases.
    • Virtually identical to libbpf-bootstrap - simple, and convenient development experience, as it automatically genrates user-mode code framework and struct types for communicating between Wasm virtual machines and eBPF.
    • Just over 300 lines of runtime code outside the Wasm virtual machine.
    • Filed an issue for WASI.
  • Generate C structs serialization-free bindings and marshal / unmarshal functions for JSON (can be used for pass struct data between Wasm and eBPF/host), ref
  • Generate Wasm wit format from BTF info (generates bindings for multiple languages via wit-bindgen), ref
  • Some improvements to the eBPF tutorial documentation (16 commits), ref
  • Added some examples, CI integration, test cases, documentations, and the aforementioned features (24 pull requests), ref
  • Added full support for eBPF-packaged OCI images, ref
  • Basic RISC-V support added for eunomia-bpf.
  • Published a package for NixOS, ref
  • Published a pacakge for OpenEuler, ref

The Aya Theorem Prover

Watch Aya Prover

RISC-V Platform Evaluation

Ran various benchmarks on the Visionfive V1 development board.

image

See also our coverage on Zhihu (in Chinese), https://zhuanlan.zhihu.com/p/599418843.

Testing and Development

  • Tested the CI functionalities on https://cloud-v.co, reported all issues with Ali the administrator. All reported issues has been addressed, a test report may be found here.
  • Learned to use labgrid Python library and conducted experimented on Lichee RV boards. Implemented automatic testing via serial or SSH connecctions using pytest and labgrid. The findings has been compiled into documentation (in Chinese), https://zhuanlan.zhihu.com/p/598819168.
  • Per request by Mentor Luo's testing team, we looked for automatic testing tools suitable for Deepin. Thus far, we have examined piuparts and autopkgtest, which ran successfully in Debian RISC-V Docker containers. We are now attempting to run these test tools in Deepin RISC-V via Qemu.

Useful Links