From: Cristian Marussi <cristian.marussi@arm.com>
To: Artem Shimko <a.shimko.dev@gmail.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>,
Cristian Marussi <cristian.marussi@arm.com>,
arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] drivers: scmi: Add completion timeout handling for raw mode transfers
Date: Tue, 7 Oct 2025 17:55:53 +0100 [thread overview]
Message-ID: <aOVGGaY9NmKqUwPG@pluto> (raw)
In-Reply-To: <20251003192233.1618447-1-a.shimko.dev@gmail.com_quarantine>
On Fri, Oct 03, 2025 at 10:22:33PM +0300, Artem Shimko wrote:
> Fix race conditions in SCMI raw mode implementation by adding proper
> completion timeout handling. Multiple tests in the SCMI test suite
> were failing due to early clearing of SCMI_XFER_FLAG_IS_RAW flag in
> scmi_xfer_raw_put() function.
Hi Artem,
LGTM now .... but ... now the commit message is no more describing what you
are doing, right ? ... it is no more handled with completions...
Please fix the commit message to reflect what you are doing; also it
would be good to at first explain the issue (like you are doing
already), and THEN describe the solution applied...
Following the rules in "Describe your changes" in:
https://www.kernel.org/doc/html/v6.17/process/submitting-patches.html
(if you already know this ... just ignore me)
>
> TRANS=raw
> PROTOCOLS=base,clock,power_domain,performance,system_power,sensor,
> voltage,reset,powercap,pin_control VERBOSE=5
>
> The root cause:
> Tests were failing on poll() system calls with this condition:
> if (!raw || (idx == SCMI_RAW_REPLY_QUEUE && !SCMI_XFER_IS_RAW(xfer)))
> return;
>
> The SCMI_XFER_FLAG_IS_RAW flag was being cleared prematurely before
> the transfer completion was properly acknowledged, causing the poll
> to return on timeout and tests to fail.
>
> Fix ensures:
> - Proper synchronization between transfer completion and flag clearing
> - Stable test execution by maintaining correct flag states
>
> An example of a random test failure:
> 817: Voltage get ext name for invalid domain
> [Check 1] Get extended name for invalid domain
> MSG HDR : 0x04585c09
> NUM PARAM : 1
> PARAMETER[00] : 0x0000000c
> CHECK STATUS : PASSED [SCMI_NOT_FOUND_ERR]
> CHECK HEADER : PASSED [0x04585c09]
> RETURN COUNT : 0
> NUM DOMAINS : 11
> VOLTAGE DOMAIN : 0
> [Check 2] Get extended name for unsupp. domain
> MSG HDR : 0x045c5c09
> NUM PARAM : 1
> PARAMETER[00] : 0x00000000
> CHECK STATUS : FAILED
> EXPECTED : SCMI_NOT_FOUND_ERR
> RECEIVED : SCMI_GENERIC_ERROR : NON CONFORMANT
>
> After making these changes, the tests stopped failing.
>
I think also you can trim and drop this further explanation down here...
you have described clearly enough the issue above...
> $mount -t debugfs none /sys/kernel/debug
> $scmi_test_agent
> [ 127.865032] arm-scmi arm-scmi.1.auto: Resetting SCMI Raw stack.
> [ 128.360503] arm-scmi arm-scmi.1.auto: Using Base channel for protocol 0x12
> $tail -n 6 arm_scmi_test_log.txt
> ****************************************************
> TOTAL TESTS: 167 PASSED: 120 FAILED: 0 SKIPPED: 47
> ****************************************************
>
> An ftrace log with of passed test:
> 0) | scmi_rx_callback()
> 0) | scmi_raw_message_report()
> 7) | scmi_xfer_raw_wait_for_message_response()
> 7) + 22.000 us | scmi_wait_for_reply();
> 0) | /* scmi_raw_message_report*/
> 7) | scmi_xfer_raw_put()
>
> An ftrace log with of failed test:
> 0) | scmi_rx_callback() {
> 0) | scmi_raw_message_report()
> 5) | scmi_xfer_raw_wait_for_message_response()
> 5) ! 383.000 us | scmi_wait_for_reply();
> 5) | scmi_xfer_raw_put() {
> 0) | /* scmi_raw_message_report*/
>
> Link [1] https://gitlab.arm.com/tests/scmi-tests/-/releases
>
> Fixes: 3095a3e25d8f7 (firmware: arm_scmi: Add xfer helpers to provide raw access)
> Suggested-by: Cristian Marussi <cristian.marussi@arm.com>
> Signed-off-by: Artem Shimko <a.shimko.dev@gmail.com>
> ---
> Hi Cristian,
>
> Good point about CONFIG_ARM_SCMI_RAW_MODE_SUPPORT_COEX.
>
> I can confirm this setting doesn't impact the test failures in my environment.
> The issue reproduces consistently with COEX both enabled and disabled.
>
> Thank you!
>
Good...
Thanks to you
Cristian
next prev parent reply other threads:[~2025-10-07 16:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-29 14:28 [PATCH] drivers: scmi: Add completion timeout handling for raw mode transfers Artem Shimko
2025-10-01 11:57 ` Cristian Marussi
2025-10-03 19:22 ` [PATCH v2] " Artem Shimko
[not found] ` <20251003192233.1618447-1-a.shimko.dev@gmail.com_quarantine>
2025-10-07 16:55 ` Cristian Marussi [this message]
2025-10-08 9:10 ` [PATCH v3] firmware: arm_scmi: Fix premature SCMI_XFER_FLAG_IS_RAW clearing in raw mode Artem Shimko
2025-10-08 10:03 ` Cristian Marussi
2025-10-16 9:30 ` Sudeep Holla
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=aOVGGaY9NmKqUwPG@pluto \
--to=cristian.marussi@arm.com \
--cc=a.shimko.dev@gmail.com \
--cc=arm-scmi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sudeep.holla@arm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.