* [PATCH vhost] vdpa/mlx5: Fix oversized null mkey longer than 32bit
@ 2025-02-17 19:44 Dragos Tatulea
2025-02-18 8:14 ` Eugenio Perez Martin
0 siblings, 1 reply; 3+ messages in thread
From: Dragos Tatulea @ 2025-02-17 19:44 UTC (permalink / raw)
To: Michael S . Tsirkin, virtualization
Cc: Dragos Tatulea, Jason Wang, Eugenio Perez Martin, Si-Wei Liu, kvm,
linux-kernel, Gal Pressman, Xuan Zhuo, stable
From: Si-Wei Liu <si-wei.liu@oracle.com>
create_user_mr() has correct code to count the number of null keys
used to fill in a hole for the memory map. However, fill_indir()
does not follow the same to cap the range up to the 1GB limit
correspondinly. Fill in more null keys for the gaps in between,
so that null keys are correctly populated.
Fixes: 94abbccdf291 ("vdpa/mlx5: Add shared memory registration code")
Cc: stable@vger.kernel.org
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
---
drivers/vdpa/mlx5/core/mr.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c
index 8455f08f5d40..61424342c096 100644
--- a/drivers/vdpa/mlx5/core/mr.c
+++ b/drivers/vdpa/mlx5/core/mr.c
@@ -190,9 +190,12 @@ static void fill_indir(struct mlx5_vdpa_dev *mvdev, struct mlx5_vdpa_mr *mkey, v
klm->bcount = cpu_to_be32(klm_bcount(dmr->end - dmr->start));
preve = dmr->end;
} else {
+ u64 bcount = min_t(u64, dmr->start - preve, MAX_KLM_SIZE);
+
klm->key = cpu_to_be32(mvdev->res.null_mkey);
- klm->bcount = cpu_to_be32(klm_bcount(dmr->start - preve));
- preve = dmr->start;
+ klm->bcount = cpu_to_be32(klm_bcount(bcount));
+ preve += bcount;
+
goto again;
}
}
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH vhost] vdpa/mlx5: Fix oversized null mkey longer than 32bit
2025-02-17 19:44 [PATCH vhost] vdpa/mlx5: Fix oversized null mkey longer than 32bit Dragos Tatulea
@ 2025-02-18 8:14 ` Eugenio Perez Martin
2025-02-18 19:43 ` Dragos Tatulea
0 siblings, 1 reply; 3+ messages in thread
From: Eugenio Perez Martin @ 2025-02-18 8:14 UTC (permalink / raw)
To: Dragos Tatulea
Cc: Michael S . Tsirkin, virtualization, Jason Wang, Si-Wei Liu, kvm,
linux-kernel, Gal Pressman, Xuan Zhuo, stable
On Mon, Feb 17, 2025 at 8:45 PM Dragos Tatulea <dtatulea@nvidia.com> wrote:
>
> From: Si-Wei Liu <si-wei.liu@oracle.com>
>
> create_user_mr() has correct code to count the number of null keys
> used to fill in a hole for the memory map. However, fill_indir()
> does not follow the same to cap the range up to the 1GB limit
> correspondinly.
s/correspondinly/correspondingly/g
Sounds to me the logic can be merged in a helper?
Either way,
Acked-by: Eugenio Pérez <eperezma@redhat.com>
Thanks!
> Fill in more null keys for the gaps in between,
> so that null keys are correctly populated.
>
> Fixes: 94abbccdf291 ("vdpa/mlx5: Add shared memory registration code")
> Cc: stable@vger.kernel.org
> Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
> Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
> ---
> drivers/vdpa/mlx5/core/mr.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c
> index 8455f08f5d40..61424342c096 100644
> --- a/drivers/vdpa/mlx5/core/mr.c
> +++ b/drivers/vdpa/mlx5/core/mr.c
> @@ -190,9 +190,12 @@ static void fill_indir(struct mlx5_vdpa_dev *mvdev, struct mlx5_vdpa_mr *mkey, v
> klm->bcount = cpu_to_be32(klm_bcount(dmr->end - dmr->start));
> preve = dmr->end;
> } else {
> + u64 bcount = min_t(u64, dmr->start - preve, MAX_KLM_SIZE);
> +
> klm->key = cpu_to_be32(mvdev->res.null_mkey);
> - klm->bcount = cpu_to_be32(klm_bcount(dmr->start - preve));
> - preve = dmr->start;
> + klm->bcount = cpu_to_be32(klm_bcount(bcount));
> + preve += bcount;
> +
> goto again;
> }
> }
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH vhost] vdpa/mlx5: Fix oversized null mkey longer than 32bit
2025-02-18 8:14 ` Eugenio Perez Martin
@ 2025-02-18 19:43 ` Dragos Tatulea
0 siblings, 0 replies; 3+ messages in thread
From: Dragos Tatulea @ 2025-02-18 19:43 UTC (permalink / raw)
To: Eugenio Perez Martin
Cc: Michael S . Tsirkin, virtualization, Jason Wang, Si-Wei Liu, kvm,
linux-kernel, Gal Pressman, Xuan Zhuo, stable
On 02/18, Eugenio Perez Martin wrote:
> On Mon, Feb 17, 2025 at 8:45 PM Dragos Tatulea <dtatulea@nvidia.com> wrote:
> >
> > From: Si-Wei Liu <si-wei.liu@oracle.com>
> >
> > create_user_mr() has correct code to count the number of null keys
> > used to fill in a hole for the memory map. However, fill_indir()
> > does not follow the same to cap the range up to the 1GB limit
> > correspondinly.
>
> s/correspondinly/correspondingly/g
>
Will fix in v2.
> Sounds to me the logic can be merged in a helper?
>
Not sure if possible in a useful way: the logic in create_user_mr() is
different.
Also: this patch is kept small for stable tre.
> Either way,
>
> Acked-by: Eugenio Pérez <eperezma@redhat.com>
>
Thanks!
>
> > Fill in more null keys for the gaps in between,
> > so that null keys are correctly populated.
> >
> > Fixes: 94abbccdf291 ("vdpa/mlx5: Add shared memory registration code")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
> > Signed-off-by: Dragos Tatulea <dtatulea@nvidia.com>
> > ---
> > drivers/vdpa/mlx5/core/mr.c | 7 +++++--
> > 1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/vdpa/mlx5/core/mr.c b/drivers/vdpa/mlx5/core/mr.c
> > index 8455f08f5d40..61424342c096 100644
> > --- a/drivers/vdpa/mlx5/core/mr.c
> > +++ b/drivers/vdpa/mlx5/core/mr.c
> > @@ -190,9 +190,12 @@ static void fill_indir(struct mlx5_vdpa_dev *mvdev, struct mlx5_vdpa_mr *mkey, v
> > klm->bcount = cpu_to_be32(klm_bcount(dmr->end - dmr->start));
> > preve = dmr->end;
> > } else {
> > + u64 bcount = min_t(u64, dmr->start - preve, MAX_KLM_SIZE);
> > +
> > klm->key = cpu_to_be32(mvdev->res.null_mkey);
> > - klm->bcount = cpu_to_be32(klm_bcount(dmr->start - preve));
> > - preve = dmr->start;
> > + klm->bcount = cpu_to_be32(klm_bcount(bcount));
> > + preve += bcount;
> > +
> > goto again;
> > }
> > }
> > --
> > 2.43.0
> >
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-02-18 19:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-17 19:44 [PATCH vhost] vdpa/mlx5: Fix oversized null mkey longer than 32bit Dragos Tatulea
2025-02-18 8:14 ` Eugenio Perez Martin
2025-02-18 19:43 ` Dragos Tatulea
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox