繁体   English   中英

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

[英]Linux Network Driver MSI Interrupt Issue

我正在尝试为自定义硬件创建网络驱动程序。 我的目标是Xilinx Zync-7000 FPGA器件。

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

先感谢您。

在发布这个问题后,我发现了一个困扰我一天多一点的问题。 发生的事情是当我映射我的DMA缓冲区时,如下所示:

net_priv->rx_phy_addr = dma_map_single(&pdev->dev, net_priv->rx_virt_addr,  
                                       dev->mtu, PCI_DMA_FROMDEVICE);

我稍后用相同的缓冲区取消映射

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区域就会死机以及中断区域。 希望我的错误可以帮助其他人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM