news 2026/8/27 17:43:02

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/28 6:59:55

RINEX文件进行卫星导航解算

RINEX文件进行卫星导航解算&#xff0c;包括卫星坐标计算和用户位置解算的完整流程。 整体解算流程RINEX文件结构解析 观测文件格式3.04 OBSERVATION DATA M: Mixed RINEX VERSION / TYPE teqc 2019Feb25 NOAA/NOS/NGS/CORS 20240429 06:34:24U…

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

【webrtc】继续编译aar 2025-12-12

(1) gradle支持的jdk 17(2) gradle 7.2(我理解越高越好&#xff09;所以配置里有很多对java语法 的向下兼容下进行增加one:org.gradle.jvmargs--add-opens java.base/java.ioALL-UNNAMEDtwo:android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompat…

作者头像 李华
网站建设 2026/8/28 5:24:31

谷歌新架构突破Transformer超长上下文瓶颈!

Transformer的提出者谷歌&#xff0c;刚刚上来给了Transformer梆梆就两拳*&#xff08;doge&#xff09;*。 两项关于大模型新架构的研究一口气在NeurIPS 2025上发布&#xff0c;通过“测试时训练”机制&#xff0c;能在推理阶段将上下文窗口扩展至200万token。两项新成果分别是…

作者头像 李华
网站建设 2026/8/27 22:42:06

视觉回归测试:以Applitools为例的自动化实践与效能提升

1 视觉回归测试概述 视觉回归测试&#xff08;Visual Regression Testing&#xff09;是通过比较软件界面在不同版本间的视觉差异&#xff0c;来检测非预期UI变化的自动化测试方法。与传统功能测试不同&#xff0c;它关注像素级渲染结果&#xff0c;能够发现细微的布局错乱、颜…

作者头像 李华
网站建设 2026/8/28 2:10:44

从零开始的DeepSeek微调训练实战(SFT)

前言 本文重点介绍使用微调框架unsloth&#xff0c;围绕DeepSeek R1 Distill 7B模型进行高效微调&#xff0c;并介绍用于推理大模型高效微调的COT数据集的创建和使用方法&#xff0c;并在一个medical-o1-reasoning-SFT数据集上完成高效微调实战&#xff0c;并最终达到问答风格优…

作者头像 李华