kernel_samsung_a53x/drivers/infiniband/hw/hns
Junxian Huang c0f95fbea9 RDMA/hns: Optimize hem allocation performance
[ Upstream commit fe51f6254d81f5a69c31df16353d6539b2b51630 ]

When allocating MTT hem, for each hop level of each hem that is being
allocated, the driver iterates the hem list to find out whether the
bt page has been allocated in this hop level. If not, allocate a new
one and splice it to the list. The time complexity is O(n^2) in worst
cases.

Currently the allocation for-loop uses 'unit' as the step size. This
actually has taken into account the reuse of last-hop-level MTT bt
pages by multiple buffer pages. Thus pages of last hop level will
never have been allocated, so there is no need to iterate the hem list
in last hop level.

Removing this unnecessary iteration can reduce the time complexity to
O(n).

Fixes: 38389eaa4db1 ("RDMA/hns: Add mtr support for mixed multihop addressing")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://patch.msgid.link/20240906093444.3571619-9-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:21:26 +01:00
..
hns_roce_ah.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_alloc.c RDMA/hns: Refactor the hns_roce_buf allocation flow 2024-11-19 12:26:58 +01:00
hns_roce_cmd.c RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_cmd.h RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_common.h RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_cq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_db.c RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_device.h RDMA/hns: Fix missing pagesize and alignment check in FRMR 2024-11-23 23:20:11 +01:00
hns_roce_hem.c RDMA/hns: Optimize hem allocation performance 2024-11-23 23:21:26 +01:00
hns_roce_hem.h RDMA/hns: Use complete parentheses in macros 2024-11-19 12:26:59 +01:00
hns_roce_hw_v1.c RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_hw_v1.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_hw_v2.c RDMA/hns: Modify the print level of CQE error 2024-11-19 12:26:59 +01:00
hns_roce_hw_v2.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_hw_v2_dfx.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_main.c RDMA/hns: Fix incorrect symbol types 2024-11-19 12:26:58 +01:00
hns_roce_mr.c RDMA/hns: Add mapped page count checking for MTR 2024-11-23 23:21:25 +01:00
hns_roce_pd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_qp.c RDMA/hns: Fix spin_unlock_irqrestore() called with IRQs enabled 2024-11-23 23:21:26 +01:00
hns_roce_restrack.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hns_roce_srq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00