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