• Tom Zanussi's avatar
    dmaengine: idxd: add callback support for iaa crypto · aa8d18be
    Tom Zanussi authored
    Create a lightweight callback interface to allow idxd sub-drivers to
    be notified when work sent to idxd wqs has completed.
    
    For a sub-driver to be notified of work completion, it needs to:
    
      - Set the descriptor's 'Request Completion Interrupt'
        (IDXD_OP_FLAG_RCI)
    
      - Set the sub-driver desc_complete() callback when registering the
        sub-driver e.g.:
    
          struct idxd_device_driver my_drv = {
                .probe = my_probe,
                .desc_complete = my_complete,
          }
    
      - Set the sub-driver-specific context in the sub-driver's descriptor
        e.g:
    
          idxd_desc->crypto.req = req;
          idxd_desc->crypto.tfm = tfm;
          idxd_desc->crypto.src_addr = src_addr;
          idxd_desc->crypto.dst_addr = dst_addr;
    
    When the work completes and the completion irq fires, idxd will invoke
    the desc_complete() callback with pointers to the descriptor, context,
    and completion_type.
    Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
    Signed-off-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
    Reviewed-by: default avatarFenghua Yu <fenghua.yu@intel.com>
    Acked-by: default avatarVinod Koul <vkoul@kernel.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    aa8d18be
idxd.h 20 KB