[10/11] crypto: ccp - Add a module parameter to control registration for DMA
diff mbox series

Message ID 156140457814.116890.11773936937983757340.stgit@sosrh3.amd.com
State Changes Requested
Delegated to: Herbert Xu
Headers show
Series
  • Add module parameters to control CCP activation
Related show

Commit Message

Gary R Hook June 24, 2019, 7:29 p.m. UTC
The CCP driver is able to act as a DMA engine. Add a module parameter that
allows this feature to be enabled/disabled.

Signed-off-by: Gary R Hook <gary.hook@amd.com>
---
 drivers/crypto/ccp/ccp-dev-v5.c |   11 +++++++----
 drivers/crypto/ccp/ccp-dev.h    |    1 +
 drivers/crypto/ccp/sp-pci.c     |    8 ++++++++
 3 files changed, 16 insertions(+), 4 deletions(-)

Comments

Tom Lendacky June 24, 2019, 10:45 p.m. UTC | #1
On 6/24/19 2:29 PM, Hook, Gary wrote:
> The CCP driver is able to act as a DMA engine. Add a module parameter that
> allows this feature to be enabled/disabled.
> 
> Signed-off-by: Gary R Hook <gary.hook@amd.com>
> ---
>  drivers/crypto/ccp/ccp-dev-v5.c |   11 +++++++----
>  drivers/crypto/ccp/ccp-dev.h    |    1 +
>  drivers/crypto/ccp/sp-pci.c     |    8 ++++++++
>  3 files changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
> index ffd546b951b6..dfd803f6fb55 100644
> --- a/drivers/crypto/ccp/ccp-dev-v5.c
> +++ b/drivers/crypto/ccp/ccp-dev-v5.c
> @@ -976,9 +976,11 @@ static int ccp5_init(struct ccp_device *ccp)
>  		goto e_kthread;
>  
>  	/* Register the DMA engine support */
> -	ret = ccp_dmaengine_register(ccp);
> -	if (ret)
> -		goto e_hwrng;
> +	if (ccp_register_dma()) {
> +		ret = ccp_dmaengine_register(ccp);
> +		if (ret)
> +			goto e_hwrng;
> +	}
>  
>  #ifdef CONFIG_CRYPTO_DEV_CCP_DEBUGFS
>  	/* Set up debugfs entries */
> @@ -1013,7 +1015,8 @@ static void ccp5_destroy(struct ccp_device *ccp)
>  	unsigned int i;
>  
>  	/* Unregister the DMA engine */
> -	ccp_dmaengine_unregister(ccp);
> +	if (ccp_register_dma())
> +		ccp_dmaengine_unregister(ccp);
>  
>  	/* Unregister the RNG */
>  	ccp_unregister_rng(ccp);
> diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h
> index cd1bd78d95cc..323f7d8ce454 100644
> --- a/drivers/crypto/ccp/ccp-dev.h
> +++ b/drivers/crypto/ccp/ccp-dev.h
> @@ -647,6 +647,7 @@ int ccp_register_rng(struct ccp_device *ccp);
>  void ccp_unregister_rng(struct ccp_device *ccp);
>  int ccp_dmaengine_register(struct ccp_device *ccp);
>  void ccp_dmaengine_unregister(struct ccp_device *ccp);
> +unsigned int ccp_register_dma(void);
>  
>  void ccp5_debugfs_setup(struct ccp_device *ccp);
>  void ccp5_debugfs_destroy(void);
> diff --git a/drivers/crypto/ccp/sp-pci.c b/drivers/crypto/ccp/sp-pci.c
> index 86dee2a66f00..5b0a9c145c5a 100644
> --- a/drivers/crypto/ccp/sp-pci.c
> +++ b/drivers/crypto/ccp/sp-pci.c
> @@ -57,6 +57,10 @@ static unsigned int nqueues = MAX_HW_QUEUES;
>  module_param(nqueues, uint, 0444);
>  MODULE_PARM_DESC(nqueues, "Number of queues per CCP (default: 5)");
>  
> +static unsigned int registerdma = 1;
> +module_param(registerdma, uint, 0444);
> +MODULE_PARM_DESC(registerdma, "Register services with the DMA engine (default: 1)");

Same comment as earlier, this can live in the CCP related files. Also,
only doing this for v5, not v3 too?

Thanks,
Tom

> +
>  #define COMMA   ','
>  static void ccp_parse_pci_buses(void)
>  {
> @@ -154,6 +158,10 @@ unsigned int ccp_get_nqueues_param(void) {
>  	return nqueues;
>  }
>  
> +unsigned int ccp_register_dma(void) {
> +	return registerdma;
> +}
> +
>  #define MSIX_VECTORS			2
>  
>  struct sp_pci {
>

Patch
diff mbox series

diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
index ffd546b951b6..dfd803f6fb55 100644
--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -976,9 +976,11 @@  static int ccp5_init(struct ccp_device *ccp)
 		goto e_kthread;
 
 	/* Register the DMA engine support */
-	ret = ccp_dmaengine_register(ccp);
-	if (ret)
-		goto e_hwrng;
+	if (ccp_register_dma()) {
+		ret = ccp_dmaengine_register(ccp);
+		if (ret)
+			goto e_hwrng;
+	}
 
 #ifdef CONFIG_CRYPTO_DEV_CCP_DEBUGFS
 	/* Set up debugfs entries */
@@ -1013,7 +1015,8 @@  static void ccp5_destroy(struct ccp_device *ccp)
 	unsigned int i;
 
 	/* Unregister the DMA engine */
-	ccp_dmaengine_unregister(ccp);
+	if (ccp_register_dma())
+		ccp_dmaengine_unregister(ccp);
 
 	/* Unregister the RNG */
 	ccp_unregister_rng(ccp);
diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h
index cd1bd78d95cc..323f7d8ce454 100644
--- a/drivers/crypto/ccp/ccp-dev.h
+++ b/drivers/crypto/ccp/ccp-dev.h
@@ -647,6 +647,7 @@  int ccp_register_rng(struct ccp_device *ccp);
 void ccp_unregister_rng(struct ccp_device *ccp);
 int ccp_dmaengine_register(struct ccp_device *ccp);
 void ccp_dmaengine_unregister(struct ccp_device *ccp);
+unsigned int ccp_register_dma(void);
 
 void ccp5_debugfs_setup(struct ccp_device *ccp);
 void ccp5_debugfs_destroy(void);
diff --git a/drivers/crypto/ccp/sp-pci.c b/drivers/crypto/ccp/sp-pci.c
index 86dee2a66f00..5b0a9c145c5a 100644
--- a/drivers/crypto/ccp/sp-pci.c
+++ b/drivers/crypto/ccp/sp-pci.c
@@ -57,6 +57,10 @@  static unsigned int nqueues = MAX_HW_QUEUES;
 module_param(nqueues, uint, 0444);
 MODULE_PARM_DESC(nqueues, "Number of queues per CCP (default: 5)");
 
+static unsigned int registerdma = 1;
+module_param(registerdma, uint, 0444);
+MODULE_PARM_DESC(registerdma, "Register services with the DMA engine (default: 1)");
+
 #define COMMA   ','
 static void ccp_parse_pci_buses(void)
 {
@@ -154,6 +158,10 @@  unsigned int ccp_get_nqueues_param(void) {
 	return nqueues;
 }
 
+unsigned int ccp_register_dma(void) {
+	return registerdma;
+}
+
 #define MSIX_VECTORS			2
 
 struct sp_pci {