For a typical Linux server, probably there are multiple ZIP 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. -v3: move to use kzalloc_node according to Herbert's comment -v2: cleanup according to Jonathan Cameron's comment 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[1] [1] This patch is againest a zswap patch which has not been merged yet: "[PATCH v3] mm/zswap: move to use crypto_acomp API for hardware acceleration" https://lkml.org/lkml/2020/6/26/95 crypto/acompress.c | 8 ++++++++ crypto/api.c | 24 ++++++++++++++--------- 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, 70 insertions(+), 20 deletions(-) -- 2.27.0