Jason Wang
2021-May-31 03:02 UTC
[PATCH 1/2] vdpa/mlx5: Support creating resources with uid == 0
? 2021/5/30 ??3:54, Eli Cohen ??:> Currently all resources must be created with uid != 0 which is essential > userspace processes allocating virtquueue resources. Since this is a > kernel implementation, it is perfectly legal to open resources with > uid == 0. > > In case frimware supports, avoid allocating user context.Typo "frimware". Otherwise. Acked-by: Jason Wang <jasowang at redhat.com> (I don't see any code to check the firmware capability, is this intended?) Thanks> > Signed-off-by: Eli Cohen <elic at nvidia.com> > --- > drivers/vdpa/mlx5/core/resources.c | 6 ++++++ > include/linux/mlx5/mlx5_ifc.h | 4 +++- > 2 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/vdpa/mlx5/core/resources.c b/drivers/vdpa/mlx5/core/resources.c > index 6521cbd0f5c2..836ab9ef0fa6 100644 > --- a/drivers/vdpa/mlx5/core/resources.c > +++ b/drivers/vdpa/mlx5/core/resources.c > @@ -54,6 +54,9 @@ static int create_uctx(struct mlx5_vdpa_dev *mvdev, u16 *uid) > void *in; > int err; > > + if (MLX5_CAP_GEN(mvdev->mdev, umem_uid_0)) > + return 0; > + > /* 0 means not supported */ > if (!MLX5_CAP_GEN(mvdev->mdev, log_max_uctx)) > return -EOPNOTSUPP; > @@ -79,6 +82,9 @@ static void destroy_uctx(struct mlx5_vdpa_dev *mvdev, u32 uid) > u32 out[MLX5_ST_SZ_DW(destroy_uctx_out)] = {}; > u32 in[MLX5_ST_SZ_DW(destroy_uctx_in)] = {}; > > + if (!uid) > + return; > + > MLX5_SET(destroy_uctx_in, in, opcode, MLX5_CMD_OP_DESTROY_UCTX); > MLX5_SET(destroy_uctx_in, in, uid, uid); > > diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h > index 9c68b2da14c6..606d2aeacad4 100644 > --- a/include/linux/mlx5/mlx5_ifc.h > +++ b/include/linux/mlx5/mlx5_ifc.h > @@ -1487,7 +1487,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { > u8 uar_4k[0x1]; > u8 reserved_at_241[0x9]; > u8 uar_sz[0x6]; > - u8 reserved_at_250[0x8]; > + u8 reserved_at_248[0x2]; > + u8 umem_uid_0[0x1]; > + u8 reserved_at_250[0x5]; > u8 log_pg_sz[0x8]; > > u8 bf[0x1];
Jason Wang
2021-May-31 03:06 UTC
[PATCH 1/2] vdpa/mlx5: Support creating resources with uid == 0
? 2021/5/31 ??11:02, Jason Wang ??:> > ? 2021/5/30 ??3:54, Eli Cohen ??: >> Currently all resources must be created with uid != 0 which is essential >> userspace processes allocating virtquueue resources. Since this is a >> kernel implementation, it is perfectly legal to open resources with >> uid == 0. >> >> In case frimware supports, avoid allocating user context. > > > Typo "frimware". > > Otherwise. > > Acked-by: Jason Wang <jasowang at redhat.com> > > (I don't see any code to check the firmware capability, is this > intended?)Speak too fast. I see the MLX5_CAP_GEN(), so it's fine. Thanks> > Thanks > > >> >> Signed-off-by: Eli Cohen <elic at nvidia.com> >> --- >> ? drivers/vdpa/mlx5/core/resources.c | 6 ++++++ >> ? include/linux/mlx5/mlx5_ifc.h????? | 4 +++- >> ? 2 files changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/vdpa/mlx5/core/resources.c >> b/drivers/vdpa/mlx5/core/resources.c >> index 6521cbd0f5c2..836ab9ef0fa6 100644 >> --- a/drivers/vdpa/mlx5/core/resources.c >> +++ b/drivers/vdpa/mlx5/core/resources.c >> @@ -54,6 +54,9 @@ static int create_uctx(struct mlx5_vdpa_dev *mvdev, >> u16 *uid) >> ????? void *in; >> ????? int err; >> ? +??? if (MLX5_CAP_GEN(mvdev->mdev, umem_uid_0)) >> +??????? return 0; >> + >> ????? /* 0 means not supported */ >> ????? if (!MLX5_CAP_GEN(mvdev->mdev, log_max_uctx)) >> ????????? return -EOPNOTSUPP; >> @@ -79,6 +82,9 @@ static void destroy_uctx(struct mlx5_vdpa_dev >> *mvdev, u32 uid) >> ????? u32 out[MLX5_ST_SZ_DW(destroy_uctx_out)] = {}; >> ????? u32 in[MLX5_ST_SZ_DW(destroy_uctx_in)] = {}; >> ? +??? if (!uid) >> +??????? return; >> + >> ????? MLX5_SET(destroy_uctx_in, in, opcode, MLX5_CMD_OP_DESTROY_UCTX); >> ????? MLX5_SET(destroy_uctx_in, in, uid, uid); >> ? diff --git a/include/linux/mlx5/mlx5_ifc.h >> b/include/linux/mlx5/mlx5_ifc.h >> index 9c68b2da14c6..606d2aeacad4 100644 >> --- a/include/linux/mlx5/mlx5_ifc.h >> +++ b/include/linux/mlx5/mlx5_ifc.h >> @@ -1487,7 +1487,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { >> ????? u8???????? uar_4k[0x1]; >> ????? u8???????? reserved_at_241[0x9]; >> ????? u8???????? uar_sz[0x6]; >> -??? u8???????? reserved_at_250[0x8]; >> +??? u8???????? reserved_at_248[0x2]; >> +??? u8???????? umem_uid_0[0x1]; >> +??? u8???????? reserved_at_250[0x5]; >> ????? u8???????? log_pg_sz[0x8]; >> ? ????? u8???????? bf[0x1];