如果我尝试使用超过--num-cpus=8
个核心,例如16,32或64,终端只留空。
在提交2a9573f5942b5416fb0570cf5cb6cdecba733392和Linux内核4.16上使用gem5进行测试。
相关主题:https://www.mail-archive.com/gem5-users@gem5.org/msg15469.html
答案 0 :(得分:2)
如果我在Ciro的答案中添加更多内容,则默认情况下,由于this line of code,gem5中的当前GICv2模型支持单核。如果不启用gem5ExtensionsEnabled
,它将不会用接收到的中断号更新highest_int
,因此接收到的中断将不会被发布到指定的cpu上以调用处理程序。也就是说,没有跳转到中断处理程序。另外,即使打开gem5ExtensionsEnabled
,我也认为它最多可以支持4个内核,因为INT_BITS_MAX
和itLines
的默认值分别是32和128(请参阅{{ 3}});它检查每个内核跨越4个内核的32条中断线。例如,假设一个系统具有16个内核,而cpu 5执行该循环。同样,假设另一个内核(比如说内核11)已经有一个优先级比此更高的中断。然后,循环将忽略内核11的其他中断,因为循环索引x
最多可以增长到3。
要打开gem5ExtensionsEnabled
,您可以按照Ciro的说明将选项--param='system.realview.gic.gem5_extensions=True'
传递给命令。但是,请注意,该参数用于在this上设置haveGem5Extensions
变量,而不是设置gem5ExtensionsEnabled
,只有在固件代码将某些数据(0x200)写入GIC分配器寄存器处时,该参数才启用GICD_TYPER偏移量(请参见here)。
答案 1 :(得分:1)
如上所述:https://www.mail-archive.com/gem5-dev@gem5.org/msg24593.html您需要:
使用来自https://gem5.googlesource.com/arm/linux/+/refs/heads/gem5/v4.15的ARM linux内核分叉,特别是GICv2扩展脚本提交
fs.py
添加选项--param 'system.realview.gic.gem5_extensions = True' --generate-dtb
使用Linux内核v4.15,aarch64在gem5 a5bc2291391b0497fdc60fdc960e07bcecebfb8f(2018年11月)上测试。