Hi Haren,

kernel test robot noticed the following build warnings:

[auto build test WARNING on powerpc/next]
[also build test WARNING on powerpc/fixes linus/master v6.17-rc4 next-20250905]
[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/Haren-Myneni/powerpc-pseries-Define-papr-hvpipe-ioctl/20250906-235556
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
patch link:    
https://lore.kernel.org/r/20250906155308.705926-5-haren%40linux.ibm.com
patch subject: [PATCH v5 4/9] powerpc/pseries: Send payload with 
ibm,send-hvpipe-msg RTAS
config: powerpc64-randconfig-r123-20250907 
(https://download.01.org/0day-ci/archive/20250907/202509071638.lb0stpgx-...@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 8.5.0
reproduce: 
(https://download.01.org/0day-ci/archive/20250907/202509071638.lb0stpgx-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202509071638.lb0stpgx-...@intel.com/

sparse warnings: (new ones prefixed by >>)
>> arch/powerpc/platforms/pseries/papr-hvpipe.c:177:26: sparse: sparse: 
>> incorrect type in assignment (different base types) @@     expected unsigned 
>> long long [usertype] @@     got restricted __be64 [usertype] @@
   arch/powerpc/platforms/pseries/papr-hvpipe.c:177:26: sparse:     expected 
unsigned long long [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:177:26: sparse:     got 
restricted __be64 [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:186:26: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
long long [usertype] @@     got restricted __be64 [usertype] @@
   arch/powerpc/platforms/pseries/papr-hvpipe.c:186:26: sparse:     expected 
unsigned long long [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:186:26: sparse:     got 
restricted __be64 [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:189:26: sparse: sparse: 
incorrect type in assignment (different base types) @@     expected unsigned 
long long [usertype] @@     got restricted __be64 [usertype] @@
   arch/powerpc/platforms/pseries/papr-hvpipe.c:189:26: sparse:     expected 
unsigned long long [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:189:26: sparse:     got 
restricted __be64 [usertype]
   arch/powerpc/platforms/pseries/papr-hvpipe.c:267:33: sparse: sparse: 
incorrect type in initializer (different base types) @@     expected restricted 
__poll_t ( *poll )( ... ) @@     got unsigned int ( * )( ... ) @@
   arch/powerpc/platforms/pseries/papr-hvpipe.c:267:33: sparse:     expected 
restricted __poll_t ( *poll )( ... )
   arch/powerpc/platforms/pseries/papr-hvpipe.c:267:33: sparse:     got 
unsigned int ( * )( ... )

vim +177 arch/powerpc/platforms/pseries/papr-hvpipe.c

   118  
   119  /*
   120   * papr_hvpipe_handle_write -  Issue send HVPIPE RTAS and return
   121   * the RTAS status to the user space
   122   */
   123  static ssize_t papr_hvpipe_handle_write(struct file *file,
   124          const char __user *buf, size_t size, loff_t *off)
   125  {
   126          struct hvpipe_source_info *src_info = file->private_data;
   127          struct rtas_work_area *work_area, *work_buf;
   128          unsigned long ret, len;
   129          char *area_buf;
   130  
   131          if (!src_info)
   132                  return -EIO;
   133  
   134          /*
   135           * Send HVPIPE RTAS is used to send payload to the specific
   136           * source with the input parameters source ID and the payload
   137           * as buffer list. Each entry in the buffer list contains
   138           * address/length pair of the buffer.
   139           *
   140           * The buffer list format is as follows:
   141           *
   142           * Header (length of address/length pairs and the header length)
   143           * Address of 4K buffer 1
   144           * Length of 4K buffer 1 used
   145           * ...
   146           * Address of 4K buffer n
   147           * Length of 4K buffer n used
   148           *
   149           * See PAPR 7.3.32.2 ibm,send-hvpipe-msg
   150           *
   151           * Even though can support max 1MB payload, the hypervisor
   152           * supports only 4048 bytes payload at present and also
   153           * just one address/length entry.
   154           *
   155           * writev() interface can be added in future when the
   156           * hypervisor supports multiple buffer list entries.
   157           */
   158          /* HVPIPE_MAX_WRITE_BUFFER_SIZE = 4048 bytes */
   159          if ((size > (HVPIPE_HDR_LEN + HVPIPE_MAX_WRITE_BUFFER_SIZE)) ||
   160                  (size <= HVPIPE_HDR_LEN))
   161                  return -EINVAL;
   162  
   163          /*
   164           * The length of (address + length) pair + the length of header
   165           */
   166          len = (2 * sizeof(u64)) + sizeof(u64);
   167          size -= HVPIPE_HDR_LEN;
   168          buf += HVPIPE_HDR_LEN;
   169          mutex_lock(&rtas_ibm_send_hvpipe_msg_lock);
   170          work_area = rtas_work_area_alloc(SZ_4K);
   171          if (!work_area) {
   172                  ret = -ENOMEM;
   173                  goto out;
   174          }
   175          area_buf = rtas_work_area_raw_buf(work_area);
   176          /* header */
 > 177          *(u64 *)area_buf = cpu_to_be64(len);
   178          area_buf += sizeof(u64);
   179  
   180          work_buf = rtas_work_area_alloc(SZ_4K);
   181          if (!area_buf) {
   182                  ret = -ENOMEM;
   183                  goto out_work;
   184          }
   185          /* First buffer address */
   186          *(u64 *)area_buf = cpu_to_be64(rtas_work_area_phys(work_buf));
   187          area_buf += sizeof(u64);
   188          /* First buffer address length */
   189          *(u64 *)area_buf = cpu_to_be64(size);
   190  
   191          if (!copy_from_user(rtas_work_area_raw_buf(work_buf), buf, 
size)) {
   192                  ret = rtas_ibm_send_hvpipe_msg(work_area, 
src_info->srcID);
   193                  if (!ret)
   194                          ret = size + HVPIPE_HDR_LEN;
   195          } else
   196                  ret = -EPERM;
   197  
   198          rtas_work_area_free(work_buf);
   199  out_work:
   200          rtas_work_area_free(work_area);
   201  out:
   202          mutex_unlock(&rtas_ibm_send_hvpipe_msg_lock);
   203          return ret;
   204  }
   205  

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

Reply via email to