* [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support
@ 2026-03-17 10:33 Andre Przywara
2026-03-17 10:33 ` [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding Andre Przywara
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Andre Przywara @ 2026-03-17 10:33 UTC (permalink / raw)
To: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla
Cc: Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi,
vwadekar, linux-arm-kernel, linux-kernel, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, devicetree
Hi all,
this is version 2 of the Live Firmware Activation kernel support. There
were some significant changes to the code compared to the previous v1
post [1]: the images are now managed using an embedded kobject, joined
by a kset representing the /sys/firmware/lfa directory. The locking has
been overhauled, there is no longer a global lock, but just the kset
list lock, and a readers/writer lock when doing the actual SMC accesses.
Also this series now includes support for the ACPI notification, as
contributed by Veda [2] (many thanks for that!), and support for the DT
interrupt. Also there is a new sysfs switch file to allow the automatic
activation.
This is now multiple patches, mostly to help review and to give credit
to Veda's work. If people agree, some of the patches can be squashed for
submission, eventually.
More detailed changelog below.
==============================
This series implements the kernel side support of the Arm Live
Firmware Activation (LFA) specification [3]. 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.0-rc1.
This work is conceptually similar to Intel’s Platform Firmware Runtime
Update and telemetry (PFRUT) [4] and TDX module updates [5], 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 [6]. 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!
Best regards,
Salman and Andre
Changelog v1 .. 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
Changelog RFC .. 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/20260119122729.287522-1-salman.nabi@arm.com/
[2] https://lore.kernel.org/linux-arm-kernel/20260210224023.2341728-1-vvidwans@nvidia.com/
[3] https://developer.arm.com/documentation/den0147/latest/
[4] https://lore.kernel.org/all/cover.1631025237.git.yu.c.chen@intel.com/
[5] https://lore.kernel.org/all/20250523095322.88774-1-chao.gao@intel.com/
[6] https://www.opencompute.org/documents/hyperscale-cpu-impactless-firmware-updates-requirements-specification-v0-7-9-29-2025-pdf
Andre Przywara (4):
dt-bindings: arm: Add Live Firmware Activation binding
firmware: smccc: lfa: Add auto_activate sysfs file
firmware: smccc: lfa: Register DT interrupt
firmware: smccc: lfa: introduce SMC access lock
Salman Nabi (1):
firmware: smccc: Add support for Live Firmware Activation (LFA)
Vedashree Vidwans (3):
firmware: smccc: lfa: Move image rescanning
firmware: smccc: lfa: Add timeout and trigger watchdog
firmware: smccc: lfa: Register ACPI notification
.../devicetree/bindings/arm/arm,lfa.yaml | 45 +
drivers/firmware/smccc/Kconfig | 10 +
drivers/firmware/smccc/Makefile | 1 +
drivers/firmware/smccc/lfa_fw.c | 1008 +++++++++++++++++
4 files changed, 1064 insertions(+)
create mode 100644 Documentation/devicetree/bindings/arm/arm,lfa.yaml
create mode 100644 drivers/firmware/smccc/lfa_fw.c
--
2.43.0
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding 2026-03-17 10:33 [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Andre Przywara @ 2026-03-17 10:33 ` Andre Przywara 2026-03-18 8:04 ` Krzysztof Kozlowski 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara 2026-03-18 8:00 ` [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Krzysztof Kozlowski 2 siblings, 1 reply; 11+ messages in thread From: Andre Przywara @ 2026-03-17 10:33 UTC (permalink / raw) To: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, devicetree The Arm Live Firmware Activation spec [1] describes updating firmware images during runtime, without requiring a reboot. Update images might be deployed out-of-band, for instance via a BMC, in this case the OS needs to be notified about the availability of a new image. This binding describes an interrupt that could be triggered by the platform, to notify about any changes. [1] https://developer.arm.com/documentation/den0147/latest/ Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- .../devicetree/bindings/arm/arm,lfa.yaml | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Documentation/devicetree/bindings/arm/arm,lfa.yaml diff --git a/Documentation/devicetree/bindings/arm/arm,lfa.yaml b/Documentation/devicetree/bindings/arm/arm,lfa.yaml new file mode 100644 index 000000000000..92f0564fd672 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/arm,lfa.yaml @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/arm/arm,lfa.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Arm Live Firmware Activation (LFA) + +maintainers: + - Andre Przywara <andre.przywara@arm.com> + - Sudeep Holla <sudeep.holla@arm.com> + +description: + The Arm Live Firmware Activation (LFA) specification [1] describes a + firmware interface to activate an updated firmware at runtime, without + requiring a reboot. Updates might be supplied out-of-band, for instance + via a BMC, in which case the platform needs to notify an OS about pending + image updates. + [1] https://developer.arm.com/documentation/den0147/latest/ + +properties: + compatible: + const: arm,lfa + + interrupts: + maxItems: 1 + description: notification interrupt for changed firmware image status + +required: + - compatible + - interrupts + +additionalProperties: false + +examples: + - | + #include <dt-bindings/interrupt-controller/arm-gic.h> + + firmware { + arm-lfa { + compatible = "arm,lfa"; + interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; + }; + }; +... -- 2.43.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding 2026-03-17 10:33 ` [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding Andre Przywara @ 2026-03-18 8:04 ` Krzysztof Kozlowski 2026-03-18 16:00 ` Andre Przywara 0 siblings, 1 reply; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-03-18 8:04 UTC (permalink / raw) To: Andre Przywara Cc: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, devicetree On Tue, Mar 17, 2026 at 11:33:27AM +0100, Andre Przywara wrote: > The Arm Live Firmware Activation spec [1] describes updating firmware A nit, subject: drop second/last, redundant "binding". The "dt-bindings" prefix is already stating that these are bindings. See also: https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18 > images during runtime, without requiring a reboot. Update images might > be deployed out-of-band, for instance via a BMC, in this case the OS > needs to be notified about the availability of a new image. > > This binding describes an interrupt that could be triggered by the Describe hardware/firmware, not the binding. > platform, to notify about any changes. > > [1] https://developer.arm.com/documentation/den0147/latest/ > > Signed-off-by: Andre Przywara <andre.przywara@arm.com> > --- > .../devicetree/bindings/arm/arm,lfa.yaml | 45 +++++++++++++++++++ > 1 file changed, 45 insertions(+) > create mode 100644 Documentation/devicetree/bindings/arm/arm,lfa.yaml > > diff --git a/Documentation/devicetree/bindings/arm/arm,lfa.yaml b/Documentation/devicetree/bindings/arm/arm,lfa.yaml > new file mode 100644 > index 000000000000..92f0564fd672 > --- /dev/null > +++ b/Documentation/devicetree/bindings/arm/arm,lfa.yaml > @@ -0,0 +1,45 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/arm/arm,lfa.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Arm Live Firmware Activation (LFA) > + > +maintainers: > + - Andre Przywara <andre.przywara@arm.com> > + - Sudeep Holla <sudeep.holla@arm.com> > + > +description: > + The Arm Live Firmware Activation (LFA) specification [1] describes a > + firmware interface to activate an updated firmware at runtime, without > + requiring a reboot. Updates might be supplied out-of-band, for instance > + via a BMC, in which case the platform needs to notify an OS about pending > + image updates. > + [1] https://developer.arm.com/documentation/den0147/latest/ > + > +properties: > + compatible: > + const: arm,lfa Does specification has a version? Does it support version discovery? > + > + interrupts: > + maxItems: 1 > + description: notification interrupt for changed firmware image status > + > +required: > + - compatible > + - interrupts > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + > + firmware { > + arm-lfa { Node names should be generic. See also an explanation and list of examples (not exhaustive) in DT specification: https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation If you cannot find a name matching your device, please check in kernel sources for similar cases or you can grow the spec (via pull request to DT spec repo). arm-lfa is specific, so this could be as "fota" or "firmware-update" Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding 2026-03-18 8:04 ` Krzysztof Kozlowski @ 2026-03-18 16:00 ` Andre Przywara 0 siblings, 0 replies; 11+ messages in thread From: Andre Przywara @ 2026-03-18 16:00 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, devicetree Hi, On 3/18/26 09:04, Krzysztof Kozlowski wrote: > On Tue, Mar 17, 2026 at 11:33:27AM +0100, Andre Przywara wrote: >> The Arm Live Firmware Activation spec [1] describes updating firmware > > A nit, subject: drop second/last, redundant "binding". The > "dt-bindings" prefix is already stating that these are bindings. > See also: > https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18 Sure, will fix. >> images during runtime, without requiring a reboot. Update images might >> be deployed out-of-band, for instance via a BMC, in this case the OS >> needs to be notified about the availability of a new image. >> >> This binding describes an interrupt that could be triggered by the > > Describe hardware/firmware, not the binding. Right, sorry, this slipped through. >> platform, to notify about any changes. >> >> [1] https://developer.arm.com/documentation/den0147/latest/ >> >> Signed-off-by: Andre Przywara <andre.przywara@arm.com> >> --- >> .../devicetree/bindings/arm/arm,lfa.yaml | 45 +++++++++++++++++++ >> 1 file changed, 45 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/arm/arm,lfa.yaml >> >> diff --git a/Documentation/devicetree/bindings/arm/arm,lfa.yaml b/Documentation/devicetree/bindings/arm/arm,lfa.yaml >> new file mode 100644 >> index 000000000000..92f0564fd672 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/arm/arm,lfa.yaml >> @@ -0,0 +1,45 @@ >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/arm/arm,lfa.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Arm Live Firmware Activation (LFA) >> + >> +maintainers: >> + - Andre Przywara <andre.przywara@arm.com> >> + - Sudeep Holla <sudeep.holla@arm.com> >> + >> +description: >> + The Arm Live Firmware Activation (LFA) specification [1] describes a >> + firmware interface to activate an updated firmware at runtime, without >> + requiring a reboot. Updates might be supplied out-of-band, for instance >> + via a BMC, in which case the platform needs to notify an OS about pending >> + image updates. >> + [1] https://developer.arm.com/documentation/den0147/latest/ >> + >> +properties: >> + compatible: >> + const: arm,lfa > > Does specification has a version? Does it support version discovery? Yes and yes. there is a mandatory LFA_GET_VERSION call, with major and minor version. And please note that the discovery of the firmware functionality doesn't rely on DT (or ACPI) at all - it uses discoverable SMCCC calls instead. We just need this DT node to convey the (optional) platform specific interrupt number. >> + >> + interrupts: >> + maxItems: 1 >> + description: notification interrupt for changed firmware image status >> + >> +required: >> + - compatible >> + - interrupts >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + #include <dt-bindings/interrupt-controller/arm-gic.h> >> + >> + firmware { >> + arm-lfa { > > Node names should be generic. See also an explanation and list of > examples (not exhaustive) in DT specification: > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > If you cannot find a name matching your device, please check in kernel > sources for similar cases or you can grow the spec (via pull request to > DT spec repo). > > arm-lfa is specific, so this could be as "fota" or "firmware-update" OK, will try to come up with a good name. Thanks for the review! Cheers, Andre > > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-17 10:33 [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Andre Przywara 2026-03-17 10:33 ` [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding Andre Przywara @ 2026-03-17 10:33 ` Andre Przywara 2026-03-18 8:14 ` Krzysztof Kozlowski ` (3 more replies) 2026-03-18 8:00 ` [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Krzysztof Kozlowski 2 siblings, 4 replies; 11+ messages in thread From: Andre Przywara @ 2026-03-17 10:33 UTC (permalink / raw) To: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla Cc: Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree The Arm Live Firmware Activation spec describes an asynchronous notification mechanism, where the platform can notify the host OS about newly pending image updates. In the absence of the ACPI notification mechanism also a simple devicetree node can describe an interrupt. Add code to find the respective DT node and register the specified interrupt, to trigger the activation if needed. Signed-off-by: Andre Przywara <andre.przywara@arm.com> --- drivers/firmware/smccc/lfa_fw.c | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/drivers/firmware/smccc/lfa_fw.c b/drivers/firmware/smccc/lfa_fw.c index 5dc531e462eb..ecd056901b8d 100644 --- a/drivers/firmware/smccc/lfa_fw.c +++ b/drivers/firmware/smccc/lfa_fw.c @@ -16,6 +16,8 @@ #include <linux/list.h> #include <linux/module.h> #include <linux/nmi.h> +#include <linux/of.h> +#include <linux/of_irq.h> #include <linux/psci.h> #include <linux/stop_machine.h> #include <linux/string.h> @@ -841,6 +843,43 @@ static void lfa_remove_acpi(struct device *dev) } #endif +static irqreturn_t lfa_irq_handler(int irq, void *dev_id) +{ + return IRQ_WAKE_THREAD; +} + +static irqreturn_t lfa_irq_handler_thread(int irq, void *dev_id) +{ + int ret; + + while (!(ret = activate_pending_image())) + ; + + if (ret != -ENOENT) + pr_warn("notified image activation failed: %d\n", ret); + + return IRQ_HANDLED; +} + +static int lfa_register_dt(struct device *dev) +{ + struct device_node *np; + unsigned int irq; + + np = of_find_compatible_node(NULL, NULL, "arm,lfa"); + if (!np) + return -ENODEV; + + irq = irq_of_parse_and_map(np, 0); + of_node_put(np); + if (!irq) + return -ENODEV; + + return devm_request_threaded_irq(dev, irq, lfa_irq_handler, + lfa_irq_handler_thread, + IRQF_COND_ONESHOT, NULL, NULL); +} + static int lfa_faux_probe(struct faux_device *fdev) { int ret; @@ -854,6 +893,12 @@ static int lfa_faux_probe(struct faux_device *fdev) } } + ret = lfa_register_dt(&fdev->dev); + if (!ret) + pr_info("registered LFA DT notification interrupt\n"); + if (ret != -ENODEV) + return ret; + return 0; } -- 2.43.0 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara @ 2026-03-18 8:14 ` Krzysztof Kozlowski 2026-03-18 11:35 ` kernel test robot ` (2 subsequent siblings) 3 siblings, 0 replies; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-03-18 8:14 UTC (permalink / raw) To: Andre Przywara Cc: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree On Tue, Mar 17, 2026 at 11:33:33AM +0100, Andre Przywara wrote: > + return devm_request_threaded_irq(dev, irq, lfa_irq_handler, > + lfa_irq_handler_thread, > + IRQF_COND_ONESHOT, NULL, NULL); > +} > + > static int lfa_faux_probe(struct faux_device *fdev) > { > int ret; > @@ -854,6 +893,12 @@ static int lfa_faux_probe(struct faux_device *fdev) > } > } > > + ret = lfa_register_dt(&fdev->dev); > + if (!ret) > + pr_info("registered LFA DT notification interrupt\n"); Drop. Drivers must be silent on success (mentioned more than once in coding docs). Starting FW update would deserve a comment, but probing a device or its resource is completely irrelevant for the user. > + if (ret != -ENODEV) > + return ret; > + > return 0; > } > > -- > 2.43.0 > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara 2026-03-18 8:14 ` Krzysztof Kozlowski @ 2026-03-18 11:35 ` kernel test robot 2026-03-18 14:21 ` kernel test robot 2026-03-18 14:21 ` kernel test robot 3 siblings, 0 replies; 11+ messages in thread From: kernel test robot @ 2026-03-18 11:35 UTC (permalink / raw) To: Andre Przywara, Mark Rutland, Lorenzo Pieralisi, Sudeep Holla Cc: oe-kbuild-all, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree Hi Andre, kernel test robot noticed the following build warnings: [auto build test WARNING on robh/for-next] [also build test WARNING on arm/for-next arm/fixes arm64/for-next/core clk/clk-next kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next linus/master nferre-at91/at91-next v7.0-rc4 next-20260317] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andre-Przywara/dt-bindings-arm-Add-Live-Firmware-Activation-binding/20260318-082717 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20260317103336.1273582-8-andre.przywara%40arm.com patch subject: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt config: arm64-randconfig-004-20260318 (https://download.01.org/0day-ci/archive/20260318/202603181913.NFRwBsN4-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 12.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260318/202603181913.NFRwBsN4-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202603181913.NFRwBsN4-lkp@intel.com/ All warnings (new ones prefixed by >>): drivers/firmware/smccc/lfa_fw.c: In function 'lfa_register_dt': drivers/firmware/smccc/lfa_fw.c:878:16: error: implicit declaration of function 'devm_request_threaded_irq'; did you mean 'devm_request_region'? [-Werror=implicit-function-declaration] 878 | return devm_request_threaded_irq(dev, irq, lfa_irq_handler, | ^~~~~~~~~~~~~~~~~~~~~~~~~ | devm_request_region drivers/firmware/smccc/lfa_fw.c:880:42: error: 'IRQF_COND_ONESHOT' undeclared (first use in this function) 880 | IRQF_COND_ONESHOT, NULL, NULL); | ^~~~~~~~~~~~~~~~~ drivers/firmware/smccc/lfa_fw.c:880:42: note: each undeclared identifier is reported only once for each function it appears in >> drivers/firmware/smccc/lfa_fw.c:881:1: warning: control reaches end of non-void function [-Wreturn-type] 881 | } | ^ cc1: some warnings being treated as errors vim +881 drivers/firmware/smccc/lfa_fw.c 863 864 static int lfa_register_dt(struct device *dev) 865 { 866 struct device_node *np; 867 unsigned int irq; 868 869 np = of_find_compatible_node(NULL, NULL, "arm,lfa"); 870 if (!np) 871 return -ENODEV; 872 873 irq = irq_of_parse_and_map(np, 0); 874 of_node_put(np); 875 if (!irq) 876 return -ENODEV; 877 878 return devm_request_threaded_irq(dev, irq, lfa_irq_handler, 879 lfa_irq_handler_thread, 880 IRQF_COND_ONESHOT, NULL, NULL); > 881 } 882 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara 2026-03-18 8:14 ` Krzysztof Kozlowski 2026-03-18 11:35 ` kernel test robot @ 2026-03-18 14:21 ` kernel test robot 2026-03-18 14:21 ` kernel test robot 3 siblings, 0 replies; 11+ messages in thread From: kernel test robot @ 2026-03-18 14:21 UTC (permalink / raw) To: Andre Przywara, Mark Rutland, Lorenzo Pieralisi, Sudeep Holla Cc: llvm, oe-kbuild-all, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree Hi Andre, kernel test robot noticed the following build errors: [auto build test ERROR on robh/for-next] [also build test ERROR on arm/for-next arm/fixes arm64/for-next/core clk/clk-next kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next linus/master nferre-at91/at91-next v7.0-rc4 next-20260317] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andre-Przywara/dt-bindings-arm-Add-Live-Firmware-Activation-binding/20260318-082717 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20260317103336.1273582-8-andre.przywara%40arm.com patch subject: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt config: arm64-randconfig-003-20260318 (https://download.01.org/0day-ci/archive/20260318/202603182205.TOBMcP5F-lkp@intel.com/config) compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 4abb927bacf37f18f6359a41639a6d1b3bffffb5) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260318/202603182205.TOBMcP5F-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202603182205.TOBMcP5F-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/firmware/smccc/lfa_fw.c:878:9: error: call to undeclared function 'devm_request_threaded_irq'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 878 | return devm_request_threaded_irq(dev, irq, lfa_irq_handler, | ^ >> drivers/firmware/smccc/lfa_fw.c:880:7: error: use of undeclared identifier 'IRQF_COND_ONESHOT' 880 | IRQF_COND_ONESHOT, NULL, NULL); | ^~~~~~~~~~~~~~~~~ 2 errors generated. vim +/devm_request_threaded_irq +878 drivers/firmware/smccc/lfa_fw.c 863 864 static int lfa_register_dt(struct device *dev) 865 { 866 struct device_node *np; 867 unsigned int irq; 868 869 np = of_find_compatible_node(NULL, NULL, "arm,lfa"); 870 if (!np) 871 return -ENODEV; 872 873 irq = irq_of_parse_and_map(np, 0); 874 of_node_put(np); 875 if (!irq) 876 return -ENODEV; 877 > 878 return devm_request_threaded_irq(dev, irq, lfa_irq_handler, 879 lfa_irq_handler_thread, > 880 IRQF_COND_ONESHOT, NULL, NULL); 881 } 882 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara ` (2 preceding siblings ...) 2026-03-18 14:21 ` kernel test robot @ 2026-03-18 14:21 ` kernel test robot 2026-03-19 12:52 ` Andre Przywara 3 siblings, 1 reply; 11+ messages in thread From: kernel test robot @ 2026-03-18 14:21 UTC (permalink / raw) To: Andre Przywara, Mark Rutland, Lorenzo Pieralisi, Sudeep Holla Cc: oe-kbuild-all, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree Hi Andre, kernel test robot noticed the following build errors: [auto build test ERROR on robh/for-next] [also build test ERROR on arm/for-next arm/fixes arm64/for-next/core clk/clk-next kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next linus/master nferre-at91/at91-next v7.0-rc4 next-20260317] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andre-Przywara/dt-bindings-arm-Add-Live-Firmware-Activation-binding/20260318-082717 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next patch link: https://lore.kernel.org/r/20260317103336.1273582-8-andre.przywara%40arm.com patch subject: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt config: arm64-randconfig-004-20260318 (https://download.01.org/0day-ci/archive/20260318/202603182202.gpyCz2RF-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 12.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260318/202603182202.gpyCz2RF-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202603182202.gpyCz2RF-lkp@intel.com/ All errors (new ones prefixed by >>): drivers/firmware/smccc/lfa_fw.c: In function 'lfa_register_dt': >> drivers/firmware/smccc/lfa_fw.c:878:16: error: implicit declaration of function 'devm_request_threaded_irq'; did you mean 'devm_request_region'? [-Werror=implicit-function-declaration] 878 | return devm_request_threaded_irq(dev, irq, lfa_irq_handler, | ^~~~~~~~~~~~~~~~~~~~~~~~~ | devm_request_region >> drivers/firmware/smccc/lfa_fw.c:880:42: error: 'IRQF_COND_ONESHOT' undeclared (first use in this function) 880 | IRQF_COND_ONESHOT, NULL, NULL); | ^~~~~~~~~~~~~~~~~ drivers/firmware/smccc/lfa_fw.c:880:42: note: each undeclared identifier is reported only once for each function it appears in drivers/firmware/smccc/lfa_fw.c:881:1: warning: control reaches end of non-void function [-Wreturn-type] 881 | } | ^ cc1: some warnings being treated as errors vim +878 drivers/firmware/smccc/lfa_fw.c 863 864 static int lfa_register_dt(struct device *dev) 865 { 866 struct device_node *np; 867 unsigned int irq; 868 869 np = of_find_compatible_node(NULL, NULL, "arm,lfa"); 870 if (!np) 871 return -ENODEV; 872 873 irq = irq_of_parse_and_map(np, 0); 874 of_node_put(np); 875 if (!irq) 876 return -ENODEV; 877 > 878 return devm_request_threaded_irq(dev, irq, lfa_irq_handler, 879 lfa_irq_handler_thread, > 880 IRQF_COND_ONESHOT, NULL, NULL); 881 } 882 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt 2026-03-18 14:21 ` kernel test robot @ 2026-03-19 12:52 ` Andre Przywara 0 siblings, 0 replies; 11+ messages in thread From: Andre Przywara @ 2026-03-19 12:52 UTC (permalink / raw) To: kernel test robot, Mark Rutland, Lorenzo Pieralisi, Sudeep Holla Cc: oe-kbuild-all, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree Hi, On 3/18/26 15:21, kernel test robot wrote: > Hi Andre, > > kernel test robot noticed the following build errors: > > [auto build test ERROR on robh/for-next] > [also build test ERROR on arm/for-next arm/fixes arm64/for-next/core clk/clk-next kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next linus/master nferre-at91/at91-next v7.0-rc4 next-20260317] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch#_base_tree_information] > > url: https://github.com/intel-lab-lkp/linux/commits/Andre-Przywara/dt-bindings-arm-Add-Live-Firmware-Activation-binding/20260318-082717 > base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next > patch link: https://lore.kernel.org/r/20260317103336.1273582-8-andre.przywara%40arm.com > patch subject: [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt > config: arm64-randconfig-004-20260318 (https://download.01.org/0day-ci/archive/20260318/202603182202.gpyCz2RF-lkp@intel.com/config) > compiler: aarch64-linux-gcc (GCC) 12.5.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260318/202603182202.gpyCz2RF-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202603182202.gpyCz2RF-lkp@intel.com/ > > All errors (new ones prefixed by >>): > > drivers/firmware/smccc/lfa_fw.c: In function 'lfa_register_dt': >>> drivers/firmware/smccc/lfa_fw.c:878:16: error: implicit declaration of function 'devm_request_threaded_irq'; did you mean 'devm_request_region'? [-Werror=implicit-function-declaration] > 878 | return devm_request_threaded_irq(dev, irq, lfa_irq_handler, > | ^~~~~~~~~~~~~~~~~~~~~~~~~ > | devm_request_region >>> drivers/firmware/smccc/lfa_fw.c:880:42: error: 'IRQF_COND_ONESHOT' undeclared (first use in this function) > 880 | IRQF_COND_ONESHOT, NULL, NULL); > | ^~~~~~~~~~~~~~~~~ > drivers/firmware/smccc/lfa_fw.c:880:42: note: each undeclared identifier is reported only once for each function it appears in > drivers/firmware/smccc/lfa_fw.c:881:1: warning: control reaches end of non-void function [-Wreturn-type] > 881 | } > | ^ > cc1: some warnings being treated as errors For the records: including <linux/interrupt.h> fixes this issue. Thanks for the heads up, will add this in a follow-up post. Cheers, Andre > > > vim +878 drivers/firmware/smccc/lfa_fw.c > > 863 > 864 static int lfa_register_dt(struct device *dev) > 865 { > 866 struct device_node *np; > 867 unsigned int irq; > 868 > 869 np = of_find_compatible_node(NULL, NULL, "arm,lfa"); > 870 if (!np) > 871 return -ENODEV; > 872 > 873 irq = irq_of_parse_and_map(np, 0); > 874 of_node_put(np); > 875 if (!irq) > 876 return -ENODEV; > 877 > > 878 return devm_request_threaded_irq(dev, irq, lfa_irq_handler, > 879 lfa_irq_handler_thread, > > 880 IRQF_COND_ONESHOT, NULL, NULL); > 881 } > 882 > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support 2026-03-17 10:33 [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Andre Przywara 2026-03-17 10:33 ` [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding Andre Przywara 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara @ 2026-03-18 8:00 ` Krzysztof Kozlowski 2 siblings, 0 replies; 11+ messages in thread From: Krzysztof Kozlowski @ 2026-03-18 8:00 UTC (permalink / raw) To: Andre Przywara Cc: Mark Rutland, Lorenzo Pieralisi, Sudeep Holla, Salman Nabi, Vedashree Vidwans, Trilok Soni, Nirmoy Das, vsethi, vwadekar, linux-arm-kernel, linux-kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree On Tue, Mar 17, 2026 at 11:33:26AM +0100, Andre Przywara wrote: > Changelog v1 .. 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 > > Changelog RFC .. v1: Please start using b4 for developing patches. RFC is v1. RFCv2 is v2. Whatever next is always + 1. Otherwise please share how v1 and RFC can be easily compared with b4 diff... > - 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 Best regards, Krzysztof ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-03-19 12:53 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-17 10:33 [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Andre Przywara 2026-03-17 10:33 ` [PATCH v2 1/8] dt-bindings: arm: Add Live Firmware Activation binding Andre Przywara 2026-03-18 8:04 ` Krzysztof Kozlowski 2026-03-18 16:00 ` Andre Przywara 2026-03-17 10:33 ` [PATCH v2 7/8] firmware: smccc: lfa: Register DT interrupt Andre Przywara 2026-03-18 8:14 ` Krzysztof Kozlowski 2026-03-18 11:35 ` kernel test robot 2026-03-18 14:21 ` kernel test robot 2026-03-18 14:21 ` kernel test robot 2026-03-19 12:52 ` Andre Przywara 2026-03-18 8:00 ` [PATCH v2 0/8] Arm Live Firmware Activation (LFA) support Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox