Hi,
I started stripping down noncht enumeration.
in the beginning i really collapse bus 0. After this I only pretend to do so, while walking through the devices with a simple dummy loop:
for(dev = PCI_DEV(bus, 0, 0); dev <= PCI_DEV(bus, 0x1f, 0x7); dev += PCI_DEV(0, 1, 0)) { uint32_t id; unsigned pos, flags;
id = pci_read_config32(dev, PCI_VENDOR_ID); if ((id == 0xffffffff) || (id == 0x00000000) || (id == 0x0000ffff) || (id == 0xffff0000)) { continue; }
print_debug("Pretending to collapse device "); print_debug_hex32(dev); print_debug(" id "); print_debug_hex32(id); print_debug(" on bus "); print_debug_hex32(bus); print_debug("\r\n"); } print_debug("done with bus\n\r");
LinuxBIOS-1.1.7.0-fallback Sat Dec 11 21:33:25 CET 2004 starting... setting up resource map....done. 04 nodes initialized. udev=(0,0x18,0) 0xb4=00040000 Pretending to collapse device 00000000 id 74501022 on bus 00000000 Pretending to collapse device 00000800 id 74501022 on bus 00000000 Pretending to collapse device 0000c000 id 11001022 on bus 00000000 Pretending to collapse device 0000c800 id 11001022 on bus 00000000 Pretending to collapse device 0000d000 id 11001022 on bus 00000000 Pretending to collapse device 0000d800 id 11001022 on bus 00000000 done with bus bus=00 id =74501022 done. next_unitid=00000003 bus=00 id =74601022 done. next_unitid=00000007 udev=(0,0x19,0) 0xd4=000a0500 Pretending to collapse device 00050000 id 74501022 on bus 00000005 Pretending to collapse device 00050800 id 74501022 on bus 00000005 <hang> I never get to "done with bus"
Stefan