IB/ehca: Support small QP queues
eHCA2 supports QP queues that can be as small as 512 bytes. This greatly reduces memory overhead for consumers that use lots of QPs with small queues (e.g. RDMA-only QPs). Apart from dealing with firmware, this code needs to manage bite-sized chunks of kernel pages, making sure that no kernel page is shared between different protection domains. Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
This commit is contained in:

committed by
Roland Dreier

parent
0c10f7b79b
commit
e2f81daf23
@@ -181,6 +181,12 @@ static int ehca_create_slab_caches(void)
|
||||
goto create_slab_caches5;
|
||||
}
|
||||
|
||||
ret = ehca_init_small_qp_cache();
|
||||
if (ret) {
|
||||
ehca_gen_err("Cannot create small queue SLAB cache.");
|
||||
goto create_slab_caches6;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC_64K_PAGES
|
||||
ctblk_cache = kmem_cache_create("ehca_cache_ctblk",
|
||||
EHCA_PAGESIZE, H_CB_ALIGNMENT,
|
||||
@@ -188,12 +194,15 @@ static int ehca_create_slab_caches(void)
|
||||
NULL);
|
||||
if (!ctblk_cache) {
|
||||
ehca_gen_err("Cannot create ctblk SLAB cache.");
|
||||
ehca_cleanup_mrmw_cache();
|
||||
goto create_slab_caches5;
|
||||
ehca_cleanup_small_qp_cache();
|
||||
goto create_slab_caches6;
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
|
||||
create_slab_caches6:
|
||||
ehca_cleanup_mrmw_cache();
|
||||
|
||||
create_slab_caches5:
|
||||
ehca_cleanup_av_cache();
|
||||
|
||||
@@ -211,6 +220,7 @@ create_slab_caches2:
|
||||
|
||||
static void ehca_destroy_slab_caches(void)
|
||||
{
|
||||
ehca_cleanup_small_qp_cache();
|
||||
ehca_cleanup_mrmw_cache();
|
||||
ehca_cleanup_av_cache();
|
||||
ehca_cleanup_qp_cache();
|
||||
|
Reference in New Issue
Block a user