免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: linux大西瓜
打印 上一主题 下一主题

[内核模块] 关于workqueue的疑问 [复制链接]

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00
11 [报告]
发表于 2013-03-30 13:07 |只看该作者
回复 10# blake326
blake326兄,感谢你一直帮我分析问题,我昨天到现在拷机重现问题了,发现真的是死锁的问题
before lock   disk:sda
===>appand sda[256] to list
before get_disk_name  hostno:258

sdd: sdd1 sdd2 sdd3 sdd4
INFO: rcu_sched_state detected stalls on CPUs/tasks: { 1} (detected by 0, t=6002 jiffies)
Backtrace for cpu 0 (current):
Backtrace:


我之前说漏点东西 我在ata_scsi_rw_xlat函数里也有使用scsi_head_lock这个spin_lock

printk(KERN_NOTICE "before lock   disk:%s\n",stmp->diskname);
spin_lock(&scsi_head_lock);
appand_to_list(SN_DISK_MAP, &scsi_disk_head, stmp);
printk(KERN_NOTICE "===>appand %s[%d] to list\n", stmp->diskname, stmp->portnum);
spin_unlock(&scsi_head_lock);
printk(KERN_NOTICE "after lock   disk:%s\n",stmp->diskname);
只打印了before lock   disk没有after lock   disk  然后是在ata_scsi_rw_xlat函数里发现锁没有解开就死锁了

分析了一下printk发现他在开始的时候
preempt_disable();
/* This stops the holder of console_sem just where we want him */
raw_local_irq_save(flags);
结束的时候
raw_local_irq_restore(flags);
preempt_enable();
有关中断 禁止抢占 然后再开启中断、抢占
可是spin_lock已经禁止抢占了 就算printk先preempt_disable(),再preempt_enable();应该也是在禁止抢占的状态。难道真的是中断引起了调度
我看了一下ata_scsi_rw_xlat这个函数,真没发现有在中断上下文中调用






   

论坛徽章:
3
程序设计版块每日发帖之星
日期:2016-02-13 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00程序设计版块每日发帖之星
日期:2016-02-14 06:20:00
12 [报告]
发表于 2013-04-01 14:04 |只看该作者
回复 10# blake326
问题找到了,ata_scsi_rw_xlat确实在软中断中有调用

   

论坛徽章:
0
13 [报告]
发表于 2013-04-01 14:24 |只看该作者
果然周末休息后更强点

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2013-04-01 16:20 |只看该作者
奇怪,

cpu的软中断挂在spin lock时,会不响应IPI么?

论坛徽章:
0
15 [报告]
发表于 2013-04-01 16:56 |只看该作者
肯定当时irq被disable了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP