private.h 964 B

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