Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel pci_资源_启动(pdev,bar)是否应在每次启动时返回相同的物理地址?_Linux Kernel_Pci E - Fatal编程技术网

Linux kernel pci_资源_启动(pdev,bar)是否应在每次启动时返回相同的物理地址?

Linux kernel pci_资源_启动(pdev,bar)是否应在每次启动时返回相同的物理地址?,linux-kernel,pci-e,Linux Kernel,Pci E,我注意到pci\u资源\u启动(pdev,bar)在同一台机器上的每次启动中返回不同的地址。如果它返回一个“物理地址”,它在同一台机器上不应该是一致的吗?我遗漏了什么吗?BIOS和/或操作系统在每次启动时为每个设备分配地址空间。从一次引导到下一次引导没有一致性要求,但人们希望算法是确定性的。对系统硬件或引导参数的任何更改都可能导致其发生变化。(例如,即使在引导过程中插入USB设备也可能会引起变化。)我没有注意到在没有任何其他更改的情况下重新引导时地址空间分配的变化。我的回答有点模糊,因为这个问题

我注意到
pci\u资源\u启动(pdev,bar)
在同一台机器上的每次启动中返回不同的地址。如果它返回一个“物理地址”,它在同一台机器上不应该是一致的吗?我遗漏了什么吗?

BIOS和/或操作系统在每次启动时为每个设备分配地址空间。从一次引导到下一次引导没有一致性要求,但人们希望算法是确定性的。对系统硬件或引导参数的任何更改都可能导致其发生变化。(例如,即使在引导过程中插入USB设备也可能会引起变化。)我没有注意到在没有任何其他更改的情况下重新引导时地址空间分配的变化。

我的回答有点模糊,因为这个问题有点模糊。如果您想给出一个具体的例子,我的回答可能会更具体一些。PCI资源是在运行时分配的,设备只提供它需要的窗口。固件/操作系统试图在PCI根网桥提供的资源中找到这样的窗口。因此,PCI设备事先不知道将为其指定哪个物理地址。谢谢。在我的设置中,即使没有外部设备(键盘和鼠标除外)被插入/拔出,它实际上每次都会更改。您是否愿意转储所有PCI设备及其条形图(两次)并将其添加到问题中。(lspci-v)@keye,如果您的固件/操作系统以并行方式分配资源,那么可能是一个设备比另一个更早被枚举。例如,如果相邻插槽中有两个相同的设备,则可能会发生同样的情况,其中一个可能需要更长的时间来设置硬件。