实践:qemu 运行 linux riscv with AIA(APLICIMSIC)

RISCV架构 Linux AIA支持

目标:在 Qemu 中运行一个支持 riscv aia 的 linux

翻译参考自:https://lwn.net/Articles/963231/

文章日期:2024年2月22日,星期四(截至2024年3月,最新)

这个网站里在不断更新 Linux RISC-V AIA Support ,需要可以 Search -> 查找最新

前置内容

RISC-V AIA 规范是根据 RISC-V 国际流程批准的。最新批准的 AIA 规范可在以下网址找到:

https://github.com/riscv/riscv-aia

从高层次来看,AIA 规范增加了三项内容:

  1. AIA CSRs
    • 改进的本地中断支持
  2. 接收信息信号中断控制器(IMSIC)
    • 每个 HART 一个 MSI 控制器
    • 支持 MSI 虚拟化
    • 在虚拟化的同时支持 IPI
  3. 高级平台级中断控制器(APLIC)
    • 有线中断控制器
    • 在 MSI 模式下,将有线中断转换为 MSI(即 MSI 生成器)
    • 在直接模式下,将外部中断直接注入 HART

有关 AIA 规范的概述,请参阅 KVM 论坛 2022 上的 AIA 虚拟化讲座。2022 年 KVM 论坛上的演讲:

PPT https://static.sched.com/hosted_files/kvmforum2022/a1/AIA_Virtualization_in_KVM_RISCV_final.pdf
视频 https://www.youtube.com/watch?v=r071dL8Z0yo

要测试该系列,请使用 QEMU v7.2(或更高版本)和 OpenSBI v1.2(或更高版本)。

这些补丁也可在 riscv_aia_v14 分支中找到,网址是:https://github.com/avpatel/linux

部分更新记录如下:

Changes since v13:
 - Split PATCH1 into six granular patches
 - Addressed nit comments from Thomas and Bjorn

Changes since v12:
 - Rebased on Linux-6.8-rc5
 - Dropped per-device MSI domain patches which are already merged by Thomas (tglx)
 - Addressed nit comments from Thomas and Clement
 - Added a new patch2 to fix lock dependency warning
 - Replaced local sync IPI in the IMSIC driver with per-CPU timer
 - Simplified locking in the IMSIC driver to avoid lock dependency issues
 - Added a dirty bitmap in the IMSIC driver to optimize per-CPU local sync loop
...

实践:qemu 运行 linux riscv aia

按照前文内容,在 Linux-6.8-rc5 的基础上,添加相应的patch即可

在这里插入图片描述

但我在文中提供的仓库中,未发现 patch 文件(仅找到了对比,如果一个一个复制粘贴则太多了,也可能是我的方式不正确),索性直接下载其源代码

https://github.com/avpatel/linux/tree/riscv_aia_v14

Code -> Download ZIP,直接下载 riscv_aia_v14分支的代码

unzip linux-riscv_aia_v14.zip
cd linux-riscv_aia_v14
# 配置并编译内核, defconfig 表示 default config 默认配置
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)

编译完成内核后,启动qemu

这里我使用了ubuntu-base的文件系统,如果有需要可以参考我之前的博客,或者使用其他文件系统也可以

添加aclint=on,aia=aplic-imsic,然后成功启动 linux riscv with AIA!

# qemu doc中关于启用aia的命令行参数描述 aia=[none|aplic|aplic-imsic]
# 启动 Qemu   针对 virt 板子启用 aclint 以及 aplic
sudo /opt/qemu/bin/qemu-system-riscv64 \
    -M virt,aclint=on,aia=aplic-imsic \
    -nographic \
    -smp 8 \
    -m 16G \
    -kernel ../linux-riscv_aia_v14/arch/riscv/boot/Image \
    -append "root=/dev/vda rw console=ttyS0" \
    -drive file=riscv64.image,if=none,format=raw,id=hd0 \
    -device virtio-blk-device,drive=hd0
    
# 挂载系统的文件系统
mount -t proc proc /proc
mount -t sysfs sysfs /sys

在这里插入图片描述

通过查设备树(该设备树是qemu自动传给linux内核的),可以确定,成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/448157.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyExcel导出自定义表格

谈到新技术,每个人都会有点恐惧,怕处理不好。确实,第一次使用新技术会遇到很多坑,这次使用 EasyExcel 这个新技术去做 excel 导出,还要给表格加样式,遇到不同的版本问题,遇到颜色加错了地方&…

JavaEE企业开发新技术2

目录 2.7 Field类的基本概念 文字性概念描述: Field类 2.8 Field的基本操作-1 2.9 Field的基本操作-2 分析: 2.10 Field 的综合练习 总结: 和equals的区别: 使用 比较 使用equals比较 2.7 Field类的基本概念 文字性…

OpenCV 图像的几何变换

一、图像缩放 1.API cv2.resize(src, dsize, fx0,fy0,interpolation cv2.INTER_LINEAR) 参数: ①src :输入图像 ②dsize:绝对尺寸 ③fx,fy:相对尺寸 ④interpolation:插值方法 2.代码演示 import cv2 …

前端报错404,nginx正常、gateway没有转发请求

问题描述:前端报错 404 Not Found 原因:nacos中对应服务没有上线,下线后,可以启动本地服务,然后在测试上调试代码。!! 记住重启对应服务,也不会自动上线。

JVM的内存区域

