[PATCH v4 0/7] Refactor OCXL driver to allow external drivers to use it

From: Alastair D'Silva
Date: Wed Mar 27 2019 - 01:32:29 EST


From: Alastair D'Silva <alastair@xxxxxxxxxxx>

This series reworks the OpenCAPI driver to split frontend
(driver interactions) from backend (hardware interactions).

This allows external drivers to utilise the core of the
generic OpenCAPI driver to communicate with specific
OpenCAPI hardware.

This series is bisectable.

Changelog:
V4:
- For: 'ocxl: Create a clear delineation between ocxl backend & frontend'
- Reword non-RCU comment to reflect info struct
- Inline returns from err label in afu_open()
- ocxl_file_make_(in)visibile & ocxl_sysfs_(un)register use info
directly, rather than fetching in from the AFU. This, together with
a delayed ocxl_afu_set_private(), make it clearer that
ocxl_file_register() must succeed for cleanup code to be called
- Remove stray ocxl_free_afu() prototype from header
- For: 'ocxl: Allow external drivers to use OpenCAPI contexts'
- Merge ocxl_context_init & ocxl_context_alloc
- Add missing opaque struct ocxl_context
- For: 'ocxl: move event_fd handling to frontend'
- Set missed free_private value in irq struct
- Change goto unlock to fall-through comment
- Clean stray whitespace
- Mention that free_private can be NULL in ocxl_irq_set_handler docs
V3:
- For: 'ocxl: Create a clear delineation between ocxl backend & frontend'
- Integrate Frederick Barrat's suggestions
- Further cleanup on error paths
- Remove release handler for AFU private data
- Make ocxl_file_make_(in)visibile static & call from ocxl_file_(un)register
V2:
- Reorder patches as some required structs that were only available later
- Add dev.release implementation for ocxl_file_info to address warning on
driver unload (ocxl: Create a clear delineation...)
- Set output var irq_id in ocxl_afu_irq_alloc (ocxl: afu_irq only deals...)
- Bump copyright year (ocxl: Provide global MMIO accessors...,
ocxl: Split pci.c)

Alastair D'Silva (7):
ocxl: Split pci.c
ocxl: Don't pass pci_dev around
ocxl: Create a clear delineation between ocxl backend & frontend
ocxl: Allow external drivers to use OpenCAPI contexts
ocxl: afu_irq only deals with IRQ IDs, not offsets
ocxl: move event_fd handling to frontend
ocxl: Provide global MMIO accessors for external drivers

drivers/misc/ocxl/Makefile | 3 +-
drivers/misc/ocxl/afu_irq.c | 102 +++---
drivers/misc/ocxl/context.c | 31 +-
drivers/misc/ocxl/core.c | 574 ++++++++++++++++++++++++++++++
drivers/misc/ocxl/file.c | 177 ++++++---
drivers/misc/ocxl/mmio.c | 234 ++++++++++++
drivers/misc/ocxl/ocxl_internal.h | 39 +-
drivers/misc/ocxl/pci.c | 565 ++---------------------------
drivers/misc/ocxl/sysfs.c | 54 +--
drivers/misc/ocxl/trace.h | 12 +-
include/misc/ocxl.h | 314 +++++++++++++++-
11 files changed, 1390 insertions(+), 715 deletions(-)
create mode 100644 drivers/misc/ocxl/core.c
create mode 100644 drivers/misc/ocxl/mmio.c

--
2.20.1