首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x86 SMP中文件系统启动的linux内核+ gem5配置

x86 SMP中文件系统启动的linux内核+ gem5配置
EN

Stack Overflow用户
提问于 2019-06-18 14:12:12
回答 1查看 519关注 0票数 3

我尝试使用gem5 FullSystem (FS)模拟Linux kernel 2.6.22.9 (因为该二进制文件是由gem5提供的),并在TimingSimpleCPU上使用定制的Linux kernel 3.4.112。虽然这两种方法都可以在单核x86 FS模拟计算机上运行,但它们无法在多核模拟计算机上启动。

我甚至不知道如何开始调试。我尝试连接到gem5 TimingSimpleCPU为端口7000、7001等上的每个处理器提供的远程gdb端口。我看到在双核启动时,在某一时刻之后,核0被阻塞在schedule()调用上,而核1总是停留在idle()上,并且从不调度()任何东西,直到核0也被阻塞在schedule()调用上。

在TimingSimpleCPU X86上调试gem5及其与Linux内核的兼容性以实现多核全系统启动的正确方法是什么?我在想,可能会有与自旋锁支持或APIC相关的问题。

EN

回答 1

Stack Overflow用户

发布于 2019-06-18 15:58:45

Linux2core Linux kernel 5.1,TimingSimpleCPU,gem5 08c79a194d1a3430801c04f37d13216cc9ec1da3碰巧在这个设置上工作:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/6aa2f783a8a18589ae66e85f781f86b08abb3397#gem5-buildroot-setup-getting-started启动完成,cat /proc/cpuinfo显示2个CPU。

最后的运行命令是:

代码语言:javascript
复制
./run --cpus 2 --emulator gem5 -- --cpu-type TimingSimpleCPU

所有内容都在该代码库中指定,包括如何构建gem5、Linux内核以及如何运行它们。

然后,只要轻轻一按开关,如果你很好奇,同样的方法也可以在aarch64上运行:

代码语言:javascript
复制
./run --arch aarch64 --cpus 2 --emulator gem5 -- --cpu-type TimingSimpleCPU

然后,我根据OP的注释添加了选项--caches --l2cache,现在我重现了失败,对此我没有解决方案:

代码语言:javascript
复制
./run --cpus 2 --emulator gem5 -- --cpu-type TimingSimpleCPU --caches --l2cache

启动挂起,最后一条终端消息是:

代码语言:javascript
复制
pci 0000:00:04.0: legacy IDE quirk: reg 0x1c: [io  0x0376]

在上面一点,我们可以看到可疑的消息:

代码语言:javascript
复制
[Firmware Bug]: CPU1: APIC id mismatch. Firmware: 1 APIC: 0

不过,ARM启动时使用了额外的选项:

代码语言:javascript
复制
./run --arch aarch64 --cpus 2 --emulator gem5 -- --cpu-type TimingSimpleCPU --caches --l2cache

但是,我后来尝试了更多的缓存选项:

代码语言:javascript
复制
/run --arch aarch64 --emulator gem5 --cpu 2 --run-id 2 -- --cpu-type=HPI --caches --l2cache --l1d_size=64kB --l1i_size=64kB --l2_size=256kB

而且它也失败了,解释如下:https://github.com/cirosantilli/linux-kernel-module-cheat/tree/99180e6616331b7385b09147f11f67962f9facc4#gem5-arm-multicore-hpi-boot-fails ...

如何调试这些问题以使其正常工作是一个极其困难的问题,它需要了解足够多的Linux内核+ X86 ISA + gem5,其中足够多是未定义的。此学习过程与启用正确的日志选项/关注代码的正确部分紧密相关。这个设置只是碰巧是出于“运气”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56642695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档