• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/hw/mthca/

Lines Matching refs:icm

88 void mthca_free_icm(struct mthca_dev *dev, struct mthca_icm *icm, int coherent)
92 if (!icm)
95 list_for_each_entry_safe(chunk, tmp, &icm->chunk_list, list) {
104 kfree(icm);
140 struct mthca_icm *icm;
148 icm = kmalloc(sizeof *icm, gfp_mask & ~(__GFP_HIGHMEM | __GFP_NOWARN));
149 if (!icm)
150 return icm;
152 icm->refcount = 0;
153 INIT_LIST_HEAD(&icm->chunk_list);
167 list_add_tail(&chunk->list, &icm->chunk_list);
215 return icm;
218 mthca_free_icm(dev, icm, coherent);
230 if (table->icm[i]) {
231 ++table->icm[i]->refcount;
235 table->icm[i] = mthca_alloc_icm(dev, MTHCA_TABLE_CHUNK_SIZE >> PAGE_SHIFT,
238 if (!table->icm[i]) {
243 if (mthca_MAP_ICM(dev, table->icm[i], table->virt + i * MTHCA_TABLE_CHUNK_SIZE,
245 mthca_free_icm(dev, table->icm[i], table->coherent);
246 table->icm[i] = NULL;
251 ++table->icm[i]->refcount;
270 if (--table->icm[i]->refcount == 0) {
274 mthca_free_icm(dev, table->icm[i], table->coherent);
275 table->icm[i] = NULL;
285 struct mthca_icm *icm;
294 icm = table->icm[idx / MTHCA_TABLE_CHUNK_SIZE];
297 if (!icm)
300 list_for_each_entry(chunk, &icm->chunk_list, list) {
374 table = kmalloc(sizeof *table + num_icm * sizeof *table->icm, GFP_KERNEL);
387 table->icm[i] = NULL;
394 table->icm[i] = mthca_alloc_icm(dev, chunk_size >> PAGE_SHIFT,
397 if (!table->icm[i])
399 if (mthca_MAP_ICM(dev, table->icm[i], virt + i * MTHCA_TABLE_CHUNK_SIZE,
401 mthca_free_icm(dev, table->icm[i], table->coherent);
402 table->icm[i] = NULL;
410 ++table->icm[i]->refcount;
417 if (table->icm[i]) {
421 mthca_free_icm(dev, table->icm[i], table->coherent);
435 if (table->icm[i]) {
439 mthca_free_icm(dev, table->icm[i], table->coherent);