X86 MSI-X如何触发中断处理程序?是否需要轮询所选的内存地址?
我有一个用UEFI引导的小内核。我正在使用QEMU进行虚拟化。我想写一个xHCI驱动程序来支持内核中的USB键盘。我很难找到简洁明了的信息。我在内核中“找到”了xHCI。我有一个指向其PCI配置空间的指针。它具有MSI-X功能。我想使用MSI-X,但我很难理解如何使用xHCI和USB 我的问题是,通常osdev.org是非常信息化的,并且有实现某些功能所需的基础。就MSI-X而言,情况似乎并非如此。我很难在osdev.org上的所有信息与MSI-X功能之间建立链接 基本上,我找到MSI-X表,然后在那里设置一些地址,告诉xHCI PCI设备写入该地址以触发中断。但在某个时刻是否调用了中断处理程序?我是否需要轮询此地址以确定是否发生中断?我本以为MSI-X表中的矢量控制字段允许我设置一个中断矢量,但所有位都保留了 编辑 我发现以下问答部分回答了我的问题: 因此,基本上,数据寄存器的低位字节包含要触发的向量,消息地址寄存器包含要触发的LAPIC id。我还有一些问题X86 MSI-X如何触发中断处理程序?是否需要轮询所选的内存地址?,x86,interrupt,osdev,pci,apic,X86,Interrupt,Osdev,Pci,Apic,我有一个用UEFI引导的小内核。我正在使用QEMU进行虚拟化。我想写一个xHCI驱动程序来支持内核中的USB键盘。我很难找到简洁明了的信息。我在内核中“找到”了xHCI。我有一个指向其PCI配置空间的指针。它具有MSI-X功能。我想使用MSI-X,但我很难理解如何使用xHCI和USB 我的问题是,通常osdev.org是非常信息化的,并且有实现某些功能所需的基础。就MSI-X而言,情况似乎并非如此。我很难在osdev.org上的所有信息与MSI-X功能之间建立链接 基本上,我找到MSI-X表,然
是的!:-) 我认为更常见的做法是将本地APIC拼写为LAPIC,大写字母L,以防字体看起来像大写字母I。正如您所怀疑的,更改本地APIC的地址不会影响MSI地址。MSI地址不仅在本地APIC中是硬连线的,在uncore的许多其他部分中也是硬连线的。