[PATCH v4 1/5] firmware: xilinx: Update firmware call interface to support additional args

kernel test robot lkp at intel.com
Fri Nov 10 22:47:06 PST 2023


Hi Jay,

kernel test robot noticed the following build warnings:

[auto build test WARNING on driver-core/driver-core-testing]
[also build test WARNING on driver-core/driver-core-next driver-core/driver-core-linus staging/staging-testing staging/staging-next staging/staging-linus linus/master v6.6 next-20231110]
[cannot apply to xilinx-xlnx/master]
[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/Jay-Buddhabhatti/firmware-xilinx-Update-firmware-call-interface-to-support-additional-args/20231109-191827
base:   driver-core/driver-core-testing
patch link:    https://lore.kernel.org/r/20231109070021.16291-2-jay.buddhabhatti%40amd.com
patch subject: [PATCH v4 1/5] firmware: xilinx: Update firmware call interface to support additional args
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20231111/202311111439.Hxd4wZ6x-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231111/202311111439.Hxd4wZ6x-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311111439.Hxd4wZ6x-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/firmware/xilinx/zynqmp.c:139:21: warning: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Wvarargs]
     139 |         va_start(arg_list, num_args);
         |                            ^
   drivers/firmware/xilinx/zynqmp.c:129:57: note: parameter of type 'u8' (aka 'unsigned char') is declared here
     129 | static noinline int do_fw_call_smc(u32 *ret_payload, u8 num_args, ...)
         |                                                         ^
   drivers/firmware/xilinx/zynqmp.c:179:21: warning: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Wvarargs]
     179 |         va_start(arg_list, num_args);
         |                            ^
   drivers/firmware/xilinx/zynqmp.c:169:57: note: parameter of type 'u8' (aka 'unsigned char') is declared here
     169 | static noinline int do_fw_call_hvc(u32 *ret_payload, u8 num_args, ...)
         |                                                         ^
   drivers/firmware/xilinx/zynqmp.c:349:21: warning: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior [-Wvarargs]
     349 |         va_start(arg_list, num_args);
         |                            ^
   drivers/firmware/xilinx/zynqmp.c:335:61: note: parameter of type 'u8' (aka 'unsigned char') is declared here
     335 | int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 *ret_payload, u8 num_args, ...)
         |                                                             ^
   3 warnings generated.


vim +/va_start +139 drivers/firmware/xilinx/zynqmp.c

   119	
   120	/**
   121	 * do_fw_call_smc() - Call system-level platform management layer (SMC)
   122	 * @num_args:		Number of variable arguments should be <= 8
   123	 * @ret_payload:	Returned value array
   124	 *
   125	 * Invoke platform management function via SMC call (no hypervisor present).
   126	 *
   127	 * Return: Returns status, either success or error+reason
   128	 */
   129	static noinline int do_fw_call_smc(u32 *ret_payload, u8 num_args, ...)
   130	{
   131		struct arm_smccc_res res;
   132		u64 args[8] = {0};
   133		va_list arg_list;
   134		u8 i;
   135	
   136		if (num_args > 8)
   137			return -EINVAL;
   138	
 > 139		va_start(arg_list, num_args);
   140	
   141		for (i = 0; i < num_args; i++)
   142			args[i] = va_arg(arg_list, u64);
   143	
   144		va_end(arg_list);
   145	
   146		arm_smccc_smc(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], &res);
   147	
   148		if (ret_payload) {
   149			ret_payload[0] = lower_32_bits(res.a0);
   150			ret_payload[1] = upper_32_bits(res.a0);
   151			ret_payload[2] = lower_32_bits(res.a1);
   152			ret_payload[3] = upper_32_bits(res.a1);
   153		}
   154	
   155		return zynqmp_pm_ret_code((enum pm_ret_status)res.a0);
   156	}
   157	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki



More information about the linux-arm-kernel mailing list