int o; int m; u32 seg; 
u32 seg = __mthca_alloc_mtt(dev, order); 
static u32 mthca_alloc_mtt(struct mthca_dev *dev, int order){	int o;	int m;	u32 seg;	spin_lock(&dev->mr_table.mpt_alloc.lock);	for (o = order; o <= dev->mr_table.max_mtt_order; ++o) {		m = 1 << (dev->mr_table.max_mtt_order - o);		seg = find_first_bit(dev->mr_table.mtt_buddy[o], m);		if (seg < m)			goto found;	}	spin_unlock(&dev->mr_table.mpt_alloc.lock);	return -1; found:	clear_bit(seg, dev->mr_table.mtt_buddy[o]);	while (o > order) {		--o;		seg <<= 1;		set_bit(seg ^ 1, dev->mr_table.mtt_buddy[o]);	}	spin_unlock(&dev->mr_table.mpt_alloc.lock);	seg <<= order;	return seg;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/86562a139182bb19c984347f9625b61f3e6f7815/mthca_mr.c/clean/drivers/infiniband/hw/mthca/mthca_mr.c