Lines Matching refs:pfn

365 #define	TGT_PFN_INBETWEEN(pfn, bgn, end) ((pfn >= bgn) && (pfn <= end))
381 * mp->dmai_pfn0 - 1st page pfn (if va/size pair and not shadow)
483 px_iopfn_t pfn = page_pptonum(pplist[i]);
484 PX_SET_MP_PFN1(mp, i, pfn);
485 DBG(DBG_DMA_MAP|DBG_CONT, dip, "%x ", pfn);
495 px_iopfn_t pfn = page_pptonum(pp);
496 PX_SET_MP_PFN1(mp, i, pfn);
497 DBG(DBG_DMA_MAP|DBG_CONT, dip, "%x ", pfn);
526 px_iopfn_t pfn = hat_getpfnum(hat_p, vaddr);
527 if (pfn == PFN_INVALID)
529 PX_SET_MP_PFN1(mp, i, pfn);
531 mp, i, pfn);
540 * px_dma_pfn - Fills pfn list for all pages being DMA-ed.
572 /* allocate pfn array */
580 /* fill pfn array */
586 /* skip pfn0, check mixed mode and adjust peer to peer pfn */
588 px_iopfn_t pfn = PX_GET_MP_PFN1(mp, i);
589 if (peer ^ TGT_PFN_INBETWEEN(pfn, pfn_base, pfn_last)) {
591 NAMEINST(mp->dmai_rdip), PX_MP_PFN0(mp), pfn);
596 "px_dma_pfn: pfnlst[%x]=%x-%x\n", i, pfn, pfn_adj);
598 PX_SET_MP_PFN1(mp, i, pfn - pfn_adj);
925 * a portion of the pfn array that belongs to a dma window,
932 * A second round scan is done on the pfn array to identify
938 * start_idx - subscript of the pfn array for the starting pfn
939 * end_idx - subscript of the last pfn in dma window
959 px_iopfn_t pfn = PX_GET_MP_PFN(mp, start_idx);
960 px_iopfn_t prev_pfn = pfn;
961 uint64_t baddr, seg_pfn0 = pfn;
979 for (; start_idx <= end_idx; start_idx++, prev_pfn = pfn, pfn_no++) {
980 pfn = PX_GET_MP_PFN1(mp, start_idx);
981 if ((pfn == prev_pfn + 1) &&
1001 seg_pfn0 = pfn; /* start a new segment from current pfn */
1111 * mp->dmai_pfnlst - NULL, the pfn list is freed to conserve memory.
1122 * fact that we are handed a pfn list. This does require device's
1131 px_iopfn_t pfn = PX_GET_MP_PFN(mp, 0);
1156 if ((pfn_lo > pfn_hi) || (pfn < pfn_lo))
1163 * making sure pfn_lo <= pfn <= pfn_hi inside the loop
1171 if (px_lib_iommu_getbypass(dip, MMU_PTOB(pfn),
1174 "bypass cookie failure %lx\n", pfn);
1177 pfn = MMU_BTOP(bypass_addr);
1180 /* pfn: absolute (bypass mode) or relative (p2p mode) */
1181 for (prev_pfn = pfn, i = 1; i < npages;
1182 i++, prev_pfn = pfn, pfn_no++) {
1183 pfn = PX_GET_MP_PFN1(mp, i);
1185 if (px_lib_iommu_getbypass(dip, MMU_PTOB(pfn), attr,
1190 pfn = MMU_BTOP(bypass_addr);
1192 if ((pfn == prev_pfn + 1) &&
1195 if ((pfn < pfn_lo) || (prev_pfn > pfn_hi)) {
1204 DBG(DBG_BYPASS, mp->dmai_rdip, "newwin pfn[%x-%x] %x cks\n",
1215 if (pfn > pfn_hi) {
1220 DBG(DBG_BYPASS, mp->dmai_rdip, "newwin pfn[%x-%x] %x cks\n",