This patch introduces a notify framework for IOMMUSVAContext.sva_notifiers.
Signed-off-by: Liu, Yi L <yi.l....@linux.intel.com> --- hw/vfio/common.c | 1 + include/hw/vfio/vfio-common.h | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 06277d2..1cc96df 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -1019,6 +1019,7 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as, container->fd = fd; QLIST_INIT(&container->giommu_mr_list); QLIST_INIT(&container->hostwin_list); + QLIST_INIT(&container->gsva_ctx_list); if (ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU) || ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1v2_IOMMU)) { bool v2 = !!ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1v2_IOMMU); diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h index 702a085..4c16b4c 100644 --- a/include/hw/vfio/vfio-common.h +++ b/include/hw/vfio/vfio-common.h @@ -29,6 +29,7 @@ #ifdef CONFIG_LINUX #include <linux/vfio.h> #endif +#include "hw/core/pasid.h" #define ERR_PREFIX "vfio error: %s: " #define WARN_PREFIX "vfio warning: %s: " @@ -88,6 +89,7 @@ typedef struct VFIOContainer { * future */ QLIST_HEAD(, VFIOGuestIOMMUMR) giommu_mr_list; + QLIST_HEAD(, VFIOGuestIOMMUSVAContext) gsva_ctx_list; QLIST_HEAD(, VFIOHostDMAWindow) hostwin_list; QLIST_HEAD(, VFIOGroup) group_list; QLIST_ENTRY(VFIOContainer) next; @@ -101,6 +103,13 @@ typedef struct VFIOGuestIOMMUMR { QLIST_ENTRY(VFIOGuestIOMMUMR) giommu_next; } VFIOGuestIOMMUMR; +typedef struct VFIOGuestIOMMUSVAContext { + VFIOContainer *container; + IOMMUSVAContext *sva_ctx; + IOMMUSVANotifier n; + QLIST_ENTRY(VFIOGuestIOMMUSVAContext) gsva_ctx_next; +} VFIOGuestIOMMUSVAContext; + typedef struct VFIOHostDMAWindow { hwaddr min_iova; hwaddr max_iova; -- 1.9.1