Re: [PATCH 1/1] firmware: smccc: add support for Live Firmware Activation (LFA)
From: Andre Przywara
Date: Mon Jan 19 2026 - 11:41:33 EST
Hi,
On 19/01/2026 16:29, kernel test robot wrote:
Hi Salman,
kernel test robot noticed the following build warnings:
[auto build test WARNING on soc/for-next]
[also build test WARNING on linus/master v6.19-rc6 next-20260116]
[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/Salman-Nabi/firmware-smccc-add-support-for-Live-Firmware-Activation-LFA/20260119-203221
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
patch link: https://lore.kernel.org/r/20260119122729.287522-2-salman.nabi%40arm.com
patch subject: [PATCH 1/1] firmware: smccc: add support for Live Firmware Activation (LFA)
config: arm-sp7021_defconfig (https://download.01.org/0day-ci/archive/20260120/202601200007.GVZIjoCx-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 15.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260120/202601200007.GVZIjoCx-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601200007.GVZIjoCx-lkp@xxxxxxxxx/
All warnings (new ones prefixed by >>):
drivers/firmware/smccc/lfa_fw.c: In function 'get_nr_lfa_components':
drivers/firmware/smccc/lfa_fw.c:179:16: error: variable 'reg' has initializer but incomplete type
179 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:179:43: warning: excess elements in struct initializer
Ah, yes, arm_smccc_1_2_regs is only defined for arm64. We rely on v1.2, and the LFA spec actually means that this means AArch64 only right at the beginning (chapter 2).
So we need an additional dependency on ARM64 in the Kconfig entry.
Cheers,
Andre
179 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:179:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:179:35: error: storage size of 'reg' isn't known
179 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:184:9: error: implicit declaration of function 'arm_smccc_1_2_invoke'; did you mean 'arm_smccc_1_1_invoke'? [-Wimplicit-function-declaration]
184 | arm_smccc_1_2_invoke(®, ®);
| ^~~~~~~~~~~~~~~~~~~~
| arm_smccc_1_1_invoke
179 | struct arm_smccc_1_2_regs reg = { 0 };drivers/firmware/smccc/lfa_fw.c:179:35: warning: unused variable 'reg' [-Wunused-variable]
| ^~~
drivers/firmware/smccc/lfa_fw.c: In function 'lfa_cancel':
drivers/firmware/smccc/lfa_fw.c:194:16: error: variable 'reg' has initializer but incomplete type
194 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:194:43: warning: excess elements in struct initializer
194 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:194:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:194:35: error: storage size of 'reg' isn't known
194 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:194:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'call_lfa_activate':
drivers/firmware/smccc/lfa_fw.c:220:16: error: variable 'reg' has initializer but incomplete type
220 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:220:43: warning: excess elements in struct initializer
220 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:220:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:220:35: error: storage size of 'reg' isn't known
220 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:220:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'prime_fw_image':
drivers/firmware/smccc/lfa_fw.c:290:16: error: variable 'reg' has initializer but incomplete type
290 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:290:43: warning: excess elements in struct initializer
290 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:290:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:290:35: error: storage size of 'reg' isn't known
290 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:290:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'activation_pending_show':
drivers/firmware/smccc/lfa_fw.c:360:16: error: variable 'reg' has initializer but incomplete type
360 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:360:43: warning: excess elements in struct initializer
360 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:360:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:360:35: error: storage size of 'reg' isn't known
360 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:360:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'pending_version_show':
drivers/firmware/smccc/lfa_fw.c:434:16: error: variable 'reg' has initializer but incomplete type
434 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:434:43: warning: excess elements in struct initializer
434 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:434:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:434:35: error: storage size of 'reg' isn't known
434 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:434:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'update_fw_images_tree':
drivers/firmware/smccc/lfa_fw.c:586:16: error: variable 'reg' has initializer but incomplete type
586 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:586:43: warning: excess elements in struct initializer
586 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:586:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:586:35: error: storage size of 'reg' isn't known
586 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:586:35: warning: unused variable 'reg' [-Wunused-variable]
drivers/firmware/smccc/lfa_fw.c: In function 'lfa_init':
drivers/firmware/smccc/lfa_fw.c:619:16: error: variable 'reg' has initializer but incomplete type
619 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~~~~~~~~~~~~~~~~
drivers/firmware/smccc/lfa_fw.c:619:43: warning: excess elements in struct initializer
619 | struct arm_smccc_1_2_regs reg = { 0 };
| ^
drivers/firmware/smccc/lfa_fw.c:619:43: note: (near initialization for 'reg')
drivers/firmware/smccc/lfa_fw.c:619:35: error: storage size of 'reg' isn't known
619 | struct arm_smccc_1_2_regs reg = { 0 };
| ^~~
drivers/firmware/smccc/lfa_fw.c:619:35: warning: unused variable 'reg' [-Wunused-variable]
vim +179 drivers/firmware/smccc/lfa_fw.c
176
177 static unsigned long get_nr_lfa_components(void)
178 {
> 179 struct arm_smccc_1_2_regs reg = { 0 };
180
181 reg.a0 = LFA_1_0_FN_GET_INFO;
182 reg.a1 = 0; /* lfa_info_selector = 0 */
183
184 arm_smccc_1_2_invoke(®, ®);
185 if (reg.a0 != LFA_SUCCESS)
186 return reg.a0;
187
188 return reg.a1;
189 }
190