Lines Matching defs:ims
367 struct iommu_map_state *ims;
375 ims = iommu_iomap_create(atop(round_page(size)), flags);
376 if (ims == NULL) {
381 ims->ims_sc = sc;
382 map->_dm_cookie = ims;
410 struct iommu_map_state *ims = map->_dm_cookie;
411 struct iommu_page_map *ipm = &ims->ims_map;
426 iommu_iomap_clear_pages(ims);
434 err = iommu_iomap_insert_page(ims, va, pa);
439 iommu_iomap_clear_pages(ims);
447 sgsize = ims->ims_map.ipm_pagecnt * PAGE_SIZE;
459 ims->ims_dvmastart = dvmaddr;
460 ims->ims_dvmasize = sgsize;
471 ds->ds_addr = iommu_iomap_translate(ims, ds->ds_addr);
529 struct iommu_map_state *ims = map->_dm_cookie;
530 struct iommu_page_map *ipm = &ims->ims_map;
539 iommu_iomap_clear_pages(ims);
543 vmem_xfree(sc->sc_dvmamap, ims->ims_dvmastart, ims->ims_dvmasize);
544 ims->ims_dvmastart = 0;
545 ims->ims_dvmasize = 0;
620 struct iommu_map_state *ims;
628 sizeof(*ims) + (n - 1) * sizeof(ims->ims_map.ipm_map[0]);
630 ims = kmem_zalloc(sz, (flags & BUS_DMA_NOWAIT) ? KM_NOSLEEP : KM_SLEEP);
631 if (ims == NULL)
635 ims->ims_map.ipm_maxpage = n;
636 SPLAY_INIT(&ims->ims_map.ipm_tree);
638 return (ims);
645 iommu_iomap_destroy(struct iommu_map_state *ims)
648 if (ims->ims_map.ipm_pagecnt > 0)
650 ims->ims_map.ipm_pagecnt);
652 const int n = ims->ims_map.ipm_maxpage;
654 sizeof(*ims) + (n - 1) * sizeof(ims->ims_map.ipm_map[0]);
656 kmem_free(ims, sz);
663 iommu_iomap_insert_page(struct iommu_map_state *ims, vaddr_t va, paddr_t pa)
665 struct iommu_page_map *ipm = &ims->ims_map;
699 iommu_iomap_translate(struct iommu_map_state *ims, paddr_t pa)
701 struct iommu_page_map *ipm = &ims->ims_map;
722 iommu_iomap_clear_pages(struct iommu_map_state *ims)
724 ims->ims_map.ipm_pagecnt = 0;
725 SPLAY_INIT(&ims->ims_map.ipm_tree);