news 2026/8/21 0:45:59

BUG: failure at drivers/pci/msi.c:376/free_msi_irqs()!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BUG: failure at drivers/pci/msi.c:376/free_msi_irqs()!

文章目录

  • 1. pci显示模块卸载
  • 2. free_irq未被调用导致xxfb_pci_unregister报错
  • 3. free_irq第二个参数与request_irq最后一个参数不一致导致报错

1. pci显示模块卸载

为方便调试显示驱动将pci模块xxfb编译为内核模块,卸载命令如下:

echo0>/sys/class/vtconsole/vtcon1/bind systemctl stop lightdm rmmod xxfb

2. free_irq未被调用导致xxfb_pci_unregister报错

pci_disable_msi调free_msi_irqs报错:

BUG:failure at drivers/pci/msi.c:376/free_msi_irqs()!0Kernel panic-not syncing:BUG!CPU:0PID:3136Comm:rmmod Not tainted5.10.0-00811-g123456789012-dirty #134Hardware name:WIAT WIAT Platform Software,BIOS xxxx-200000May2420206Trace:[<ffffffff80918bb0>]walk_stackframe+0x0/0x100[<ffffffff81b011d8>]dump_stack+0xd0/0x110[<ffffffff81af85c8>]panic+0x1a0/0x4e0[<ffffffff811b6df0>]free_msi_irqs+0xe0/0x270[<ffffffff811b78d0>]pci_disable_msi+0x190/0x1f0[<fffff0000021a3b4>]cleanup+0xf4/0x170[ichfb][<fffff0000021a458>]xxfb_pci_unregister+0x28/0x60[ichfb][<ffffffff8119c544>]pci_device_remove+0x54/0x130[<ffffffff814a347c>]__device_release_driver+0x23c/0x3a0[<ffffffff814a5028>]driver_detach+0x158/0x210[<ffffffff814a267c>]bus_remove_driver+0x8c/0x150[<ffffffff814a5a28>]driver_unregister+0x48/0xa0[<ffffffff8119be34>]pci_unregister_driver+0x34/0x110[<fffff0000022b330>]xxfb_exit+0x20/0x38[ichfb][<ffffffff80a335fc>]sys_delete_module+0x1cc/0x370[<ffffffff80912014>]entSys+0xf4/0x110[<ffffffff80c08084>]sys_close+0x24/0x702SMP:stopping secondary CPUs0---[end Kernel panic-not syncing:BUG!]---

看下free_msi_irqs:

staticvoidfree_msi_irqs(structpci_dev*dev){structlist_head*msi_list=dev_to_msi_list(&dev->dev);structmsi_desc*entry,*tmp;structattribute**msi_attrs;structdevice_attribute*dev_attr;inti,count=0;for_each_pci_msi_entry(entry,dev)if(entry->irq)for(i=0;i<entry->nvec_used;i++)BUG_ON(irq_has_action(entry->irq+i));//报错地方pci_msi_teardown_msi_irqs(dev);...

报错处BUG_ON逻辑为真的函数:irq_has_action(entry->irq + i))

staticinlineintirq_desc_has_action(structirq_desc*desc){returndesc->action!=NULL;}

也即desc->action未释放。查看代码,DC DMA申请了未释放,xxfbhw_dma_init中调用了

err=request_irq(xx_par->irq_dma,xxfbhw_dma_irq_handler,IRQF_SHARED,"DMA_TRANSFER_IRQ",xx_par);

xxfbhw_dma_exit未调用free_irq进行irq_dma释放。DMA是非共享中断,因此在xxfbhw_dma_exit中添加free_irq

