]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: engine - remove {prepare,unprepare}_crypt_hardware callbacks
authorOvidiu Panait <ovidiu.panait.oss@gmail.com>
Fri, 11 Jul 2025 18:29:32 +0000 (21:29 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 18 Jul 2025 10:52:00 +0000 (20:52 +1000)
The {prepare,unprepare}_crypt_hardware callbacks were added back in 2016
by commit 735d37b5424b ("crypto: engine - Introduce the block request
crypto engine framework"), but they were never implemented by any driver.
Remove them as they are unused.

Since the 'engine->idling' and 'was_busy' flags are no longer needed,
remove them as well.

Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Documentation/crypto/crypto_engine.rst
crypto/crypto_engine.c
include/crypto/internal/engine.h

index d562ea17d99411b196e3e04e75b9424fc26e4f94..7ef850e28016aa7e399ad265232080946276a934 100644 (file)
@@ -36,12 +36,6 @@ engine using ``crypto_engine_stop()`` and destroy the engine with
 Before transferring any request, you have to fill the context enginectx by
 providing functions for the following:
 
-* ``prepare_crypt_hardware``: Called once before any prepare functions are
-  called.
-
-* ``unprepare_crypt_hardware``: Called once after all unprepare functions have
-  been called.
-
 * ``prepare_cipher_request``/``prepare_hash_request``: Called before each
   corresponding request is performed. If some processing or other preparatory
   work is required, do it here.
index 8a2400f240d4ed011c510bb5ebed44a26c89d6ec..18e1689efe127ca29b8faf4f9dee775d92046745 100644 (file)
@@ -74,7 +74,6 @@ static void crypto_pump_requests(struct crypto_engine *engine,
        struct crypto_engine_alg *alg;
        struct crypto_engine_op *op;
        unsigned long flags;
-       bool was_busy = false;
        int ret;
 
        spin_lock_irqsave(&engine->queue_lock, flags);
@@ -83,12 +82,6 @@ static void crypto_pump_requests(struct crypto_engine *engine,
        if (!engine->retry_support && engine->cur_req)
                goto out;
 
-       /* If another context is idling then defer */
-       if (engine->idling) {
-               kthread_queue_work(engine->kworker, &engine->pump_requests);
-               goto out;
-       }
-
        /* Check if the engine queue is idle */
        if (!crypto_queue_len(&engine->queue) || !engine->running) {
                if (!engine->busy)
@@ -102,15 +95,6 @@ static void crypto_pump_requests(struct crypto_engine *engine,
                }
 
                engine->busy = false;
-               engine->idling = true;
-               spin_unlock_irqrestore(&engine->queue_lock, flags);
-
-               if (engine->unprepare_crypt_hardware &&
-                   engine->unprepare_crypt_hardware(engine))
-                       dev_err(engine->dev, "failed to unprepare crypt hardware\n");
-
-               spin_lock_irqsave(&engine->queue_lock, flags);
-               engine->idling = false;
                goto out;
        }
 
@@ -129,22 +113,11 @@ start_request:
        if (!engine->retry_support)
                engine->cur_req = async_req;
 
-       if (engine->busy)
-               was_busy = true;
-       else
+       if (!engine->busy)
                engine->busy = true;
 
        spin_unlock_irqrestore(&engine->queue_lock, flags);
 
-       /* Until here we get the request need to be encrypted successfully */
-       if (!was_busy && engine->prepare_crypt_hardware) {
-               ret = engine->prepare_crypt_hardware(engine);
-               if (ret) {
-                       dev_err(engine->dev, "failed to prepare crypt hardware\n");
-                       goto req_err_1;
-               }
-       }
-
        alg = container_of(async_req->tfm->__crt_alg,
                           struct crypto_engine_alg, base);
        op = &alg->op;
@@ -474,7 +447,6 @@ struct crypto_engine *crypto_engine_alloc_init_and_set(struct device *dev,
        engine->rt = rt;
        engine->running = false;
        engine->busy = false;
-       engine->idling = false;
        engine->retry_support = retry_support;
        engine->priv_data = dev;
 
index 8da1a13619c9f667eba29981a0b3d3aa55fb05f7..f19ef376833f391d8dfb98d20c387c45c59bdd58 100644 (file)
@@ -21,7 +21,6 @@ struct device;
 /*
  * struct crypto_engine - crypto hardware engine
  * @name: the engine name
- * @idling: the engine is entering idle state
  * @busy: request pump is busy
  * @running: the engine is on working
  * @retry_support: indication that the hardware allows re-execution
@@ -31,12 +30,6 @@ struct device;
  * @list: link with the global crypto engine list
  * @queue_lock: spinlock to synchronise access to request queue
  * @queue: the crypto queue of the engine
- * @prepare_crypt_hardware: a request will soon arrive from the queue
- * so the subsystem requests the driver to prepare the hardware
- * by issuing this call
- * @unprepare_crypt_hardware: there are currently no more requests on the
- * queue so the subsystem notifies the driver that it may relax the
- * hardware by issuing this call
  * @kworker: kthread worker struct for request pump
  * @pump_requests: work struct for scheduling work to the request pump
  * @priv_data: the engine private data
@@ -44,7 +37,6 @@ struct device;
  */
 struct crypto_engine {
        char                    name[ENGINE_NAME_LEN];
-       bool                    idling;
        bool                    busy;
        bool                    running;
 
@@ -56,9 +48,6 @@ struct crypto_engine {
        struct crypto_queue     queue;
        struct device           *dev;
 
-       int (*prepare_crypt_hardware)(struct crypto_engine *engine);
-       int (*unprepare_crypt_hardware)(struct crypto_engine *engine);
-
        struct kthread_worker           *kworker;
        struct kthread_work             pump_requests;