*/
static void vfio_user_listener_begin(VFIOContainerBase *bcontainer)
{
- VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer,
- bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(bcontainer);
container->proxy->async_ops = true;
}
static void vfio_user_listener_commit(VFIOContainerBase *bcontainer)
{
- VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer,
- bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(bcontainer);
/* wait here for any async requests sent during the transaction */
container->proxy->async_ops = false;
hwaddr iova, ram_addr_t size,
IOMMUTLBEntry *iotlb, bool unmap_all)
{
- VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer,
- bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(bcontainer);
+
Error *local_err = NULL;
int ret = 0;
ram_addr_t size, void *vaddr, bool readonly,
MemoryRegion *mrp)
{
- VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer,
- bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(bcontainer);
+
int fd = memory_region_get_fd(mrp);
Error *local_err = NULL;
int ret = 0;
static bool vfio_user_setup(VFIOContainerBase *bcontainer, Error **errp)
{
- VFIOUserContainer *container = container_of(bcontainer, VFIOUserContainer,
- bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(bcontainer);
assert(container->proxy->dma_pgsizes != 0);
bcontainer->pgsizes = container->proxy->dma_pgsizes;
goto put_space_exit;
}
- bcontainer = &container->bcontainer;
+ bcontainer = VFIO_IOMMU(container);
ret = ram_block_uncoordinated_discard_disable(true);
if (ret) {
static void vfio_user_container_disconnect(VFIOUserContainer *container)
{
- VFIOContainerBase *bcontainer = &container->bcontainer;
+ VFIOContainerBase *bcontainer = VFIO_IOMMU(container);
VFIOIOMMUClass *vioc = VFIO_IOMMU_GET_CLASS(bcontainer);
VFIOAddressSpace *space = bcontainer->space;
vbasedev->fd = -1;
- vfio_device_prepare(vbasedev, &container->bcontainer, &info);
+ vfio_device_prepare(vbasedev, VFIO_IOMMU(container), &info);
return true;
}
static void vfio_user_device_detach(VFIODevice *vbasedev)
{
- VFIOUserContainer *container = container_of(vbasedev->bcontainer,
- VFIOUserContainer, bcontainer);
+ VFIOUserContainer *container = VFIO_IOMMU_USER(vbasedev->bcontainer);
vfio_device_unprepare(vbasedev);