1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2022-2023, Advanced Micro Devices, Inc. 4 */ 5 6 #ifndef VFIO_CDX_PRIVATE_H 7 #define VFIO_CDX_PRIVATE_H 8 9 #define VFIO_CDX_OFFSET_SHIFT 40 10 11 static inline u64 vfio_cdx_index_to_offset(u32 index) 12 { 13 return ((u64)(index) << VFIO_CDX_OFFSET_SHIFT); 14 } 15 16 struct vfio_cdx_irq { 17 u32 flags; 18 u32 count; 19 int irq_no; 20 struct eventfd_ctx *trigger; 21 char *name; 22 }; 23 24 struct vfio_cdx_region { 25 u32 flags; 26 u32 type; 27 u64 addr; 28 resource_size_t size; 29 }; 30 31 struct vfio_cdx_device { 32 struct vfio_device vdev; 33 struct vfio_cdx_region *regions; 34 struct vfio_cdx_irq *cdx_irqs; 35 u32 flags; 36 #define BME_SUPPORT BIT(0) 37 u32 msi_count; 38 u8 config_msi; 39 }; 40 41 int vfio_cdx_set_irqs_ioctl(struct vfio_cdx_device *vdev, 42 u32 flags, unsigned int index, 43 unsigned int start, unsigned int count, 44 void *data); 45 46 void vfio_cdx_irqs_cleanup(struct vfio_cdx_device *vdev); 47 48 #endif /* VFIO_CDX_PRIVATE_H */ 49