iosapic_lists[index].rtes_inuse++; 
register_intr (unsigned int gsi, int vector, unsigned char delivery,	       unsigned long polarity, unsigned long trigger){	irq_desc_t *idesc;	struct hw_interrupt_type *irq_type;	int rte_index;	int index;	unsigned long gsi_base;	void __iomem *iosapic_address;	struct iosapic_rte_info *rte;	index = find_iosapic(gsi);	if (index < 0) {		printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", __FUNCTION__, gsi);		return;	}	iosapic_address = iosapic_lists[index].addr;	gsi_base = iosapic_lists[index].gsi_base;	rte = gsi_vector_to_rte(gsi, vector);	if (!rte) {		rte = iosapic_alloc_rte();		if (!rte) {			printk(KERN_WARNING "%s: cannot allocate memory\n", __FUNCTION__);			return;		}		rte_index = gsi - gsi_base;		rte->rte_index	= rte_index;		rte->addr	= iosapic_address;		rte->gsi_base	= gsi_base;		rte->refcnt++;		list_add_tail(&rte->rte_list, &iosapic_intr_info[vector].rtes);		iosapic_intr_info[vector].count++;	}	else if (vector_is_shared(vector)) {		struct iosapic_intr_info *info = &iosapic_intr_info[vector];		if (info->trigger != trigger || info->polarity != polarity) {			printk (KERN_WARNING "%s: cannot override the interrupt\n", __FUNCTION__);			return;		}	}	iosapic_intr_info[vector].polarity = polarity;	iosapic_intr_info[vector].dmode    = delivery;	iosapic_intr_info[vector].trigger  = trigger;	if (trigger == IOSAPIC_EDGE)		irq_type = &irq_type_iosapic_edge;	else		irq_type = &irq_type_iosapic_level;	idesc = irq_descp(vector);	if (idesc->handler != irq_type) {		if (idesc->handler != &no_irq_type)			printk(KERN_WARNING "%s: changing vector %d from %s to %s\n",			       __FUNCTION__, vector, idesc->handler->typename, irq_type->typename);		idesc->handler = irq_type;	}}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0e888adc41ffc02b700ade715c182a17e766af84/iosapic.c/buggy/arch/ia64/kernel/iosapic.c