问题标签 [pci]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 嵌套 QEMU 来宾中的直接 pci 设备分配
我正在运行 QEMU,除了 OS 驱动器之外,我还通过 AHCI 控制器将它与另一个 SATA 磁盘连接起来,如下所示:
我想在该 VM 内运行另一个 VM,并使用将此磁盘直接分配给该 VM。这可能吗?我需要嵌套的 KVM 功能吗?我必须启用 VT-d 吗?
谢谢
pci - pci_enable_device_mem 和 pci_enable_device 有什么区别?
pci_enable_device_mem 和 pci_enable_device 有什么区别?
在 ixgbe 中,pf 驱动程序使用 pci_enable_device_mem,vf 驱动程序使用 pci_enable_device。
embedded - PCI 扩展 ROM 头 INIT 函数的入口点
如第 6.3.3.1 节所述。ROM Header Extensions (PCI Local Bus Specification v2.3),偏移量 0x3h 是“INIT 函数的入口点。POST 对此位置进行 FAR CALL。”,该字段的长度为 3 个字节。
我有一个长度为 40448 字节的 PCI Rom 映像,入口点字节为 0xe9_cf_06(地址 0x3h 处的 0xe9,地址 0x4h 处的 0xcf 和地址 0x5h 处的 0x06)。此偏移量超过 ROM 映像长度。谁能帮忙解释一下这个字段的含义以及如何使用它来找出ROM上图像的入口点?
任何建议表示赞赏。谢谢!
virtualization - 如何区分英特尔 82599 中的 PF 与 VF?
我试图了解 ixgbevf 和 ixbge 驱动程序。我的问题如何通过读取 PCI 配置空间来区分 PF 设备和 VF 设备。
dma - 使用 DMA 在 PCI 总线上的实际数据速率?
32 位/33MHz PCI 总线上的实际数据传输率是多少?我们需要将 32K 32 位样本从 PCI 卡传输到运行 Windows 的 Intel CPU。我认为该块将在 1 毫秒内传输,但需要 40 毫秒。PCI 板有一个 PLX PCI-9056。我们正在使用虚拟地址访问卡内存,但是我们的 CPU 被阻塞了,这让我认为 CPU 参与阻碍了数据速率。如果我们去 DMA,我们会在接近 1 毫秒的时间内传输吗?我怀疑的原因是 PXI SDK 用户手册指出:
“BAR 空间内存读/写相对而言通常很慢。读取通常只有 2-4MB/s。”
linux - PCI配置空间的latency_timer寄存器无法设置值
我正在尝试使用以下命令设置我的英特尔 PCI 卡的延迟计时器值
但是当我读回这个寄存器的值时,它没有改变并显示以前的值。
我正在使用以下命令来显示寄存器的值
谁能告诉我为什么我无法更改延迟计时器的值?
我正在使用Linux
机器。
pci - PCI / PCIe BAR 大小如何确定?
我知道 PCI 配置空间中的基地址寄存器 (BAR) 定义了 PCI 地址的起始位置,但是这个区域的大小是如何确定的呢?
当然,这是硬件的一个属性,因为只有它知道它可以处理多远的地址空间。但是,我似乎在 PCI 配置结构中看不到 BAR 大小字段。
pci - PCI中的功能号是多少?
我是 PCI 协议的新手,想知道设备的功能号存储在哪里?这对我来说很重要,因为我在 Windows 系统的 PCI 插槽中的定制卡上插入了一个广告。该卡包含同一设备的两个实例。我知道这两个设备将根据功能编号进行区分,因为我的总线编号和设备 ID 相同,但我无法理解何时分配给设备的功能编号以及它是否存储在我的设备 BAR 中?
linux - BeagleBone Black 上的 SNMP
我正在尝试在运行 Angstrom 的 Beaglebone Black 上实现 net-snmp 库。当我在 repo 中安装 net-snmp 数据包或尝试从源安装 net-snmp 时,尝试启动 snmpd 时出现以下错误。
我看过this,但无济于事。遵循答案提供的步骤不起作用。
谁能告诉我如何在 Beaglebone 上安装 net-snmp 库并配置它们以便它们工作?使用 angstrom repo 包或从源代码安装。
谢谢
linux-kernel - 轮询用户空间中设备的控制寄存器以检查错误
我正在编写代码来记录 PCI 设备上发生的用户空间中的错误(内核已经将它们记录在内核环形缓冲区中)。目前,我面前有两种方法,
修改内核设备驱动程序以向我的用户空间进程发送中断(使用 eventfd),然后在收到此中断时(使用 select() 或 poll())我可以使用 ioctl 获取详细的错误信息(需要更改设备驱动程序)。这需要更改我想避免的内核代码。
我的进程以 root 身份运行,因此,我可以使用 sysfs 读取/写入设备的错误状态寄存器。为此,我将不得不不断地轮询寄存器,一旦发生错误,我可以读取状态寄存器,对其进行解码,获取详细的错误信息,然后清除寄存器。
我更倾向于第二种方法,因为它只需要在用户空间中进行更改。
我的问题是:
- 第二种方法是否有意义?
- 如果是这样,那么这两种方法的优缺点是什么?
- 第二种方法的轮询将导致 CPU 周期的浪费。在第一种方法中使用 select() 或 poll() 是否也会导致类似比例的 CPU 周期浪费。
非常感谢您的帮助!:)