Memory 如何在带有32b PCI设备的x86_64系统上使用DMA内存

Memory 如何在带有32b PCI设备的x86_64系统上使用DMA内存,memory,pci,dma,Memory,Pci,Dma,在具有32位设备(如传统NIC)的x86_64系统上: 在NIC和DRAM之间进行DMA时,内存地址必须位于4GB以下的较低内存中吗 顺便问一下,操作系统如何知道为PCI设备保留的内存地址空间资源,即存储在条中的地址 请参阅上的Wikipedia条目。PCI条位用于通信内存寻址要求,并在PCI枚举期间进行配置 如果PCI设备是32位的,这意味着它只能处理32位地址,那么它可能会将Locatable值设置为0(任意32位),从而将地址保持在4GB以下 如果设备可以处理64位地址,它会将Locata

在具有32位设备(如传统NIC)的x86_64系统上: 在NIC和DRAM之间进行DMA时,内存地址必须位于4GB以下的较低内存中吗


顺便问一下,操作系统如何知道为PCI设备保留的内存地址空间资源,即存储在条中的地址

请参阅上的Wikipedia条目。PCI条位用于通信内存寻址要求,并在PCI枚举期间进行配置

如果PCI设备是32位的,这意味着它只能处理32位地址,那么它可能会将Locatable值设置为0(任意32位),从而将地址保持在4GB以下

如果设备可以处理64位地址,它会将Locatable设置为2

同样,在配置过程中,PCI设备通过条通信其内存需求,操作系统最终设置条地址

引用维基百科的相关章节:

当读取指定的BDF组合供应商ID寄存器成功时,BIOS或操作系统会知道它存在。它将所有1写入条,并以0的形式读回设备请求的内存大小,其中不关心地址为。 碳化硅

总结如下: 这取决于设备硬件的功能


在PCI设备枚举期间,一旦主机操作系统找到PCI设备,它将使用条位向设备请求内存地址位置信息。它在两个步骤中使用条本身,首先确定内存大小要求,然后配置基址。

请参阅上的Wikipedia条目。PCI条位用于通信内存寻址要求,并在PCI枚举期间进行配置

如果PCI设备是32位的,这意味着它只能处理32位地址,那么它可能会将Locatable值设置为0(任意32位),从而将地址保持在4GB以下

如果设备可以处理64位地址,它会将Locatable设置为2

同样,在配置过程中,PCI设备通过条通信其内存需求,操作系统最终设置条地址

引用维基百科的相关章节:

当读取指定的BDF组合供应商ID寄存器成功时,BIOS或操作系统会知道它存在。它将所有1写入条,并以0的形式读回设备请求的内存大小,其中不关心地址为。 碳化硅

总结如下: 这取决于设备硬件的功能

在PCI设备枚举期间,一旦主机操作系统找到PCI设备,它将使用条位向设备请求内存地址位置信息。它在两步过程中使用条本身,首先确定内存大小要求,然后配置基址