请问:linux内核中pci初始化时,访问pci设备的配置空间时,程序挂了!
发现程序是在调用pci_read_config_byte函数时挂的
向各位高手请教
谢谢!
这是完全有可能引起的,就好像有时候插入某个PCI卡到PC机箱中,无法正常启动一样。可能的原因有多种,但最常见的是PCI设备不正常。
pci_read_config_byte访问PCI设备的配置空间,发起PCI总线传输,如果目标设备主动拒绝(TARGET_ABORT)的话,PCI主桥可能会反复重试,以等待目标设备就绪。所以,这个指令就一直不返回,造成死机现象。
情况不清楚,不敢肯定你的情况是否如上所述,但可能性还是有的。可以尝试移去一些PCI设备再看看能不能正常工作。如果是板载PCI设备就不好弄了。
再次感谢yaopg! 还有一个问题想请教一下,在调试过程中发现: 板载有两个pci设备,一个可以正常访问设备的 配置空间,另一个却出现问题,如前面所描述的使程序挂起.进一步调试发现一个现象是:只能对 该设备进行一次配置空间的访问.也就是说第一次调用pci_read_config_byte()函数的时候可以 读出配置空间的值,但第二次调用pci_read_config_byte()函数时就会使程序挂起. 再次请教yaopg! 谢谢
请高手帮忙看一下,能给点提示!谢谢