首页 > TAG信息列表 > pci-e
PCI / PCIe设备如何在Linux内核中初始化/注册自己?
当内核启动时,PCI子系统为每个物理PCI总线创建一个pci_bus,然后将pci_bus添加到pci_root_buses(具有PCI配置).但是PCI设备驱动程序通过pci_register_driver注册驱动程序,并将PCI驱动程序添加到pci_bus_type. 我的问题: > pci_bus_type如何知道PCI配置. > pci_bus_type和pci_root_busLinux网络驱动程序MSI中断问题
我正在尝试为自定义硬件创建网络驱动程序.我的目标是Xilinx Zync-7000 FPGA器件. 我的问题是CPU端MSI中断的软件处理.我遇到的问题是,当在PCIe设备上触发中断时,驱动程序代码会执行一次中断处理程序并返回,但是当我查看lspci时,PCIe IO会停止工作,并且MSI将重置.内核不会捕获任何将linux-如何强制内核重新读取/重新初始化PCI设备ID?
我的机器(正在运行Linux内核3.2.38的计算机)在引导时具有错误的PCI设备的子系统ID(子设备和子供应商ID).如果我然后在系统仍处于启动状态(即热插拔)时物理地拔出PCI设备并重新插入,则它将获得正确的ID. 请注意,错误的子设备ID和子供应商ID与设备的设备ID和供应商ID相同(请参见下面linux – 是否可以写入在同一PCIe插槽上使用不同PCIe通道的多个设备?
我正在编写一个支持多个设备的Linux设备驱动程序.我有一个x8 PCIe卡,上面有4个这样的设备.每个都通过PCIe交换机运行并获得2个PCIe通道.有没有办法让驱动程序同时写入多个通道?如果是这样,我该怎么做?我认为它应该是可能的,因为它全部在一个PCIe插槽上,但我不知道如何从驱动程序完成.c – 如何在电路板上发现PCIe总线拓扑和插槽号?
例如,当我使用带有CUDA C/C++和GPUDirect 2.0 P2P的多GPU系统时,我使用嵌套的PCI-Express交换机,如图所示,那么我必须知道它们的PCI总线ID在任意两个GPU之间有多少交换机,优化数据传输和计算分配. 或者,如果我已经知道具有PCIe交换机的硬件PCIe拓扑,那么我必须知道,板上哪个硬件PCI将PCIe驱动程序从Linux移植到FreeBSD
我在Linux上编写了一个相当大的PCIe驱动程序,现在我需要在FreeBSD上移植它.我还不知道BSD版本,但我认为在这一点上它是无关紧要的,因为我想了解一般在移植过程中必须修改哪些主要项目. 好处是驱动程序被分区为独立于操作系统的“库”层(OSI)和操作系统,因此它已经有一个“框架”允linux – 使用mmap访问PCI-e内存空间
我在飞思卡尔MPC8308处理器(基于PowerPC架构)上使用PCI-e端口,在尝试使用它时遇到了一些问题.端点PCI-e设备的内存空间等于256 MB.我可以使用“pciutils”包轻松读写端点设备的配置空间. 在配置寄存器中写入正确的值并获得访问存储空间的权限之后;我试图通过在C中使用“mmap()”函Linux 4.4 PCIe DMA进入用户空间页面不起作用 – highmem不能用于DMA?
我正在更新一个旧的Linux驱动程序,它通过DMA将数据传输到用户空间页面,这些页面通过get_user_pages()从应用程序传递下来. 我的硬件是一个新的基于x86 Xeon的板,具有12GB的RAM. 驱动程序从VME获取数据到PCIe FPGA,并且应该将其写入主存储器.我为每个页面做了一个dma_map_pages(),我linux – 没有调用pci_Driver.probe
我正在开始Linux设备驱动程序开发,用于通过笔记本电脑的PCIe扩展槽连接的PCI设备. 在启动时,一切都很美妙.但是,我正在尝试在线获得基本的Hotplug支持.当我弹出卡片时,我可以看到(在dmesg中)调用正确的移除内容.但是,当重新插入卡时,没有任何反应.如果我手动删除模块,然后插入卡(或linux mmap从用户空间应用程序访问PCI内存区域
作为我的PCI驱动程序的第一级测试,我希望我可以通过/sys/bus/pci/devices/0000:01:00.0/resource0访问pci_iomap区域 来自我的用户应用程序的文mmap的手册页,我找到的示例程序以及其他帖子似乎表明用户进程访问应该有效.但是有些文章似乎表明mmap调用需要通过ioctl访问器在内核中完