Lines Matching refs:map

356     struct bus_dmamap_iommu *map);
437 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_create() local
440 map = malloc_domainset(sizeof(*map), M_IOMMU_DMAMAP, in iommu_bus_dmamap_create()
442 if (map == NULL) { in iommu_bus_dmamap_create()
451 free(map, M_IOMMU_DMAMAP); in iommu_bus_dmamap_create()
456 IOMMU_DMAMAP_INIT(map); in iommu_bus_dmamap_create()
457 TAILQ_INIT(&map->map_entries); in iommu_bus_dmamap_create()
458 map->tag = tag; in iommu_bus_dmamap_create()
459 map->locked = true; in iommu_bus_dmamap_create()
460 map->cansleep = false; in iommu_bus_dmamap_create()
462 *mapp = (bus_dmamap_t)map; in iommu_bus_dmamap_create()
471 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_destroy() local
474 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_destroy()
475 if (map != NULL) { in iommu_bus_dmamap_destroy()
476 IOMMU_DMAMAP_LOCK(map); in iommu_bus_dmamap_destroy()
477 if (!TAILQ_EMPTY(&map->map_entries)) { in iommu_bus_dmamap_destroy()
478 IOMMU_DMAMAP_UNLOCK(map); in iommu_bus_dmamap_destroy()
481 IOMMU_DMAMAP_DESTROY(map); in iommu_bus_dmamap_destroy()
482 free(map, M_IOMMU_DMAMAP); in iommu_bus_dmamap_destroy()
494 struct bus_dmamap_iommu *map; in iommu_bus_dmamem_alloc() local
508 map = (struct bus_dmamap_iommu *)*mapp; in iommu_bus_dmamem_alloc()
515 map->flags |= BUS_DMAMAP_IOMMU_MALLOC; in iommu_bus_dmamem_alloc()
520 map->flags |= BUS_DMAMAP_IOMMU_KMEM_ALLOC; in iommu_bus_dmamem_alloc()
534 struct bus_dmamap_iommu *map; in iommu_bus_dmamem_free() local
537 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamem_free()
539 if ((map->flags & BUS_DMAMAP_IOMMU_MALLOC) != 0) { in iommu_bus_dmamem_free()
541 map->flags &= ~BUS_DMAMAP_IOMMU_MALLOC; in iommu_bus_dmamem_free()
543 KASSERT((map->flags & BUS_DMAMAP_IOMMU_KMEM_ALLOC) != 0, in iommu_bus_dmamem_free()
544 ("iommu_bus_dmamem_free for non alloced map %p", map)); in iommu_bus_dmamem_free()
546 map->flags &= ~BUS_DMAMAP_IOMMU_KMEM_ALLOC; in iommu_bus_dmamem_free()
554 struct bus_dmamap_iommu *map, vm_page_t *ma, int offset, bus_size_t buflen, in iommu_bus_dmamap_load_something1() argument
587 gas_flags = map->cansleep ? IOMMU_MF_CANWAIT : 0; in iommu_bus_dmamap_load_something1()
641 struct bus_dmamap_iommu *map, vm_page_t *ma, int offset, bus_size_t buflen, in iommu_bus_dmamap_load_something() argument
654 error = iommu_bus_dmamap_load_something1(tag, map, ma, offset, in iommu_bus_dmamap_load_something()
657 IOMMU_DMAMAP_LOCK(map); in iommu_bus_dmamap_load_something()
658 TAILQ_CONCAT(&map->map_entries, &entries, dmamap_link); in iommu_bus_dmamap_load_something()
659 IOMMU_DMAMAP_UNLOCK(map); in iommu_bus_dmamap_load_something()
674 !map->cansleep) in iommu_bus_dmamap_load_something()
677 iommu_bus_schedule_dmamap(domain->iommu, map); in iommu_bus_dmamap_load_something()
687 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_load_ma() local
690 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_load_ma()
691 return (iommu_bus_dmamap_load_something(tag, map, ma, ma_offs, tlen, in iommu_bus_dmamap_load_ma()
701 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_load_phys() local
707 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_load_phys()
712 mflags = map->cansleep ? M_WAITOK : M_NOWAIT; in iommu_bus_dmamap_load_phys()
739 error = iommu_bus_dmamap_load_something(tag, map, ma, offset, buflen, in iommu_bus_dmamap_load_phys()
752 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_load_buffer() local
758 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_load_buffer()
763 mflags = map->cansleep ? M_WAITOK : M_NOWAIT; in iommu_bus_dmamap_load_buffer()
792 error = iommu_bus_dmamap_load_something(tag, map, ma, offset, buflen, in iommu_bus_dmamap_load_buffer()
803 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_waitok() local
807 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_waitok()
808 map->mem = *mem; in iommu_bus_dmamap_waitok()
809 map->tag = (struct bus_dma_tag_iommu *)dmat; in iommu_bus_dmamap_waitok()
810 map->callback = callback; in iommu_bus_dmamap_waitok()
811 map->callback_arg = callback_arg; in iommu_bus_dmamap_waitok()
819 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_complete() local
822 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_complete()
824 if (!map->locked) { in iommu_bus_dmamap_complete()
825 KASSERT(map->cansleep, in iommu_bus_dmamap_complete()
826 ("map not locked and not sleepable context %p", map)); in iommu_bus_dmamap_complete()
833 map->locked = true; in iommu_bus_dmamap_complete()
855 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_unload() local
861 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_unload()
867 IOMMU_DMAMAP_LOCK(map); in iommu_bus_dmamap_unload()
868 TAILQ_CONCAT(&entries, &map->map_entries, dmamap_link); in iommu_bus_dmamap_unload()
869 IOMMU_DMAMAP_UNLOCK(map); in iommu_bus_dmamap_unload()
888 struct bus_dmamap_iommu *map __unused; in iommu_bus_dmamap_sync()
890 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_sync()
891 kmsan_bus_dmamap_sync(&map->kmsan_mem, op); in iommu_bus_dmamap_sync()
898 struct bus_dmamap_iommu *map; in iommu_bus_dmamap_load_kmsan() local
900 map = (struct bus_dmamap_iommu *)map1; in iommu_bus_dmamap_load_kmsan()
901 if (map == NULL) in iommu_bus_dmamap_load_kmsan()
903 memcpy(&map->kmsan_mem, mem, sizeof(struct memdesc)); in iommu_bus_dmamap_load_kmsan()
932 struct bus_dmamap_iommu *map; in iommu_bus_task_dmamap() local
937 while ((map = TAILQ_FIRST(&unit->delayed_maps)) != NULL) { in iommu_bus_task_dmamap()
938 TAILQ_REMOVE(&unit->delayed_maps, map, delay_link); in iommu_bus_task_dmamap()
940 tag = map->tag; in iommu_bus_task_dmamap()
941 map->cansleep = true; in iommu_bus_task_dmamap()
942 map->locked = false; in iommu_bus_task_dmamap()
943 bus_dmamap_load_mem((bus_dma_tag_t)tag, (bus_dmamap_t)map, in iommu_bus_task_dmamap()
944 &map->mem, map->callback, map->callback_arg, in iommu_bus_task_dmamap()
946 map->cansleep = false; in iommu_bus_task_dmamap()
947 if (map->locked) { in iommu_bus_task_dmamap()
951 map->locked = true; in iommu_bus_task_dmamap()
952 map->cansleep = false; in iommu_bus_task_dmamap()
959 iommu_bus_schedule_dmamap(struct iommu_unit *unit, struct bus_dmamap_iommu *map) in iommu_bus_schedule_dmamap() argument
962 map->locked = false; in iommu_bus_schedule_dmamap()
964 TAILQ_INSERT_TAIL(&unit->delayed_maps, map, delay_link); in iommu_bus_schedule_dmamap()
1009 struct bus_dmamap_iommu *map; in bus_dma_iommu_load_ident() local
1031 map = (struct bus_dmamap_iommu *)map1; in bus_dma_iommu_load_ident()
1053 IOMMU_DMAMAP_LOCK(map); in bus_dma_iommu_load_ident()
1054 TAILQ_INSERT_TAIL(&map->map_entries, entry, dmamap_link); in bus_dma_iommu_load_ident()
1055 IOMMU_DMAMAP_UNLOCK(map); in bus_dma_iommu_load_ident()