Hi! > + else if (i < 7+6+4) > + { > + /* > + * If kernel was compiled without CONFIG_PCI_IOV option then after > + * the ROM line for configured bridge device (that which had set > + * subordinary bus number to non-zero value) are four additional lines > + * which describe resources behind bridge. For PCI-to-PCI bridges they > + * are: IO, MEM, PREFMEM and empty. For CardBus bridges they are: IO0, > + * IO1, MEM0 and MEM1. For unconfigured bridges and other devices > + * there is no additional line after the ROM line. If kernel was > + * compiled with CONFIG_PCI_IOV option then after the ROM line and > + * before the first bridge resource line are six additional lines > + * which describe IOV resources. Read all remaining lines in resource > + * file and based on the number of remaining lines (0, 4, 6, 10) parse > + * resources behind bridge. > + */ > + lines[i-7].flags = flags; > + lines[i-7].base_addr = start; > + lines[i-7].size = size; > + } > + } > + if (i == 7+4 || i == 7+6+4) This looks crazy: is there any other way how to tell what the bridge entries mean? Checking the number of entries looks very brittle. Martin