From: Sudeep Holla <sudeep.holla@arm.com>
To: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Sudeep Holla <sudeep.holla@arm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Liviu Dudau <Liviu.Dudau@arm.com>,
Punit Agrawal <Punit.Agrawal@arm.com>,
"Jon Medhurst (Tixy)" <tixy@linaro.org>,
Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
Arnd Bergmann <arnd@arndb.de>, Olof Johansson <olof@lixom.net>,
Kevin Hilman <khilman@kernel.org>
Subject: Re: [PATCH v5 2/8] firmware: add support for ARM System Control and Power Interface(SCPI) protocol
Date: Wed, 05 Aug 2015 11:57:35 +0100 [thread overview]
Message-ID: <55C1EC1F.7080607@arm.com> (raw)
In-Reply-To: <CABb+yY0zy4w02Q3B63HfdT8YyOH_f_SGrSZ-8r1tGPHCf2d_9A@mail.gmail.com>
On 31/07/15 14:45, Jassi Brar wrote:
> On Fri, Jul 31, 2015 at 6:38 PM, Sudeep Holla <sudeep.holla@arm.com> wrote:
>>
>>
>> On 31/07/15 11:43, Sudeep Holla wrote:
>>>
>>>
>>>
>>> On 31/07/15 11:38, Jassi Brar wrote:
>>>>
>>>> On Fri, Jul 31, 2015 at 3:10 PM, Sudeep Holla <sudeep.holla@arm.com>
>>>> wrote:
>>>>>
>>>>>
>>>>> I forgot to mention, we have a the following description in
>>>>> mbox_client_txdone which is misleading:
>>>>>
>>>>> "The client/protocol had received some 'ACK' packet and it notifies the
>>>>> API that the last packet was sent successfully. This only works if the
>>>>> controller can't sense TX-Done."
>>>>>
>>>>> which is clearly not the case in SCPI. IMO we may have to reword that.
>>>>>
>>>> Yes. And also see whether it could race with polling driven tx_tick.
>>>>
>>>
>>> Yes I am also looking at that now while I am trying to check if
>>> TXDONE_BY_ACK works on Juno, will keep you posted.
>>>
>>
>> OK, I recollect the racy condition now which I had in my mind from the
>> beginning convincing myself why we can't use that option. I was not good
>> in words to explain it so far but let me try with the ASCII art this
>> time. Note Tx ACK below means the remote setting the register flag and
>> not to be confused with the ACK packet. For simplicity Rx can be assumed
>> to be Tx ACK packet
>>
>> Time MHU/SCPI Remote SCP
>> | |
>> 1 |------------ Tx1 -------------->|
>> | |
>> 2 |<----------- Tx1 ACK -----------|
>> | |
>> 3 |------------ Tx2 -------------->|
>> | |
>> 4 |<----------- Rx1 ---------------|
>> | |
>> 5 |<----------- Tx2 ACK -----------|
>> | |
>> 6 |------------ Tx3 -------------->|
>> | |
>> 7 |<----------- Rx2 ---------------|
>>
>> Now lets consider the above scenario, suppose we have TXDONE_BY_ACK
>> and use mbox_client_txdone in Rx interrupt(i.e. response packet), we end
>> up in the race easily IIUC.
>>
>> E.g. A client would have sent Tx2(3) before Rx1 interrupt(4) and if we
>> ACK Tx1 now in (3), we will end up acknowledging Tx2(5) as the mailbox
>> core assumes only one Tx request at a time which is clearly not the case
>> in our setup. The client can then go ahead and send Tx3(6) overwriting
>> the payload while remote was processing or even result in remote missing
>> the request completely. Does that make sense or am I missing something ?
>>
> Yeah, that could happen. But the race can be fixed by checking
> last_tx_done if the controller provides that. If last_tx_done is not
> implemented, polling won't race.
>
> Please try the following...
>
Looks good to me. Sometimes it takes very long time(days) to hit race
conditions(esp. in firmware), so I need some time to think before
I cook up a patch to start stress test this on Juno so that I don't
waste time waiting for result.
Regards,
Sudeep
next prev parent reply other threads:[~2015-08-05 10:57 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-23 11:10 [PATCH v5 0/8] ARM64: juno: add SCPI mailbox protocol, clock and CPUFreq support Sudeep Holla
[not found] ` <1437649828-14540-1-git-send-email-sudeep.holla-5wv7dgnIgG8@public.gmane.org>
2015-07-23 11:10 ` [PATCH v5 1/8] Documentation: add DT binding for ARM System Control and Power Interface(SCPI) protocol Sudeep Holla
2015-07-23 11:10 ` Sudeep Holla
[not found] ` <1437649828-14540-2-git-send-email-sudeep.holla-5wv7dgnIgG8@public.gmane.org>
2015-07-28 10:22 ` Sudeep Holla
2015-07-28 10:22 ` Sudeep Holla
2015-07-31 16:00 ` Mark Rutland
2015-07-31 16:07 ` Sudeep Holla
2015-07-31 16:07 ` Sudeep Holla
2015-07-23 11:10 ` [PATCH v5 2/8] firmware: add support " Sudeep Holla
2015-07-29 8:05 ` Jassi Brar
2015-07-29 8:38 ` Sudeep Holla
2015-07-29 11:19 ` Jassi Brar
2015-07-29 12:50 ` Sudeep Holla
2015-07-30 17:56 ` Jassi Brar
2015-07-31 9:21 ` Sudeep Holla
2015-07-31 9:40 ` Sudeep Holla
2015-07-31 10:38 ` Jassi Brar
2015-07-31 10:43 ` Sudeep Holla
2015-07-31 13:08 ` Sudeep Holla
2015-07-31 13:45 ` Jassi Brar
2015-08-05 10:57 ` Sudeep Holla [this message]
2015-07-23 11:10 ` [PATCH v5 3/8] clk: add support for clocks provided by SCP(System Control Processor) Sudeep Holla
2015-07-28 10:21 ` Sudeep Holla
2015-07-29 17:37 ` Stephen Boyd
2015-07-30 9:12 ` Sudeep Holla
2015-07-31 6:26 ` Stephen Boyd
2015-07-23 11:10 ` [PATCH v5 4/8] clk: scpi: add support for cpufreq virtual device Sudeep Holla
2015-07-23 11:10 ` [PATCH v5 5/8] cpufreq: arm_big_little: add SCPI interface driver Sudeep Holla
2015-07-28 10:20 ` Sudeep Holla
2015-07-23 11:10 ` [PATCH v5 6/8] arm64: dts: add SRAM, MHU mailbox and SCPI support on Juno Sudeep Holla
2015-07-23 11:10 ` [PATCH v5 7/8] arm64: dts: add CPU topology " Sudeep Holla
2015-07-23 11:10 ` [PATCH v5 8/8] arm64: dts: add clock support for all the cpus 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=55C1EC1F.7080607@arm.com \
--to=sudeep.holla@arm.com \
--cc=Liviu.Dudau@arm.com \
--cc=Lorenzo.Pieralisi@arm.com \
--cc=Punit.Agrawal@arm.com \
--cc=arnd@arndb.de \
--cc=jassisinghbrar@gmail.com \
--cc=khilman@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=olof@lixom.net \
--cc=tixy@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 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.