dma_domain 20 arch/x86/include/asm/device.h void add_dma_domain(struct dma_domain *domain); dma_domain 21 arch/x86/include/asm/device.h void del_dma_domain(struct dma_domain *domain); dma_domain 632 arch/x86/pci/common.c void add_dma_domain(struct dma_domain *domain) dma_domain 640 arch/x86/pci/common.c void del_dma_domain(struct dma_domain *domain) dma_domain 650 arch/x86/pci/common.c struct dma_domain *domain; dma_domain 2957 drivers/iommu/amd_iommu.c struct dma_ops_domain *dma_domain; dma_domain 2978 drivers/iommu/amd_iommu.c dma_domain = dma_ops_domain_alloc(); dma_domain 2979 drivers/iommu/amd_iommu.c if (!dma_domain) { dma_domain 2983 drivers/iommu/amd_iommu.c pdomain = &dma_domain->domain; dma_domain 57 drivers/iommu/fsl_pamu_domain.c static phys_addr_t get_phys_addr(struct fsl_dma_domain *dma_domain, dma_addr_t iova) dma_domain 59 drivers/iommu/fsl_pamu_domain.c u32 win_cnt = dma_domain->win_cnt; dma_domain 60 drivers/iommu/fsl_pamu_domain.c struct dma_window *win_ptr = &dma_domain->win_arr[0]; dma_domain 63 drivers/iommu/fsl_pamu_domain.c geom = &dma_domain->iommu_domain.geometry; dma_domain 65 drivers/iommu/fsl_pamu_domain.c if (!win_cnt || !dma_domain->geom_size) { dma_domain 75 drivers/iommu/fsl_pamu_domain.c subwin_size = dma_domain->geom_size >> ilog2(win_cnt); dma_domain 78 drivers/iommu/fsl_pamu_domain.c win_ptr = &dma_domain->win_arr[wnd]; dma_domain 87 drivers/iommu/fsl_pamu_domain.c static int map_subwins(int liodn, struct fsl_dma_domain *dma_domain) dma_domain 89 drivers/iommu/fsl_pamu_domain.c struct dma_window *sub_win_ptr = &dma_domain->win_arr[0]; dma_domain 93 drivers/iommu/fsl_pamu_domain.c for (i = 0; i < dma_domain->win_cnt; i++) { dma_domain 97 drivers/iommu/fsl_pamu_domain.c ret = pamu_config_spaace(liodn, dma_domain->win_cnt, i, dma_domain 101 drivers/iommu/fsl_pamu_domain.c dma_domain->snoop_id, dma_domain 102 drivers/iommu/fsl_pamu_domain.c dma_domain->stash_id, dma_domain 117 drivers/iommu/fsl_pamu_domain.c static int map_win(int liodn, struct fsl_dma_domain *dma_domain) dma_domain 120 drivers/iommu/fsl_pamu_domain.c struct dma_window *wnd = &dma_domain->win_arr[0]; dma_domain 121 drivers/iommu/fsl_pamu_domain.c phys_addr_t wnd_addr = dma_domain->iommu_domain.geometry.aperture_start; dma_domain 129 drivers/iommu/fsl_pamu_domain.c dma_domain->snoop_id, dma_domain->stash_id, dma_domain 139 drivers/iommu/fsl_pamu_domain.c static int map_liodn(int liodn, struct fsl_dma_domain *dma_domain) dma_domain 141 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_cnt > 1) dma_domain 142 drivers/iommu/fsl_pamu_domain.c return map_subwins(liodn, dma_domain); dma_domain 144 drivers/iommu/fsl_pamu_domain.c return map_win(liodn, dma_domain); dma_domain 148 drivers/iommu/fsl_pamu_domain.c static int update_liodn(int liodn, struct fsl_dma_domain *dma_domain, u32 wnd_nr) dma_domain 151 drivers/iommu/fsl_pamu_domain.c struct dma_window *wnd = &dma_domain->win_arr[wnd_nr]; dma_domain 155 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_cnt > 1) { dma_domain 156 drivers/iommu/fsl_pamu_domain.c ret = pamu_config_spaace(liodn, dma_domain->win_cnt, wnd_nr, dma_domain 160 drivers/iommu/fsl_pamu_domain.c dma_domain->snoop_id, dma_domain 161 drivers/iommu/fsl_pamu_domain.c dma_domain->stash_id, dma_domain 170 drivers/iommu/fsl_pamu_domain.c wnd_addr = dma_domain->iommu_domain.geometry.aperture_start; dma_domain 176 drivers/iommu/fsl_pamu_domain.c dma_domain->snoop_id, dma_domain->stash_id, dma_domain 188 drivers/iommu/fsl_pamu_domain.c static int update_liodn_stash(int liodn, struct fsl_dma_domain *dma_domain, dma_domain 195 drivers/iommu/fsl_pamu_domain.c if (!dma_domain->win_arr) { dma_domain 202 drivers/iommu/fsl_pamu_domain.c for (i = 0; i < dma_domain->win_cnt; i++) { dma_domain 219 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain, dma_domain 237 drivers/iommu/fsl_pamu_domain.c window_size = dma_domain->geom_size; dma_domain 243 drivers/iommu/fsl_pamu_domain.c 0, dma_domain->snoop_id, dma_domain 244 drivers/iommu/fsl_pamu_domain.c dma_domain->stash_id, win_cnt, 0); dma_domain 260 drivers/iommu/fsl_pamu_domain.c 0, dma_domain->snoop_id, dma_domain 261 drivers/iommu/fsl_pamu_domain.c dma_domain->stash_id, dma_domain 331 drivers/iommu/fsl_pamu_domain.c static void detach_device(struct device *dev, struct fsl_dma_domain *dma_domain) dma_domain 336 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 338 drivers/iommu/fsl_pamu_domain.c list_for_each_entry_safe(info, tmp, &dma_domain->devices, link) { dma_domain 340 drivers/iommu/fsl_pamu_domain.c remove_device_ref(info, dma_domain->win_cnt); dma_domain 342 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 345 drivers/iommu/fsl_pamu_domain.c static void attach_device(struct fsl_dma_domain *dma_domain, int liodn, struct device *dev) dma_domain 356 drivers/iommu/fsl_pamu_domain.c if (old_domain_info && old_domain_info->domain != dma_domain) { dma_domain 366 drivers/iommu/fsl_pamu_domain.c info->domain = dma_domain; dma_domain 368 drivers/iommu/fsl_pamu_domain.c list_add(&info->link, &dma_domain->devices); dma_domain 382 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 388 drivers/iommu/fsl_pamu_domain.c return get_phys_addr(dma_domain, iova); dma_domain 398 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 401 drivers/iommu/fsl_pamu_domain.c detach_device(NULL, dma_domain); dma_domain 403 drivers/iommu/fsl_pamu_domain.c dma_domain->enabled = 0; dma_domain 404 drivers/iommu/fsl_pamu_domain.c dma_domain->mapped = 0; dma_domain 406 drivers/iommu/fsl_pamu_domain.c kmem_cache_free(fsl_pamu_domain_cache, dma_domain); dma_domain 411 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain; dma_domain 416 drivers/iommu/fsl_pamu_domain.c dma_domain = iommu_alloc_dma_domain(); dma_domain 417 drivers/iommu/fsl_pamu_domain.c if (!dma_domain) { dma_domain 422 drivers/iommu/fsl_pamu_domain.c dma_domain->iommu_domain. geometry.aperture_start = 0; dma_domain 423 drivers/iommu/fsl_pamu_domain.c dma_domain->iommu_domain.geometry.aperture_end = (1ULL << 36) - 1; dma_domain 424 drivers/iommu/fsl_pamu_domain.c dma_domain->iommu_domain.geometry.force_aperture = true; dma_domain 426 drivers/iommu/fsl_pamu_domain.c return &dma_domain->iommu_domain; dma_domain 430 drivers/iommu/fsl_pamu_domain.c static int pamu_set_domain_geometry(struct fsl_dma_domain *dma_domain, dma_domain 437 drivers/iommu/fsl_pamu_domain.c list_for_each_entry(info, &dma_domain->devices, link) { dma_domain 438 drivers/iommu/fsl_pamu_domain.c ret = pamu_set_liodn(info->liodn, info->dev, dma_domain, dma_domain 448 drivers/iommu/fsl_pamu_domain.c static int update_domain_stash(struct fsl_dma_domain *dma_domain, u32 val) dma_domain 453 drivers/iommu/fsl_pamu_domain.c list_for_each_entry(info, &dma_domain->devices, link) { dma_domain 454 drivers/iommu/fsl_pamu_domain.c ret = update_liodn_stash(info->liodn, dma_domain, val); dma_domain 463 drivers/iommu/fsl_pamu_domain.c static int update_domain_mapping(struct fsl_dma_domain *dma_domain, u32 wnd_nr) dma_domain 468 drivers/iommu/fsl_pamu_domain.c list_for_each_entry(info, &dma_domain->devices, link) { dma_domain 469 drivers/iommu/fsl_pamu_domain.c ret = update_liodn(info->liodn, dma_domain, wnd_nr); dma_domain 476 drivers/iommu/fsl_pamu_domain.c static int disable_domain_win(struct fsl_dma_domain *dma_domain, u32 wnd_nr) dma_domain 481 drivers/iommu/fsl_pamu_domain.c list_for_each_entry(info, &dma_domain->devices, link) { dma_domain 482 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_cnt == 1 && dma_domain->enabled) { dma_domain 485 drivers/iommu/fsl_pamu_domain.c dma_domain->enabled = 0; dma_domain 496 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 500 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 501 drivers/iommu/fsl_pamu_domain.c if (!dma_domain->win_arr) { dma_domain 503 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 507 drivers/iommu/fsl_pamu_domain.c if (wnd_nr >= dma_domain->win_cnt) { dma_domain 509 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 513 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_arr[wnd_nr].valid) { dma_domain 514 drivers/iommu/fsl_pamu_domain.c ret = disable_domain_win(dma_domain, wnd_nr); dma_domain 516 drivers/iommu/fsl_pamu_domain.c dma_domain->win_arr[wnd_nr].valid = 0; dma_domain 517 drivers/iommu/fsl_pamu_domain.c dma_domain->mapped--; dma_domain 521 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 527 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 539 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 540 drivers/iommu/fsl_pamu_domain.c if (!dma_domain->win_arr) { dma_domain 542 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 546 drivers/iommu/fsl_pamu_domain.c if (wnd_nr >= dma_domain->win_cnt) { dma_domain 548 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 552 drivers/iommu/fsl_pamu_domain.c win_size = dma_domain->geom_size >> ilog2(dma_domain->win_cnt); dma_domain 555 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 559 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_cnt == 1) { dma_domain 560 drivers/iommu/fsl_pamu_domain.c if (dma_domain->enabled) { dma_domain 562 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 569 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 574 drivers/iommu/fsl_pamu_domain.c wnd = &dma_domain->win_arr[wnd_nr]; dma_domain 580 drivers/iommu/fsl_pamu_domain.c ret = update_domain_mapping(dma_domain, wnd_nr); dma_domain 583 drivers/iommu/fsl_pamu_domain.c dma_domain->mapped++; dma_domain 590 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 599 drivers/iommu/fsl_pamu_domain.c static int handle_attach_device(struct fsl_dma_domain *dma_domain, dma_domain 604 drivers/iommu/fsl_pamu_domain.c struct iommu_domain *domain = &dma_domain->iommu_domain; dma_domain 608 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 618 drivers/iommu/fsl_pamu_domain.c attach_device(dma_domain, liodn[i], dev); dma_domain 624 drivers/iommu/fsl_pamu_domain.c if (dma_domain->win_arr) { dma_domain 625 drivers/iommu/fsl_pamu_domain.c u32 win_cnt = dma_domain->win_cnt > 1 ? dma_domain->win_cnt : 0; dma_domain 627 drivers/iommu/fsl_pamu_domain.c ret = pamu_set_liodn(liodn[i], dev, dma_domain, dma_domain 631 drivers/iommu/fsl_pamu_domain.c if (dma_domain->mapped) { dma_domain 636 drivers/iommu/fsl_pamu_domain.c ret = map_liodn(liodn[i], dma_domain); dma_domain 642 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 650 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 675 drivers/iommu/fsl_pamu_domain.c ret = handle_attach_device(dma_domain, dev, liodn, liodn_cnt); dma_domain 687 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 710 drivers/iommu/fsl_pamu_domain.c detach_device(dev, dma_domain); dma_domain 718 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 733 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 734 drivers/iommu/fsl_pamu_domain.c if (dma_domain->enabled) { dma_domain 736 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 743 drivers/iommu/fsl_pamu_domain.c dma_domain->geom_size = geom_size; dma_domain 745 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 751 drivers/iommu/fsl_pamu_domain.c static int configure_domain_stash(struct fsl_dma_domain *dma_domain, void *data) dma_domain 757 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 759 drivers/iommu/fsl_pamu_domain.c memcpy(&dma_domain->dma_stash, stash_attr, dma_domain 762 drivers/iommu/fsl_pamu_domain.c dma_domain->stash_id = get_stash_id(stash_attr->cache, dma_domain 764 drivers/iommu/fsl_pamu_domain.c if (dma_domain->stash_id == ~(u32)0) { dma_domain 766 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 770 drivers/iommu/fsl_pamu_domain.c ret = update_domain_stash(dma_domain, dma_domain->stash_id); dma_domain 772 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 778 drivers/iommu/fsl_pamu_domain.c static int configure_domain_dma_state(struct fsl_dma_domain *dma_domain, bool enable) dma_domain 784 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 786 drivers/iommu/fsl_pamu_domain.c if (enable && !dma_domain->mapped) { dma_domain 788 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 792 drivers/iommu/fsl_pamu_domain.c dma_domain->enabled = enable; dma_domain 793 drivers/iommu/fsl_pamu_domain.c list_for_each_entry(info, &dma_domain->devices, link) { dma_domain 800 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 807 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 811 drivers/iommu/fsl_pamu_domain.c spin_lock_irqsave(&dma_domain->domain_lock, flags); dma_domain 813 drivers/iommu/fsl_pamu_domain.c if (dma_domain->enabled) { dma_domain 815 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 820 drivers/iommu/fsl_pamu_domain.c if (!dma_domain->geom_size) { dma_domain 822 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 832 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 836 drivers/iommu/fsl_pamu_domain.c ret = pamu_set_domain_geometry(dma_domain, &domain->geometry, dma_domain 839 drivers/iommu/fsl_pamu_domain.c kfree(dma_domain->win_arr); dma_domain 840 drivers/iommu/fsl_pamu_domain.c dma_domain->win_arr = kcalloc(w_count, dma_domain 841 drivers/iommu/fsl_pamu_domain.c sizeof(*dma_domain->win_arr), dma_domain 843 drivers/iommu/fsl_pamu_domain.c if (!dma_domain->win_arr) { dma_domain 844 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 847 drivers/iommu/fsl_pamu_domain.c dma_domain->win_cnt = w_count; dma_domain 849 drivers/iommu/fsl_pamu_domain.c spin_unlock_irqrestore(&dma_domain->domain_lock, flags); dma_domain 857 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 865 drivers/iommu/fsl_pamu_domain.c ret = configure_domain_stash(dma_domain, data); dma_domain 868 drivers/iommu/fsl_pamu_domain.c ret = configure_domain_dma_state(dma_domain, *(int *)data); dma_domain 885 drivers/iommu/fsl_pamu_domain.c struct fsl_dma_domain *dma_domain = to_fsl_dma_domain(domain); dma_domain 890 drivers/iommu/fsl_pamu_domain.c memcpy(data, &dma_domain->dma_stash, dma_domain 894 drivers/iommu/fsl_pamu_domain.c *(int *)data = dma_domain->enabled; dma_domain 900 drivers/iommu/fsl_pamu_domain.c *(u32 *)data = dma_domain->win_cnt; dma_domain 103 drivers/pci/controller/vmd.c struct dma_domain dma_domain; dma_domain 402 drivers/pci/controller/vmd.c struct dma_domain *domain = &vmd->dma_domain; dma_domain 418 drivers/pci/controller/vmd.c struct dma_domain *domain = &vmd->dma_domain;