aboutsummaryrefslogtreecommitdiff
path: root/drivers/vfio
diff options
context:
space:
mode:
authorGravatar Yishai Hadas <yishaih@nvidia.com> 2023-02-08 17:22:34 +0200
committerGravatar Alex Williamson <alex.williamson@redhat.com> 2023-02-09 11:43:06 -0700
commitce06a7000f0e9ad1ea5f55129ed964a7888d6e1c (patch)
treee796e2629fda0cb43e65293399a4b905d6389849 /drivers/vfio
parentvfio: no need to pass kvm pointer during device open (diff)
downloadlinux-ce06a7000f0e9ad1ea5f55129ed964a7888d6e1c.tar.gz
linux-ce06a7000f0e9ad1ea5f55129ed964a7888d6e1c.tar.bz2
linux-ce06a7000f0e9ad1ea5f55129ed964a7888d6e1c.zip
vfio/mlx5: Fix range size calculation upon tracker creation
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@nvidia.com> Link: https://lore.kernel.org/r/20230208152234.32370-1-yishaih@nvidia.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'drivers/vfio')
-rw-r--r--drivers/vfio/pci/mlx5/cmd.c4
1 files 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 >