关于在 FreeBSD 上请求/释放 MSI-X 中断资源的调用顺序的问题

问题描述 投票:0回答:0

我对 FreeBSD 上请求/释放 MSI-X 中断资源的调用顺序有一些疑问。

我试过“amd64 FreeBSD 13.1”和“amd64 FreeBSD 13.2”。

请求MSI-X中断资源时,我尝试了以下2个序列:

*序列A

bus_alloc_resource

pci_msix_count

pci_alloc_msix

bus_setup_intr

*序列 B:

pci_msix_count

pci_alloc_msix

bus_alloc_resource

bus_setup_intr

当使用“Sequence A”时,我观察到bus_alloc_resource FAIL(返回NULL指针)。

使用“Sequence B”时有效,所以我选择“Sequence B”。

释放 MSI-X 中断资源时,我尝试了以下 2 个序列:

*序列 C:

bus_teardown_intr

pci_release_msi

bus_release_resource

*序列 D:

bus_teardown_intr

bus_release_resource

pci_release_msi

使用“Sequence C”时,我在卸载设备驱动程序时观察到一个系统日志“Device leaked MSI vectors”。

当使用“Sequence D”时,我观察到“sudo acpiconf -s 3”不再能够将系统挂起到 RAM。

相关人士: https://man.freebsd.org/cgi/man.cgi?query=pci_release_msi&sektion=9&manpath=freebsd-release-ports

screenshot photo for man page

根据男人的说法,“序列A”和“序列C”是正确的。 但是,“Sequence A”和“Sequence C”存在如上图的问题

可以咨询问题的原因是什么吗?

或者有可用的解决方法吗?

提前致谢。

interrupt freebsd power-management pci-e msix
© www.soinside.com 2019 - 2024. All rights reserved.