我目前正在为我的OS开发项目开发基于PCIe的英特尔网卡驱动程序。尽管驱动程序似乎运行良好,但是一旦启用INTA(使用I / O APIC的IRQ 16),我就会不断收到大量中断,这些中断完全阻塞了我的内核。这些不是由网卡引起的(中断原因寄存器全为零),除非在少数情况下网卡实际上接收到了数据包。
我尝试过的事情:
测试其他IRQ触发设置-在“低”电平触发的设置应该是正确的,因为在其他情况下根本没有任何反应(网卡中断应该起作用)。
禁用所有其他PCIe设备:我尝试将0x0400写入每个设备的PCIe cfg space command register(设置中断禁用标志,清除所有其他标志);我只排除了网卡,视频卡和桥接设备。尽管该操作成功完成,但是由于这些中断仍然会发生,因此我不确定是否真的禁用了给定的设备。
将0x0400写入命令寄存器是完全禁用PCIe设备的正确方法吗?