• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/mthca/

Lines Matching refs:fmr

544 /* Free mr or fmr */
678 int mthca_free_fmr(struct mthca_dev *dev, struct mthca_fmr *fmr)
680 if (fmr->maps)
683 mthca_free_region(dev, fmr->ibmr.lkey);
684 mthca_free_mtt(dev, fmr->mtt);
689 static inline int mthca_check_fmr(struct mthca_fmr *fmr, u64 *page_list,
694 if (list_len > fmr->attr.max_pages)
697 page_mask = (1 << fmr->attr.page_shift) - 1;
710 if (fmr->maps >= fmr->attr.max_maps)
719 struct mthca_fmr *fmr = to_mfmr(ibfmr);
725 err = mthca_check_fmr(fmr, page_list, list_len, iova);
729 ++fmr->maps;
731 key = tavor_key_to_hw_index(fmr->ibmr.lkey);
733 fmr->ibmr.lkey = fmr->ibmr.rkey = tavor_hw_index_to_key(key);
735 writeb(MTHCA_MPT_STATUS_SW, fmr->mem.tavor.mpt);
740 mthca_write64_raw(mtt_entry, fmr->mem.tavor.mtts + i);
744 mpt_entry.length = cpu_to_be64(list_len * (1ull << fmr->attr.page_shift));
747 __raw_writel((__force u32) mpt_entry.lkey, &fmr->mem.tavor.mpt->key);
748 memcpy_toio(&fmr->mem.tavor.mpt->start, &mpt_entry.start,
752 writeb(MTHCA_MPT_STATUS_HW, fmr->mem.tavor.mpt);
760 struct mthca_fmr *fmr = to_mfmr(ibfmr);
765 err = mthca_check_fmr(fmr, page_list, list_len, iova);
769 ++fmr->maps;
771 key = arbel_key_to_hw_index(fmr->ibmr.lkey);
776 fmr->ibmr.lkey = fmr->ibmr.rkey = arbel_hw_index_to_key(key);
778 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_SW;
782 dma_sync_single_for_cpu(&dev->pdev->dev, fmr->mem.arbel.dma_handle,
786 fmr->mem.arbel.mtts[i] = cpu_to_be64(page_list[i] |
789 dma_sync_single_for_device(&dev->pdev->dev, fmr->mem.arbel.dma_handle,
792 fmr->mem.arbel.mpt->key = cpu_to_be32(key);
793 fmr->mem.arbel.mpt->lkey = cpu_to_be32(key);
794 fmr->mem.arbel.mpt->length = cpu_to_be64(list_len * (1ull << fmr->attr.page_shift));
795 fmr->mem.arbel.mpt->start = cpu_to_be64(iova);
799 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_HW;
806 void mthca_tavor_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr)
808 if (!fmr->maps)
811 fmr->maps = 0;
813 writeb(MTHCA_MPT_STATUS_SW, fmr->mem.tavor.mpt);
816 void mthca_arbel_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr)
818 if (!fmr->maps)
821 fmr->maps = 0;
823 *(u8 *) fmr->mem.arbel.mpt = MTHCA_MPT_STATUS_SW;