xxfbhw_dma_exit{...free_irq(xx_par->irq_dma,0);//to add}

3. free_irq第二个参数与request_irq最后一个参数不一致导致报错

constvoid*free_irq(unsignedintirq,void*dev_id)//dev_id----------------------------------------------------staticinlineint__must_checkrequest_irq(unsignedintirq,irq_handler_thandler,unsignedlongflags,constchar*name,void*dev)//dev

xxfbhw_dma_exit中添加free_irq(xx_par->irq_dma, 0)后依然报错:Trying to free already-free IRQ XX

4------------[cut here]------------4WARNING:CPU:1PID:733at kernel/irq/manage.c:1751free_irq+0x32c/0x630Trying to free already-free IRQ58Modules linked in:cxxfb(-)c ngbec sch_fq_codelc efivarfsc ipv6c CPU:0PID:3136Comm:rmmod Not tainted5.10.0-00811-g123456789012-dirty #134Hardware name:WIAT WIAT Platform Software,BIOS xxxx-200000May2420206Trace:[<ffffffff80918bb0>]walk_stackframe+0x0/0x100[<ffffffff81b011d8>]dump_stack+0xd0/0x110[<ffffffff80959a5c>]__warn+0x13c/0x1f0[<ffffffff809e8478>]free_irq+0x328/0x630[<ffffffff809e8478>]free_irq+0x328/0x630[<ffffffff81af89d4>]warn_slowpath_fmt+0xcc/0x100[<ffffffff809e8478>]free_irq+0x328/0x630[<ffffffff809e8478>]free_irq+0x328/0x630[<ffffffff81003b4c>]debugfs_rename+0x3bc/0x3c0[<ffffffff80c42cc4>]mntput_no_expire+0x184/0x3f0[<fffff00000229014>]xxfbhw_dma_exit+0x94/0xf0[xxfb][<fffff0000021a420>]cleanup+0x160/0x170[xxfb][<fffff0000021a458>]xxfb_pci_unregister+0x28/0x60[xxfb][<ffffffff8119c544>]pci_device_remove+0x54/0x130[<ffffffff814a347c>]__device_release_driver+0x23c/0x3a0[<ffffffff814a5028>]driver_detach+0x158/0x210[<ffffffff814a267c>]bus_remove_driver+0x8c/0x150[<ffffffff814a5a28>]driver_unregister+0x48/0xa0[<ffffffff8119be34>]pci_unregister_driver+0x34/0x110[<fffff0000022b350>]xxfb_exit+0x20/0x38[xxfb]

free_irq 第二个参数要与request_irq最后一个参数一致,修改为free_irq(xx_par->irq_dma, xx_par)后正常。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 10:46:59

Fusaka 升级:以太坊的 “数据革命”,而非简单扩容

以太坊 Fusaka&#xff08;Fulu Osaka&#xff09;升级落地已逾 8 天。没有暴涨的行情&#xff0c;没有网络的震荡&#xff0c;甚至连社区讨论的热度都显得不温不火 —— 这种 “平淡如水” 的表现&#xff0c;让不少人发出 “就这&#xff1f;” 的质疑。但恰恰是这份 “无聊…

作者头像 李华
网站建设 2026/8/20 18:47:28

Spark向量化计算在美团生产环境的实践

Apache Spark是一个优秀的计算引擎&#xff0c;广泛应用于数据工程、机器学习等领域。向量化执行技术在不升级硬件的情况下&#xff0c;既可获得资源节省&#xff0c;又能加速作业执行。GlutenVelox解决方案为Spark换上了向量化执行引擎&#xff0c;本文将阐述美团在这一方向的…

作者头像 李华
网站建设 2026/8/21 8:50:05

ES6扩展运算符:从基础到实战的全方位解析

在ES6引入的众多新特性中&#xff0c;扩展运算符绝对是实用性拉满的“明星特性”之一。它以简洁的...语法&#xff0c;轻松解决了数组和对象的复制、合并、传参等常见问题&#xff0c;极大地简化了代码逻辑。今天&#xff0c;我们就从基础概念到实战场景&#xff0c;全方位拆解…

作者头像 李华
网站建设 2026/8/21 9:00:21

在本地部署Qwen3大模型与Dify环境中亲测制作“合同审查智能体”应用

在与多位律师朋友以及自己开公司的老板朋友聊天中发现&#xff0c;他们都有一个迫切的需求&#xff1a;“希望对自己手头的大量合同文本&#xff0c;做一个全面的合同风险评估&#xff0c;提前采取措施规避风险点&#xff0c;或者提前准备以应对风险的爆发&#xff0c;并减少损…

作者头像 李华
网站建设 2026/8/21 7:04:04

【频谱估计】不同频谱估计方法彩色噪声频谱估计附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿真…

作者头像 李华