[PATCH 04/11] crypto: ccp - module parameter to limit the number of enabled CCPs

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

 



Provide the ability to constrain the total number of enabled devices in
the system. Once maxdev devices have been configured, additional
devices are ignored.

Signed-off-by: Gary R Hook <gary.hook@xxxxxxx>
---
 drivers/crypto/ccp/sp-pci.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/crypto/ccp/sp-pci.c b/drivers/crypto/ccp/sp-pci.c
index c167c4671f45..b81493810689 100644
--- a/drivers/crypto/ccp/sp-pci.c
+++ b/drivers/crypto/ccp/sp-pci.c
@@ -36,6 +36,13 @@
 /*
  * Limit CCP use to a specifed number of queues per device.
  */
+
+static struct mutex devcount_mutex ____cacheline_aligned;
+static unsigned int devcount = 0;
+static unsigned int maxdev = 0;
+module_param(maxdev, uint, 0444);
+MODULE_PARM_DESC(maxdev, "Total number of devices to register");
+
 static unsigned int nqueues = MAX_HW_QUEUES;
 module_param(nqueues, uint, 0444);
 MODULE_PARM_DESC(nqueues, "Number of queues per CCP (default: 5)");
@@ -193,6 +200,9 @@ static int sp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	int bar_mask;
 	int ret;
 
+	if (maxdev && (devcount >= maxdev)) /* Too many devices? */
+		return 0;
+
 	ret = -ENOMEM;
 	sp = sp_alloc_struct(dev);
 	if (!sp)
@@ -261,6 +271,11 @@ static int sp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if (ret)
 		goto e_err;
 
+	/* Increase count of devices */
+	mutex_lock(&devcount_mutex);
+	devcount++;
+	mutex_unlock(&devcount_mutex);
+
 	return 0;
 
 e_err:
@@ -374,6 +389,7 @@ static struct pci_driver sp_pci_driver = {
 
 int sp_pci_init(void)
 {
+        mutex_init(&devcount_mutex);
 	return pci_register_driver(&sp_pci_driver);
 }
 





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

  Powered by Linux