Netdev List
 help / color / mirror / Atom feed
From: Yishai Hadas <yishaih@nvidia.com>
To: <netdev-bot+sashiko@kernel.org>
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 23/23] RDMA/mlx5: Advertise adversarial mode via ib_device::adversarial_mode
Date: Mon, 9 Nov 2026 12:52:09 +0200	[thread overview]
Message-ID: <a9936dee-857d-41bc-b324-cc471172bdbf@nvidia.com> (raw)
In-Reply-To: <179408310891.994134.2389971836310893033@kernel.org>

On 07/11/2026 22:25, netdev-bot+sashiko@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential
> issue(s) to consider.
> 
> Critical: 0 · High: 0 · Medium: 1 · Low: 1
> 
> If you believe none of the issues are legitimate, please reply to each
> issue of Medium severity or higher and explain why the AI is wrong.
> If any of them are legitimate and you plan to respin, please let patchwork
> know by including "pw-bot: cr" as a separate line at the end of your reply
> (one such reply per series is enough).
> 
> - [Medium] The series is not bisectable on confidential-computing (CoCo)
>    guests.
> - [Low] The commit message understates what this one line does.
> 
> --
> 
> RDMA/mlx5: Advertise adversarial mode via ib_device::adversarial_mode
> 
> This commit sets ib_device::adversarial_mode from the
> mlx5_ib_adversarial_mode global in mlx5_ib_stage_caps_init(). The uverbs
> core can then report adversarial mode to rdma-core and only let
> adversarial-mode-aware userspace open a context on the device.
> 
>> diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
>> index ace4cdc95c9da..f8af90941b53d 100644
>> --- a/drivers/infiniband/hw/mlx5/main.c
>> +++ b/drivers/infiniband/hw/mlx5/main.c
>> @@ -4778,6 +4778,7 @@ static int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
>>   	}
>>   
>>   	dev->ib_dev.use_cq_dim = true;
>> +	dev->ib_dev.adversarial_mode = mlx5_ib_adversarial_mode;
> 
> [Severity: Medium]
> Can the series still be bisected on CoCo guests when this assignment
> comes last?
> 
> An earlier patch, "RDMA/mlx5: Derive mlx5_ib_adversarial_mode global from
> mlx5_core adversarial API", sets the global in mlx5_ib_init():
> 
>      mlx5_ib_adversarial_mode = mlx5_is_adversarial();
> 
> This comes from cc_platform_has(CC_ATTR_GUEST_MEM_ENCRYPT), so it is true
> on any SEV-SNP/TDX guest.
> 
> Next, "RDMA/mlx5: Block generic CQ poll path in adversarial mode" adds
> this to mlx5_poll_one():
> 
>      if (unlikely(mlx5_ib_adversarial_mode))
>          return -EOPNOTSUPP;
> 
> That patch says this is safe because kernel ULPs don't bind to the device.
> 
> However, kernel ULPs only stop binding once ib_device_check_mandatory()
> sees the core flag:
> 
>      if (device->adversarial_mode)
>          device->kverbs_provider = false;
> 
> mlx5 doesn't set ib_dev.adversarial_mode until this commit.
> 
> That leaves a window from the CQ poll blocking patch up to "RDMA/core:
> Report and enforce adversarial mode via GET_CONTEXT". In that window,
> kverbs_provider stays true for mlx5 on a CoCo guest.
> 
> add_client_context() then binds MAD, CM, rdma_cm, IPoIB, SRP, iSER,
> NVMe-oF and the other clients. Their CQs use mlx5_poll_one():
> 
> mlx5_ib_poll_cq()
>    cq->poll_one() == mlx5_poll_one()
>      returns -EOPNOTSUPP
> 
> mlx5_ib_poll_cq() stops at the first non-zero return, so it always reports
> 0 completions. Wouldn't MAD sends time out, the IPoIB TX ring fill up, and
> NVMe-oF/SRP I/O hang in those intermediate commits?
> 
> In the same window, legacy rdma-core would still get contexts, and uverbs
> POLL_CQ would always come back empty.
> 
> Could this assignment move into the patch that enables the driver-side
> mode? Another option is to place it right after "RDMA/core: Suppress
> kverbs_provider for adversarial_mode devices", before any hardening patch
> that changes behaviour. Either way, every commit in the series would keep
> working.

Setting ib_dev.adversarial_mode declares that the device supports 
adversarial mode, so it is done last, once all the hardening is in
place. Adversarial mode is not expected to be used with only part of the 
series.

> 
> [Severity: Low]
> This isn't a bug, but the commit message only says:
> 
>      Set ib_device::adversarial_mode during capability init so that the
>      uverbs core layer can report adversarial mode to rdma-core and enforce
>      that only adversarial-mode-aware userspace opens a context on this
>      device.
> 
> In practice, this line turns on the full adversarial policy for every
> mlx5 ib_device on a CC_ATTR_GUEST_MEM_ENCRYPT guest. The pf, raw_eth/rep
> and plane profiles all run MLX5_IB_STAGE_CAPS.
> 
> With the flag set, ib_device_check_mandatory() clears kverbs_provider.
> add_client_context() then skips every client that lacks no_kverbs_req:
> 
>      if (!device->kverbs_provider && !client->no_kverbs_req)
>          return 0;
> 
> Only uverbs has no_kverbs_req. As a result, MAD, ib_umad, IB CM, SA,
> rdma_cm, IPoIB, SRP, iSER, NVMe-oF, NFS/RDMA, RDS and SMC-R no longer
> bind.
> 
> Because cma and SA never bind, librdmacm users going through ucma can't
> use the device either, even if they are adversarial-aware.
> 
> Unmodified rdma-core also gets -EPERM, both from GET_CONTEXT and from the
> legacy write() path.
> 
> There is no opt-out, since the decision comes only from
> cc_platform_has(). Other patches in the series say this is intended, but
> this commit is where it takes effect for mlx5.
> 
> Could the commit message say that, once this is applied, kernel ULPs and
> rdma_cm-based userspace stop working on mlx5 in CoCo guests?
> 
>>   
>>   	return 0;
>>
> 

OK, will update the commit message in V1.

Yishai

      reply	other threads:[~2026-11-09 10:52 UTC|newest]

Thread overview: 61+ 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-08 16:17     ` Yishai Hadas
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-09  8:27     ` Yishai Hadas
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
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-09  8:37     ` Yishai Hadas
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-09  8:50     ` Yishai Hadas
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-09  9:38     ` Yishai Hadas
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-09  9:48     ` Yishai Hadas
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-09 10:03     ` Yishai Hadas
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-09 10:09     ` Yishai Hadas
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-09 10:18     ` Yishai Hadas
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-09 10:24     ` Yishai Hadas
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-09 10:27     ` Yishai Hadas
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-09 10:30     ` Yishai Hadas
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-09 10:44     ` Yishai Hadas
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
2026-11-09 10:52     ` Yishai Hadas [this message]

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=a9936dee-857d-41bc-b324-cc471172bdbf@nvidia.com \
    --to=yishaih@nvidia.com \
    --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-bot+sashiko@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@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