Skip to content

feat[bsp][xuantie]: c908 support rt-smart; - #11719

Open
BadmintonMaster wants to merge 4 commits into
RT-Thread:masterfrom
BadmintonMaster:my_fix_branch
Open

feat[bsp][xuantie]: c908 support rt-smart;#11719
BadmintonMaster wants to merge 4 commits into
RT-Thread:masterfrom
BadmintonMaster:my_fix_branch

Conversation

@BadmintonMaster

Copy link
Copy Markdown

拉取/合并请求描述:(PR description)

[

为什么提交这份PR (why to submit this PR)

本PR代为提交,功能为:c908 support rt-smart
原始commit: shuta.lst/rt-thread@53d4922049

你的解决方案是什么 (what is your solution)

新增 bsp/xuantie/virt64/c908支持,并且支持rtt smart模式
SMP适配性修改libcpu/risc-v/common64/mmu.c

请提供验证的bsp和config (provide the config and bsp)

bsp\xuantie\virt64\c908
bsp\xuantie\virt64\c908.config

  • BSP:
    bsp\xuantie\virt64\c908

  • .config:
    bsp\xuantie\virt64\c908.config

  • action:

]

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 代码是高质量的 Code in this PR is of high quality
  • 已经使用clang-format 源码格式化工具确保格式符合RT-Thread代码规范 This PR has been formatted with clang-format and complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/ALL_BSP_COMPILE.json 详细请参考链接BSP自查

@github-actions

Copy link
Copy Markdown

👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread!

为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。
To ensure your code complies with RT-Thread's coding style, please run the code formatting workflow by following the steps below (If the formatting of CI fails to run).


