drivers/vfio/cdx/intr.c

Source file repositories/reference/linux-study-clean/drivers/vfio/cdx/intr.c

File Facts

System
Linux kernel
Corpus path
drivers/vfio/cdx/intr.c
Extension
.c
Size
4810 bytes
Lines
216
Domain
Driver Families
Bucket
drivers/vfio
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

if (flags & VFIO_IRQ_SET_DATA_NONE) {
			eventfd_signal(vdev->cdx_irqs[i].trigger);
		} else if (flags & VFIO_IRQ_SET_DATA_BOOL) {
			u8 *bools = data;

			if (bools[i - start])
				eventfd_signal(vdev->cdx_irqs[i].trigger);
		}
	}

	return 0;
}

int vfio_cdx_set_irqs_ioctl(struct vfio_cdx_device *vdev,
			    u32 flags, unsigned int index,
			    unsigned int start, unsigned int count,
			    void *data)
{
	if (flags & VFIO_IRQ_SET_ACTION_TRIGGER)
		return vfio_cdx_set_msi_trigger(vdev, index, start,
			  count, flags, data);
	else
		return -EINVAL;
}

/* Free All IRQs for the given device */
void vfio_cdx_irqs_cleanup(struct vfio_cdx_device *vdev)
{
	vfio_cdx_set_msi_trigger(vdev, 0, 0, 0, VFIO_IRQ_SET_DATA_NONE, NULL);
}

Annotation

Implementation Notes