-
Notifications
You must be signed in to change notification settings - Fork 47
Description
- 3a6000 8核心的支持情况
从手册上看,4-7 核 ipi 中断 和 extioi 中断的基址是 0x1fe10000, 从代码上看这一部分貌似并没有实现。请问下这块是否后续有支持计划。
-
对LIOINTC 中断的支持
龙芯启动 root zone时,使用的设备树启动,其中把uart 中断(10) 从 设备树中拿掉了,没有使用LIOINTC( Legacy I/O Interrupt Controller) 中断控制器。我把这块加上后(uart 使用中断,acpi中的默认配置是这样的),启动root zone 后出现了无法输入的情况。请问下后续有对 liointc 的支持吗 -
单个zone 绑定多核的情况有问题,我把board.rs 中 分给root zone的cpu 改成了多个,然后启动root zone 后就起不来了。这个情况是正常的吗?也就是现在不支持一个zone分多个核心吗。
分析了下代码,现在linux上都基本是用iocsr 访问 ipi 的cpuintc的寄存器(0x1000-0x1048),iocsr 的模拟上对这部分直接走的 handle_generic_mmio 访存的cpuintc的寄存器地址。这块的寄存器地址我看手册上说需要加上 cpuid * 0x100 的地址偏移,这块是不是处理的有问题,没有加地址偏移。
另一个问题是从实现上来说, ipi 这块的模拟貌似做不到 hypervisor 和 guest 同时共用,因为cpuintc的寄存器对于 hypervisor 和 guest 来说只有一份。hypervisor 清了pending 会导致guest 查询出问题,不清pending 又会导致hypervisor 反复收ipi中断。
翻了下kvm的源码,发现kvm 是通过模拟 ipi 的寄存器的数据来做的,guest 没有直接访问 cpuintc 真实寄存器的能力,通过在ipi send 时写入pending 数据和clear 时清除pending,同时控制 gcsr_estat 来控制guest 收发ipi 中断。 通过vcpu kick 让cpu 从guest 下退出来然后植入 ipi 中断数据。 感觉这样更合理一些。 同时不会跟hypervisor 中的ipi action 混乱。