/openbmc/qemu/hw/vfio/ |
H A D | container-base.c | 18 int vfio_container_dma_map(VFIOContainerBase *bcontainer, in vfio_container_dma_map() argument 22 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_dma_map() 25 return vioc->dma_map(bcontainer, iova, size, vaddr, readonly); in vfio_container_dma_map() 28 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, in vfio_container_dma_unmap() argument 32 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_dma_unmap() 35 return vioc->dma_unmap(bcontainer, iova, size, iotlb); in vfio_container_dma_unmap() 38 bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, in vfio_container_add_section_window() argument 42 VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer); in vfio_container_add_section_window() 48 return vioc->add_window(bcontainer, section, errp); in vfio_container_add_section_window() 51 void vfio_container_del_section_window(VFIOContainerBase *bcontainer, in vfio_container_del_section_window() argument [all …]
|
H A D | common.c | 147 return vbasedev->bcontainer->space->as != &address_space_memory; in vfio_viommu_preset() 173 static bool vfio_devices_all_dirty_tracking(VFIOContainerBase *bcontainer) in vfio_devices_all_dirty_tracking() argument 181 QLIST_FOREACH(vbasedev, &bcontainer->device_list, container_next) { in vfio_devices_all_dirty_tracking() 197 bool vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer) in vfio_devices_all_device_dirty_tracking() argument 201 QLIST_FOREACH(vbasedev, &bcontainer->device_list, container_next) { in vfio_devices_all_device_dirty_tracking() 218 vfio_devices_all_running_and_mig_active(const VFIOContainerBase *bcontainer) in vfio_devices_all_running_and_mig_active() argument 226 QLIST_FOREACH(vbasedev, &bcontainer->device_list, container_next) { in vfio_devices_all_running_and_mig_active() 291 VFIOContainerBase *bcontainer = giommu->bcontainer; in vfio_iommu_map_notify() local 323 ret = vfio_container_dma_map(bcontainer, iova, in vfio_iommu_map_notify() 329 bcontainer, iova, in vfio_iommu_map_notify() [all …]
|
H A D | container.c | 66 const VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_dma_unmap_bitmap() local 94 if (vbmap.size > bcontainer->max_dirty_bitmap_size) { in vfio_dma_unmap_bitmap() 118 static int vfio_legacy_dma_unmap(const VFIOContainerBase *bcontainer, in vfio_legacy_dma_unmap() argument 122 const VFIOContainer *container = container_of(bcontainer, VFIOContainer, in vfio_legacy_dma_unmap() 123 bcontainer); in vfio_legacy_dma_unmap() 134 if (iotlb && vfio_devices_all_running_and_mig_active(bcontainer)) { in vfio_legacy_dma_unmap() 135 if (!vfio_devices_all_device_dirty_tracking(bcontainer) && in vfio_legacy_dma_unmap() 136 bcontainer->dirty_pages_supported) { in vfio_legacy_dma_unmap() 159 unmap.size -= 1ULL << ctz64(bcontainer->pgsizes); in vfio_legacy_dma_unmap() 167 ret = vfio_get_dirty_bitmap(bcontainer, iova, size, in vfio_legacy_dma_unmap() [all …]
|
H A D | iommufd.c | 30 static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr iova, in iommufd_cdev_map() argument 34 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_cdev_map() 41 static int iommufd_cdev_unmap(const VFIOContainerBase *bcontainer, in iommufd_cdev_unmap() argument 46 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_cdev_unmap() 119 static int iommufd_set_dirty_page_tracking(const VFIOContainerBase *bcontainer, in iommufd_set_dirty_page_tracking() argument 123 container_of(bcontainer, VFIOIOMMUFDContainer, bcontainer); in iommufd_set_dirty_page_tracking() 150 static int iommufd_query_dirty_bitmap(const VFIOContainerBase *bcontainer, in iommufd_query_dirty_bitmap() argument 154 VFIOIOMMUFDContainer *container = container_of(bcontainer, in iommufd_query_dirty_bitmap() 156 bcontainer); in iommufd_query_dirty_bitmap() 348 container->bcontainer.dirty_pages_supported |= in iommufd_cdev_autodomains_get() [all …]
|
H A D | spapr.c | 58 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_prereg_listener_region_add() local 101 if (!bcontainer->initialized) { in vfio_prereg_listener_region_add() 102 if (!bcontainer->error) { in vfio_prereg_listener_region_add() 103 error_setg_errno(&bcontainer->error, -ret, in vfio_prereg_listener_region_add() 240 VFIOContainerBase *bcontainer = &container->bcontainer; in vfio_spapr_create_window() local 254 pgmask = bcontainer->pgsizes & (pagesize | (pagesize - 1)); in vfio_spapr_create_window() 260 bcontainer->pgsizes); in vfio_spapr_create_window() 329 vfio_spapr_container_add_section_window(VFIOContainerBase *bcontainer, in vfio_spapr_container_add_section_window() argument 333 VFIOContainer *container = container_of(bcontainer, VFIOContainer, in vfio_spapr_container_add_section_window() 334 bcontainer); in vfio_spapr_container_add_section_window() [all …]
|
H A D | cpr.c | 28 bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp) in vfio_cpr_register_container() argument 30 migration_add_notifier_mode(&bcontainer->cpr_reboot_notifier, in vfio_cpr_register_container() 36 void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer) in vfio_cpr_unregister_container() argument 38 migration_remove_notifier(&bcontainer->cpr_reboot_notifier); in vfio_cpr_unregister_container()
|
H A D | helpers.c | 697 GList *l = g_list_last(vdev->bcontainer->iova_ranges); in vfio_device_get_aw_bits()
|
H A D | pci.c | 2514 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 | 56 VFIOContainerBase *bcontainer; member 64 VFIOContainerBase *bcontainer; member 73 int vfio_container_dma_map(VFIOContainerBase *bcontainer, 76 int vfio_container_dma_unmap(VFIOContainerBase *bcontainer, 79 bool vfio_container_add_section_window(VFIOContainerBase *bcontainer, 82 void vfio_container_del_section_window(VFIOContainerBase *bcontainer, 84 int vfio_container_set_dirty_page_tracking(VFIOContainerBase *bcontainer, 86 int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer, 89 GList *vfio_container_get_iova_ranges(const VFIOContainerBase *bcontainer); 92 vfio_container_get_page_size_mask(const VFIOContainerBase *bcontainer) in vfio_container_get_page_size_mask() argument [all …]
|
H A D | vfio-common.h | 84 VFIOContainerBase bcontainer; member 109 VFIOContainerBase bcontainer; member 124 VFIOContainerBase *bcontainer; member 230 VFIOContainerBase *bcontainer); 259 bool vfio_cpr_register_container(VFIOContainerBase *bcontainer, Error **errp); 260 void vfio_cpr_unregister_container(VFIOContainerBase *bcontainer); 300 vfio_devices_all_running_and_mig_active(const VFIOContainerBase *bcontainer); 302 vfio_devices_all_device_dirty_tracking(const VFIOContainerBase *bcontainer); 303 int vfio_devices_query_dirty_bitmap(const VFIOContainerBase *bcontainer, 305 int vfio_get_dirty_bitmap(const VFIOContainerBase *bcontainer, uint64_t iova,
|
/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()
|