This is a note to let you know that I've just added the patch titled crypto: ccp - Use only the relevant interrupt bits to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: crypto-ccp-use-only-the-relevant-interrupt-bits.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 56467cb11cf8ae4db9003f54b3d3425b5f07a10a Mon Sep 17 00:00:00 2001 From: Gary R Hook <gary.hook@xxxxxxx> Date: Thu, 20 Apr 2017 15:24:09 -0500 Subject: crypto: ccp - Use only the relevant interrupt bits From: Gary R Hook <gary.hook@xxxxxxx> commit 56467cb11cf8ae4db9003f54b3d3425b5f07a10a upstream. Each CCP queue can product interrupts for 4 conditions: operation complete, queue empty, error, and queue stopped. This driver only works with completion and error events. Signed-off-by: Gary R Hook <gary.hook@xxxxxxx> Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/crypto/ccp/ccp-dev-v5.c | 9 +++++---- drivers/crypto/ccp/ccp-dev.h | 5 ++--- 2 files changed, 7 insertions(+), 7 deletions(-) --- a/drivers/crypto/ccp/ccp-dev-v5.c +++ b/drivers/crypto/ccp/ccp-dev-v5.c @@ -740,7 +740,7 @@ static int ccp5_init(struct ccp_device * ioread32(cmd_q->reg_status); /* Clear the interrupts */ - iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); + iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status); } dev_dbg(dev, "Requesting an IRQ...\n"); @@ -824,7 +824,7 @@ static int ccp5_init(struct ccp_device * /* Enable interrupts */ for (i = 0; i < ccp->cmd_q_count; i++) { cmd_q = &ccp->cmd_q[i]; - iowrite32(ALL_INTERRUPTS, cmd_q->reg_int_enable); + iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_int_enable); } dev_dbg(dev, "Registering device...\n"); @@ -884,7 +884,7 @@ static void ccp5_destroy(struct ccp_devi iowrite32(cmd_q->qcontrol & ~CMD5_Q_RUN, cmd_q->reg_control); /* Disable the interrupts */ - iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); + iowrite32(SUPPORTED_INTERRUPTS, cmd_q->reg_interrupt_status); /* Clear the interrupt status */ iowrite32(0x00, cmd_q->reg_int_enable); @@ -944,7 +944,8 @@ static irqreturn_t ccp5_irq_handler(int cmd_q->int_rcvd = 1; /* Acknowledge the interrupt and wake the kthread */ - iowrite32(ALL_INTERRUPTS, cmd_q->reg_interrupt_status); + iowrite32(SUPPORTED_INTERRUPTS, + cmd_q->reg_interrupt_status); wake_up_interruptible(&cmd_q->int_queue); } } --- a/drivers/crypto/ccp/ccp-dev.h +++ b/drivers/crypto/ccp/ccp-dev.h @@ -109,9 +109,8 @@ #define INT_COMPLETION 0x1 #define INT_ERROR 0x2 #define INT_QUEUE_STOPPED 0x4 -#define ALL_INTERRUPTS (INT_COMPLETION| \ - INT_ERROR| \ - INT_QUEUE_STOPPED) +#define INT_EMPTY_QUEUE 0x8 +#define SUPPORTED_INTERRUPTS (INT_COMPLETION | INT_ERROR) #define LSB_REGION_WIDTH 5 #define MAX_LSB_CNT 8 Patches currently in stable-queue which might be from gary.hook@xxxxxxx are queue-4.9/crypto-ccp-use-only-the-relevant-interrupt-bits.patch queue-4.9/crypto-ccp-change-isr-handler-method-for-a-v3-ccp.patch queue-4.9/crypto-ccp-change-isr-handler-method-for-a-v5-ccp.patch