| /openbmc/qemu/hw/vfio/ |
| H A D | container-base.c | 70 VFIOContainerBase *bcontainer) in vfio_address_space_insert() argument 72 QLIST_INSERT_HEAD(&space->containers, bcontainer, next); in vfio_address_space_insert() 73 bcontainer->space = space; in vfio_address_space_insert() 76 int vfio_container_dma_map(VFIOContainerBase *bcontainer, in vfio_container_dma_map() argument 80 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_dma_map() 88 return vioc->dma_map_file(bcontainer, iova, size, mfd, start + offset, in vfio_container_dma_map() 92 return vioc->dma_map(bcontainer, iova, size, vaddr, readonly, mr); in vfio_container_dma_map() 95 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, in vfio_container_dma_unmap() argument 99 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_dma_unmap() 102 return vioc->dma_unmap(bcontainer, iova, size, iotlb, unmap_all); in vfio_container_dma_unmap() [all …]
|
| H A D | listener.c | 55 static bool vfio_log_sync_needed(const VFIOContainerBase *bcontainer) in vfio_log_sync_needed() argument 59 if (!vfio_container_dirty_tracking_is_started(bcontainer)) { in vfio_log_sync_needed() 63 QLIST_FOREACH(vbasedev, &bcontainer->device_list, container_next) { in vfio_log_sync_needed() 128 VFIOContainerBase *bcontainer = giommu->bcontainer; in vfio_iommu_map_notify() local 171 ret = vfio_container_dma_map(bcontainer, iova, in vfio_iommu_map_notify() 177 bcontainer, iova, in vfio_iommu_map_notify() 181 ret = vfio_container_dma_unmap(bcontainer, iova, in vfio_iommu_map_notify() 187 bcontainer, iova, in vfio_iommu_map_notify() 205 VFIOContainerBase *bcontainer = vrdl->bcontainer; in vfio_ram_discard_notify_discard() local 211 ret = vfio_container_dma_unmap(bcontainer, iova, size , NULL, false); in vfio_ram_discard_notify_discard() [all …]
|
| H A D | cpr-legacy.c | 40 static int vfio_legacy_cpr_dma_map(const VFIOContainerBase *bcontainer, in vfio_legacy_cpr_dma_map() argument 44 const VFIOContainer *container = container_of(bcontainer, VFIOContainer, in vfio_legacy_cpr_dma_map() 45 bcontainer); in vfio_legacy_cpr_dma_map() 68 vfio_container_region_add(&container->bcontainer, section, true); in vfio_region_remap() 101 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_container_post_load() local 102 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_post_load() 109 if (!vfio_listener_register(bcontainer, &local_err)) { in vfio_container_post_load() 138 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_cpr_fail_notifier() local 151 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_cpr_fail_notifier() 160 bcontainer->space->as); in vfio_cpr_fail_notifier() [all …]
|
| H A D | container.c | 74 const VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_dma_unmap_bitmap() local 102 if (vbmap.size > bcontainer->max_dirty_bitmap_size) { in vfio_dma_unmap_bitmap() 123 static int vfio_legacy_dma_unmap_one(const VFIOContainerBase *bcontainer, in vfio_legacy_dma_unmap_one() argument 127 const VFIOContainer *container = container_of(bcontainer, VFIOContainer, in vfio_legacy_dma_unmap_one() 128 bcontainer); in vfio_legacy_dma_unmap_one() 141 if (iotlb && vfio_container_dirty_tracking_is_started(bcontainer)) { in vfio_legacy_dma_unmap_one() 142 if (!vfio_container_devices_dirty_tracking_is_supported(bcontainer) && in vfio_legacy_dma_unmap_one() 143 bcontainer->dirty_pages_supported) { in vfio_legacy_dma_unmap_one() 166 unmap.size -= 1ULL << ctz64(bcontainer->pgsizes); in vfio_legacy_dma_unmap_one() 173 ret = vfio_container_query_dirty_bitmap(bcontainer, iova, size, in vfio_legacy_dma_unmap_one() [all …]
|
| H A D | iommufd.c | 37 static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr iova, in iommufd_cdev_map() argument 42 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_cdev_map() 49 static int iommufd_cdev_map_file(const VFIOContainerBase *bcontainer, in iommufd_cdev_map_file() argument 54 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_cdev_map_file() 61 static int iommufd_cdev_unmap(const VFIOContainerBase *bcontainer, in iommufd_cdev_unmap() argument 66 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_cdev_unmap() 162 static int iommufd_set_dirty_page_tracking(const VFIOContainerBase *bcontainer, in iommufd_set_dirty_page_tracking() argument 166 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_set_dirty_page_tracking() 193 static int iommufd_query_dirty_bitmap(const VFIOContainerBase *bcontainer, in iommufd_query_dirty_bitmap() argument 197 VFIOIOMMUFDContainer *container = container_of(bcontainer, in iommufd_query_dirty_bitmap() [all …]
|
| H A D | spapr.c | 65 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_prereg_listener_region_add() local 108 if (!bcontainer->initialized) { in vfio_prereg_listener_region_add() 109 if (!bcontainer->error) { in vfio_prereg_listener_region_add() 110 error_setg_errno(&bcontainer->error, -ret, in vfio_prereg_listener_region_add() 247 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_spapr_create_window() local 263 pgmask = bcontainer->pgsizes & (pagesize | (pagesize - 1)); in vfio_spapr_create_window() 269 bcontainer->pgsizes); in vfio_spapr_create_window() 322 bcontainer->pgsizes); in vfio_spapr_create_window() 351 vfio_spapr_container_add_section_window(VFIOContainerBase *bcontainer, in vfio_spapr_container_add_section_window() argument 355 VFIOContainer *container = container_of(bcontainer, VFIOContainer, in vfio_spapr_container_add_section_window() [all …]
|
| H A D | cpr-iommufd.c | 179 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_iommufd_cpr_register_container() local 181 migration_add_notifier_mode(&bcontainer->cpr_reboot_notifier, in vfio_iommufd_cpr_register_container() 192 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_iommufd_cpr_unregister_container() local 194 migration_remove_notifier(&bcontainer->cpr_reboot_notifier); in vfio_iommufd_cpr_unregister_container()
|
| H A D | vfio-listener.h | 12 bool vfio_listener_register(VFIOContainerBase *bcontainer, Error **errp); 13 void vfio_listener_unregister(VFIOContainerBase *bcontainer);
|
| H A D | device.c | 390 GList *l = g_list_last(vdev->bcontainer->iova_ranges); in vfio_device_get_aw_bits() 468 if (!vbasedev->bcontainer) { in vfio_device_detach() 471 VFIO_IOMMU_GET_CLASS(vbasedev->bcontainer)->detach_device(vbasedev); in vfio_device_detach() 474 void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontainer, in vfio_device_prepare() argument 484 vbasedev->bcontainer = bcontainer; in vfio_device_prepare() 485 QLIST_INSERT_HEAD(&bcontainer->device_list, vbasedev, container_next); in vfio_device_prepare() 515 vbasedev->bcontainer = NULL; in vfio_device_unprepare()
|
| H A D | vfio-iommufd.h | 26 VFIOContainerBase bcontainer; member
|
| H A D | migration.c | 1152 return vbasedev->bcontainer->space->as != &address_space_memory; in vfio_viommu_preset()
|
| H A D | pci.c | 2693 const VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(vbasedev->bcontainer); in vfio_pci_hot_reset()
|
| /openbmc/qemu/include/hw/vfio/ |
| H A D | vfio-container-base.h | 57 VFIOContainerBase *bcontainer; member 65 VFIOContainerBase *bcontainer; member 77 VFIOContainerBase *bcontainer); 79 int vfio_container_dma_map(VFIOContainerBase *bcontainer, 82 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, 85 bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, 88 void vfio_container_del_section_window(VFIOContainerBase *bcontainer, 90 int vfio_container_set_dirty_page_tracking(VFIOContainerBase *bcontainer, 93 const VFIOContainerBase *bcontainer); 95 const VFIOContainerBase *bcontainer); [all …]
|
| H A D | vfio-cpr.h | 23 typedef int (*dma_map_fn)(const struct VFIOContainerBase *bcontainer, 67 void vfio_cpr_giommu_remap(struct VFIOContainerBase *bcontainer, 71 struct VFIOContainerBase *bcontainer, MemoryRegionSection *section);
|
| H A D | vfio-container.h | 29 VFIOContainerBase bcontainer; member
|
| H A D | vfio-device.h | 57 VFIOContainerBase *bcontainer; member 255 void vfio_device_prepare(VFIODevice *vbasedev, VFIOContainerBase *bcontainer,
|
| /openbmc/qemu/hw/vfio-user/ |
| H A D | container.c | 25 static void vfio_user_listener_begin(VFIOContainerBase *bcontainer) in vfio_user_listener_begin() argument 27 VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer, in vfio_user_listener_begin() 28 bcontainer); in vfio_user_listener_begin() 33 static void vfio_user_listener_commit(VFIOContainerBase *bcontainer) in vfio_user_listener_commit() argument 35 VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer, in vfio_user_listener_commit() 36 bcontainer); in vfio_user_listener_commit() 43 static int vfio_user_dma_unmap(const VFIOContainerBase *bcontainer, in vfio_user_dma_unmap() argument 47 VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer, in vfio_user_dma_unmap() 48 bcontainer); in vfio_user_dma_unmap() 85 static int vfio_user_dma_map(const VFIOContainerBase *bcontainer, hwaddr iova, in vfio_user_dma_map() argument [all …]
|
| H A D | container.h | 17 VFIOContainerBase bcontainer; member
|
| /openbmc/qemu/hw/ppc/ |
| H A D | spapr_pci_vfio.c | 89 VFIOContainerBase *bcontainer = NULL; in vfio_eeh_as_container() local 96 bcontainer = QLIST_FIRST(&space->containers); in vfio_eeh_as_container() 98 if (QLIST_NEXT(bcontainer, next)) { in vfio_eeh_as_container() 103 bcontainer = NULL; in vfio_eeh_as_container() 109 return container_of(bcontainer, VFIOContainer, bcontainer); in vfio_eeh_as_container()
|