From: "Michal Suchánek" <msuchanek@suse.de>
To: Andre Przywara <andre.przywara@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Sudeep Holla <sudeep.holla@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
vsethi@nvidia.com, Salman Nabi <salman.nabi@arm.com>,
Rob Herring <robh@kernel.org>,
linux-kernel@vger.kernel.org, Varun Wadekar <vwadekar@nvidia.com>,
Trilok Soni <trilokkumar.soni@oss.qualcomm.com>,
devicetree@vger.kernel.org, Nirmoy Das <nirmoyd@nvidia.com>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 0/8] Arm Live Firmware Activation (LFA) support
Date: Mon, 13 Jul 2026 18:02:32 +0200 [thread overview]
Message-ID: <alUMGCJzVG6U3Ggm@kunlun.suse.cz> (raw)
In-Reply-To: <20260706134455.132091-1-andre.przywara@arm.com>
On Mon, Jul 06, 2026 at 03:44:40PM +0200, Andre Przywara wrote:
> Hi all,
>
> this is version 3 of the Live Firmware Activation kernel support. The
> device part of the code now relies on Aneesh's SMCCC bus patches[1],
> which solves some problems rather nicely. I also added the formerly
> missing sysfs ABI documentation. Based on v7.2-rc1, plus the first
> two patches from Aneesh's series. More detailed changelog below.
> ==============================
>
> This series implements the kernel side support of the Arm Live
> Firmware Activation (LFA) specification [2]. LFA enables the activation
> of updated firmware components without requiring a system reboot,
> reducing downtime and allowing quicker deployment of critical bug fixes
> in environments such as data centers and hyperscale systems.
> It requires explicit firmware support, both via an agent running in EL3
> (for instance in TF-A, already merged), but also in the firmware
> component to be activated. TF-RMM recently merged support for this.
>
> Unlike the usual firmware update process (which may use tools like
> fwupd), LFA focuses solely on the activation of an already updated
> firmware component, called "pending activation" in LFA lingo. This works
> by signalling the LFA agent (part of the EL3 runtime firmware) via an
> SMC call, which then does the heavy lifting of the live update, in
> cooperation with the to-be-updated firmware component.
>
> Key features of the driver:
> * Detects LFA support in system firmware (EL3).
> * Lists all firmware components that support live activation, identified
> by their GUID.
> * Exposes component attributes (e.g., activation capability, and
> activation pending) via sysfs under /sys/firmware/lfa/<GUID>/.
> * Provides interfaces to:
> - Trigger activation of an updated firmware component.
> - Cancel an ongoing activation if required.
> A more detailed list of features can be found in patch 2/8.
> Based on v7.2-rc1.
>
> This work is conceptually similar to Intel’s Platform Firmware Runtime
> Update and telemetry (PFRUT) [3] and TDX module updates [4], but
> targets Arm platforms. The driver has been used to successfully activate
> a Realm Management Monitor (RMM) firmware image in a controlled test
> environment. RMM is analogous to Intel’s TDX module.
>
> There is effort on similar work from the OCP [5]. Future work may
> include integration with utilities like fwupd to automatically select
> the appropriate driver, based on platform architecture, for Live/Runtime
> firmware updates.
>
> Please have a look, test and comment!
Hello,
booting a kernel with v2 of this patchset applied the module does not
get autoloaded. Loading it manually I get
[ 1972.957282] [ T5195] Arm LFA: Live Firmware Activation: detected v1.0
[ 1972.958620] [ T5195] Arm LFA: registered LFA ACPI notification
Is this expected?
I would expect the driver to load automatically.
I do not see anything in the v3 changelog obviously addressing
autoloading but changing to using a bus might affect that.
I will try to update to v3 later.
Thanks
Michal
>
> Best regards,
> Salman and Andre
>
> Changes in v3:
> - change node name in DT binding example
> - move SMCCC function identifiers into generic SMCCC header
> - rework to use the new SMCCC bus instead of a using a faux device
> - add missing workqueue cleanup in probe() routine
> - squash former patch v2 3/8 into base patch
> - use get_image_name() more consistently
> - also consider -LFA_BUSY return in activate call
>
> Changes in v2:
> - restrict build to arm64 (the LFA spec only supports AArch64)
> - rename and extend central data structure to fw_image
> - use separate GPR register sets for some SMC calls
> - provide wrapper for error messages to prevent out-of-bound access
> - return GUID in the "name" sysfs file when image is unknown
> - fix wrong attribute in pending version number show function
> - add missing include files and order them properly
> - fix memory leaks in error cleanup paths
> - handle lifetime using embedded kobjects and a kset
> - drop global lfa_lock, use kset list lock and kobject refcount instead
> - add DT binding documentation
> - add timeout and watchdog re-arming (contributed by Veda)
> - relax timeout period and do not block while waiting
> - register ACPI notification (contributed by Veda) and DT interrupt
> - refactor ACPI notification code to allow sharing with DT code
> - use faux device instead of platform driver
> - add auto_activate file to control automatic activation
> - introduce rwsem mutex to prevent using stale sequence ID
> - use labels and goto instead of infinite loop when retrying activation
> - initialise workqueue only once (thanks to Nirmoy)
> - various cleanups on reported messages and code formatting
> - rebase on top of v7.0-rc1
>
> Changes in v1:
> - Updated SMCCC version 1.1 to 1.2 per the LFA specification requirement.
> - Changed "image_props" array to a linked list to support the dynamic
> removal and addition of firmware images.
> - Added code to refresh firmware images following a successful activation.
> - Added a work_queue to handle the removal of firmware image attribute
> from it's respective kobject "_store" handle.
> - Refactored prime and activate into separate functions.
> - Kernel config for LFA now defaults to "y" i.e. included by default.
> - Added individual kernel attribute files removal when removing the
> respective kobjects using kobject_put().
> - mutex_lock added to activate_fw_image() and prime_fw_image() calls.
> - Renamed create_fw_inventory to update_fw_image_node.
> - Renamed create_fw_images_tree to update_fw_images_tree.
> - Added two more attributes due to specs update from bet0 to bet1:
> current_version: For retrieval of the current firmware's version info.
> pending_version: For retrieval of the pending firmware's version info.
> - Minor changes such as, improved firmware image names, and code comments.
> - do...while loops refactored to for(;;) loops.
>
> [1] https://lore.kernel.org/linux-arm-kernel/20260611130429.295516-1-aneesh.kumar@kernel.org/
> [2] https://developer.arm.com/documentation/den0147/latest/
> [3] https://lore.kernel.org/all/cover.1631025237.git.yu.c.chen@intel.com/
> [4] https://lore.kernel.org/all/20250523095322.88774-1-chao.gao@intel.com/
> [5] https://www.opencompute.org/documents/hyperscale-cpu-impactless-firmware-updates-requirements-specification-v0-7-9-29-2025-pdf
>
> Andre Przywara (5):
> dt-bindings: arm: Add Live Firmware Activation
> firmware: smccc: lfa: Add auto_activate sysfs file
> firmware: smccc: lfa: Register DT interrupt
> firmware: smccc: lfa: introduce SMC access lock
> firmware: smccc: lfa: add sysfs ABI documentation
>
> Salman Nabi (1):
> firmware: smccc: Add support for Live Firmware Activation (LFA)
>
> Vedashree Vidwans (2):
> firmware: smccc: lfa: Add timeout and trigger watchdog
> firmware: smccc: lfa: Register ACPI notification
>
> Documentation/ABI/testing/sysfs-firmware-lfa | 106 ++
> .../devicetree/bindings/arm/arm,lfa.yaml | 45 +
> drivers/firmware/smccc/Kconfig | 10 +
> drivers/firmware/smccc/Makefile | 1 +
> drivers/firmware/smccc/lfa_fw.c | 988 ++++++++++++++++++
> drivers/firmware/smccc/smccc.c | 5 +
> include/linux/arm-smccc.h | 15 +
> 7 files changed, 1170 insertions(+)
> create mode 100644 Documentation/ABI/testing/sysfs-firmware-lfa
> create mode 100644 Documentation/devicetree/bindings/arm/arm,lfa.yaml
> create mode 100644 drivers/firmware/smccc/lfa_fw.c
>
>
> base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
> prerequisite-patch-id: 64fa2209c9eee2084861ba13f0bdfdac312b19b0
> prerequisite-patch-id: fe1ca1a9aeb94623c79bf66366c76bfb8645b581
> --
> 2.43.0
>
>
prev parent reply other threads:[~2026-07-13 16:02 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-06 13:44 [PATCH v3 0/8] Arm Live Firmware Activation (LFA) support Andre Przywara
2026-07-06 13:44 ` [PATCH v3 1/8] dt-bindings: arm: Add Live Firmware Activation Andre Przywara
2026-07-06 13:44 ` [PATCH v3 2/8] firmware: smccc: Add support for Live Firmware Activation (LFA) Andre Przywara
2026-07-10 9:30 ` Nirmoy Das
2026-07-06 13:44 ` [PATCH v3 3/8] firmware: smccc: lfa: Add timeout and trigger watchdog Andre Przywara
2026-07-10 10:08 ` Nirmoy Das
2026-07-06 13:44 ` [PATCH v3 4/8] firmware: smccc: lfa: Register ACPI notification Andre Przywara
2026-07-10 11:04 ` Nirmoy Das
2026-07-06 13:44 ` [PATCH v3 5/8] firmware: smccc: lfa: Add auto_activate sysfs file Andre Przywara
2026-07-10 14:07 ` Nirmoy Das
2026-07-06 13:44 ` [PATCH v3 6/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara
2026-07-06 13:44 ` [PATCH v3 7/8] firmware: smccc: lfa: introduce SMC access lock Andre Przywara
2026-07-06 13:44 ` [PATCH v3 8/8] firmware: smccc: lfa: add sysfs ABI documentation Andre Przywara
2026-07-13 16:02 ` Michal Suchánek [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=alUMGCJzVG6U3Ggm@kunlun.suse.cz \
--to=msuchanek@suse.de \
--cc=andre.przywara@arm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=nirmoyd@nvidia.com \
--cc=robh@kernel.org \
--cc=salman.nabi@arm.com \
--cc=sudeep.holla@kernel.org \
--cc=trilokkumar.soni@oss.qualcomm.com \
--cc=vsethi@nvidia.com \
--cc=vwadekar@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