免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3651 | 回复: 4
打印 上一主题 下一主题

request_irq(dev->irq, ....)时候,有时候发现dev->irq是0,惊奇? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-19 21:02 |只看该作者 |倒序浏览
request_irq(dev->irq, ....)时候,多数时间正常,但偶尔有时候发现dev->irq是0,中断无法加载,惊奇?不知道大家碰到过这样的情况?
我猜是系统硬件干扰等问题,软件怎么也不会读写dev->irq为零?

论坛徽章:
0
2 [报告]
发表于 2007-08-19 23:06 |只看该作者
还有这种事?

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
3 [报告]
发表于 2007-08-20 10:11 |只看该作者
BIOS初始化PCI设备的时候,有可能错误的分配irq。
kernel在pcibios_init的时候,并不纠正错误,只是写dev->irq = 0。
当你注册了这个PCI设备的驱动后,驱动函数中的XXX_pci_probe应该负责纠正这种错误。
一般都是在XXX_pci_probe开头,判断一下vender,class.......后,就马上pci_enable_device ,XXX_pci_probe -> pci_enable_device -> pcibios_enable_device -> pcibios_enable_irq -> pcibios_lookup_irq ( dev,1) 。
pcibios_lookup_irq ( dev,1) 的第二个参数为1时,纠正dev -> irq错误



如果到了request_irq的时候,dev->irq还是0的话,那么是驱动写的有毛病,而不是kernel有毛病。

论坛徽章:
0
4 [报告]
发表于 2007-08-20 20:54 |只看该作者
原帖由 塑料袋 于 2007-8-20 10:11 发表
BIOS初始化PCI设备的时候,有可能错误的分配irq。
kernel在pcibios_init的时候,并不纠正错误,只是写dev->irq = 0。
当你注册了这个PCI设备的驱动后,驱动函数中的XXX_pci_probe应该负责纠正这种错误。
一般 ...

>>BIOS初始化PCI设备的时候,有可能错误的分配irq。
是指BIOS在扫描pci总线后填写设备的的PCI Configure Space中的interrupt line时出错吗?

论坛徽章:
4
戌狗
日期:2013-08-15 18:22:43技术图书徽章
日期:2013-08-21 13:48:45巨蟹座
日期:2013-09-26 17:06:39处女座
日期:2013-12-25 11:26:10
5 [报告]
发表于 2007-08-22 16:32 |只看该作者
假如是2片8259A,最大irq是15.

1) BIOS写pci设备的interrupt_line时,可能写的是个错的,或者没写.

2) init进程遍历一遍所有pci_dev,pci_dev -> irq  >  15 的一律pci_dev -> irq = 0,这部分pci_dev也归结到BIOS未分配irq的那类pci_dev中.

3)init进程遍历一遍满足如下条件的pci_dev
           a) BIOS未分配irq
           b) router事实上,已经为这个pci_dev选择好了irq.
   读出router设置的这个irq,写到pci_dev -> irq.


kernel做到这步就不管了,还可能剩下部分pci_dev,bios也没有为其分配irq,router也没有为这个pci_dev选择irq. 但这部分pci_dev怎么处理,完全是驱动模块的事.

驱动模块里的probe函数中,要调用修改router设置的函数, 如没有修改router设置,也没有验证router是否设置成功,就直接request_irq,应该是驱动的错误.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP