mock_viommu
struct mock_viommu *mock_viommu;
static inline struct mock_viommu *to_mock_viommu(struct iommufd_viommu *viommu)
return container_of(viommu, struct mock_viommu, core);
struct mock_viommu *mock_viommu;
struct mock_viommu *viommu;
struct mock_viommu *new_viommu = NULL;
new_viommu = to_mock_nested(domain)->mock_viommu;
struct mock_viommu *mock_viommu = to_mock_viommu(viommu);
if (mock_viommu->mmap_offset)
iommufd_viommu_destroy_mmap(&mock_viommu->core,
mock_viommu->mmap_offset);
free_pages((unsigned long)mock_viommu->page, 1);
mutex_destroy(&mock_viommu->queue_mutex);
struct mock_viommu *mock_viommu = to_mock_viommu(viommu);
mock_nested->mock_viommu = mock_viommu;
struct mock_viommu *mock_viommu = mock_hw_queue->mock_viommu;
mutex_lock(&mock_viommu->queue_mutex);
mock_viommu->hw_queue[mock_hw_queue->index] = NULL;
mutex_unlock(&mock_viommu->queue_mutex);
struct mock_viommu *mock_viommu = to_mock_viommu(hw_queue->viommu);
mutex_lock(&mock_viommu->queue_mutex);
if (mock_viommu->hw_queue[index]) {
prev = mock_viommu->hw_queue[index - 1];
if (base_addr_pa != iommu_iova_to_phys(&mock_viommu->s2_parent->domain,
mock_hw_queue->mock_viommu = mock_viommu;
mock_viommu->hw_queue[index] = mock_hw_queue;
mutex_unlock(&mock_viommu->queue_mutex);
return VIOMMU_STRUCT_SIZE(struct mock_viommu, core);
struct mock_viommu *mock_viommu = to_mock_viommu(viommu);
mock_viommu->page =
if (!mock_viommu->page)
rc = iommufd_viommu_alloc_mmap(&mock_viommu->core,
__pa(mock_viommu->page),
&mock_viommu->mmap_offset);
*mock_viommu->page = data.in_data;
data.out_mmap_offset = mock_viommu->mmap_offset;
mutex_init(&mock_viommu->queue_mutex);
mock_viommu->s2_parent = to_mock_domain(parent_domain);
iommufd_viommu_destroy_mmap(&mock_viommu->core,
mock_viommu->mmap_offset);
free_pages((unsigned long)mock_viommu->page, 1);
FIXTURE_VARIANT_ADD(iommufd_viommu, mock_viommu)