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_cleanup_db_tab(struct mthca_dev *dev){	int i;	u8 status;	if (!mthca_is_memfree(dev))		return;	/*	 * Because we don't always free our UARC pages when they	 * become empty to make mthca_free_db() simpler we need to	 * make a sweep through the doorbell pages and free any	 * leftover pages now.	 */	for (i = 0; i < dev->db_tab->npages; ++i) {		if (!dev->db_tab->page[i].db_rec)			continue;		if (!bitmap_empty(dev->db_tab->page[i].used, MTHCA_DB_REC_PER_PAGE))			mthca_warn(dev, "Kernel UARC page %d not empty\n", i);		mthca_UNMAP_ICM(dev, mthca_uarc_virt(dev, i), 1, &status);		dma_free_coherent(&dev->pdev->dev, 4096,				  dev->db_tab->page[i].db_rec,				  dev->db_tab->page[i].mapping);	}	kfree(dev->db_tab->page);	kfree(dev->db_tab);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/56483ec1b70221f8c9838ccc9a89b43d9de66993/mthca_memfree.c/buggy/drivers/infiniband/hw/mthca/mthca_memfree.c