mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 10:46:33 +00:00
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>
This commit is contained in:
parent
b0d2d5697e
commit
ce06a7000f
@ -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 >
|
||||
|
Loading…
x
Reference in New Issue
Block a user