Netdev List
 help / color / mirror / Atom feed
From: netdev-bot+sashiko@kernel.org
To: yishaih@nvidia.com
Cc: jgg@ziepe.ca, leon@kernel.org, linux-rdma@vger.kernel.org,
	netdev@vger.kernel.org, saeedm@nvidia.com, tariqt@nvidia.com,
	mbloch@nvidia.com, kuba@kernel.org, pabeni@redhat.com,
	edumazet@kernel.org, davem@davemloft.net, andrew+netdev@lunn.ch,
	dtatulea@nvidia.com, moshe@nvidia.com, maorg@nvidia.com
Subject: Re: [PATCH rdma-next 04/23] net/mlx5: Add macros for reading log-based caps
Date: Sat, 07 Nov 2026 20:24:44 +0000	[thread overview]
Message-ID: <179408308473.994134.1350427296218795820@kernel.org> (raw)
In-Reply-To: <20261103163949.1554-5-yishaih@nvidia.com>

Thank you for your contribution! Sashiko AI review found more severe
issue(s) in other patches of this series. This mail is only an FYI, in case
you want to address the nit picks below when you respin.

Low priority / nit picks for your consideration:

- [Low] The concern says MLX5_GET_LOGSZ_CLAMP(), MLX5_CAP_GEN_LOGSZ_U32()
  and MLX5_CAP_GEN_LOGSZ_U64() in include/linux/mlx5/device.h are added…

--

net/mlx5: Add macros for reading log-based caps

This commit adds MLX5_GET_LOGSZ_CLAMP() and the MLX5_CAP_GEN_LOGSZ_U32()
and MLX5_CAP_GEN_LOGSZ_U64() accessors to include/linux/mlx5/device.h.
They compute 2^cap for log2-encoded capability fields, with the shift
clamped to the largest shift that is defined for the result type.

> diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
> index 37727b5ab78f2..f45454f65d5c0 100644
> --- a/include/linux/mlx5/device.h
> +++ b/include/linux/mlx5/device.h

[ ... ]

> @@ -47,6 +48,16 @@
>  #error Host endianness not defined
>  #endif
>  
> +/* Largest shift count that is defined behaviour for a value of type @T. */
> +#define __mlx5_max_shift(T) (BITS_PER_TYPE(T) - 1 - is_signed_type(T))
> +
> +/* Calculate 2^@fld from a log2 cap field. Exponents that don't fit in @T
> + * saturate to the largest representable power of two (not to the type
> + * maximum), avoiding undefined shifts.
> + */
> +#define MLX5_GET_LOGSZ_CLAMP(typ, p, fld, T) \
> +	((T)((T)1 << min_t(u32, MLX5_GET(typ, p, fld), __mlx5_max_shift(T))))
> +

[ ... ]

> @@ -1096,6 +1107,15 @@ enum mlx5_qcam_feature_groups {
>  #define MLX5_CAP_GEN_MAX(mdev, cap) \
>  	MLX5_GET(cmd_hca_cap, mdev->caps.hca[MLX5_CAP_GENERAL]->max, cap)
>  
> +/* 2^cap for log2-encoded general caps */
> +#define MLX5_CAP_GEN_LOGSZ_U32(mdev, cap) \
> +	MLX5_GET_LOGSZ_CLAMP(cmd_hca_cap, \
> +			     mdev->caps.hca[MLX5_CAP_GENERAL]->cur, cap, u32)
> +
> +#define MLX5_CAP_GEN_LOGSZ_U64(mdev, cap) \
> +	MLX5_GET_LOGSZ_CLAMP(cmd_hca_cap, \
> +			     mdev->caps.hca[MLX5_CAP_GENERAL]->cur, cap, u64)
> +

[Severity: Low]
This isn't a bug, but MLX5_GET_LOGSZ_CLAMP(), MLX5_CAP_GEN_LOGSZ_U32() and
MLX5_CAP_GEN_LOGSZ_U64() have no callers in this commit.

Their users show up later in the series, in "RDMA/mlx5: Clamp log_max_cq_sz
shift in CQ size checks", "RDMA/mlx5: Clamp log_max_* shifts in QP and WQ
limit checks" and "RDMA/mlx5: Clamp log_max_* shifts in query_device and
ucontext paths". Those patches convert call sites in cq.c, qp.c, main.c,
mad.c and srq.c under drivers/infiniband/hw/mlx5/. For example, in
mlx5_ib_query_device():

    props->max_mr = MLX5_CAP_GEN_LOGSZ_U32(mdev, log_max_mkey);

Could the commit message mention these follow-up users and the reason for
the clamping?

The macro itself looks correct. min_t() limits the shift to 31 for u32 and
to 63 for u64.

The next point is a pre-existing issue that this patch did not introduce.
At the end of the series, net/mlx5 core still open-codes some of these
shifts. One is in get_init_bulk_query_len() and get_max_bulk_query_len()
in fs_counters.c:

    return min_t(int, MLX5_INIT_COUNTERS_BULK,
                 (1 << MLX5_CAP_GEN(dev, log_max_flow_counter_bulk)));

Another is mlx5e_mpwrq_max_num_entries() in en/params.c:

    u32 klm_limit = min(MLX5E_MAX_RQ_NUM_KSMS,
                        1 << MLX5_CAP_GEN(mdev, log_max_klm_list_size));

These shifts are exposed to untrusted firmware values by the earlier patch
"net/mlx5: Add capability filtering in adversarial mode". There,
mlx5_adversarial_filter_general() lets both caps through
MLX5_HCA_CAP_ALLOW without checking their range.

Would it make sense to convert these sites to the new helpers too?

-- 
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261103163949.1554-1-yishaih%40nvidia.com

  reply	other threads:[~2026-11-07 20:24 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-03 16:39 [PATCH rdma-next 00/23] mlx5: Adversarial mode for confidential computing guests Yishai Hadas
2026-11-03 16:39 ` [PATCH rdma-next 01/23] net/mlx5: Add mlx5_trigger_health_work_force() Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 02/23] net/mlx5: Derive adversarial mode from CC guest memory encryption Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 03/23] net/mlx5: Add capability filtering in adversarial mode Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 04/23] net/mlx5: Add macros for reading log-based caps Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko [this message]
2026-11-03 16:39 ` [PATCH rdma-next 05/23] RDMA/mlx5: Reject QP transport types not enabled by FW capability Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 06/23] RDMA/mlx5: Require IB_QPT_DRIVER for the DC vendor QP types Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 07/23] RDMA/mlx5: Derive mlx5_ib_adversarial_mode global from mlx5_core adversarial API Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 08/23] RDMA/core: Suppress kverbs_provider for adversarial_mode devices Yishai Hadas
2026-11-03 19:03   ` Jacob Moroni
2026-11-03 19:07     ` Jason Gunthorpe
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 09/23] RDMA/mlx5: Remove duplicate mlx5_ib_umr_context struct Yishai Hadas
2026-11-03 16:39 ` [PATCH rdma-next 10/23] RDMA/mlx5: Introduce per-CQ poll_one hook in mlx5_ib_cq Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 11/23] RDMA/mlx5: Add shadow FIFO infrastructure for UMR completions Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 12/23] RDMA/mlx5: Verify UMR CQ polling against a hostile NIC Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 13/23] RDMA/mlx5: Keep the UMR QP failed once a forged CQE is detected Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 14/23] RDMA/mlx5: Block generic CQ poll path in adversarial mode Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 15/23] RDMA/core: Set the CQ comp_handler after its poll context is set up Yishai Hadas
2026-11-07 20:24   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 16/23] RDMA/mlx5: Ignore completion events for a CQ without a handler Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 17/23] RDMA/mlx5: Validate EQE port and GSI port before indexing devr.ports[] Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 18/23] RDMA/mlx5: Validate firmware RQ/SQ state before sqrq_trans[] lookup Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 19/23] RDMA/mlx5: Clamp log_max_cq_sz shift in CQ size checks Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 20/23] RDMA/mlx5: Clamp log_max_* shifts in QP and WQ limit checks Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 21/23] RDMA/mlx5: Clamp log_max_* shifts in query_device and ucontext paths Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko
2026-11-03 16:39 ` [PATCH rdma-next 22/23] RDMA/core: Report and enforce adversarial mode via GET_CONTEXT Yishai Hadas
2026-11-03 16:39 ` [PATCH rdma-next 23/23] RDMA/mlx5: Advertise adversarial mode via ib_device::adversarial_mode Yishai Hadas
2026-11-07 20:25   ` netdev-bot+sashiko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=179408308473.994134.1350427296218795820@kernel.org \
    --to=netdev-bot+sashiko@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=dtatulea@nvidia.com \
    --cc=edumazet@kernel.org \
    --cc=jgg@ziepe.ca \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=maorg@nvidia.com \
    --cc=mbloch@nvidia.com \
    --cc=moshe@nvidia.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@nvidia.com \
    --cc=yishaih@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox