linux/drivers/crypto/ccp
Gary R Hook f8d05099ec crypto: ccp - Change ISR handler method for a v5 CCP
commit 6263b51eb3 upstream.

The CCP has the ability to perform several operations simultaneously,
but only one interrupt.  When implemented as a PCI device and using
MSI-X/MSI interrupts, use a tasklet model to service interrupts. By
disabling and enabling interrupts from the CCP, coupled with the
queuing that tasklets provide, we can ensure that all events
(occurring on the device) are recognized and serviced.

This change fixes a problem wherein 2 or more busy queues can cause
notification bits to change state while a (CCP) interrupt is being
serviced, but after the queue state has been evaluated. This results
in the event being 'lost' and the queue hanging, waiting to be
serviced. Since the status bits are never fully de-asserted, the
CCP never generates another interrupt (all bits zero -> one or more
bits one), and no further CCP operations will be executed.

Signed-off-by: Gary R Hook <gary.hook@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-05-20 14:28:37 +02:00
..
ccp-crypto-aes-cmac.c crypto: ccp - Prevent information leakage on export 2016-04-15 22:13:56 +08:00
ccp-crypto-aes-xts.c crypto: ccp - Use skcipher for fallback 2016-07-01 23:45:08 +08:00
ccp-crypto-aes.c crypto: ccp - CCP versioning support 2016-03-11 21:19:16 +08:00
ccp-crypto-main.c crypto: ccp - Replace BUG_ON with WARN_ON and a return code 2015-10-08 21:42:15 +08:00
ccp-crypto-sha.c crypto: ccp - Let a v5 CCP provide the same function as v3 2016-08-09 18:47:16 +08:00
ccp-crypto.h crypto: ccp - Use skcipher for fallback 2016-07-01 23:45:08 +08:00
ccp-dev-v3.c crypto: ccp - Change ISR handler method for a v3 CCP 2017-05-20 14:28:37 +02:00
ccp-dev-v5.c crypto: ccp - Change ISR handler method for a v5 CCP 2017-05-20 14:28:37 +02:00
ccp-dev.c crypto: ccp - Assign DMA commands to the channel's CCP 2017-03-30 09:41:26 +02:00
ccp-dev.h crypto: ccp - Change ISR handler method for a v3 CCP 2017-05-20 14:28:37 +02:00
ccp-dmaengine.c crypto: ccp - Assign DMA commands to the channel's CCP 2017-03-30 09:41:26 +02:00
ccp-ops.c crypto: ccp - Let a v5 CCP provide the same function as v3 2016-08-09 18:47:16 +08:00
ccp-pci.c crypto: ccp - Change ISR handler method for a v3 CCP 2017-05-20 14:28:37 +02:00
ccp-platform.c crypto: ccp - Add abstraction for device-specific calls 2016-03-11 21:19:17 +08:00
Kconfig crypto: ccp - Ensure all dependencies are specified 2016-04-25 19:14:51 +08:00
Makefile crypto: ccp - Let a v5 CCP provide the same function as v3 2016-08-09 18:47:16 +08:00