Eric,
static void ht_collapse_previous_enumeration(unsigned bus) { device_t dev;
/* Spin through the devices and collapse any previous * hypertransport enumeration. */ for(dev = PCI_DEV(bus, 0, 0); dev <= PCI_DEV(bus, 0x1f, 0x7); dev += PCI_DEV(0, 1, 0)) {
I think PCI_DEV(bus, 0, 0) should be changed to PCI_DEV(bus, 1, 0) And before that it should check PCI_DEV(bus,0,0), if the device is there, collapse should get back right away and don't do any collapse.
In the hypertransport.c collapse don't need to check PCI_DEV(bus, 0, 0), because it must begin from unitid 1.
YH
-----Original Message----- From: Stefan Reinauer [mailto:stepan@openbios.org] Sent: Wednesday, December 15, 2004 8:36 AM To: YhLu Cc: 'Eric W. Biederman'; linuxbios@clustermatic.org Subject: Re: collapsing devices.
* YhLu YhLu@tyan.com [041214 03:14]:
Stefan,
I add dump_pci_decvies_on_bus in debug.c
Please add calling to dump_pci_devices_on_bus(busn) before ht_collapse_previous_enumeration(busn). In ht_setup_chains.
Also in auto.c you need to put inconerent_ht.c after debug.c.
See the other mail I sent you. When just calling a loop for scanning bus 0-16 before ht_setup_chains, it finds the devices on bus0, none on 1-5 and then hangs while scanning bus5
Stefan