/* Find available queues */
        ccp->qim = 0;
        qmr = ioread32(ccp->io_regs + Q_MASK_REG);
-       for (i = 0; i < MAX_HW_QUEUES; i++) {
+       for (i = 0; (i < MAX_HW_QUEUES) && (ccp->cmd_q_count < ccp->max_q_count); i++) {
                if (!(qmr & (1 << i)))
                        continue;
 
 
 /*
  * AMD Cryptographic Coprocessor (CCP) driver
  *
- * Copyright (C) 2016,2017 Advanced Micro Devices, Inc.
+ * Copyright (C) 2016,2019 Advanced Micro Devices, Inc.
  *
  * Author: Gary R Hook <gary.hook@amd.com>
  */
 
-#include <linux/module.h>
 #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>
 
        /* Find available queues */
        qmr = ioread32(ccp->io_regs + Q_MASK_REG);
-       for (i = 0; i < MAX_HW_QUEUES; i++) {
-
+       for (i = 0; (i < MAX_HW_QUEUES) && (ccp->cmd_q_count < ccp->max_q_count); i++) {
                if (!(qmr & (1 << i)))
                        continue;
 
 
  * Author: Gary R Hook <gary.hook@amd.com>
  */
 
+#include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/kthread.h>
 #include <linux/sched.h>
 
 #include "ccp-dev.h"
 
+/* Limit CCP use to a specifed number of queues per device */
+static unsigned int nqueues = 0;
+module_param(nqueues, uint, 0444);
+MODULE_PARM_DESC(nqueues, "Number of queues per CCP (minimum 1; default: all available)");
+
 struct ccp_tasklet_data {
        struct completion completion;
        struct ccp_cmd *cmd;
                goto e_err;
        sp->ccp_data = ccp;
 
+       if (!nqueues || (nqueues > MAX_HW_QUEUES))
+               ccp->max_q_count = MAX_HW_QUEUES;
+       else
+               ccp->max_q_count = nqueues;
+
        ccp->vdata = (struct ccp_vdata *)sp->dev_vdata->ccp_vdata;
        if (!ccp->vdata || !ccp->vdata->version) {
                ret = -ENODEV;
 
         */
        struct ccp_cmd_queue cmd_q[MAX_HW_QUEUES];
        unsigned int cmd_q_count;
+       unsigned int max_q_count;
 
        /* Support for the CCP True RNG
         */