mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00

TYPE_HOST_IOMMU_DEVICE_IOMMUFD represents a host IOMMU device under iommufd backend. It is abstract, because it is going to be derived into VFIO or VDPA type'd device. It will have its own .get_cap() implementation. TYPE_HOST_IOMMU_DEVICE_IOMMUFD_VFIO is a sub-class of TYPE_HOST_IOMMU_DEVICE_IOMMUFD, represents a VFIO type'd host IOMMU device under iommufd backend. It will be created during VFIO device attaching and passed to vIOMMU. It will have its own .realize() implementation. Opportunistically, add missed header to include/sysemu/iommufd.h. Suggested-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Yi Liu <yi.l.liu@intel.com> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
52 lines
1.5 KiB
C
52 lines
1.5 KiB
C
/*
|
|
* iommufd container backend declaration
|
|
*
|
|
* Copyright (C) 2024 Intel Corporation.
|
|
* Copyright Red Hat, Inc. 2024
|
|
*
|
|
* Authors: Yi Liu <yi.l.liu@intel.com>
|
|
* Eric Auger <eric.auger@redhat.com>
|
|
* Zhenzhong Duan <zhenzhong.duan@intel.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef SYSEMU_IOMMUFD_H
|
|
#define SYSEMU_IOMMUFD_H
|
|
|
|
#include "qom/object.h"
|
|
#include "exec/hwaddr.h"
|
|
#include "exec/cpu-common.h"
|
|
#include "sysemu/host_iommu_device.h"
|
|
|
|
#define TYPE_IOMMUFD_BACKEND "iommufd"
|
|
OBJECT_DECLARE_TYPE(IOMMUFDBackend, IOMMUFDBackendClass, IOMMUFD_BACKEND)
|
|
|
|
struct IOMMUFDBackendClass {
|
|
ObjectClass parent_class;
|
|
};
|
|
|
|
struct IOMMUFDBackend {
|
|
Object parent;
|
|
|
|
/*< protected >*/
|
|
int fd; /* /dev/iommu file descriptor */
|
|
bool owned; /* is the /dev/iommu opened internally */
|
|
uint32_t users;
|
|
|
|
/*< public >*/
|
|
};
|
|
|
|
bool iommufd_backend_connect(IOMMUFDBackend *be, Error **errp);
|
|
void iommufd_backend_disconnect(IOMMUFDBackend *be);
|
|
|
|
bool iommufd_backend_alloc_ioas(IOMMUFDBackend *be, uint32_t *ioas_id,
|
|
Error **errp);
|
|
void iommufd_backend_free_id(IOMMUFDBackend *be, uint32_t id);
|
|
int iommufd_backend_map_dma(IOMMUFDBackend *be, uint32_t ioas_id, hwaddr iova,
|
|
ram_addr_t size, void *vaddr, bool readonly);
|
|
int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t ioas_id,
|
|
hwaddr iova, ram_addr_t size);
|
|
|
|
#define TYPE_HOST_IOMMU_DEVICE_IOMMUFD TYPE_HOST_IOMMU_DEVICE "-iommufd"
|
|
#endif
|