Re: [PATCH v2] firmware: smccc: Support optional Arm SMC SOC_ID name

kernel test robot
2024-12-04T12:27:04Z

Hi Paul,

kernel test robot noticed the following build warnings:

[auto build test WARNING on soc/for-next]
[also build test WARNING on linus/master v6.13-rc1 next-20241203]
[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/Paul-Benoit/firmware-smccc-Support-optional-Arm-SMC-SOC_ID-name/20241204-124243
base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next
patch link: https://lore.kernel.org/r/20241203212854.5565-1-paul%40os.amperecomputing.com
patch subject: [PATCH v2] firmware: smccc: Support optional Arm SMC SOC_ID name
config: arm-qcom_defconfig (https://download.01.org/0day-ci/archive/20241204/202412042020.U9EEV8mE-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 592c0fe55f6d9a811028b5f3507be91458ab2713)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241204/202412042020.U9EEV8mE-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/202412042020.U9EEV8mE-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/firmware/smccc/soc_id.c:109:16: warning: shift count >= width of type [-Wshift-count-overflow]
109 | dst[4] = (reg >> 32) & 0xff;
| ^ ~~
drivers/firmware/smccc/soc_id.c:110:16: warning: shift count >= width of type [-Wshift-count-overflow]
110 | dst[5] = (reg >> 40) & 0xff;
| ^ ~~
drivers/firmware/smccc/soc_id.c:111:16: warning: shift count >= width of type [-Wshift-count-overflow]
111 | dst[6] = (reg >> 48) & 0xff;
| ^ ~~
drivers/firmware/smccc/soc_id.c:112:16: warning: shift count >= width of type [-Wshift-count-overflow]
112 | dst[7] = (reg >> 56) & 0xff;
| ^ ~~
>> drivers/firmware/smccc/soc_id.c:37:29: warning: unused variable 'smccc_soc_id_name' [-Wunused-variable]
37 | static char __ro_after_init smccc_soc_id_name[136] = "";
| ^~~~~~~~~~~~~~~~~
drivers/firmware/smccc/soc_id.c:103:20: warning: unused function 'str_fragment_from_reg' [-Wunused-function]
103 | static inline void str_fragment_from_reg(char *dst, unsigned long reg)
| ^~~~~~~~~~~~~~~~~~~~~
6 warnings generated.

vim +109 drivers/firmware/smccc/soc_id.c

36
> 37 static char __ro_after_init smccc_soc_id_name[136] = "";
38
39 static int __init smccc_soc_init(void)
40 {
41 int soc_id_rev, soc_id_version;
42 static char soc_id_str[20], soc_id_rev_str[12];
43 static char soc_id_jep106_id_str[12];
44
45 if (arm_smccc_get_version() < ARM_SMCCC_VERSION_1_2)
46 return 0;
47
48 soc_id_version = arm_smccc_get_soc_id_version();
49 if (soc_id_version == SMCCC_RET_NOT_SUPPORTED) {
50 pr_info("ARCH_SOC_ID not implemented, skipping ....\n");
51 return 0;
52 }
53
54 if (soc_id_version < 0) {
55 pr_err("Invalid SoC Version: %x\n", soc_id_version);
56 return -EINVAL;
57 }
58
59 soc_id_rev = arm_smccc_get_soc_id_revision();
60 if (soc_id_rev < 0) {
61 pr_err("Invalid SoC Revision: %x\n", soc_id_rev);
62 return -EINVAL;
63 }
64
65 soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
66 if (!soc_dev_attr)
67 return -ENOMEM;
68
69 sprintf(soc_id_rev_str, "0x%08x", soc_id_rev);
70 sprintf(soc_id_jep106_id_str, "jep106:%02x%02x",
71 JEP106_BANK_CONT_CODE(soc_id_version),
72 JEP106_ID_CODE(soc_id_version));
73 sprintf(soc_id_str, "%s:%04x", soc_id_jep106_id_str,
74 IMP_DEF_SOC_ID(soc_id_version));
75
76 soc_dev_attr->soc_id = soc_id_str;
77 soc_dev_attr->revision = soc_id_rev_str;
78 soc_dev_attr->family = soc_id_jep106_id_str;
79 soc_dev_attr->machine = smccc_soc_name_init();
80
81 soc_dev = soc_device_register(soc_dev_attr);
82 if (IS_ERR(soc_dev)) {
83 kfree(soc_dev_attr);
84 return PTR_ERR(soc_dev);
85 }
86
87 pr_info("ID = %s Revision = %s\n", soc_dev_attr->soc_id,
88 soc_dev_attr->revision);
89
90 return 0;
91 }
92 module_init(smccc_soc_init);
93
94 static void __exit smccc_soc_exit(void)
95 {
96 if (soc_dev)
97 soc_device_unregister(soc_dev);
98 kfree(soc_dev_attr);
99 }
100 module_exit(smccc_soc_exit);
101
102
103 static inline void str_fragment_from_reg(char *dst, unsigned long reg)
104 {
105 dst[0] = (reg >> 0) & 0xff;
106 dst[1] = (reg >> 8) & 0xff;
107 dst[2] = (reg >> 16) & 0xff;
108 dst[3] = (reg >> 24) & 0xff;
> 109 dst[4] = (reg >> 32) & 0xff;
> 110 dst[5] = (reg >> 40) & 0xff;
111 dst[6] = (reg >> 48) & 0xff;
112 dst[7] = (reg >> 56) & 0xff;
113 }
114

--
0-DAY CI Kernel Test Service