pci_enable_device(pdev);
pci_set_master(pdev);
pci_find_capability(pdev, PCI_CAP_ID_MSI);
pci_alloc_irq_vector()pdev,1,32,PCI_IRQ_MSI);
//pci_enable_msi();
读,写,abort 地址写配置空间偏移0x54的地址(64位,高32位一般为0)
还有就是
dma_set_mask(&(pdev->dev, DMA_BIT_MASK(64));
request_irq(pdev->irq + i , msi_handle_function, IRQF_SHARED, "edma_msi_irq", (void*) var);
pci_alloc_consistent(pdev,mpara_dma_size,&dma_addr);//dma_addr 是物理地址 返回值是虚拟地址
文章来源: https://blog.csdn.net/weixin_38987932/article/details/98111607