Hi Eugen, kernel test robot noticed the following build warnings:
[auto build test WARNING on rppt-memblock/fixes] [also build test WARNING on linus/master v6.18-rc6] [cannot apply to akpm-mm/mm-everything rppt-memblock/for-next next-20251121] [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/Eugen-Hristev/kernel-Introduce-meminspect/20251119-235912 base: https://git.kernel.org/pub/scm/linux/kernel/git/rppt/memblock.git fixes patch link: https://lore.kernel.org/r/20251119154427.1033475-24-eugen.hristev%40linaro.org patch subject: [PATCH 23/26] soc: qcom: Add minidump driver config: nios2-randconfig-r123-20251122 (https://download.01.org/0day-ci/archive/20251122/[email protected]/config) compiler: nios2-linux-gcc (GCC) 11.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251122/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ sparse warnings: (new ones prefixed by >>) >> drivers/soc/qcom/minidump.c:108:35: sparse: sparse: restricted __le32 >> degrades to integer >> drivers/soc/qcom/minidump.c:154:22: sparse: sparse: incorrect type in >> assignment (different base types) @@ expected restricted __le32 >> [usertype] seq_num @@ got unsigned int enum meminspect_uid const id @@ drivers/soc/qcom/minidump.c:154:22: sparse: expected restricted __le32 [usertype] seq_num drivers/soc/qcom/minidump.c:154:22: sparse: got unsigned int enum meminspect_uid const id >> drivers/soc/qcom/minidump.c:184:19: sparse: sparse: unsigned value that used >> to be signed checked against zero? drivers/soc/qcom/minidump.c:183:39: sparse: signed value source vim +108 drivers/soc/qcom/minidump.c 93 94 /** 95 * qcom_md_get_region_index() - Lookup minidump region by id 96 * @md: minidump data 97 * @id: minidump region id 98 * 99 * Return: On success, it returns the internal region index, on failure, 100 * returns negative error value 101 */ 102 static int qcom_md_get_region_index(struct minidump *md, int id) 103 { 104 unsigned int count = le32_to_cpu(md->toc->region_count); 105 unsigned int i; 106 107 for (i = 0; i < count; i++) > 108 if (md->regions[i].seq_num == id) 109 return i; 110 111 return -ENOENT; 112 } 113 114 /** 115 * register_md_region() - Register a new minidump region 116 * @priv: private data 117 * @e: pointer to inspect entry 118 * 119 * Return: None 120 */ 121 static void __maybe_unused register_md_region(void *priv, 122 const struct inspect_entry *e) 123 { 124 unsigned int num_region, region_cnt; 125 const char *name = "unknown"; 126 struct minidump_region *mdr; 127 struct minidump *md = priv; 128 129 if (!(e->va || e->pa) || !e->size) { 130 dev_dbg(md->dev, "invalid region requested\n"); 131 return; 132 } 133 134 if (e->id < ARRAY_SIZE(meminspect_id_to_md_string)) 135 name = meminspect_id_to_md_string[e->id]; 136 137 if (qcom_md_get_region_index(md, e->id) >= 0) { 138 dev_dbg(md->dev, "%s:%d region is already registered\n", 139 name, e->id); 140 return; 141 } 142 143 /* Check if there is a room for a new entry */ 144 num_region = le32_to_cpu(md->toc->region_count); 145 if (num_region >= MAX_NUM_REGIONS) { 146 dev_dbg(md->dev, "maximum region limit %u reached\n", 147 num_region); 148 return; 149 } 150 151 region_cnt = le32_to_cpu(md->toc->region_count); 152 mdr = &md->regions[region_cnt]; 153 scnprintf(mdr->name, MAX_REGION_NAME_LENGTH, "K%.8s", name); > 154 mdr->seq_num = e->id; 155 if (e->pa) 156 mdr->address = cpu_to_le64(e->pa); 157 else if (e->va) 158 mdr->address = cpu_to_le64(__pa(e->va)); 159 mdr->size = cpu_to_le64(ALIGN(e->size, 4)); 160 mdr->valid = cpu_to_le32(MINIDUMP_REGION_VALID); 161 region_cnt++; 162 md->toc->region_count = cpu_to_le32(region_cnt); 163 164 dev_dbg(md->dev, "%s:%d region registered %llx:%llx\n", 165 mdr->name, mdr->seq_num, mdr->address, mdr->size); 166 } 167 168 /** 169 * unregister_md_region() - Unregister a previously registered minidump region 170 * @priv: private data 171 * @e: pointer to inspect entry 172 * 173 * Return: None 174 */ 175 static void __maybe_unused unregister_md_region(void *priv, 176 const struct inspect_entry *e) 177 { 178 struct minidump_region *mdr; 179 struct minidump *md = priv; 180 unsigned int region_cnt; 181 unsigned int idx; 182 183 idx = qcom_md_get_region_index(md, e->id); > 184 if (idx < 0) { 185 dev_dbg(md->dev, "%d region is not present\n", e->id); 186 return; 187 } 188 189 mdr = &md->regions[0]; 190 region_cnt = le32_to_cpu(md->toc->region_count); 191 192 /* 193 * Left shift one position all the regions located after the 194 * region being removed, in order to fill the gap. 195 * Then, zero out the last region at the end. 196 */ 197 memmove(&mdr[idx], &mdr[idx + 1], (region_cnt - idx - 1) * sizeof(*mdr)); 198 memset(&mdr[region_cnt - 1], 0, sizeof(*mdr)); 199 region_cnt--; 200 md->toc->region_count = cpu_to_le32(region_cnt); 201 } 202 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
