Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
28ac460
riscv: Replace __ASSEMBLY__ with __ASSEMBLER__ in uapi headers
huth Jun 6, 2025
472ef17
riscv: Replace __ASSEMBLY__ with __ASSEMBLER__ in non-uapi headers
huth Jun 6, 2025
c3fb2f6
Merge patch series "riscv: Replace __ASSEMBLY__ with __ASSEMBLER__ in…
Jun 23, 2025
6f0b03e
riscv: pi: use 'targets' instead of extra-y in Makefile
masahir0y Jun 2, 2025
667aada
riscv: cpufeature: add validation for zfa, zfh and zfhmin
clementleger May 27, 2025
7391594
riscv: Fix typo EXRACT -> EXTRACT
Jun 20, 2025
fc675cb
riscv: kprobes: Move branch_rs2_idx to insn.h
covanam May 14, 2025
e8594c9
riscv: Strengthen duplicate and inconsistent definition of RV_X()
Jun 20, 2025
01cad4c
riscv: kprobes: Move branch_funct3 to insn.h
covanam May 14, 2025
2084f65
riscv: Move all duplicate insn parsing macros into asm/insn.h
Jun 20, 2025
3ef851b
riscv: kprobes: Remove duplication of RV_EXTRACT_JTYPE_IMM
covanam May 14, 2025
ef810d0
Merge patch series "Move duplicated instructions macros into asm/insn.h"
Jun 23, 2025
6c50bf9
riscv: kprobes: Remove duplication of RV_EXTRACT_RS1_REG
covanam May 14, 2025
f31ee50
riscv: kprobes: Remove duplication of RV_EXTRACT_BTYPE_IMM
covanam May 14, 2025
c77cea5
riscv: kproves: Remove duplication of RVC_EXTRACT_JTYPE_IMM
covanam May 14, 2025
b98eba1
riscv: kprobes: Remove duplication of RVC_EXTRACT_C2_RS1_REG
covanam May 14, 2025
74cd770
riscv: kprobes: Remove duplication of RVC_EXTRACT_BTYPE_IMM
covanam May 14, 2025
3bd1092
riscv: kprobes: Remove duplication of RV_EXTRACT_RD_REG
covanam May 14, 2025
1c27129
riscv: kprobes: Remove duplication of RV_EXTRACT_UTYPE_IMM
covanam May 14, 2025
e1304bd
riscv: kprobes: Remove duplication of RV_EXTRACT_ITYPE_IMM
covanam May 14, 2025
8687d2b
Merge patch series "riscv: kprobes: Clean up instruction simulation"
Jun 23, 2025
707ea6d
riscv: Add kprobes KUnit test
covanam May 13, 2025
feab7b7
Adding CI files
Jun 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/.MISSING_LINARO_DEP.swp
Binary file not shown.
Binary file added .github/.swp
Binary file not shown.
11 changes: 11 additions & 0 deletions .github/MISSING_LINARO_DEP
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
gdb (ltp vma05)
libnuma (ltp vma02-4)
swap file (swapping01)
fusermount (run_fuse_test.sh)
libfuse (run_fuse_test.sh)
mkisofs genisoimage xorrisofs (isofs.sh)
all modules (binfmt_misc0X)
mksquashfs
LTP_TIMEOUT_MUL > 1 (starvation)
libubsan ()
XXX (ltp-aiodio MUST be added)
Binary file added .github/scripts/.patches.sh.swp
Binary file not shown.
30 changes: 30 additions & 0 deletions .github/scripts/build_ubuntu_defconfig.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
# SPDX-FileCopyrightText: 2024 Rivos Inc.
#
# SPDX-License-Identifier: Apache-2.0

set -euox pipefail
d=$(dirname "${BASH_SOURCE[0]}")
. $d/series/utils.sh

logs=$(get_logs_dir)
f=${logs}/build_ubuntu_defconfig.log

date -Iseconds | tee -a ${f}
echo "Build an ubuntu kernel" | tee -a ${f}
echo "Top 16 commits" | tee -a ${f}
git log -16 --abbrev=12 --pretty="commit %h (\"%s\")" | tee -a ${f}

kernel_base_sha=$(git log -1 --pretty=%H $(git log -1 --reverse --pretty=%H .github)^)
build_name=$(git describe --tags --abbrev=13 ${kernel_base_sha})
echo "build_name ${build_name}" | tee -a ${f}

# Build the kernel that will run LTP
export CI_TRIPLE="riscv64-unknown-linux-gnu"
# Use a CFI-enabled toolchain
export PATH=/build/INSTALL_Sept24/bin:$PATH
cp $d/series/kconfigs/ubuntu_defconfig arch/riscv/configs/
$d/series/kernel_builder.sh rv64 testsuites plain gcc | tee -a ${f}

