- 论坛徽章:
- 0
|
pci_find_parent_resource函数在内核pci设备扫描代码中是用于对于给定设备的给定资源区,返回给定区所包含的父总线的资源区。由于PCI分配设备的资源空间的采用的策略是:首先给各个bus分配resource,然后再给挂在bus上的各个device分配resource,然后对未成功分配到resource的device进行重新分配。(可能有个疑问:bus的资源区是怎么定的?这是在分配每根总线上的每个设备资源时,pci会调用pbus_size_mem之类的函数对总线的资源先进行了分配对界。)因此,device在进行资源分配时,就会从所在的bus的资源区里开始分配资源,则调用request_resource函数进行分配。如果device所在的bus没有这个resource或resource的标志是IORESOURCE_UNSET,或者request_resource抵触,则等以后重新分配,这里设置了r->flags,r->end,r->start。如果分配失败会打印PCI: Cannot allocate resource region xx of device xxxxx,因此就会出现了以上的打印信息,但这并不是灾难性的失败,因为pci扫描代码会再次调用对这些冲突的资源进行重新分配的。之前出现的错误就像类似的告警信息了。 |
|