All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2 0/6] cxl: Add support for Coherent Accelerator Interface Architecture 2.0
@ 2017-03-14 11:08 Christophe Lombard
  2017-03-14 11:08 ` [PATCH V2 1/6] cxl: Remove unused values in bare-metal environment Christophe Lombard
                   ` (6 more replies)
  0 siblings, 7 replies; 20+ messages in thread
From: Christophe Lombard @ 2017-03-14 11:08 UTC (permalink / raw)
  To: linuxppc-dev, fbarrat, imunsie, andrew.donnellan

This series adds support for a cxl card which supports the Coherent
Accelerator Interface Architecture 2.0.

It requires IBM Power9 system and the Power Service Layer, version 9.
The PSL provides the address translation and system memory cache for
CAIA compliant Accelerators.
the PSL attaches to the IBM Processor chip through the PCIe link using
the PSL-specific “CAPI Protocol” Transaction Layer Packets.
The PSL and CAPP communicate using PowerBus packets. 
When using a PCIe link the PCIe Host Bridge (PHB) decodes the CAPI
Protocol Packets from the PSL and forwards them as PowerBus data
packets. The PSL also has an optional DMA feature which allows the AFU
to send native PCIe reads and writes to the Processor.

CAIA 2 introduces new features: 
* There are several similarities among the two programming models:
Dedicated-Process and shared models.
* DMA support
* Nest MMU to handle translation addresses.
* ...

It builds on top of the existing cxl driver for the first version of
CAIA. Today only the bare-metal environment supports these new features.

Compatibility with the CAIA, version 1, allows applications and system
software to migrate from one implementation to another with minor
changes.
Most of the differences are:
* Power Service Layer registers: p1 and p2 registers. These new
registers require reworking The service layer API (in cxl.h).
* Support of Radix mode. Power9 consist of multiple memory management
model. So we need to select the right Translation mechanism mode.
* Dedicated-Shared Process Programming Model
* Process element entry. Structure cxl_process_element_common is
redefined.
* Translation Fault Handling. Only a page fault is now handle by the
driver cxl when a translation fault is occured. 

Roughly 3/4 of the code is common between the two CAIA version. When
the code needs to call a specific implementation, it does so
through an API. The PSL8 and PSL9 implementations each describe
their own definition. See struct cxl_service_layer_ops.

The first 3 patches are mostly cleanup and fixes, separating the
psl8-specific code from the code which will also be used for psl9.
Patches 4 restructure existing code, to easily add the psl
implementation.
Patch 5 and 6 rename and isolate implementation-specific code.
Patch 7 introduces the core of the PSL9-specific code.

Tested on Simulation environment.

Changelog:
v1->v2:
 - integrate comments from Andrew Donnellan and Frederic Barrat 


Christophe Lombard (6):
  cxl: Remove unused values in bare-metal environment.
  cxl: Keep track of mm struct associated with a context
  cxl: Update implementation service layer
  cxl: Rename some psl8 specific functions
  cxl: Isolate few psl8 specific calls
  cxl: Add psl9 specific code

 drivers/misc/cxl/api.c     |  17 ++-
 drivers/misc/cxl/context.c |  67 +++++++--
 drivers/misc/cxl/cxl.h     | 206 ++++++++++++++++++++++-----
 drivers/misc/cxl/debugfs.c |  41 ++++--
 drivers/misc/cxl/fault.c   | 139 ++++++------------
 drivers/misc/cxl/file.c    |  15 +-
 drivers/misc/cxl/guest.c   |  10 +-
 drivers/misc/cxl/irq.c     |  55 +++++++-
 drivers/misc/cxl/native.c  | 331 ++++++++++++++++++++++++++++++++++++-------
 drivers/misc/cxl/pci.c     | 345 +++++++++++++++++++++++++++++++++++++++------
 drivers/misc/cxl/trace.h   |  43 ++++++
 11 files changed, 1004 insertions(+), 265 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-03-21 11:29 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-14 11:08 [PATCH V2 0/6] cxl: Add support for Coherent Accelerator Interface Architecture 2.0 Christophe Lombard
2017-03-14 11:08 ` [PATCH V2 1/6] cxl: Remove unused values in bare-metal environment Christophe Lombard
2017-03-20  1:11   ` Andrew Donnellan
2017-03-20 14:18   ` Frederic Barrat
2017-03-21 11:16   ` Frederic Barrat
2017-03-14 11:08 ` [PATCH V2 2/6] cxl: Keep track of mm struct associated with a context Christophe Lombard
2017-03-20 14:27   ` Frederic Barrat
2017-03-21 11:28   ` Frederic Barrat
2017-03-14 11:08 ` [PATCH V2 3/6] cxl: Update implementation service layer Christophe Lombard
2017-03-20 16:17   ` Frederic Barrat
2017-03-21  2:56     ` Andrew Donnellan
2017-03-14 11:08 ` [PATCH V2 4/6] cxl: Rename some psl8 specific functions Christophe Lombard
2017-03-20 16:26   ` Frederic Barrat
2017-03-21  9:38     ` christophe lombard
2017-03-14 11:08 ` [PATCH V2 5/6] cxl: Isolate few psl8 specific calls Christophe Lombard
2017-03-20 18:15   ` Frederic Barrat
2017-03-14 11:08 ` [PATCH V2 6/6] cxl: Add psl9 specific code Christophe Lombard
2017-03-21 11:21   ` Frederic Barrat
2017-03-21  2:47 ` [PATCH V2 0/6] cxl: Add support for Coherent Accelerator Interface Architecture 2.0 Andrew Donnellan
2017-03-21  9:47   ` christophe lombard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.