kernel_dir="/build/$(gen_kernel_name rv64 testsuites plain gcc)"
echo $build_name > $kernel_dir/kernel_version
2 changes: 2 additions & 0 deletions .github/scripts/ci/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .base import Base, EndTest, Verdict, submit_pw_check
from .shelltest import ShellTest
120 changes: 120 additions & 0 deletions .github/scripts/ci/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
from abc import ABC, abstractmethod
from enum import Enum
import time
import sys

from libs import utils

sys.path.insert(0, '../libs')
from libs import log_debug

class Verdict(Enum):
PENDING = 0
PASS = 1
FAIL = 2
ERROR = 3
SKIP = 4
WARNING = 5


class EndTest(Exception):
"""
End of Test
"""

class Base(ABC):
"""
Base class for CI Tests.
"""
def __init__(self):
self.start_time = 0
self.end_time = 0
self.verdict = Verdict.PENDING
self.output = ""

def success(self):
self.end_timer()
self.verdict = Verdict.PASS

def error(self, msg):
self.verdict = Verdict.ERROR
self.output = msg
self.end_timer()
raise EndTest

def warning(self, msg):
self.verdict = Verdict.WARNING
self.output = msg
self.end_timer()

def skip(self, msg):
self.verdict = Verdict.SKIP
self.output = msg
self.end_timer()
raise EndTest

def add_failure(self, msg):
self.verdict = Verdict.FAIL
if not self.output:
self.output = msg
else:
self.output += "\n" + msg

def add_failure_end_test(self, msg):
self.add_failure(msg)
self.end_timer()
raise EndTest

def start_timer(self):
self.start_time = time.time()

def end_timer(self):
self.end_time = time.time()

def elapsed(self):
if self.start_time == 0:
return 0
if self.end_time == 0:
self.end_timer()
return self.end_time - self.start_time

def log_err(self, msg):
utils.log_error(f"CI: {self.name}: {msg}")

def log_info(self, msg):
utils.log_info(f"CI: {self.name}: {msg}")

def log_dbg(self, msg):
utils.log_debug(f"CI: {self.name}: {msg}")

@abstractmethod
def run(self, worktree=None):
"""
The child class should implement run() method
If the test fail, it should raise the EndTest exception
"""
pass

@abstractmethod
def post_run(self):
"""
The child class should implement post_run() method
"""
pass


def submit_pw_check(pw, patch, name, verdict, desc, url=None, dry_run=False):

utils.log_debug(f"Submitting the result to PW: dry_run={dry_run}")

if not dry_run:
state = 0

if verdict == Verdict.PASS:
state = 1
if verdict == Verdict.WARNING:
state = 2
if verdict == Verdict.FAIL:
state = 3

pw.post_check(patch, name, state, desc, url)
67 changes: 67 additions & 0 deletions .github/scripts/ci/shelltest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from gettext import install
import os
import sys

sys.path.insert(0, '../libs')
from libs import RepoTool, cmd_run

from ci import Base, Verdict, EndTest, submit_pw_check

class ShellTest(Base):
"""Run shell test class
This class runs a shell based test
"""

def __init__(self, ci_data, patch, name, desc, sh):

# Common
self.name = name
self.desc = desc
self.ci_data = ci_data

self.sh = sh
self.patch = patch

super().__init__()

self.log_dbg("Initialization completed")

def run(self, worktree=None):

self.log_dbg("Run")
self.start_timer()

current_script_path = os.path.dirname(os.path.abspath(__file__))

cwd = worktree if worktree else self.ci_data.src_dir
cmd = ["bash", f"{current_script_path}/../pw_tests/{self.sh}"]
(ret, stdout, stderr) = cmd_run(cmd, cwd=cwd)

if ret == 0:
submit_pw_check(self.ci_data.pw, self.patch,
self.name, Verdict.PASS,
self.name,
None, self.ci_data.config['dry_run'])
self.success()
elif ret == 250:
url = self.ci_data.gh.create_gist(f"pw{self.ci_data.series['id']}-p{self.patch['id']}",
f"{self.name}-WARNING",
stdout + '\n' + stderr)
submit_pw_check(self.ci_data.pw, self.patch,
self.name, Verdict.WARNING,
self.name,
url, self.ci_data.config['dry_run'])
self.warning(stdout + '\n' + stderr)
else:
url = self.ci_data.gh.create_gist(f"pw{self.ci_data.series['id']}-p{self.patch['id']}",
f"{self.name}-FAIL",
stdout + '\n' + stderr)
submit_pw_check(self.ci_data.pw, self.patch,
self.name, Verdict.FAIL,
self.name,
url, self.ci_data.config['dry_run'])
self.error(stdout + '\n' + stderr)

def post_run(self):

self.log_dbg("Post Run...")
Loading
Loading