写入PCI内存映射寄存器是否可以毫无例外地导致CPU冻结?

问题描述

我正在调试PCI设备的驱动程序。设备的寄存器是内存映射的。

我将冻结范围缩小到一行:

*(pci_dev->registers + reg_offset) = RandomValue;

冻结并不总是发生,但是当我循环运行时,冻结将在一分钟左右发生。

我不明白的是这将如何冻结我的CPU。我以为可能发生的最坏情况是设备在某个时候无法正常映射,这将导致对无效内存地址的写入,从而引发某些异常。很好

但是我没有看到任何异常发生。没有内核oop或任何输出。我的其他内核似乎也冻结了,尽管我不确定是否是因为它们正在等待自旋锁。

这是否意味着行为异常的PCI设备(即使受到IOMMU的限制)也可以任意决定冻结CPU? PCI中是否有一些写入消息确认我的CPU /芯片组正在无限期等待,从而导致冻结?

这是在x86上的Linux中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...