For a typical Linux server, probably there are several hardware modules. For example, numa node0 has a compressor, numa node2 has a same module. Some drivers are automatically using the module near the CPU calling acomp_alloc. But it isn't necessarily correct. Just like memory allocation API like kmalloc and kmalloc_node. Similar optimization may be done for crypto. -v2: * fix kern-doc and some codingstyle issues according to Jonathan's comment * patch 3/3 is rebased againest "[PATCH] mm/zswap: careful error path implementation in comp_prepare"[1] [1] https://lkml.org/lkml/2020/6/22/347 Barry Song (3): crypto: permit users to specify numa node of acomp hardware crypto: hisilicon/zip - permit users to specify NUMA node mm/zswap: allocate acomp on the numa node committing acomp_req crypto/acompress.c | 8 ++++++++ crypto/api.c | 22 ++++++++++++++-------- crypto/internal.h | 23 +++++++++++++++++++---- drivers/crypto/hisilicon/zip/zip.h | 2 +- drivers/crypto/hisilicon/zip/zip_crypto.c | 6 +++--- drivers/crypto/hisilicon/zip/zip_main.c | 5 +++-- include/crypto/acompress.h | 18 ++++++++++++++++++ include/linux/crypto.h | 2 ++ mm/zswap.c | 2 +- 9 files changed, 69 insertions(+), 19 deletions(-) -- 2.27.0