首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux网络驱动程序MSI中断问题

Linux网络驱动程序MSI中断问题
EN

Stack Overflow用户
提问于 2015-08-05 18:50:12
回答 1查看 519关注 0票数 3

我正在尝试为自定义硬件创建一个网络驱动程序。我的目标是一个XilinxZync-7000 FPGA设备.

我的问题是CPU端MSI中断的软件处理。我遇到的问题是,当中断在PCIe设备上触发时,驱动程序代码只执行一次中断处理程序并返回,但是当我查看PCIe时,PCIe IO停止工作,而MSI被重置。未来的任何中断都不会被内核捕获,而且PCIe开发程序几乎已经死掉了。我检查了硬件,没有重新设置到FPGA,所以我认为内核中正在发生一些事情。

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 20:34:58

在贴出这个问题后,我发现了困扰我一天多一点的问题。所发生的情况是,当我将DMA缓冲区映射为:

代码语言:javascript
运行
复制
net_priv->rx_phy_addr = dma_map_single(&pdev->dev, net_priv->rx_virt_addr,  
                                       dev->mtu, PCI_DMA_FROMDEVICE);

稍后,我将同一个缓冲区取消映射。

代码语言:javascript
运行
复制
dma_unmap_single(&pdev->dev, net_priv->rx_phy_addr, BUFFER_SIZE,  
                 PCI_DMA_FROMDEVICE);

我的BUFFER_SIZE错误大小为1MB,dev->mtu为1.5kB。似乎发生的情况是,当我取消映射1MB的空间时,除了1.5bkB之外,它还开始取消映射其他内存映射。当dma_unmap_single完成时,PCIe IO区域和中断区域都死了。希望我的错误能帮到别人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31840522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档