- 论坛徽章:
- 0
|
这个问题有意思,我也来搀和搀和。
如前面所说,BAR是BIOS配置的,OS只是读出来book keeping。比如让用户可以通过/proc/iomem来看PCI memory space,通过/proc/ioport来看IO space。这里的memory space并不是指“内存”,是一个空间,32位的就是4G这么大.IO space有16位这么大.读写这两个空间都是PCI briage的责任,比如有专门的PCI memory command和PCI IO command.处理器自己也有一个总线空间,比如任何寻址指令都是在数据线和地址线上产生一定的信号,这些还不是PCI command,而是由CPU-PCI briage来将这些信号"翻译"成PCI command来分别对pci space中的地址进行读取,这个过程对软件是屏蔽了的.你的问题我理解既然是bios来为pci device分配BAR,那么它是自然不会受"mem"参数影响了,所以不会有某个pci device被分配到512M-16G这段空间中去.假如kernel 用ioremap来映射512M-16G这段空间,又用映射的虚拟地址来访问这段空间的话应该在pci bus上访问的还是那段kernel所不知道的system ram memory的空间,而不是其它设备. |
|