arch/powerpc/platforms/pseries/htmdump.c:246:25: sparse: sparse: cast to restricted __be64

From: kernel test robot

Date: Tue Mar 03 2026 - 03:23:34 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: af4e9ef3d78420feb8fe58cd9a1ab80c501b3c08
commit: 627cf584f4c36acb52230ffc47403cf9469ec9d0 powerpc/pseries/htmdump: Add htm status support to htmdump module
date: 10 months ago
config: powerpc64-randconfig-r122-20260303 (https://download.01.org/0day-ci/archive/20260303/202603031641.FGuPoHh0-lkp@xxxxxxxxx/config)
compiler: powerpc64-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260303/202603031641.FGuPoHh0-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/202603031641.FGuPoHh0-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> arch/powerpc/platforms/pseries/htmdump.c:246:25: sparse: sparse: cast to restricted __be64

vim +246 arch/powerpc/platforms/pseries/htmdump.c

208
209 static ssize_t htmstatus_read(struct file *filp, char __user *ubuf,
210 size_t count, loff_t *ppos)
211 {
212 void *htm_status_buf = filp->private_data;
213 long rc, ret;
214 u64 *num_entries;
215 u64 to_copy;
216 int htmstatus_flag;
217
218 /*
219 * Invoke H_HTM call with:
220 * - operation as htm status (H_HTM_OP_STATUS)
221 * - last three values as addr, size and offset
222 */
223 rc = htm_hcall_wrapper(nodeindex, nodalchipindex, coreindexonchip,
224 htmtype, H_HTM_OP_STATUS, virt_to_phys(htm_status_buf),
225 PAGE_SIZE, 0);
226
227 ret = htm_return_check(rc);
228 if (ret <= 0) {
229 pr_debug("H_HTM hcall failed for op: H_HTM_OP_STATUS, returning %ld\n", ret);
230 return ret;
231 }
232
233 /*
234 * HTM status buffer, start of buffer + 0x10 gives the
235 * number of HTM entries in the buffer. Each nest htm status
236 * entry is 0x6 bytes where each core htm status entry is
237 * 0x8 bytes.
238 * So total count to copy is:
239 * 32 bytes (for first 7 fields) + (number of HTM entries * entry size)
240 */
241 num_entries = htm_status_buf + 0x10;
242 if (htmtype == 0x2)
243 htmstatus_flag = 0x8;
244 else
245 htmstatus_flag = 0x6;
> 246 to_copy = 32 + (be64_to_cpu(*num_entries) * htmstatus_flag);
247 return simple_read_from_buffer(ubuf, count, ppos, htm_status_buf, to_copy);
248 }
249

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