/qemu/hw/vfio/ |
H A D | common.c | 289 hwaddr iova = iotlb->iova + giommu->iommu_offset; in vfio_iommu_map_notify() local 295 iova, iova + iotlb->addr_mask); in vfio_iommu_map_notify() 545 hwaddr iova; in vfio_get_section_iova_range() local 556 *out_iova = iova; in vfio_get_section_iova_range() 569 hwaddr iova, end; in vfio_listener_region_add() local 734 hwaddr iova, end; in vfio_listener_region_del() local 894 if (*min > iova) { in vfio_dirty_tracking_update() 895 *min = iova; in vfio_dirty_tracking_update() 1126 report->iova = iova; in vfio_device_dma_logging_report() 1220 hwaddr iova = iotlb->iova + giommu->iommu_offset; in vfio_iommu_map_dirty_notify() local [all …]
|
H A D | container-base.c | 19 hwaddr iova, ram_addr_t size, in vfio_container_dma_map() argument 23 return bcontainer->ops->dma_map(bcontainer, iova, size, vaddr, readonly); in vfio_container_dma_map() 27 hwaddr iova, ram_addr_t size, in vfio_container_dma_unmap() argument 31 return bcontainer->ops->dma_unmap(bcontainer, iova, size, iotlb); in vfio_container_dma_unmap() 67 VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp) in vfio_container_query_dirty_bitmap() argument 70 return bcontainer->ops->query_dirty_bitmap(bcontainer, vbmap, iova, size, in vfio_container_query_dirty_bitmap()
|
H A D | container.c | 64 hwaddr iova, ram_addr_t size, in vfio_dma_unmap_bitmap() argument 81 unmap->iova = iova; in vfio_dma_unmap_bitmap() 120 hwaddr iova, ram_addr_t size, in vfio_legacy_dma_unmap() argument 128 .iova = iova, in vfio_legacy_dma_unmap() 138 return vfio_dma_unmap_bitmap(container, iova, size, iotlb); in vfio_legacy_dma_unmap() 157 if (errno == EINVAL && unmap.size && !(unmap.iova + unmap.size) && in vfio_legacy_dma_unmap() 168 ret = vfio_get_dirty_bitmap(bcontainer, iova, size, in vfio_legacy_dma_unmap() 188 .iova = iova, in vfio_legacy_dma_map() 203 vfio_legacy_dma_unmap(bcontainer, iova, size, NULL) == 0 && in vfio_legacy_dma_map() 253 range->iova = iova; in vfio_legacy_query_dirty_bitmap() [all …]
|
H A D | spapr.c | 197 hwaddr iova, hwaddr end) in vfio_find_hostwin() argument 203 if (hostwin->min_iova <= iova && end <= hostwin->max_iova) { in vfio_find_hostwin() 345 hwaddr iova, end; in vfio_spapr_container_add_section_window() local 347 iova = section->offset_within_address_space; in vfio_spapr_container_add_section_window() 348 end = iova + int128_get64(section->size) - 1; in vfio_spapr_container_add_section_window() 350 if (!vfio_find_hostwin(scontainer, iova, end)) { in vfio_spapr_container_add_section_window() 353 iova, end); in vfio_spapr_container_add_section_window()
|
/qemu/hw/arm/ |
H A D | smmu-common.c | 42 b += extract64(key->iova, 0, 32); in smmu_iotlb_key_hash() 43 c += extract64(key->iova, 32, 32); in smmu_iotlb_key_hash() 55 return (k1->asid == k2->asid) && (k1->iova == k2->iova) && in smmu_iotlb_key_equal() 63 SMMUIOTLBKey key = {.asid = asid, .vmid = vmid, .iova = iova, in smmu_get_iotlb_key() 162 return ((info->iova & ~entry->addr_mask) == entry->iova) || in smmu_hash_remove_by_asid_vmid_iova() 163 ((entry->iova & ~info->mask) == info->iova); in smmu_hash_remove_by_asid_vmid_iova() 185 .asid = asid, .iova = iova, in smmu_iotlb_inv_iova() 308 SMMUTransTableInfo *tt = select_tt(cfg, iova); in smmu_ptw_64_s1() 385 tlbe->entry.iova = iova & ~mask; in smmu_ptw_64_s1() 506 tlbe->entry.iova = ipa & ~mask; in smmu_ptw_64_s2() [all …]
|
H A D | trace-events | 8 …tage, int level, uint64_t iova, size_t subpage_size, uint64_t baseaddr, uint32_t offset, uint64_t … 10 …tage, int level, uint64_t iova, uint64_t baseaddr, uint64_t pteaddr, uint64_t pte, uint64_t addre… 11 …int64_t pte, uint64_t iova, uint64_t gpa, int bsize_mb) "stage=%d level=%d base@=0x%"PRIx64" pte@=… 37 …_t sid, uint64_t addr, bool is_write) "%s sid=0x%x bypass (smmu disabled) iova:0x%"PRIx64" is_writ… 38 …r *n, uint16_t sid, uint64_t addr, bool is_write) "%s sid=0x%x STE bypass iova:0x%"PRIx64" is_writ… 39 …har *n, uint16_t sid, uint64_t addr, bool is_write) "%s sid=0x%x abort on iova:0x%"PRIx64" is_writ… 40 …te_success(const char *n, uint16_t sid, uint64_t iova, uint64_t translated, int perm) "%s sid=0x%x… 56 …, uint16_t asid, uint16_t vmid, uint64_t iova, uint8_t tg, uint64_t num_pages) "iommu mr=%s asid=%…
|
H A D | smmu-internal.h | 97 uint64_t iova_level_offset(uint64_t iova, int inputsize, in iova_level_offset() argument 100 return ((iova & MAKE_64BIT_MASK(0, inputsize)) >> level_shift(level, gsz)) & in iova_level_offset() 140 uint64_t iova; member
|
/qemu/util/ |
H A D | iova-tree.c | 62 if (m1->iova > m2->iova + m2->size) { in iova_tree_compare() 66 if (m1->iova + m1->size < m2->iova) { in iova_tree_compare() 118 const DMAMap *iova_tree_find_address(const IOVATree *tree, hwaddr iova) in iova_tree_find_address() argument 120 const DMAMap map = { .iova = iova, .size = 0 }; in iova_tree_find_address() 135 if (map->iova + map->size < map->iova || map->perm == IOMMU_NONE) { in iova_tree_insert() 200 if (this && this->iova + this->size < args->iova_begin) { in iova_tree_alloc_map_in_hole() 204 hole_start = MAX(prev ? prev->iova + prev->size + 1 : 0, args->iova_begin); in iova_tree_alloc_map_in_hole() 205 hole_last = this ? this->iova : HWADDR_MAX; in iova_tree_alloc_map_in_hole() 274 map->iova = args.iova_result; in iova_tree_alloc_map()
|
H A D | vfio-helpers.c | 41 uint64_t iova; member 593 IOVAMapping m = {.host = host, .size = size, .iova = iova}; in qemu_vfio_add_mapping() 620 .iova = iova, in qemu_vfio_do_mapping() 624 trace_qemu_vfio_do_mapping(s, host, iova, size); in qemu_vfio_do_mapping() 643 .iova = mapping->iova, in qemu_vfio_undo_mapping() 696 *iova = s->low_water_mark; in qemu_vfio_find_fixed_iova() 720 *iova = s->high_water_mark - size; in qemu_vfio_find_temp_iova() 721 s->high_water_mark = *iova; in qemu_vfio_find_temp_iova() 794 if (iova) { in qemu_vfio_dma_map() 795 *iova = iova0; in qemu_vfio_dma_map() [all …]
|
H A D | trace-events | 88 qemu_vfio_dump_mapping(void *host, uint64_t iova, size_t size) "vfio mapping %p to iova 0x%08" PRIx… 90 …void *s, void *host, size_t size, int index, uint64_t iova) "s %p host %p size 0x%zx index %d iova… 91 qemu_vfio_do_mapping(void *s, void *host, uint64_t iova, size_t size) "s %p host %p <-> iova 0x%"PR… 92 … void *host, size_t size, bool temporary, uint64_t *iova) "s %p host %p size 0x%zx temporary %d &i… 93 qemu_vfio_dma_mapped(void *s, void *host, uint64_t iova, size_t size) "s %p host %p <-> iova 0x%"PR…
|
/qemu/backends/ |
H A D | iommufd.c | 142 int iommufd_backend_map_dma(IOMMUFDBackend *be, uint32_t ioas_id, hwaddr iova, in iommufd_backend_map_dma() argument 153 .iova = iova, in iommufd_backend_map_dma() 162 trace_iommufd_backend_map_dma(fd, ioas_id, iova, size, in iommufd_backend_map_dma() 178 hwaddr iova, ram_addr_t size) in iommufd_backend_unmap_dma() argument 184 .iova = iova, in iommufd_backend_unmap_dma() 198 trace_iommufd_backend_unmap_dma_non_exist(fd, ioas_id, iova, size, ret); in iommufd_backend_unmap_dma() 201 trace_iommufd_backend_unmap_dma(fd, ioas_id, iova, size, ret); in iommufd_backend_unmap_dma()
|
H A D | trace-events | 13 …t iommufd, uint32_t ioas, uint64_t iova, uint64_t size, void *vaddr, bool readonly, int ret) " iom… 14 …t iommufd, uint32_t ioas, uint64_t iova, uint64_t size, int ret) " Unmap nonexistent mapping: iomm… 15 …d_unmap_dma(int iommufd, uint32_t ioas, uint64_t iova, uint64_t size, int ret) " iommufd=%d ioas=%…
|
/qemu/hw/virtio/ |
H A D | vhost-vdpa.c | 103 msg.iotlb.iova = iova; in vhost_vdpa_dma_map() 135 msg.iotlb.iova = iova; in vhost_vdpa_dma_unmap() 206 hwaddr iova = iotlb->iova + iommu->iommu_offset; in vhost_vdpa_iommu_map_notify() local 319 hwaddr iova; in vhost_vdpa_listener_region_add() local 345 if (int128_ge(int128_make64(iova), llend)) { in vhost_vdpa_listener_region_add() 374 iova = mem_region.iova; in vhost_vdpa_listener_region_add() 407 hwaddr iova; in vhost_vdpa_listener_region_del() local 456 iova = result->iova; in vhost_vdpa_listener_region_del() 473 iova += int128_get64(llsize); in vhost_vdpa_listener_region_del() 1204 addr->desc_user_addr = driver_region.iova; in vhost_vdpa_svq_map_rings() [all …]
|
H A D | vhost-backend.c | 357 uint64_t iova, uint64_t uaddr, in vhost_backend_update_device_iotlb() argument 363 imsg.iova = iova; in vhost_backend_update_device_iotlb() 389 uint64_t iova, uint64_t len) in vhost_backend_invalidate_device_iotlb() argument 393 imsg.iova = iova; in vhost_backend_invalidate_device_iotlb() 415 ret = vhost_device_iotlb_miss(dev, imsg->iova, in vhost_backend_handle_iotlb_msg()
|
/qemu/include/hw/vfio/ |
H A D | vfio-container-base.h | 74 hwaddr iova, ram_addr_t size, 77 hwaddr iova, ram_addr_t size, 87 VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp); 115 hwaddr iova, ram_addr_t size, 118 hwaddr iova, ram_addr_t size, 154 VFIOBitmap *vbmap, hwaddr iova, hwaddr size, Error **errp);
|
/qemu/include/hw/arm/ |
H A D | smmu-common.h | 127 uint64_t iova; member 176 int smmu_ptw(SMMUTransCfg *cfg, dma_addr_t iova, IOMMUAccessFlags perm, 183 SMMUTransTableInfo *select_tt(SMMUTransCfg *cfg, dma_addr_t iova); 191 SMMUTransTableInfo *tt, hwaddr iova); 193 SMMUIOTLBKey smmu_get_iotlb_key(uint16_t asid, uint16_t vmid, uint64_t iova, 198 void smmu_iotlb_inv_iova(SMMUState *s, int asid, int vmid, dma_addr_t iova,
|
/qemu/hw/i386/ |
H A D | trace-events | 29 …_t addr, uint64_t slpte, uint16_t domain) "IOTLB page hit sid 0x%"PRIx16" iova 0x%"PRIx64" slpte 0… 30 …addr, uint64_t slpte, uint16_t domain) "IOTLB page update sid 0x%"PRIx16" iova 0x%"PRIx64" slpte 0… 37 …, uint64_t start, uint64_t end) "walk (base=0x%"PRIx64", level=%"PRIu32") iova range 0x%"PRIx64" -… 38 …d_page_walk_one(uint16_t domain, uint64_t iova, uint64_t gpa, uint64_t mask, int perm) "domain 0x%… 39 vtd_page_walk_one_skip_map(uint64_t iova, uint64_t mask, uint64_t translated) "iova 0x%"PRIx64" mas… 40 vtd_page_walk_one_skip_unmap(uint64_t iova, uint64_t mask) "iova 0x%"PRIx64" mask 0x%"PRIx64 41 vtd_page_walk_skip_read(uint64_t iova, uint64_t next) "Page walk skip iova 0x%"PRIx64" - 0x%"PRIx64… 42 vtd_page_walk_skip_reserve(uint64_t iova, uint64_t next) "Page walk skip iova 0x%"PRIx64" - 0x%"PRI… 44 vtd_as_unmap_whole(uint8_t bus, uint8_t slot, uint8_t fn, uint64_t iova, uint64_t size) "Device %02… 45 vtd_translate_pt(uint16_t sid, uint64_t addr) "source id 0x%"PRIx16", iova 0x%"PRIx64 [all …]
|
H A D | intel_iommu.c | 1201 .iova = entry->iova, in vtd_page_walk_one() 1295 uint64_t iova = start; in vtd_page_walk_level() local 1304 while (iova < end) { in vtd_page_walk_level() 1349 event.entry.iova = iova & subpage_mask; in vtd_page_walk_level() 1364 iova = iova_next; in vtd_page_walk_level() 1998 entry->iova = addr & page_mask; in vtd_do_iommu_translate() 2006 entry->iova = 0; in vtd_do_iommu_translate() 2226 .iova = addr, in vtd_iotlb_page_invalidate_notify() 2693 event.entry.iova = addr; in vtd_process_device_iotlb_desc() 3849 event.entry.iova = start; in vtd_address_space_unmap() [all …]
|
/qemu/subprojects/libvduse/ |
H A D | libvduse.c | 115 uint64_t iova; member 328 if (start <= dev->regions[i].iova && in vduse_iova_remove_region() 355 dev->regions[i].iova = start; in vduse_iova_add_region() 400 if ((iova >= r->iova) && (iova < (r->iova + r->size))) { in iova_to_va() 401 if ((iova + *plen) > (r->iova + r->size)) { in iova_to_va() 402 *plen = r->iova + r->size - iova; in iova_to_va() 404 return (void *)(uintptr_t)(iova - r->iova + in iova_to_va() 409 entry.start = iova; in iova_to_va() 410 entry.last = iova + 1; in iova_to_va() 418 return iova_to_va(dev, plen, iova); in iova_to_va() [all …]
|
/qemu/hw/sparc64/ |
H A D | sun4u_iommu.c | 85 .iova = 0, in sun4u_translate_iommu() 93 ret.iova = addr & IOMMU_PAGE_MASK_8K; in sun4u_translate_iommu() 177 ret.iova = addr & IOMMU_PAGE_MASK_64K; in sun4u_translate_iommu() 182 ret.iova = addr & IOMMU_PAGE_MASK_8K; in sun4u_translate_iommu() 187 trace_sun4u_iommu_translate(ret.iova, ret.translated_addr, tte); in sun4u_translate_iommu()
|
/qemu/include/sysemu/ |
H A D | iommufd.h | 32 int iommufd_backend_map_dma(IOMMUFDBackend *be, uint32_t ioas_id, hwaddr iova, 35 hwaddr iova, ram_addr_t size);
|
/qemu/hw/s390x/ |
H A D | s390-pci-inst.c | 621 .iova = entry->iova, in s390_pci_update_iotlb() 632 g_hash_table_remove(iommu->iotlb, &entry->iova); in s390_pci_update_iotlb() 651 cache->iova = entry->iova; in s390_pci_update_iotlb() 655 g_hash_table_replace(iommu->iotlb, &cache->iova, cache); in s390_pci_update_iotlb() 685 event.entry.iova = start; in s390_pci_batch_unmap() 696 uint64_t iova, coalesce = 0; in rpcit_service_call() local 773 iova = entry.iova; in rpcit_service_call() 778 s390_pci_batch_unmap(iommu, iova, coalesce); in rpcit_service_call() 783 while (entry.iova < start && entry.iova < end) { in rpcit_service_call() 786 entry.iova += TARGET_PAGE_SIZE; in rpcit_service_call() [all …]
|
/qemu/include/qemu/ |
H A D | iova-tree.h | 36 hwaddr iova; member 125 const DMAMap *iova_tree_find_address(const IOVATree *tree, hwaddr iova);
|
/qemu/include/hw/virtio/ |
H A D | vhost-vdpa.h | 81 int vhost_vdpa_dma_map(VhostVDPAShared *s, uint32_t asid, hwaddr iova, 83 int vhost_vdpa_dma_unmap(VhostVDPAShared *s, uint32_t asid, hwaddr iova,
|
/qemu/target/arm/ |
H A D | trace-events | 15 kvm_arm_fixup_msi_route(uint64_t iova, uint64_t gpa) "MSI iova = 0x%"PRIx64" is translated into 0x%…
|