Re: [PATCH 02/11] crypto: ccp - Add a module parameter to specify a queue count

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/24/19 2:28 PM, Hook, Gary wrote:
> Add a module parameter to limit the number of queues per CCP. The default
> (nqueues=0) is to set up every available queue on each device.

This doesn't match the code...  nqueues defaults to MAX_HW_QUEUES below.
The way it is coded nqueues=0 and nqueues=1 are exactly the same.

> 
> The count of queues starts from the first one found on the device (which
> is based on the device ID).
> 
> Signed-off-by: Gary R Hook <gary.hook@xxxxxxx>
> ---
>  drivers/crypto/ccp/ccp-dev-v5.c |    9 ++++++++-
>  drivers/crypto/ccp/ccp-dev.h    |   15 +++++++++++++++
>  drivers/crypto/ccp/sp-pci.c     |   15 ++++++++++++++-
>  3 files changed, 37 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/crypto/ccp/ccp-dev-v5.c b/drivers/crypto/ccp/ccp-dev-v5.c
> index a5bd11831b80..ffd546b951b6 100644
> --- a/drivers/crypto/ccp/ccp-dev-v5.c
> +++ b/drivers/crypto/ccp/ccp-dev-v5.c
> @@ -14,12 +14,15 @@
>  #include <linux/kernel.h>
>  #include <linux/pci.h>
>  #include <linux/kthread.h>
> -#include <linux/debugfs.h>
>  #include <linux/dma-mapping.h>
>  #include <linux/interrupt.h>
>  #include <linux/compiler.h>
>  #include <linux/ccp.h>
>  
> +#ifdef CONFIG_CRYPTO_DEV_CCP_DEBUGFS
> +#include <linux/debugfs.h>
> +#endif
> +

This belongs in the first patch.

>  #include "ccp-dev.h"
>  
>  /* Allocate the requested number of contiguous LSB slots
> @@ -784,6 +787,7 @@ static irqreturn_t ccp5_irq_handler(int irq, void *data)
>  
>  static int ccp5_init(struct ccp_device *ccp)
>  {
> +	unsigned int nqueues = ccp_get_nqueues_param();
>  	struct device *dev = ccp->dev;
>  	struct ccp_cmd_queue *cmd_q;
>  	struct dma_pool *dma_pool;
> @@ -856,6 +860,9 @@ static int ccp5_init(struct ccp_device *ccp)
>  		init_waitqueue_head(&cmd_q->int_queue);
>  
>  		dev_dbg(dev, "queue #%u available\n", i);
> +
> +		if (ccp->cmd_q_count >= nqueues)
> +			break;

In reference to my comment above, this is where nqueues=0 or 1 results
in the same thing happening.

>  	}
>  
>  	if (ccp->cmd_q_count == 0) {
> diff --git a/drivers/crypto/ccp/ccp-dev.h b/drivers/crypto/ccp/ccp-dev.h
> index 6810b65c1939..d812446213ee 100644
> --- a/drivers/crypto/ccp/ccp-dev.h
> +++ b/drivers/crypto/ccp/ccp-dev.h
> @@ -632,6 +632,8 @@ struct ccp5_desc {
>  void ccp_add_device(struct ccp_device *ccp);
>  void ccp_del_device(struct ccp_device *ccp);
>  
> +unsigned int ccp_get_nqueues_param(void);
> +
>  extern void ccp_log_error(struct ccp_device *, int);
>  
>  struct ccp_device *ccp_alloc_struct(struct sp_device *sp);
> @@ -671,4 +673,17 @@ extern const struct ccp_vdata ccpv3;
>  extern const struct ccp_vdata ccpv5a;
>  extern const struct ccp_vdata ccpv5b;
>  
> +
> +#ifdef CONFIG_CRYPTO_DEV_CCP_DEBUGFS
> +
> +/* DebugFS stuff */
> +typedef struct _modparam {
> +                char *paramname;
> +                void *param;
> +                umode_t parammode;
> +        } modparam_t;
> +extern void ccp_debugfs_register_modparams(struct dentry *parentdir);
> +
> +#endif
> +

You've created this typedef/struct (which should be just a struct, not
a typedef) which isn't used and reference to a function that doesn't exist
yet.

>  #endif
> diff --git a/drivers/crypto/ccp/sp-pci.c b/drivers/crypto/ccp/sp-pci.c
> index 41bce0a3f4bb..3fab79585f72 100644
> --- a/drivers/crypto/ccp/sp-pci.c
> +++ b/drivers/crypto/ccp/sp-pci.c
> @@ -1,7 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
>  /*
>   * AMD Secure Processor device driver
>   *
> - * Copyright (C) 2013,2018 Advanced Micro Devices, Inc.
> + * Copyright (C) 2013,2019 Advanced Micro Devices, Inc.
>   *
>   * Author: Tom Lendacky <thomas.lendacky@xxxxxxx>
>   * Author: Gary R Hook <gary.hook@xxxxxxx>
> @@ -27,6 +29,17 @@
>  #include "ccp-dev.h"
>  #include "psp-dev.h"
>  
> +/*
> + * Limit CCP use to a specifed number of queues per device.
> + */
> +static unsigned int nqueues = MAX_HW_QUEUES;
> +module_param(nqueues, uint, 0444);
> +MODULE_PARM_DESC(nqueues, "Number of queues per CCP (default: 5)");
> +
> +unsigned int ccp_get_nqueues_param(void) {
> +	return nqueues;
> +}
> +

You should define this module parameter in the file where it is used and
then you won't need the function.

Thanks,
Tom

>  #define MSIX_VECTORS			2
>  
>  struct sp_pci {
> 




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]

  Powered by Linux