From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
To: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
aleksandr.loktionov@intel.com
Cc: netdev@vger.kernel.org
Subject: [PATCH next-queue v1 0/2] ice: eRoT adapter NVM update guard
Date: Thu, 17 Sep 2026 11:43:10 +0200 [thread overview]
Message-ID: <20260917094312.1567881-1-aleksandr.loktionov@intel.com> (raw)
CNSA 2.0 PQC adapters carry an external Root of Trust (eRoT) controller
that performs full-image authentication on every NVM update. The eRoT
does not allow updating individual components; it requires NVM, OROM,
NetList, and Manifest all together in one shot. If you hand it a partial
PLDM capsule today, firmware rejects the write mid-session (i.e. partway
through the PLDM component transfer sequence), after the erase has
already been issued.
Patch 1 detects eRoT presence. Newer firmware advertises it directly
via device capability 0x004E; older firmware does not, so there is an
NVM-based fallback that reads the eRoT presence fuse (SR 0x1016 bits[1:0]).
The result goes into hw->erot_present and is surfaced as ICE_F_EROT.
Patch 2 uses that flag to gate the flash path. Component identifiers
are tracked as the PLDM component table is walked, and if the full
required set is not present when ice_flash_component() is first entered,
the whole update is rejected with -EINVAL and a netlink error message
before a single flash bank is touched. The Manifest component itself is
only ever accepted on eRoT adapters in the first place.
Testing: validated on real eRoT-equipped hardware.
Aleksandr Loktionov (2):
ice: detect eRoT presence via device capability
ice: reject partial NVM update on eRoT adapters
drivers/net/ethernet/intel/ice/ice.h | 1 +
.../net/ethernet/intel/ice/ice_adminq_cmd.h | 1 +
drivers/net/ethernet/intel/ice/ice_common.c | 7 ++
.../net/ethernet/intel/ice/ice_fw_update.c | 80 +++++++++++++++++++
drivers/net/ethernet/intel/ice/ice_lib.c | 3 +
drivers/net/ethernet/intel/ice/ice_nvm.c | 39 ++++++++++
drivers/net/ethernet/intel/ice/ice_nvm.h | 5 ++
drivers/net/ethernet/intel/ice/ice_type.h | 6 ++
include/linux/net/intel/libie/adminq.h | 1 +
9 files changed, 143 insertions(+)
--
2.52.0
next reply other threads:[~2026-09-17 9:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-17 9:43 Aleksandr Loktionov [this message]
2026-09-17 9:43 ` From: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Aleksandr Loktionov
2026-09-18 13:11 ` Tomasz Lichwala
2026-09-17 9:43 ` Aleksandr Loktionov
2026-09-18 13:21 ` Tomasz Lichwala
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=20260917094312.1567881-1-aleksandr.loktionov@intel.com \
--to=aleksandr.loktionov@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=netdev@vger.kernel.org \
/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