On Wed, 8 Feb 2023 17:22:34 +0200 Yishai Hadas <yishaih@xxxxxxxxxx> wrote: > Fix range size calculation to include the last byte of each range. > > In addition, log round up the length of the total ranges to be stricter. > > Fixes: c1d050b0d169 ("vfio/mlx5: Create and destroy page tracker object") > Signed-off-by: Yishai Hadas <yishaih@xxxxxxxxxx> > --- > drivers/vfio/pci/mlx5/cmd.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/vfio/pci/mlx5/cmd.c b/drivers/vfio/pci/mlx5/cmd.c > index 5161d845c478..deed156e6165 100644 > --- a/drivers/vfio/pci/mlx5/cmd.c > +++ b/drivers/vfio/pci/mlx5/cmd.c > @@ -830,7 +830,7 @@ static int mlx5vf_create_tracker(struct mlx5_core_dev *mdev, > node = interval_tree_iter_first(ranges, 0, ULONG_MAX); > for (i = 0; i < num_ranges; i++) { > void *addr_range_i_base = range_list_ptr + record_size * i; > - unsigned long length = node->last - node->start; > + unsigned long length = node->last - node->start + 1; > > MLX5_SET64(page_track_range, addr_range_i_base, start_address, > node->start); > @@ -840,7 +840,7 @@ static int mlx5vf_create_tracker(struct mlx5_core_dev *mdev, > } > > WARN_ON(node); > - log_addr_space_size = ilog2(total_ranges_len); > + log_addr_space_size = ilog2(roundup_pow_of_two(total_ranges_len)); > if (log_addr_space_size < > (MLX5_CAP_ADV_VIRTUALIZATION(mdev, pg_track_log_min_addr_space)) || > log_addr_space_size > Applied to vfio next branch for v6.3. Thanks, Alex