Lines Matching refs:dom
158 struct domain *dom;
162 SLIST_FOREACH(dom, &domhead, next) {
163 if (dom->id == id)
166 if (dom == NULL)
369 struct domain *dom = arg;
377 pt_paddr = vtophys(dom->ptp);
390 ctxp[idx + 1] = dom->addrwidth | (dom->id << 8);
443 struct domain *dom;
447 dom = arg;
453 KASSERT(gpa + len <= dom->maxaddr, ("%s: gpa range %#lx/%#lx beyond "
454 "domain maxaddr %#lx", __func__, gpa, len, dom->maxaddr));
476 if ((dom->spsmask & (1 << i)) != 0 &&
485 ptp = dom->ptp;
486 nlevels = dom->pt_levels;
543 vtd_invalidate_tlb(void *dom)
561 struct domain *dom;
611 dom = malloc(sizeof(struct domain), M_VTD, M_ZERO | M_WAITOK);
612 dom->pt_levels = pt_levels;
613 dom->addrwidth = addrwidth;
614 dom->id = domain_id();
615 dom->maxaddr = maxaddr;
616 dom->ptp = malloc(PAGE_SIZE, M_VTD, M_ZERO | M_WAITOK);
617 if ((uintptr_t)dom->ptp & PAGE_MASK)
618 panic("vtd_create_domain: ptp (%p) not page aligned", dom->ptp);
635 dom->spsmask = VTD_CAP_SPS(vtdmap->cap);
638 SLIST_INSERT_HEAD(&domhead, dom, next);
640 return (dom);
667 struct domain *dom;
669 dom = arg;
671 SLIST_REMOVE(&domhead, dom, domain, next);
672 vtd_free_ptp(dom->ptp, dom->pt_levels);
673 free(dom, M_VTD);