1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2 /* Copyright (c) 2024 NVIDIA Corporation & Affiliates */ 3 4 #ifndef MLX5HWS_BUDDY_H_ 5 #define MLX5HWS_BUDDY_H_ 6 7 struct mlx5hws_buddy_mem { 8 unsigned long **bitmap; 9 unsigned int *num_free; 10 u32 max_order; 11 }; 12 13 struct mlx5hws_buddy_mem *mlx5hws_buddy_create(u32 max_order); 14 15 void mlx5hws_buddy_cleanup(struct mlx5hws_buddy_mem *buddy); 16 17 int mlx5hws_buddy_alloc_mem(struct mlx5hws_buddy_mem *buddy, u32 order); 18 19 void mlx5hws_buddy_free_mem(struct mlx5hws_buddy_mem *buddy, u32 seg, u32 order); 20 21 #endif /* MLX5HWS_BUDDY_H_ */ 22