rem: if (sub_class == PCI_host) fixup_host_bridge(bus, dev, func);
add: fixup_bridge(bus, dev, func);
context: static void pci_device_probe(uint8 bus, uint8 dev, uint8 func) {	uint8 base_class, sub_class;	uint8 type;	pci_info *pcii;	struct pci_device *pcid;		if (func > 0) {		uint16 vend = read_pci_config(bus, dev, func, PCI_vendor_id, 2);		if (vend == 0xffff)			return;	}		type = read_pci_config(bus, dev, func, PCI_header_type, 1);	type &= PCI_header_type_mask;	base_class = read_pci_config(bus, dev, func, PCI_class_base, 1);	sub_class  = read_pci_config(bus, dev, func, PCI_class_sub, 1);	if (base_class == PCI_bridge) {		if (sub_class == PCI_host)			fixup_host_bridge(bus, dev, func);		if (sub_class == PCI_pci) {			pci_bridge(bus, dev, func);			return;		}	}	/* If we get here then it's not a bridge, so we add it... */	pcii = (pci_info*)kmalloc(sizeof(pci_info));	if (!pcii)		return;	pcid = (struct pci_device*)kmalloc(sizeof(struct pci_device));	if (!pcid) {		kfree(pcii);		return;	}		pcid->info = pcii;	pcid->type = PCI_DEVICE;	pcii->bus = bus;	pcii->device = dev;	pcii->function = func;		fill_basic_pci_structure(pcii);		if (pcii->class_base == PCI_bridge && pcii->class_sub == PCI_host)		pcid->type = PCI_HOST_BUS;	pcii->u.h0.cardbus_cis =         read_pci_config(bus, dev, func, PCI_cardbus_cis, 4);	pcii->u.h0.subsystem_id =        read_pci_config(bus, dev, func, PCI_subsystem_id, 2);	pcii->u.h0.subsystem_vendor_id = read_pci_config(bus, dev, func, PCI_subsystem_vendor_id, 2);	pcii->u.h0.rom_base_pci =        read_pci_config(bus, dev, func, PCI_rom_base, 4);	pcii->u.h0.interrupt_line =      read_pci_config(bus, dev, func, PCI_interrupt_line, 1);	pcii->u.h0.interrupt_pin =       read_pci_config(bus, dev, func, PCI_interrupt_pin, 1) & PCI_pin_mask;				/* now add to list (at end) */	{		struct pci_device *pd = pci_devices;		while (pd && pd->next)			pd = pd->next;		if (pd)			pd->next = pcid;		else			pci_devices = pcid;	}	pci_set_power_state(bus, dev, func, PCI_pm_state_d0);					debug_show_device(pcii);}	