mthca_UNMAP_ICM(dev, mthca_uarc_virt(dev, i), 1, &status); 
mthca_UNMAP_ICM(dev, mthca_uarc_virt(dev, &dev->driver_uar, i), 1, &status); 
void mthca_free_db(struct mthca_dev *dev, int type, int db_index){	int i, j;	struct mthca_db_page *page;	u8 status;	i = db_index / MTHCA_DB_REC_PER_PAGE;	j = db_index % MTHCA_DB_REC_PER_PAGE;	page = dev->db_tab->page + i;	down(&dev->db_tab->mutex);	page->db_rec[j] = 0;	if (i >= dev->db_tab->min_group2)		j = MTHCA_DB_REC_PER_PAGE - 1 - j;	clear_bit(j, page->used);	if (bitmap_empty(page->used, MTHCA_DB_REC_PER_PAGE) &&	    i >= dev->db_tab->max_group1 - 1) {		mthca_UNMAP_ICM(dev, mthca_uarc_virt(dev, i), 1, &status);		dma_free_coherent(&dev->pdev->dev, 4096,				  page->db_rec, page->mapping);		page->db_rec = NULL;		if (i == dev->db_tab->max_group1) {			--dev->db_tab->max_group1;			/* XXX may be able to unmap more pages now */		}		if (i == dev->db_tab->min_group2)			++dev->db_tab->min_group2;	}	up(&dev->db_tab->mutex);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/56483ec1b70221f8c9838ccc9a89b43d9de66993/mthca_memfree.c/clean/drivers/infiniband/hw/mthca/mthca_memfree.c