1ac28680dSCédric Le Goater /* 2ac28680dSCédric Le Goater * VFIO helpers 3ac28680dSCédric Le Goater * 4ac28680dSCédric Le Goater * Copyright Red Hat, Inc. 2025 5ac28680dSCédric Le Goater * 6ac28680dSCédric Le Goater * SPDX-License-Identifier: GPL-2.0-or-later 7ac28680dSCédric Le Goater */ 8ac28680dSCédric Le Goater 9ac28680dSCédric Le Goater #ifndef HW_VFIO_VFIO_HELPERS_H 10ac28680dSCédric Le Goater #define HW_VFIO_VFIO_HELPERS_H 11ac28680dSCédric Le Goater 12ac28680dSCédric Le Goater #ifdef CONFIG_LINUX 13ac28680dSCédric Le Goater #include <linux/vfio.h> 14ac28680dSCédric Le Goater 15*c3fbdba1SCédric Le Goater extern int vfio_kvm_device_fd; 16*c3fbdba1SCédric Le Goater 17ac28680dSCédric Le Goater struct vfio_info_cap_header * 18ac28680dSCédric Le Goater vfio_get_cap(void *ptr, uint32_t cap_offset, uint16_t id); 19ac28680dSCédric Le Goater struct vfio_info_cap_header * 20ac28680dSCédric Le Goater vfio_get_device_info_cap(struct vfio_device_info *info, uint16_t id); 21ac28680dSCédric Le Goater struct vfio_info_cap_header * 22ac28680dSCédric Le Goater vfio_get_region_info_cap(struct vfio_region_info *info, uint16_t id); 23f6d7f5d0SCédric Le Goater struct vfio_info_cap_header * 24f6d7f5d0SCédric Le Goater vfio_get_iommu_type1_info_cap(struct vfio_iommu_type1_info *info, uint16_t id); 25f6d7f5d0SCédric Le Goater bool vfio_get_info_dma_avail(struct vfio_iommu_type1_info *info, 26f6d7f5d0SCédric Le Goater unsigned int *avail); 27ac28680dSCédric Le Goater #endif 28ac28680dSCédric Le Goater 29ac28680dSCédric Le Goater int vfio_bitmap_alloc(VFIOBitmap *vbmap, hwaddr size); 30005b8d10SCédric Le Goater struct vfio_device_info *vfio_get_device_info(int fd); 31ac28680dSCédric Le Goater 3254525613SCédric Le Goater int vfio_kvm_device_add_fd(int fd, Error **errp); 3354525613SCédric Le Goater int vfio_kvm_device_del_fd(int fd, Error **errp); 3454525613SCédric Le Goater 35ac28680dSCédric Le Goater #endif /* HW_VFIO_VFIO_HELPERS_H */ 36