• Maxime Méré's avatar
    crypto: stm32/hash - add full DMA support for stm32mpx · 3525fe47
    Maxime Méré authored
    Due to a lack of alignment in the data sent by requests, the actual DMA
    support of the STM32 hash driver is only working with digest calls.
    This patch, based on the algorithm used in the driver omap-sham.c,
    allows for the usage of DMA in any situation.
    
    It has been functionally tested on STM32MP15, STM32MP13 and STM32MP25.
    
    By checking the performance of this new driver with OpenSSL, the
    following results were found:
    
    Performance:
    
    (datasize: 4096, number of hashes performed in 10s)
    
    |type   |no DMA    |DMA support|software  |
    |-------|----------|-----------|----------|
    |md5    |13873.56k |10958.03k  |71163.08k |
    |sha1   |13796.15k |10729.47k  |39670.58k |
    |sha224 |13737.98k |10775.76k  |22094.64k |
    |sha256 |13655.65k |10872.01k  |22075.39k |
    
    CPU Usage:
    
    (algorithm used: sha256, computation time: 20s, measurement taken at
    ~10s)
    
    |datasize  |no DMA |DMA  | software |
    |----------|-------|-----|----------|
    |  2048    | 56%   | 49% | 50%      |
    |  4096    | 54%   | 46% | 50%      |
    |  8192    | 53%   | 40% | 50%      |
    | 16384    | 53%   | 33% | 50%      |
    
    Note: this update doesn't change the driver performance without DMA.
    
    As shown, performance with DMA is slightly lower than without, but in
    most cases, it will save CPU time.
    Signed-off-by: default avatarMaxime Méré <maxime.mere@foss.st.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    3525fe47
stm32-hash.c 62 KB