Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f762404
riscv: fix various typos in comments and code
Mar 23, 2026
c1bcdeb
riscv: smp: Remove outdated comment about disabling preemption
dramforever Mar 23, 2026
70142bf
riscv: smp: Clarify comment "cache" -> "instruction cache"
dramforever Mar 23, 2026
596be0b
riscv: move kaslr_offset() to page.h as a static inline function
Mar 23, 2026
bbbaa51
riscv: export kaslr offset and satp in VMCOREINFO ELF notes
Mar 23, 2026
33f9827
riscv: kgdb: fix several debug register assignment bugs
Mar 23, 2026
8267980
riscv: patch: Avoid early phys_to_page()
dramforever Mar 23, 2026
01c86f9
riscv: Simplify assignment for UTS_MACHINE
ukleinek Mar 23, 2026
eaa1b64
selftests: riscv: Add definition of BIT() macro
thecharlesjenkins Mar 23, 2026
9854562
riscv: ptrace: Fix BIT() compilation issues
thecharlesjenkins Mar 23, 2026
4b8c747
selftests: riscv: Add license to cfi selftest
thecharlesjenkins Mar 23, 2026
610e12d
riscv: remove redundant check for CONFIG_SMP
jason77-wang Mar 4, 2026
a5ce78f
riscv: remove redundant #ifdef check in cpu-hotplug
jason77-wang Mar 4, 2026
b335bc5
riscv: make runtime const not usable by modules
xhackerustc Feb 21, 2026
78268ce
Adding CI files
Mar 24, 2026
91c4dc0
riscv: kexec_file: Fix crashk_low_res not exclude bug
ruanjinjie-eng Apr 2, 2026
2cd7871
powerpc/crash: Fix possible memory leak in update_crash_elfcorehdr()
ruanjinjie-eng Apr 2, 2026
564ced8
x86/kexec: Fix potential buffer overflow in prepare_elf_headers()
ruanjinjie-eng Apr 2, 2026
cd7426e
arm64: kexec_file: Fix potential buffer overflow in prepare_elf_heade…
ruanjinjie-eng Apr 2, 2026
9d1dc8e
riscv: kexec_file: Fix potential buffer overflow in prepare_elf_heade…
ruanjinjie-eng Apr 2, 2026
0c44dbe
LoongArch: kexec: Fix potential buffer overflow in prepare_elf_headers()
ruanjinjie-eng Apr 2, 2026
9b70e54
powerpc/crash: sort crash memory ranges before preparing elfcorehdr
sourabhjains Apr 2, 2026
76ee7ca
crash: Add crash_prepare_headers() to exclude crash kernel memory
ruanjinjie-eng Apr 2, 2026
6b6c093
arm64: kexec_file: Use crash_prepare_headers() helper to simplify code
ruanjinjie-eng Apr 2, 2026
f99d5cf
x86/kexec: Use crash_prepare_headers() helper to simplify code
ruanjinjie-eng Apr 2, 2026
083c08f
riscv: kexec_file: Use crash_prepare_headers() helper to simplify code
ruanjinjie-eng Apr 2, 2026
6d9b98e
LoongArch: kexec: Use crash_prepare_headers() helper to simplify code
ruanjinjie-eng Apr 2, 2026
7aa3d7a
crash: Use crash_exclude_core_ranges() on powerpc
ruanjinjie-eng Apr 2, 2026
1179e30
arm64: kexec: Add support for crashkernel CMA reservation
ruanjinjie-eng Apr 2, 2026
5a4eff3
riscv: kexec: Add support for crashkernel CMA reservation
ruanjinjie-eng Apr 2, 2026
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
29 changes: 29 additions & 0 deletions .github/scripts/build_ubuntu_defconfig.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/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)^)
echo "build_name $(git describe --tags ${kernel_base_sha})" | tee -a ${f}
build_name=$(git describe --tags ${kernel_base_sha})

# Build the kernel that will run LTP
export CI_TRIPLE="riscv64-linux-gnu"
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
#tar cJvf --exclude $(basename $kernel_path) modules.tar.xz /build/$(gen_kernel_name rv64 testsuites plain gcc)/
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