JVM内存区域最粗略的划分可以分为堆和栈,当然,按照虚拟机规范,可以划分为以下几个、区域 Java虚拟机运行时数据区 JVM内存分为线程私有区和线程共享区,其中方法区和堆是线程共享区,虚拟机栈、本地方法栈和程序计数器是…

植物病害识别:YOLO水稻病害识别/分类数据集(2000多张,2个类别,yolo标注)

YOLO水稻病害识别/分类数据集,包含疾病和正常2类,共2000多张图像,yolo标注完整,可直接训练。 适用于CV项目,毕设,科研,实验等 需要此数据集或其他任何数据集请私信

floodfill算法题目

前言 大家好,我是jiantaoyab,在下面的题目中慢慢体会floodFill算法,虽然是新的算法,但是用的思想和前面的文章几乎一样,代码格式也几乎一样,但不要去背代码 图像渲染 https://leetcode.cn/problems/flood…

事物的传播属性

事务传播属性是Spring框架在处理事务时的一个重要概念,它定义了在事务方法被另一个事务方法调用时,如何处理事务边界的行为。这些属性是通过Spring的Transactional注解中的propagation属性来设置的。下面是几个常见的Spring事务传播属性: *RE…

生成式 AI:使用 Pytorch 通过 GAN 生成合成数据

导 读 生成对抗网络(GAN)因其生成图像的能力而变得非常受欢迎,而语言模型(例如 ChatGPT)在各个领域的使用也越来越多。这些 GAN 模型可以说是人工智能/机器学习目前主流的原因; 因为它向每个人&#xff0…

RK3568 xhci主控挂死问题

串口日志 rootjenet:~# [18694.115430] xhci-hcd xhci-hcd.1.auto: xHCI host not responding to stop endpoint command. [18694.125667] xhci-hcd xhci-hcd.1.auto: xHCI host controller not responding, assume dead [18694.125977] xhci-hcd xhci-hcd.1.auto: HC died; c…

微软模拟飞行器回放功能

参考b站up主,欢迎大家去关注:https://www.bilibili.com/video/BV1Z34y1P7zz/?spm_id_from333.880.my_history.page.click&vd_source4e0b40493e2382633fab2ddc1bb1d9cc 下载网址:https://flightsim.to/file/8163/flight-recorder 坠毁检…

嘿!AI 编码新玩法上线!

随着 AI 智能浪潮到来,AI 编码助手成为越来越多开发者的必备工具,将开发者从繁重的编码工作中解放出来,极大地提高了编程效率,帮助开发者实现更快、更好的代码编写。 通义灵码正是这样一款基于阿里云通义代码大模型打造的智能编码…

如何保证消息的顺序性

先看看顺序会错乱的场景:RabbitMQ:一个 queue,多个 consumer,这不明显乱了: 解决方案:

代码背后的女性:突破性别壁垒的技术先驱

个人主页:17_Kevin-CSDN博客 收录专栏:《程序人生》 引言 在计算机科学的历史长河中,有许多杰出的女性为这个领域的发展做出了重要贡献。她们不仅在技术上取得了卓越成就,还打破了性别壁垒,为后来的女性树立了榜样。今…

22 Dytechlab Cup 2022C. Ela and Crickets(思维、找规律、模拟)

思路就是找规律 可以发现,当拐点在角落时的情况和不在角落的情况是不同 当拐点在角落时,只有目标点的横纵坐标其中的一个和它相同时,这时才可能到达。 否则,我们就简单的例子可以看一下,当一个 2 ∗ 2 2*2 2∗2的矩阵的…

伪分布HBase的安装与部署

1.实训目标 (1)熟悉掌握使用在Linux下安装伪分布式HBase。 (2)熟悉掌握使用在HBase伪分布式下使用自带Zookeeper。 2.实训环境 环境 版本 说明 Windows 10系统 64位 操作电脑配置 VMware 15 用于搭建所需虚拟机Linux系统 …

PostgreSQL容器安装

docker中的centos7中安装 选择对应的版本然后在容器中的centos7中执行下面命令 但是启动容器的时候需要注意 开启端口映射开启特权模式启动init进程 docker run -itd --name centos-postgresql -p 5433:5432 --privilegedtrue centos:centos7 /usr/sbin/init 启动然后进入后先…

ARMv8/ARMv9架构下特权程序之间的跳转模型与系统启动探析

文章目录 背景1、前言小结: 2、4个特权等级/4个安全状态之间的跳转模型小结: 3、启动时镜像之间的跳转模型小结: 4、runtime程序之间的跳转模型小结: 推荐 背景 ARMv8和ARMv9架构是ARM公司推出的先进处理器架构,被广泛…

华为ce12800交换机m-lag(V-STP模式)配置举例

配置## 标题思路 采用如下的思路配置M-LAG双归接入IP网络: 1.在Switch上配置上行接口绑定在一个Eth-Trunk中。 2.分别在SwitchA和SwitchB上配置V-STP、DFS Group、peer-link和M-LAG接口。 3.分别在SwitchA和SwitchB上配置LACP M-LAG的系统优先级、系统ID。 4.分别在…

粒子群算法优化RBF神经网络气体浓度预测

目录 完整代码和数据下载链接:粒子群算法优化RBF神经网络气体浓度预测,pso-rbf气体浓度预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88937920 RBF的详细原理 RBF的定义 RBF理论 易错及常见问题 RBF应用实例,粒子群算法优化R…