]> git.baikalelectronics.ru Git - kernel.git/commit
net/mlx5: Fix a bug of releasing wrong chunks on > 4K page size systems
authorEran Ben Elisha <eranbe@mellanox.com>
Sun, 3 May 2020 08:01:39 +0000 (11:01 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Fri, 15 May 2020 22:44:15 +0000 (15:44 -0700)
commit92c79fd0d849b830e9624ae44392a0ea49e9dfab
tree92328d715bf1e678bf498b6a7e69a295acd0a625
parentfb7ba13ecabed86557832e1c20ad5d8c548165f4
net/mlx5: Fix a bug of releasing wrong chunks on > 4K page size systems

On systems with page size larger than 4K, a fwp object has few 4K chunks.
Fix a bug in fwp free flow where the chunk address was dropped and
fwp->addr was used instead (first chunk address). This caused a wrong
update of fwp->bitmask which later can cause errors in re-alloc fwp
chunk flow.

In order to fix this it, re-factor the release flow:
- Free 4k: Releases a specific 4k chunk inside the fwp, defined by
  starting address.
- Free fwp: Unconditionally release the whole fwp and its resources.
Free addr will call free fwp if all chunks were released, in order to do
code sharing.

In addition, fix npages to count for all released chunks correctly.

Fixes: 3079fddb43b2 ("net/mlx5: Add support for release all pages event")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c