Re: [PATCH v3 1/2] cxl: Add mechanism for delivering AFU driver specific events

From: Andrew Donnellan
Date: Tue Mar 08 2016 - 03:01:12 EST

On 08/03/16 12:48, Ian Munsie wrote:
From: Ian Munsie <imunsie@xxxxxxxxxxx>

This adds an afu_driver_ops structure with event_pending and
deliver_event callbacks. An AFU driver such as cxlflash can fill these
out and associate it with a context to enable passing custom AFU
specific events to userspace.

The cxl driver will call event_pending() during poll, select, read, etc.
calls to check if an AFU driver specific event is pending, and will call
deliver_event() to deliver that event. This way, the cxl driver takes
care of all the usual locking semantics around these calls and handles
all the generic cxl events, so that the AFU driver only needs to worry
about it's own events.

The deliver_event() call is passed a struct cxl_event buffer to fill in.
The header will already be filled in for an AFU driver event, and the
AFU driver is expected to expand the header.size as necessary (up to
max_size, defined by struct cxl_event_afu_driver_reserved) and fill out
it's own information.

Since AFU drivers provide their own means for userspace to obtain the
AFU file descriptor (i.e. cxlflash uses an ioctl on their scsi file
descriptor to obtain the AFU file descriptor) and the generic cxl driver
will never use this event, the ABI of the event is up to each individual
AFU driver.

Signed-off-by: Ian Munsie <imunsie@xxxxxxxxxxx>

Reviewed-by: Andrew Donnellan <andrew.donnellan@xxxxxxxxxxx>

Andrew Donnellan Software Engineer, OzLabs
andrew.donnellan@xxxxxxxxxxx Australia Development Lab, Canberra
+61 2 6201 8874 (work) IBM Australia Limited