在 2025/5/19 下午1:57, Herbert Xu 写道:
On Tue, May 06, 2025 at 11:19:44AM +0800, Qunqin Zhao wrote:+static int loongson_rng_init(struct crypto_tfm *tfm) +{ + struct loongson_rng_ctx *ctx = crypto_tfm_ctx(tfm); + struct loongson_rng *rng; + int ret = -EBUSY; + + mutex_lock(&rng_devices.lock); + list_for_each_entry(rng, &rng_devices.list, list) { + if (!rng->is_used) { + rng->is_used = true; + ctx->rng = rng; + ret = 0; + break; + } + } + mutex_unlock(&rng_devices.lock); + + return ret; +}This isn't right. The number of TFMs in the system is unlimited. You should not pair each tfm with an individual hardwre device.
Then the HISI TRNG driver isn't a right demo?
If you want to do load-balancing you could certainly pick a device per tfm, but each device must be able to support an unlimited number of tfms.
This can also avoid concurrent access to a device, otherwise i need to add mutex_lock/unlock in generate and seed callback. Thanks, Qunqin.
Cheers,
