From: kernel test robot <lkp@intel.com>
To: Cristian Marussi <cristian.marussi@arm.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, arm-scmi@vger.kernel.org,
linux-pm@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, sudeep.holla@arm.com,
james.quinlan@broadcom.com, f.fainelli@gmail.com,
vincent.guittot@linaro.org, etienne.carriere@st.com,
peng.fan@oss.nxp.com, michal.simek@amd.com,
quic_sibis@quicinc.com, dan.carpenter@linaro.org, d-gole@ti.com,
souvik.chakravarty@arm.com,
Cristian Marussi <cristian.marussi@arm.com>
Subject: Re: [PATCH 4/8] firmware: arm_scmi: Add SCMIv4.0 Powercap basic support
Date: Thu, 14 Aug 2025 21:54:17 +0800 [thread overview]
Message-ID: <202508142109.z6QIwr0w-lkp@intel.com> (raw)
In-Reply-To: <20250813114609.1305571-5-cristian.marussi@arm.com>
Hi Cristian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on rafael-pm/linux-next]
[also build test WARNING on rafael-pm/bleeding-edge soc/for-next trace/for-next linus/master v6.17-rc1 next-20250814]
[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/Cristian-Marussi/firmware-arm_scmi-Add-an-optional-custom-parameter-to-fastchannel-helpers/20250813-195150
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
patch link: https://lore.kernel.org/r/20250813114609.1305571-5-cristian.marussi%40arm.com
patch subject: [PATCH 4/8] firmware: arm_scmi: Add SCMIv4.0 Powercap basic support
config: arm64-randconfig-r111-20250814 (https://download.01.org/0day-ci/archive/20250814/202508142109.z6QIwr0w-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.3.0
reproduce: (https://download.01.org/0day-ci/archive/20250814/202508142109.z6QIwr0w-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/202508142109.z6QIwr0w-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/firmware/arm_scmi/powercap.c:302:48: sparse: sparse: restricted __le32 degrades to integer
>> drivers/firmware/arm_scmi/powercap.c:353:25: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int [usertype] flags @@ got restricted __le32 [usertype] attributes @@
drivers/firmware/arm_scmi/powercap.c:353:25: sparse: expected unsigned int [usertype] flags
drivers/firmware/arm_scmi/powercap.c:353:25: sparse: got restricted __le32 [usertype] attributes
vim +302 drivers/firmware/arm_scmi/powercap.c
289
290 static int
291 iter_powercap_cpls_process_response(const struct scmi_protocol_handle *ph,
292 const void *response,
293 struct scmi_iterator_state *st, void *priv)
294 {
295 const struct scmi_msg_resp_powercap_cpc *r = response;
296 struct scmi_cpls_priv *p = priv;
297 struct scmi_powercap_cpl_info *cpl;
298
299 cpl = &p->cpli[st->desc_index + st->loop_idx];
300
301 cpl->id = le32_to_cpu(r->desc[st->loop_idx].cpli);
> 302 cpl->cap_config = r->desc[st->loop_idx].flags & BIT(0);
303
304 cpl->min_power_cap = le32_to_cpu(r->desc[st->loop_idx].min_power_cap);
305 cpl->max_power_cap = le32_to_cpu(r->desc[st->loop_idx].max_power_cap);
306 cpl->power_cap_step = le32_to_cpu(r->desc[st->loop_idx].power_cap_step);
307 if (!cpl->power_cap_step && cpl->min_power_cap != cpl->max_power_cap)
308 return -EINVAL;
309
310 cpl->min_avg_ivl = le32_to_cpu(r->desc[st->loop_idx].min_cai);
311 cpl->max_avg_ivl = le32_to_cpu(r->desc[st->loop_idx].max_cai);
312 cpl->avg_ivl_step = le32_to_cpu(r->desc[st->loop_idx].cai_step);
313 if (!cpl->avg_ivl_step && cpl->min_avg_ivl != cpl->max_avg_ivl)
314 return -EINVAL;
315
316 cpl->avg_ivl_config = cpl->min_avg_ivl != cpl->max_avg_ivl;
317
318 strscpy(cpl->name, r->desc[st->loop_idx].name, SCMI_SHORT_NAME_MAX_SIZE);
319
320 return 0;
321 }
322
323 static int scmi_powercap_cpls_enumerate(const struct scmi_protocol_handle *ph,
324 struct scmi_powercap_info *dom_info)
325 {
326 void *iter;
327 struct scmi_iterator_ops ops = {
328 .prepare_message = iter_powercap_cpls_prepare_message,
329 .update_state = iter_powercap_cpls_update_state,
330 .process_response = iter_powercap_cpls_process_response,
331 };
332 struct scmi_cpls_priv cpriv = {
333 .domain_id = dom_info->id,
334 .cpli = dom_info->cpli,
335 };
336
337 iter = ph->hops->iter_response_init(ph, &ops, dom_info->num_cpli,
338 POWERCAP_CPC_ATTRIBUTES,
339 sizeof(struct scmi_msg_powercap_cpc),
340 &cpriv);
341 if (IS_ERR(iter))
342 return PTR_ERR(iter);
343
344 return ph->hops->iter_response_run(iter);
345 }
346
347 static int
348 scmi_powercap_domain_attrs_process(const struct scmi_protocol_handle *ph,
349 struct powercap_info *pinfo,
350 struct scmi_powercap_info *dom_info, void *r)
351 {
352 struct scmi_msg_resp_powercap_domain_attributes *resp = r;
> 353 u32 flags = resp->attributes;
354 bool cap_config;
355 int ret;
356
357 cap_config = SUPPORTS_POWERCAP_CAP_CONFIGURATION(flags);
358 if (PROTOCOL_REV_MAJOR(pinfo->version) < 0x3) {
359 dom_info->num_cpli = 1;
360 } else {
361 dom_info->num_cpli = le32_get_bits(resp->attributes,
362 GENMASK(18, 15));
363 if (cap_config && !dom_info->num_cpli)
364 return -EINVAL;
365 }
366
367 dom_info->cpli = devm_kcalloc(ph->dev, dom_info->num_cpli,
368 sizeof(*dom_info->cpli), GFP_KERNEL);
369 if (!dom_info->cpli)
370 return -ENOMEM;
371
372 if (pinfo->notify_cap_cmd) {
373 if (PROTOCOL_REV_MAJOR(pinfo->version) < 0x3)
374 dom_info->notify_powercap_cap_change =
375 SUPPORTS_POWERCAP_CAP_CHANGE_NOTIFY(flags);
376 else
377 dom_info->notify_powercap_cap_change =
378 SUPPORTS_POWERCAP_CAP_CHANGE_NOTIFY_V3(flags);
379 }
380
381 if (pinfo->notify_measurements_cmd)
382 dom_info->notify_powercap_measurement_change =
383 SUPPORTS_POWERCAP_MEASUREMENTS_CHANGE_NOTIFY(flags);
384
385
386 dom_info->extended_names = SUPPORTS_EXTENDED_NAMES(flags);
387
388 dom_info->async_powercap_cap_set =
389 SUPPORTS_ASYNC_POWERCAP_CAP_SET(flags);
390
391 dom_info->powercap_monitoring =
392 SUPPORTS_POWERCAP_MONITORING(flags);
393 dom_info->powercap_scale_mw =
394 SUPPORTS_POWER_UNITS_MW(flags);
395 dom_info->powercap_scale_uw =
396 SUPPORTS_POWER_UNITS_UW(flags);
397 dom_info->fastchannels =
398 SUPPORTS_POWERCAP_FASTCHANNELS(flags);
399
400 strscpy(dom_info->name, resp->name, SCMI_SHORT_NAME_MAX_SIZE);
401
402 dom_info->sustainable_power =
403 le32_to_cpu(resp->sustainable_power);
404 dom_info->accuracy = le32_to_cpu(resp->accuracy);
405
406 dom_info->parent_id = le32_to_cpu(resp->parent_id);
407 if (dom_info->parent_id != SCMI_POWERCAP_ROOT_ZONE_ID &&
408 (dom_info->parent_id >= pinfo->num_domains ||
409 dom_info->parent_id == dom_info->id)) {
410 dev_err(ph->dev,
411 "Platform reported inconsistent parent ID for domain %d - %s\n",
412 dom_info->id, dom_info->name);
413 return -ENODEV;
414 }
415
416 dom_info->cpli[0].id = CPL0;
417 if (PROTOCOL_REV_MAJOR(pinfo->version) < 0x3)
418 dom_info->cpli[0].avg_ivl_config =
419 SUPPORTS_POWERCAP_PAI_CONFIGURATION(flags);
420 else
421 dom_info->cpli[0].avg_ivl_config =
422 SUPPORTS_POWERCAP_CAI_CONFIGURATION(flags);
423
424 if (PROTOCOL_REV_MAJOR(pinfo->version) < 0x3) {
425 dom_info->cpli[0].min_avg_ivl = le32_to_cpu(resp->min_pai);
426 dom_info->cpli[0].max_avg_ivl = le32_to_cpu(resp->max_pai);
427 dom_info->cpli[0].avg_ivl_step = le32_to_cpu(resp->pai_step);
428 } else {
429 struct scmi_msg_resp_powercap_domain_attributes_v3 *resp = r;
430
431 dom_info->cpli[0].min_avg_ivl = le32_to_cpu(resp->min_cai);
432 dom_info->cpli[0].max_avg_ivl = le32_to_cpu(resp->max_cai);
433 dom_info->cpli[0].avg_ivl_step = le32_to_cpu(resp->cai_step);
434 }
435
436 ret = scmi_powercap_validate(dom_info->cpli[0].min_avg_ivl,
437 dom_info->cpli[0].max_avg_ivl,
438 dom_info->cpli[0].avg_ivl_step,
439 dom_info->cpli[0].avg_ivl_config);
440 if (ret) {
441 dev_err(ph->dev,
442 "Platform reported inconsistent PAI config for domain %d - %s\n",
443 dom_info->id, dom_info->name);
444 return ret;
445 }
446
447 dom_info->cpli[0].cap_config = cap_config;
448 dom_info->cpli[0].min_power_cap = le32_to_cpu(resp->min_power_cap);
449 dom_info->cpli[0].max_power_cap = le32_to_cpu(resp->max_power_cap);
450 dom_info->cpli[0].power_cap_step = le32_to_cpu(resp->power_cap_step);
451 ret = scmi_powercap_validate(dom_info->cpli[0].min_power_cap,
452 dom_info->cpli[0].max_power_cap,
453 dom_info->cpli[0].power_cap_step,
454 dom_info->cpli[0].cap_config);
455 if (ret) {
456 dev_err(ph->dev,
457 "Platform reported inconsistent CAP config for domain %d - %s\n",
458 dom_info->id, dom_info->name);
459 return ret;
460 }
461 /* Just using same short name */
462 strscpy(dom_info->cpli[0].name, dom_info->name, SCMI_SHORT_NAME_MAX_SIZE);
463
464 return 0;
465 }
466
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2025-08-14 13:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-13 11:46 [PATCH 0/8] Add support for SCMIv4.0 Powercap Extensions Cristian Marussi
2025-08-13 11:46 ` [PATCH 1/8] firmware: arm_scmi: Add an optional custom parameter to fastchannel helpers Cristian Marussi
2025-08-13 11:46 ` [PATCH 2/8] firmware: arm_scmi: Add bound iterators support Cristian Marussi
2025-08-13 11:46 ` [PATCH 3/8] firmware: arm_scmi: Refactor powercap domain layout Cristian Marussi
2025-08-15 13:13 ` Dan Carpenter
2025-08-13 11:46 ` [PATCH 4/8] firmware: arm_scmi: Add SCMIv4.0 Powercap basic support Cristian Marussi
2025-08-14 13:54 ` kernel test robot [this message]
2025-08-13 11:46 ` [PATCH 5/8] firmware: arm_scmi: Add SCMIv4.0 Powercap FCs support Cristian Marussi
2025-08-13 11:46 ` [PATCH 6/8] firmware: arm_scmi: Add SCMIV4.0 Powercap notifications support Cristian Marussi
2025-08-13 11:46 ` [PATCH 7/8] include: trace: Add new parameter to trace_scmi_fc_call Cristian Marussi
2025-08-13 11:46 ` [PATCH 8/8] powercap: arm_scmi: Enable multiple constraints support Cristian Marussi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202508142109.z6QIwr0w-lkp@intel.com \
--to=lkp@intel.com \
--cc=arm-scmi@vger.kernel.org \
--cc=cristian.marussi@arm.com \
--cc=d-gole@ti.com \
--cc=dan.carpenter@linaro.org \
--cc=etienne.carriere@st.com \
--cc=f.fainelli@gmail.com \
--cc=james.quinlan@broadcom.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=michal.simek@amd.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=peng.fan@oss.nxp.com \
--cc=quic_sibis@quicinc.com \
--cc=souvik.chakravarty@arm.com \
--cc=sudeep.holla@arm.com \
--cc=vincent.guittot@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®