🛠 操作步骤 | Steps

  1. 前往 Actions 页面 | Go to the Actions page
    点击进入工作流 → | Click to open workflow →

  2. 点击 Run workflow | Click Run workflow

  • Use workflow from 保持默认分支(通常为 master
    Keep the default branch (usually master) in Use workflow from
  • branch 输入框填写 PR 分支 my_fix_branch
    Enter PR branch my_fix_branch in the branch field
  • 设置需排除的文件/目录(目录请以"/"结尾)
    Set files/directories to exclude (directories should end with "/")
  1. 等待工作流完成 | Wait for the workflow to complete
    格式化后的代码将作为独立提交推送至你的分支。
    The formatting changes will be pushed to your branch as a separate commit.

完成后,提交将自动更新至 my_fix_branch 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the my_fix_branch branch automatically, and the related Pull Request will be updated.

如有问题欢迎联系我们,再次感谢您的贡献!💐
If you have any questions, feel free to reach out. Thanks again for your contribution!

@github-actions github-actions Bot added BSP Arch: RISC-V BSP related with risc-v libcpu labels Aug 18, 2026
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

📌 Code Review Assignment

🏷️ Tag: libcpu_riscv

Reviewers: @Yaochenger

Changed Files (Click to expand)
  • libcpu/risc-v/common64/mmu.c

🏷️ Tag: workflow

Reviewers: @Rbb666 @kurisaW @supperthomas

Changed Files (Click to expand)
  • .github/ALL_BSP_COMPILE.json

📊 Current Review Status (Last Updated: 2026-08-20 15:22 CST)


📝 Review Instructions

  1. 维护者可以通过单击此处来刷新审查状态: 🔄 刷新状态
    Maintainers can refresh the review status by clicking here: 🔄 Refresh Status

  2. 确认审核通过后评论 LGTM/lgtm
    Comment LGTM/lgtm after confirming approval

  3. PR合并前需至少一位维护者确认
    PR must be confirmed by at least one maintainer before merging

ℹ️ 刷新CI状态操作需要具备仓库写入权限。
ℹ️ Refresh CI status operation requires repository Write permission.

@CLAassistant

CLAassistant commented Aug 18, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@Rbb666

Rbb666 commented Aug 18, 2026

Copy link
Copy Markdown
Member

@rcitach 帮忙review下,谢谢~

@Rbb666

Rbb666 commented Aug 18, 2026

Copy link
Copy Markdown
Member

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new BSP for Xuantie virt64 C908 with RT-Thread Smart (rt-smart) + SMP support, and adjusts the RISC-V common64 MMU implementation to better support SMP user address spaces.

本 PR 新增 Xuantie virt64 C908 的 BSP,并支持 RT-Thread Smart(rt-smart)+ SMP,同时对 RISC-V common64 MMU 做了 SMP 相关适配以更好支持用户态地址空间。

Changes / 变更点:

  • Add new BSP bsp/xuantie/virt64/c908 with build scripts, linker scripts, QEMU run script, and basic UART/VirtIO support.
    新增 bsp/xuantie/virt64/c908 BSP(构建脚本、链接脚本、QEMU 运行脚本、UART/VirtIO 基础支持)。
  • Update libcpu/risc-v/common64/mmu.c to optimize SMP behavior for user address spaces (share L2/L3, sync L1 across harts; SMP-aware page table allocation/free).
    更新 libcpu/risc-v/common64/mmu.c:面向 SMP 的用户地址空间优化(共享 L2/L3,并在各 hart 间同步 L1;SMP 下页表分配/释放适配)。
  • Provide BSP docs in English/Chinese and default configs (.config, rtconfig.h).
    提供中英文 BSP 文档与默认配置(.configrtconfig.h)。

PR metadata checks / PR 元信息检查:

  • PR Title / PR 标题: The current title feat[bsp][xuantie]: c908 support rt-smart; does not follow the repo’s recommended lowercase prefix style like [module][subsystem] Description.
    当前标题不符合仓库建议的前缀格式(如小写的 [module][subsystem] 描述),建议改为类似:[bsp][xuantie] Add virt64 c908 RT-Smart support(示例)。
  • CI list claim / CI 列表声明: The PR description indicates the BSP was added to .github/ALL_BSP_COMPILE.json, but no matching entry was found (see review comment).
    PR 描述中勾选了已加入 .github/ALL_BSP_COMPILE.json,但当前未检索到对应条目(见审查评论)。

Reviewed changes

Copilot reviewed 26 out of 26 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
libcpu/risc-v/common64/mmu.c SMP + rt-smart related MMU/page-table behavior updates for user/kernel spaces
bsp/xuantie/virt64/c908/SConstruct BSP build entry; generates linker helper scripts and supports Smart linker script
bsp/xuantie/virt64/c908/SConscript Top-level module aggregation for BSP subdirectories
bsp/xuantie/virt64/c908/run.sh QEMU run script with C908 CPU selection and optional SMP -smp
bsp/xuantie/virt64/c908/rtconfig.py Toolchain/build flags for this BSP
bsp/xuantie/virt64/c908/rtconfig.h Generated configuration header for the provided default config
bsp/xuantie/virt64/c908/README.md English BSP user guide (build/run, Smart notes)
bsp/xuantie/virt64/c908/README_cn.md 中文 BSP 使用说明(构建/运行、Smart 说明)
bsp/xuantie/virt64/c908/link.lds Standard edition linker script using generated stack/cpu parameters
bsp/xuantie/virt64/c908/link_smart.lds Smart edition linker script (high kernel mapping layout)
bsp/xuantie/virt64/c908/link_stacksize.lds Default stack-size linker include (also regenerated by SCons)
bsp/xuantie/virt64/c908/link_cpus.lds Default CPU-count linker include (also regenerated by SCons)
bsp/xuantie/virt64/c908/Kconfig BSP Kconfig entry points and board options
bsp/xuantie/virt64/c908/board/virt.h VirtIO constants and Smart-only ioremap/mmu includes
bsp/xuantie/virt64/c908/board/SConscript Driver group build script
bsp/xuantie/virt64/c908/board/Kconfig VirtIO-related BSP options
bsp/xuantie/virt64/c908/board/drv_virtio.h VirtIO driver header (placeholder)
bsp/xuantie/virt64/c908/board/drv_virtio.c VirtIO MMIO device probing and init export
bsp/xuantie/virt64/c908/board/drv_uart.h NS16550A UART register definitions and interfaces
bsp/xuantie/virt64/c908/board/drv_uart.c UART serial driver + interrupt hookup; Smart ioremap support
bsp/xuantie/virt64/c908/board/board.h Board-level memory layout/heap/page region definitions
bsp/xuantie/virt64/c908/board/board.c Board init: MMU/page init (Smart), interrupts, UART, tick
bsp/xuantie/virt64/c908/applications/SConscript Applications group build script
bsp/xuantie/virt64/c908/applications/mnt.c Rootfs mount helper (virtio-blk FAT/ext)
bsp/xuantie/virt64/c908/applications/main.c Minimal main entry printing banner
bsp/xuantie/virt64/c908/.config Provided default configuration enabling Smart + SMP and related components

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +5 to +6
src = Glob('*.c') + Glob('*.cpp') + Glob('*_gcc.S')
src += Glob('*.c')
Comment on lines +5 to +6
src = Glob('*.c') + Glob('*.cpp') + Glob('*_gcc.S')
src += Glob('*.c')
Comment on lines +69 to +70
# make a building
DoBuilding(TARGET, objs)
@github-actions github-actions Bot added the action github action yml imporve label Aug 19, 2026
@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown

@BernardXiong BernardXiong added RT-Smart RT-Thread Smart related PR or issues 🎯 Focus Should focus on this issue/discussion/pr labels Aug 21, 2026
{
// It is necessary to find the MMU page table specific to each core.
uint32_t hartid = rt_cpu_get_id();
uint32_t hartid = rt_hw_cpu_id();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

此处修改是否有必要,rt_cpu_get_id 最终都会执行到 rt_hw_cpu_id

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

功能上是一致的,但是该源文件使用的3处均为rt_hw_cpu_id(),在未修改前仅有该处使用rt_cpu_get_id(),因此该处是为了风格统一做的修改

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

建议维持 rt_cpu_get_id(); 这部分后续还有物理CPU ID,逻辑CPU ID的问题。RT-Thread中更偏向于物理CPU ID,但后续也必然会向逻辑CPU ID方向走。

@rcitach

rcitach commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

看起来没什么问题 @Rbb666

@rcitach

rcitach commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

@BadmintonMaster 顺便提一下,虽然不是这个PR引入的,当前MMU这部分还有一个问题:
映射内核页时会遍历所有 hart,但是解除映射始终从第一个 L1 页开始。所以在 RT_USING_SMP 下,其他 hart 仍然保留旧映射,页表可能无法释放。 👷 🐧

@BernardXiong

Copy link
Copy Markdown
Member

对于这份PR,建议先不合并;等到 #10320 合并后再进行合并,因为 #10320 的改动范围非常大,但从整体上来说,一致性会更合理。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action github action yml imporve Arch: RISC-V BSP related with risc-v BSP 🎯 Focus Should focus on this issue/discussion/pr libcpu RT-Smart RT-Thread Smart related PR or issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants