mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-07 13:43:51 +00:00
848e447e00
Support the following ioctls for CDX devices: - VFIO_DEVICE_GET_IRQ_INFO - VFIO_DEVICE_SET_IRQS This allows user to set an eventfd for cdx device interrupts and trigger this interrupt eventfd from userspace. All CDX device interrupts are MSIs. The MSIs are allocated from the CDX-MSI domain. Signed-off-by: Nipun Gupta <nipun.gupta@amd.com> Reviewed-by: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com> Link: https://lore.kernel.org/r/20240423111021.1686144-2-nipun.gupta@amd.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
49 lines
964 B
C
49 lines
964 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2022-2023, Advanced Micro Devices, Inc.
|
|
*/
|
|
|
|
#ifndef VFIO_CDX_PRIVATE_H
|
|
#define VFIO_CDX_PRIVATE_H
|
|
|
|
#define VFIO_CDX_OFFSET_SHIFT 40
|
|
|
|
static inline u64 vfio_cdx_index_to_offset(u32 index)
|
|
{
|
|
return ((u64)(index) << VFIO_CDX_OFFSET_SHIFT);
|
|
}
|
|
|
|
struct vfio_cdx_irq {
|
|
u32 flags;
|
|
u32 count;
|
|
int irq_no;
|
|
struct eventfd_ctx *trigger;
|
|
char *name;
|
|
};
|
|
|
|
struct vfio_cdx_region {
|
|
u32 flags;
|
|
u32 type;
|
|
u64 addr;
|
|
resource_size_t size;
|
|
};
|
|
|
|
struct vfio_cdx_device {
|
|
struct vfio_device vdev;
|
|
struct vfio_cdx_region *regions;
|
|
struct vfio_cdx_irq *cdx_irqs;
|
|
u32 flags;
|
|
#define BME_SUPPORT BIT(0)
|
|
u32 msi_count;
|
|
u8 config_msi;
|
|
};
|
|
|
|
int vfio_cdx_set_irqs_ioctl(struct vfio_cdx_device *vdev,
|
|
u32 flags, unsigned int index,
|
|
unsigned int start, unsigned int count,
|
|
void *data);
|
|
|
|
void vfio_cdx_irqs_cleanup(struct vfio_cdx_device *vdev);
|
|
|
|
#endif /* VFIO_CDX_PRIVATE_H */
|