A Copilot CLI skill for tracking RISC-V semiconductor news and testing Linux kernel patches from the linux-riscv mailing list.
- Overview
- Prerequisites
- Collecting Semiconductor News
- Fetching Patches from the Mailing List
- Testing Patches
- Supported Semiconductor Companies
- File Structure
This skill provides two main capabilities:
-
News Collection — Gather the latest product announcements, press releases, blog posts, and community updates from 25+ RISC-V semiconductor companies and generate reports in JSON, HTML, or PDF format.
-
Patch Testing — Fetch patches from the linux-riscv mailing list (via lore.kernel.org), apply them to a local kernel tree, cross-compile for RISC-V, and boot-test in QEMU.
- Python 3
reportlab(for PDF output):pip install reportlab- Internet access to fetch company websites
b4— patch fetching tool:pip install b4riscv64-linux-gnu-gcc— RISC-V cross-compilerqemu-system-riscv64— RISC-V QEMU emulatoropensbi— firmware for QEMU (/usr/lib/riscv64-linux-gnu/opensbi/generic/fw_dynamic.bin)git— for branch management and patch application
Install on Ubuntu/Debian:
sudo apt install gcc-riscv64-linux-gnu qemu-system-misc opensbi git
pip install b4 reportlabAsk the Copilot CLI:
get the latest news from SiFive
collect the latest Tenstorrent news
what are the latest updates from StarFive?
The skill will use the corresponding reference file (e.g., references/sifive-news.md) to know which URLs to scrape and how to parse the results.
get the latest news from SiFive, Tenstorrent, and Andes
collect updates from all Chinese RISC-V companies (Alibaba DAMO, Nuclei, SpacemiT, ESWIN)
The skill fetches each company in parallel and consolidates results into a single report.
get the latest news from all RISC-V semiconductors
collect news from all riscv companies and generate a report
This fetches updates from all 25+ supported companies and produces a comprehensive report.
The skill can produce reports in three formats:
The collected data is stored as a JSON file with this structure:
{
"title": "Latest RISC-V Updates",
"subtitle": "Weekly semiconductor news roundup",
"report_date": "2026-05-08",
"groups": [
{
"name": "SiFive",
"items": [
{
"date": "2026-05-01",
"type": "Press Release",
"title": "SiFive Announces New P870 Core",
"url": "https://www.sifive.com/press/...",
"summary": "SiFive launched a new high-performance RISC-V core..."
}
]
}
]
}generate an HTML report for the RISC-V news
Uses assets/riscv_news_report_html_template.py:
python assets/riscv_news_report_html_template.py input.json output.htmlProduces a self-contained HTML file with styled cards, vendor sections, and metadata tags.
create a PDF version of the report
Uses assets/riscv_news_report_template.py:
python assets/riscv_news_report_template.py input.json output.pdfProduces a formatted PDF with title page, grouped sections, and per-item metadata.
list all new patches for riscv within 30 days
show me the latest patches on linux-riscv mailing list
The skill queries the lore.kernel.org archive using date ranges:
https://lore.kernel.org/linux-riscv/?q=d:YYYYMMDD..YYYYMMDD
find patches related to vector extensions
list all riscv patches from May 8
search for memory management patches on linux-riscv
The skill uses lore.kernel.org search syntax and b4 to fetch matching series.
The assets/riscv-patch-test-workflow.sh script provides a complete automated pipeline:
./assets/riscv-patch-test-workflow.sh [options]What it does:
- Checks prerequisites (b4, cross-compiler, QEMU, OpenSBI)
- Creates a test branch from the specified base
- Fetches patches (by Message-ID, keyword, or browsing latest)
- Applies patches with
git am - Builds the kernel (
make ARCH=riscv O=<build-dir> Image) - Boots the kernel in QEMU and checks for BUGs/Oops
Options:
| Flag | Description | Default |
|---|---|---|
-b, --branch BRANCH |
Base branch to apply patches on | current branch |
-m, --message-id MSGID |
Apply a specific patch by Message-ID | — |
-k, --keyword KEYWORD |
Search patches by keyword | — |
-n, --num-patches N |
Number of patches to show when browsing | 20 |
-j, --jobs N |
Parallel build jobs | $(nproc) |
-o, --build-dir DIR |
Out-of-tree build directory | build-riscv-test |
-c, --config CONFIG |
Kernel config target | defconfig |
-q, --qemu-timeout SECS |
QEMU boot timeout | 60 |
-r, --rootfs PATH |
Path to rootfs image for QEMU | — |
-s, --skip-build |
Skip kernel build | — |
-S, --skip-qemu |
Skip QEMU boot test | — |
--no-apply |
Only list patches, don't apply | — |
--dry-run |
Show what would be done | — |
Examples:
# Interactive: browse latest patches, pick one, build & test
./assets/riscv-patch-test-workflow.sh
# Test a specific patch series by Message-ID
./assets/riscv-patch-test-workflow.sh -m 20260508120000.12345-1-author@example.com
# Search and test vector-related patches
./assets/riscv-patch-test-workflow.sh -k vector
# Just list latest patches without applying
./assets/riscv-patch-test-workflow.sh --no-apply
# Apply on a specific branch with custom build dir
./assets/riscv-patch-test-workflow.sh -b riscv/next -o /tmp/riscv-build -m <msgid>
# Dry-run to preview actions
./assets/riscv-patch-test-workflow.sh --dry-run -k "memory hotplug"Ask the Copilot CLI to test individual patches:
apply patch 20260508-riscv-copy-mc-v1-0-abc123@kernel.org and build and test it
fetch the zsmalloc patch series and test it on riscv-upstream branch
The skill will:
- Create a test branch
- Use
b4 amto fetch the specific patch series - Apply with
git am - Build with
make ARCH=riscv O=build-riscv-test Image -j$(nproc) - Boot in QEMU and check for errors
apply all patches of May 08 and build the kernel and test it
The skill will:
- Search lore.kernel.org for all patches on that date
- Fetch each series with
b4 am - Apply them sequentially (skipping those that fail due to base mismatch)
- Build and boot-test the result
- Report which patches applied successfully and which failed
If you prefer manual control:
# 1. Create a test branch
git checkout -b riscv/test-topic riscv-upstream
# 2. Fetch patches
b4 am -o /tmp/patches <message-id>
# 3. Apply
git am /tmp/patches/*.mbx
# 4. Build
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- O=build-riscv-test defconfig
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- O=build-riscv-test Image -j$(nproc)
# 5. Boot test
qemu-system-riscv64 -M virt -nographic -m 2G \
-bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_dynamic.bin \
-kernel build-riscv-test/arch/riscv/boot/Image \
-append "earlycon=sbi console=ttyS0"
# 6. Check results — look for BUG/Oops/WARNING in output
# Expected: kernel boots to "VFS: Unable to mount root fs" (normal without rootfs)| Company | Reference File |
|---|---|
| Ahead Computing | references/aheadcomputing-news.md |
| Akeana | references/akeana-news.md |
| Alibaba DAMO / XuanTie | references/alibaba-damo-news.md |
| Andes Technology | references/andes-news.md |
| BeagleBoard Foundation | references/beagleboard-news.md |
| BOSC / XiangShan | references/xiangshan-news.md |
| DeepComputing | references/deepcomputing-news.md |
| ESWIN | references/eswin-news.md |
| Metastone | references/metastone-news.md |
| Microchip | references/microchip-news.md |
| Milk-V | references/milkv-news.md |
| NextSilicon | references/nextsilicon-news.md |
| Nuclei | references/nuclei-news.md |
| Orange Pi | references/orangepi-news.md |
| Pine64 | references/pine64-news.md |
| Qualcomm | references/qualcomm-news.md |
| Rivos | references/rivos-news.md |
| SiFive | references/sifive-news.md |
| Sipeed | references/sipeed-news.md |
| SpacemiT | references/spacemit-news.md |
| StarFive | references/starfive-news.md |
| Tenstorrent | references/tenstorrent-news.md |
| UltraRISC | references/ultrarisc-news.md |
| Ventana Micro | references/ventana-news.md |
| Zhihe Computing | references/zhihecomputing-news.md |
Each reference file documents:
- The company's website URL(s) to scrape
- Which pages contain news/press releases/blog posts
- How to parse the page structure
- Fallback strategies if the primary URL is unreachable
linux-riscv-tracker/
├── SKILL.md # Skill definition (used by Copilot CLI)
├── README.md # This file
├── assets/
│ ├── riscv-patch-test-workflow.sh # Automated patch test pipeline
│ ├── riscv_news_report_template.py # PDF report generator
│ ├── riscv_news_report_html_template.py # HTML report generator
│ └── riscv_news_report_example.json # Example JSON input
└── references/
├── sifive-news.md # Per-company scraping instructions
├── tenstorrent-news.md
├── andes-news.md
└── ... (25 reference files total)
- No rootfs needed for basic testing: A kernel that boots to "VFS: Unable to mount root fs" is considered a PASS — it means the kernel initialized successfully.
- MAINTAINERS conflicts: Some patch series target a different base commit. If
git amfails, trygit am --3wayor skip the series. - Parallel news collection: When fetching all companies, the skill launches parallel requests for speed.
- Date range syntax: lore.kernel.org uses
d:YYYYMMDD..YYYYMMDDfor date filtering. - b4 output: Produces
.mbxfiles ready forgit am. Use-o <dir>to control output location.