News: 0001647338

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

Linux's Qualcomm Crypto Accelerator Driver "Harmful" And Being Disabled: Slower Than CPU, History Of Bugs

([Hardware] 6 Hours Ago Qualcomm Crypto Engine Accelerator)


The Qualcomm Crypto Engine Accelerator "QCE" driver is being disabled within the Linux 7.3 kernel over a number of issues, including being slower than having the CPU cores handling cryptographic work and a history of different driver bugs. Plus race conditions causing security issues and other challenges.

The Qualcomm Crypto Engine driver was merged to the mainline Linux kernel back in 2014 as the cryptographic processor built into Snapdragon and embedded processors designed for handling data encryption, hashing, and integrity checking. But queued up into the cryptographic subsystem's "cryptodev" Git code ahead of Linux 7.3 is now marking this driver as "BROKEN" and removing it from the default ARMv7 and AArch64/ARM64 kernel builds. The rationale for marking it as BROKEN to disable it comes down to a number of issues:

"crypto: qce - Mark QCE as BROKEN

This driver is harmful:

- It is much slower than the CPU.

- It Has a history of bugs.

- It does not have exclusive access to the hardware, causing races with the secure world.

- It register its implementations with too low a cra_priority for them to be actually used.

Therefore, disable it to ensure that nobody builds it into kernels they intend to ship.

In the future, the driver will be used for processing restricted media content. However, the kernel does not currently support this. Since the driver will have future uses, allow building it if COMPILE_TEST is enabled."

So there is hope for the driver moving forward that it can be adapted for dealing with processing of restricted media content (though not everyone will be excited about that use case...) but for now it's being flagged as broken and should be avoided until its deficiencies are addressed.

The change is queued via [1]this commit to cryptodev.



[1] https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git/commit/?id=df373d39c6f038d176af303ae72f02c7c70b953d



No question is so difficult as one to which the answer is obvious.