kernelci / kernelci/kernelci-project

RISC-V Development Partners: local QEMU boot + kselftest pipeline seeking the upstream integration path

Open
#579 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
14
Forks
32
Avg merge
1d 1h
Merged PRs (30d)
3

Description

## Context

I am an intern at KUBUDS Tech (a RISC-V International member
organization), working on the RISC-V Development Partners SOW:
https://github.com/riscv-admin/dev-partners/issues/49

Repo: https://github.com/xjysiiau/kernelci-riscv

I am working on a localized KernelCI pipeline for RISC-V targets
(x86 host cross-build, QEMU virt -cpu max as the test target, seeded
openKylin image as the boot target, -snapshot so the image is never
modified). Current state:

- boot test: cross-built kernel (v7.2.0-rc7, riscv defconfig) boots the
test image to the login prompt; detection is login-prompt/serial based
with timeout, producing structured result.json;
- functional tests: cpuinfo (asserts Vector/Hypervisor ISA extensions)
and an RVV vector_add self-test (vsetvl/vle/vadd/vse, VLEN reported);
- kselftests: tools/testing/selftests/riscv (hwprobe/vector/sigreturn/mm/abi)
built on the host and run inside the booted guest (10 binaries:
9 pass, 1 known XFAIL - see below);
- config drift detection: 17-option required contract (Vector/virtio/ext4/
serial/KVM etc.) + full config diff with FAIL/WARN/INFO levels;
- CI: GitHub Actions - cloud job (drift check + cross-build) plus a
self-hosted runner (WSL) executing the full closed loop; per-run results
are archived and a pass-rate trend table is auto-committed to the repo.

## Known finding

abi/pointer_masking "constraint" assertions fail on ZPM-capable platforms
(QEMU -cpu max): the test expects PMLEN round-up without
PR_TAGGED_ADDR_ENABLE, while the kernel resets PMLEN to 0 (commit
3033b2b1e3). Tracked as XFAIL; details:
https://github.com/xjysiiau/kernelci-riscv/blob/main/docs/findings-pointer-masking.md
(reporting to linux-riscv as well)

## Questions for the KernelCI community

1. What is the currently recommended path for adding a RISC-V QEMU test
profile: Maestro config in kci-dev, or first publishing results via
KCIDB from our own runner?
2. Is there existing RISC-V QEMU boot/kselftest coverage we should extend
rather than duplicate?
3. Is there interest in registering our self-hosted machine as a pull lab
for these tests?

## Status

Phase 1 (pipeline + boot test) done; Phase 2 (Vector functional tests,
kselftests, config drift detection) done except real-hardware
Hypervisor/KVM testing, for which we are looking for lab partners per the
SOW. Aiming for a Phase 3 upstream PR once the configuration format is
settled.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reviewing the linked kernelci-riscv repository and docs/findings-pointer-masking.md, then compare the described QEMU boot, kselftest, config-drift, and GitHub Actions workflow with KernelCI's available integration paths. The issue is complete when the upstream profile or results-publication path is agreed, duplication concerns are resolved, and any required upstream PR or lab-registration work is clearly scoped.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, linux
Domain
ci-cd, operating-systems, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.