pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft) 
pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *controller) 
pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft){	int nasid, cnode, j;	struct hubdev_info *hubdev_info;	struct pcibus_info *soft;	struct sn_flush_device_list *sn_flush_device_list;	if (! IS_PCI_BRIDGE_ASIC(prom_bussoft->bs_asic_type)) {		return NULL;	}	/*	 * Allocate kernel bus soft and copy from prom.	 */	soft = kmalloc(sizeof(struct pcibus_info), GFP_KERNEL);	if (!soft) {		return NULL;	}	memcpy(soft, prom_bussoft, sizeof(struct pcibus_info));	soft->pbi_buscommon.bs_base =	    (((u64) soft->pbi_buscommon.	      bs_base << 4) >> 4) | __IA64_UNCACHED_OFFSET;	spin_lock_init(&soft->pbi_lock);	/*	 * register the bridge's error interrupt handler	 */	if (request_irq(SGI_PCIBR_ERROR, (void *)pcibr_error_intr_handler,			SA_SHIRQ, "PCIBR error", (void *)(soft))) {		printk(KERN_WARNING		       "pcibr cannot allocate interrupt for error handler\n");	}	/* 	 * Update the Bridge with the "kernel" pagesize 	 */	if (PAGE_SIZE < 16384) {		pcireg_control_bit_clr(soft, PCIBR_CTRL_PAGE_SIZE);	} else {		pcireg_control_bit_set(soft, PCIBR_CTRL_PAGE_SIZE);	}	nasid = NASID_GET(soft->pbi_buscommon.bs_base);	cnode = nasid_to_cnodeid(nasid);	hubdev_info = (struct hubdev_info *)(NODEPDA(cnode)->pdinfo);	if (hubdev_info->hdi_flush_nasid_list.widget_p) {		sn_flush_device_list = hubdev_info->hdi_flush_nasid_list.		    widget_p[(int)soft->pbi_buscommon.bs_xid];		if (sn_flush_device_list) {			for (j = 0; j < DEV_PER_WIDGET;			     j++, sn_flush_device_list++) {				if (sn_flush_device_list->sfdl_slot == -1)					continue;				if (sn_flush_device_list->				    sfdl_persistent_busnum ==				    soft->pbi_buscommon.bs_persist_busnum)					sn_flush_device_list->sfdl_pcibus_info =					    soft;			}		}	}	/* Setup the PMU ATE map */	soft->pbi_int_ate_resource.lowest_free_index = 0;	soft->pbi_int_ate_resource.ate =	    kmalloc(soft->pbi_int_ate_size * sizeof(uint64_t), GFP_KERNEL);	memset(soft->pbi_int_ate_resource.ate, 0, 	       (soft->pbi_int_ate_size * sizeof(uint64_t)));	return soft;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7c2a6c62c013a4ea57243536fc7f3987e4ba04bc/pcibr_provider.c/clean/arch/ia64/sn/pci/pcibr/pcibr_provider.c