:::::: :::::: Manual check reason: "low confidence static check warning: drivers/firmware/arm_scmi/powercap.c:331:17: sparse: sparse: dubious: x & !y" ::::::
CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: linux-ker...@vger.kernel.org TO: Cristian Marussi <cristian.maru...@arm.com> CC: Sudeep Holla <sudeep.ho...@arm.com> tree: https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git for-next/scmi head: 78dd442898d8908535e7d00edcdbcf44593aa71f commit: 4eae85df44a2a5cd4c067c2fc297d5f5c02de485 [16/23] firmware: arm_scmi: Add SCMIv3.1 Powercap protocol basic support :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: arm-randconfig-s032-20220703 (https://download.01.org/0day-ci/archive/20220703/202207031457.lwj2gkod-...@intel.com/config) compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/commit/?id=4eae85df44a2a5cd4c067c2fc297d5f5c02de485 git remote add sudeep-holla https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git git fetch --no-tags sudeep-holla for-next/scmi git checkout 4eae85df44a2a5cd4c067c2fc297d5f5c02de485 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=arm SHELL=/bin/bash arch/arm/kernel/ drivers/firmware/arm_scmi/ drivers/misc/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <l...@intel.com> sparse warnings: (new ones prefixed by >>) >> drivers/firmware/arm_scmi/powercap.c:331:17: sparse: sparse: dubious: x & !y >> drivers/firmware/arm_scmi/powercap.c:331:17: sparse: sparse: dubious: x & !y vim +331 drivers/firmware/arm_scmi/powercap.c 4eae85df44a2a5 Cristian Marussi 2022-06-27 307 4eae85df44a2a5 Cristian Marussi 2022-06-27 308 static int scmi_powercap_cap_set(const struct scmi_protocol_handle *ph, 4eae85df44a2a5 Cristian Marussi 2022-06-27 309 u32 domain_id, u32 power_cap, 4eae85df44a2a5 Cristian Marussi 2022-06-27 310 bool ignore_dresp) 4eae85df44a2a5 Cristian Marussi 2022-06-27 311 { 4eae85df44a2a5 Cristian Marussi 2022-06-27 312 int ret; 4eae85df44a2a5 Cristian Marussi 2022-06-27 313 struct scmi_xfer *t; 4eae85df44a2a5 Cristian Marussi 2022-06-27 314 struct scmi_msg_powercap_set_cap_or_pai *msg; 4eae85df44a2a5 Cristian Marussi 2022-06-27 315 const struct scmi_powercap_info *pc; 4eae85df44a2a5 Cristian Marussi 2022-06-27 316 4eae85df44a2a5 Cristian Marussi 2022-06-27 317 pc = scmi_powercap_dom_info_get(ph, domain_id); 4eae85df44a2a5 Cristian Marussi 2022-06-27 318 if (!pc || !pc->powercap_cap_config || !power_cap || 4eae85df44a2a5 Cristian Marussi 2022-06-27 319 power_cap < pc->min_power_cap || 4eae85df44a2a5 Cristian Marussi 2022-06-27 320 power_cap > pc->max_power_cap) 4eae85df44a2a5 Cristian Marussi 2022-06-27 321 return -EINVAL; 4eae85df44a2a5 Cristian Marussi 2022-06-27 322 4eae85df44a2a5 Cristian Marussi 2022-06-27 323 ret = ph->xops->xfer_get_init(ph, POWERCAP_CAP_SET, 4eae85df44a2a5 Cristian Marussi 2022-06-27 324 sizeof(*msg), 0, &t); 4eae85df44a2a5 Cristian Marussi 2022-06-27 325 if (ret) 4eae85df44a2a5 Cristian Marussi 2022-06-27 326 return ret; 4eae85df44a2a5 Cristian Marussi 2022-06-27 327 4eae85df44a2a5 Cristian Marussi 2022-06-27 328 msg = t->tx.buf; 4eae85df44a2a5 Cristian Marussi 2022-06-27 329 msg->domain = cpu_to_le32(domain_id); 4eae85df44a2a5 Cristian Marussi 2022-06-27 330 msg->flags = 4eae85df44a2a5 Cristian Marussi 2022-06-27 @331 cpu_to_le32(FIELD_PREP(CAP_SET_ASYNC, !!pc->async_powercap_cap_set) | 4eae85df44a2a5 Cristian Marussi 2022-06-27 332 FIELD_PREP(CAP_SET_IGNORE_DRESP, !!ignore_dresp)); 4eae85df44a2a5 Cristian Marussi 2022-06-27 333 msg->value = cpu_to_le32(power_cap); 4eae85df44a2a5 Cristian Marussi 2022-06-27 334 4eae85df44a2a5 Cristian Marussi 2022-06-27 335 if (!pc->async_powercap_cap_set || ignore_dresp) { 4eae85df44a2a5 Cristian Marussi 2022-06-27 336 ret = ph->xops->do_xfer(ph, t); 4eae85df44a2a5 Cristian Marussi 2022-06-27 337 } else { 4eae85df44a2a5 Cristian Marussi 2022-06-27 338 ret = ph->xops->do_xfer_with_response(ph, t); 4eae85df44a2a5 Cristian Marussi 2022-06-27 339 if (!ret) { 4eae85df44a2a5 Cristian Marussi 2022-06-27 340 struct scmi_msg_resp_powercap_cap_set_complete *resp; 4eae85df44a2a5 Cristian Marussi 2022-06-27 341 4eae85df44a2a5 Cristian Marussi 2022-06-27 342 resp = t->rx.buf; 4eae85df44a2a5 Cristian Marussi 2022-06-27 343 if (le32_to_cpu(resp->domain) == domain_id) 4eae85df44a2a5 Cristian Marussi 2022-06-27 344 dev_dbg(ph->dev, 4eae85df44a2a5 Cristian Marussi 2022-06-27 345 "Powercap ID %d CAP set async to %u\n", 4eae85df44a2a5 Cristian Marussi 2022-06-27 346 domain_id, 4eae85df44a2a5 Cristian Marussi 2022-06-27 347 get_unaligned_le32(&resp->power_cap)); 4eae85df44a2a5 Cristian Marussi 2022-06-27 348 else 4eae85df44a2a5 Cristian Marussi 2022-06-27 349 ret = -EPROTO; 4eae85df44a2a5 Cristian Marussi 2022-06-27 350 } 4eae85df44a2a5 Cristian Marussi 2022-06-27 351 } 4eae85df44a2a5 Cristian Marussi 2022-06-27 352 4eae85df44a2a5 Cristian Marussi 2022-06-27 353 ph->xops->xfer_put(ph, t); 4eae85df44a2a5 Cristian Marussi 2022-06-27 354 return ret; 4eae85df44a2a5 Cristian Marussi 2022-06-27 355 } 4eae85df44a2a5 Cristian Marussi 2022-06-27 356 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org