1*aa90d775SCédric Le Goater /* 2*aa90d775SCédric Le Goater * VFIO container 3*aa90d775SCédric Le Goater * 4*aa90d775SCédric Le Goater * Copyright Red Hat, Inc. 2025 5*aa90d775SCédric Le Goater * 6*aa90d775SCédric Le Goater * SPDX-License-Identifier: GPL-2.0-or-later 7*aa90d775SCédric Le Goater */ 8*aa90d775SCédric Le Goater 9*aa90d775SCédric Le Goater #ifndef HW_VFIO_CONTAINER_H 10*aa90d775SCédric Le Goater #define HW_VFIO_CONTAINER_H 11*aa90d775SCédric Le Goater 12*aa90d775SCédric Le Goater #include "hw/vfio/vfio-container-base.h" 13*aa90d775SCédric Le Goater 14*aa90d775SCédric Le Goater typedef struct VFIOContainer VFIOContainer; 15*aa90d775SCédric Le Goater typedef struct VFIODevice VFIODevice; 16*aa90d775SCédric Le Goater 17*aa90d775SCédric Le Goater typedef struct VFIOGroup { 18*aa90d775SCédric Le Goater int fd; 19*aa90d775SCédric Le Goater int groupid; 20*aa90d775SCédric Le Goater VFIOContainer *container; 21*aa90d775SCédric Le Goater QLIST_HEAD(, VFIODevice) device_list; 22*aa90d775SCédric Le Goater QLIST_ENTRY(VFIOGroup) next; 23*aa90d775SCédric Le Goater QLIST_ENTRY(VFIOGroup) container_next; 24*aa90d775SCédric Le Goater bool ram_block_discard_allowed; 25*aa90d775SCédric Le Goater } VFIOGroup; 26*aa90d775SCédric Le Goater 27*aa90d775SCédric Le Goater typedef struct VFIOContainer { 28*aa90d775SCédric Le Goater VFIOContainerBase bcontainer; 29*aa90d775SCédric Le Goater int fd; /* /dev/vfio/vfio, empowered by the attached groups */ 30*aa90d775SCédric Le Goater unsigned iommu_type; 31*aa90d775SCédric Le Goater QLIST_HEAD(, VFIOGroup) group_list; 32*aa90d775SCédric Le Goater } VFIOContainer; 33*aa90d775SCédric Le Goater 34*aa90d775SCédric Le Goater OBJECT_DECLARE_SIMPLE_TYPE(VFIOContainer, VFIO_IOMMU_LEGACY); 35*aa90d775SCédric Le Goater 36*aa90d775SCédric Le Goater #endif /* HW_VFIO_CONTAINER_H */ 37