• 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:fmr

558 /* Free mr or fmr */
705 int mthca_free_fmr(struct mthca_dev *dev, struct mthca_fmr *fmr)
707 if (fmr->maps)
710 mthca_free_region(dev, fmr->ibmr.lkey);
711 mthca_free_mtt(dev, fmr->mtt);
716 static inline int mthca_check_fmr(struct mthca_fmr *fmr, u64 *page_list,
721 if (list_len > fmr->attr.max_pages)
724 page_mask = (1 << fmr->attr.page_shift) - 1;
737 if (fmr->maps >= fmr->attr.max_maps)
747 struct mthca_fmr *fmr = to_mfmr(ibfmr);
753 err = mthca_check_fmr(fmr, page_list, list_len, iova);
757 ++fmr->maps;
759 key = tavor_key_to_hw_index(fmr->ibmr.lkey);
761 fmr->ibmr.lkey = fmr->ibmr.rkey = tavor_hw_index_to_key(key);
763 writeb(MTHCA_MPT_STATUS_SW, fmr->mem.tavor.mpt);
768 mthca_write64_raw(mtt_entry, fmr->mem.tavor.mtts + i);
772 mpt_entry.length = cpu_to_be64(list_len * (1ull << fmr->attr.page_shift));
775 __raw_writel((__force u32) mpt_entry.lkey, &fmr->mem.tavor.mpt->key);
776 memcpy_toio(&fmr->mem.tavor.mpt->start, &mpt_entry.start,
780 writeb(MTHCA_MPT_STATUS_HW, fmr->mem.tavor.mpt);
788 struct mthca_fmr *fmr = to_mfmr(ibfmr);
793 err = mthca_check_fmr(fmr, page_list, list_len, iova);
797 ++fmr->maps;
799 key = arbel_key_to_hw_index(fmr->ibmr.lkey);
804 fmr->ibmr.lkey = fmr->ibmr.rkey = arbel_hw_index_to_key(key);
806 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_SW;
810 dma_sync_single_for_cpu(&dev->pdev->dev, fmr->mem.arbel.dma_handle,
814 fmr->mem.arbel.mtts[i] = cpu_to_be64(page_list[i] |
817 dma_sync_single_for_device(&dev->pdev->dev, fmr->mem.arbel.dma_handle,
820 fmr->mem.arbel.mpt->key = cpu_to_be32(key);
821 fmr->mem.arbel.mpt->lkey = cpu_to_be32(key);
822 fmr->mem.arbel.mpt->length = cpu_to_be64(list_len * (1ull << fmr->attr.page_shift));
823 fmr->mem.arbel.mpt->start = cpu_to_be64(iova);
827 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_HW;
834 void mthca_tavor_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr)
836 if (!fmr->maps)
839 fmr->maps = 0;
841 writeb(MTHCA_MPT_STATUS_SW, fmr->mem.tavor.mpt);
844 void mthca_arbel_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr)
846 if (!fmr->maps)
849 fmr->maps = 0;
851 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_SW;