Message ID | 20240906061115.522074-1-adamli@os.amperecomputing.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net/mlx5: Node-aware allocation for mlx5_buf_list | expand |
On Fri, Sep 06, 2024 at 06:11:15AM +0000, Adam Li wrote: > Allocation for mlx5_frag_buf.frags[i].buf is node-aware. > Make mlx5_frag_buf.frags allocation node-aware too. > > Signed-off-by: Adam Li <adamli@os.amperecomputing.com> > Reviewed-by: Christoph Lameter (Ampere) <cl@linux.com> > --- > drivers/net/ethernet/mellanox/mlx5/core/alloc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Hi Saeed, Very sorry for the slow reply. On 9/11/2024 4:45 AM, Saeed Mahameed wrote: > On 06 Sep 06:11, Adam Li wrote: >> Allocation for mlx5_frag_buf.frags[i].buf is node-aware. >> Make mlx5_frag_buf.frags allocation node-aware too. >> > > Why ? buf is accessed by the device but "frags" only accessed by CPU. > Yes, this patch hopes to minimize CPU cross node memory access. I observed 'frags' is accessed on RX path from mlx5e_alloc_rx_mpwqe(). >> Signed-off-by: Adam Li <adamli@os.amperecomputing.com> >> Reviewed-by: Christoph Lameter (Ampere) <cl@linux.com> >> --- >> drivers/net/ethernet/mellanox/mlx5/core/alloc.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c >> index 6aca004e88cd..fda17b41ff17 100644 >> --- a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c >> +++ b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c >> @@ -79,8 +79,8 @@ int mlx5_frag_buf_alloc_node(struct mlx5_core_dev *dev, int size, >> buf->size = size; >> buf->npages = DIV_ROUND_UP(size, PAGE_SIZE); >> buf->page_shift = PAGE_SHIFT; >> - buf->frags = kcalloc(buf->npages, sizeof(struct mlx5_buf_list), >> - GFP_KERNEL); >> + buf->frags = kcalloc_node(buf->npages, sizeof(struct mlx5_buf_list), >> + GFP_KERNEL, node); >> if (!buf->frags) >> goto err_out; >> >> -- >> 2.25.1 >> >> Thanks, -adam
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c index 6aca004e88cd..fda17b41ff17 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c @@ -79,8 +79,8 @@ int mlx5_frag_buf_alloc_node(struct mlx5_core_dev *dev, int size, buf->size = size; buf->npages = DIV_ROUND_UP(size, PAGE_SIZE); buf->page_shift = PAGE_SHIFT; - buf->frags = kcalloc(buf->npages, sizeof(struct mlx5_buf_list), - GFP_KERNEL); + buf->frags = kcalloc_node(buf->npages, sizeof(struct mlx5_buf_list), + GFP_KERNEL, node); if (!buf->frags) goto err_out;