From: Sudeep Holla <sudeep.holla@arm.com>
To: Jassi Brar <jaswinder.singh@linaro.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"mporter@linaro.org" <mporter@linaro.org>,
"patches@linaro.org" <patches@linaro.org>,
"bjorn@kryo.se" <bjorn@kryo.se>,
"ashwin.chaugule@linaro.org" <ashwin.chaugule@linaro.org>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"s-anna@ti.com" <s-anna@ti.com>,
"loic.pallardy@st.com" <loic.pallardy@st.com>,
"lftan.linux@gmail.com" <lftan.linux@gmail.com>,
"slapdau@yahoo.com.au" <slapdau@yahoo.com.au>,
"courtney.cavin@sonymobile.com" <courtney.cavin@sonymobile.com>,
Pawel Moll <Pawel.Moll@arm.com>,
"robh+dt@kernel.org" <robh+dt@kernel.org>,
Mark Rutland <Mark.Rutland@arm.com>,
"ijc+devicetree@hellion.org.uk" <ijc+devicetree@hellion.org.uk>,
"arnd@arndb.de" <arnd@arndb.de>,
"joshc@codeaurora.org" <joshc@codeaurora.org>,
"linus.walleij@linaro.org" <linus.walleij@linaro.org>,
"galak@codeaurora.org" <galak@codeaurora.org>,
"ks.giri@samsung.com" <ks.giri@samsung.com>
Subject: Re: [PATCHv7 2/5] mailbox: Introduce framework for mailbox
Date: Fri, 20 Jun 2014 17:07:48 +0100 [thread overview]
Message-ID: <53A45C54.2010103@arm.com> (raw)
In-Reply-To: <CAJe_ZhdRr-9D2uvC9U9_7+N1nKeHPSS7OKocFt6Kq-Gjquokag@mail.gmail.com>
On 19/06/14 21:21, Jassi Brar wrote:
> Hi Sudeep,
>
> On 19 June 2014 23:47, Sudeep Holla <sudeep.holla@arm.com> wrote:
>> Hi Jassi,
>>
>>> +
>>> +static int _add_to_rbuf(struct mbox_chan *chan, void *mssg)
>>> +{
>>> + int idx;
>>> + unsigned long flags;
>>> +
>>> + spin_lock_irqsave(&chan->lock, flags);
>>> +
>>> + /* See if there is any space left */
>>> + if (chan->msg_count == MBOX_TX_QUEUE_LEN) {
>>> + spin_unlock_irqrestore(&chan->lock, flags);
>>> + return -ENOMEM;
>>> + }
>>> +
>>
>>
>> Any particular reason why the standard list implementation can't be used
>> instead of this. It eliminates limitation of MBOX_TX_QUEUE_LEN and would
>> remove msg_free/count
>>
> Just to keep the code simple. Using list is indeed theoretically more
> robust, but I think for mailbox usage, simply increasing the
> MBOX_TX_QUEUE_LEN is more practical.
>
>>
>>> + * After startup and before shutdown any data received on the chan
>>> + * is passed on to the API via atomic mbox_chan_received_data().
>>> + * The controller should ACK the RX only after this call returns.
>>
>>
>> Does this mean we can't support asynchronous messages from the remote.
>>
> "Yes, We Can". Please note, the ACK here is at h/w level, and not
> procotol level. The api doesn't discern a remote's reply from an async
> request. After you request a mailbox, any data received will be handed
> over to you. And only after you (client) consumes the data, would the
> controller 'ACK' the RX.
>
As I mentioned in the other mail, suppose there's one channel and multiple users
of it. Each have to acquire the channel, and from then any data received will
be sent to the client. But what is the async data from remote is not for the
client currently holding the channel. I also gave the example.
If the remote is the process that controls power managements and allows you to
set the thermal bounds. If those limits are crossed, it sends any interrupt to
notify that, while the controller can be busy handling some other request(say
DVFS).
>>> +/**
>>> + * mbox_client_peek_data - A way for client driver to pull data
>>> + * received from remote by the controller.
>>> + * @chan: Mailbox channel assigned to this client.
>>> + *
>>> + * A poke to controller driver for any received data.
>>> + * The data is actually passed onto client via the
>>> + * mbox_chan_received_data()
>>> + * The call can be made from atomic context, so the controller's
>>> + * implementation of peek_data() must not sleep.
>>> + *
>>> + * Return: True, if controller has, and is going to push after this,
>>> + * some data.
>>> + * False, if controller doesn't have any data to be read.
>>> + */
>>> +bool mbox_client_peek_data(struct mbox_chan *chan)
>>> +{
>>> + if (chan->mbox->ops->peek_data)
>>> + return chan->mbox->ops->peek_data(chan);
>>> +
>>> + return false;
>>> +}
>>> +EXPORT_SYMBOL_GPL(mbox_client_peek_data);
>>
>>
>> I am unable to understand how this API will be used. IIUC when the
>> controller
>> receives any data from remote, it calls mbox_chan_received_data to push data
>> to
>> client.
>>
> Yup, but depending upon the application (NAPI like), the controller
> may choose to buffer RX upto a threshold and then dispatch in bulk.
> The client, before going to sleep, may then poke the controller to
> flush the buffers.
>
OK understood.
Regards,
Sudeep
next prev parent reply other threads:[~2014-06-20 16:07 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-12 16:58 [PATCHv7 0/5] Common Mailbox Framework Jassi Brar
2014-06-12 17:00 ` [PATCHv7 1/5] mailbox: rename pl320-ipc specific mailbox.h Jassi Brar
2014-06-12 17:01 ` [PATCHv7 3/5] Mailbox: Generic: Specify mailbox api bindings Jassi Brar
[not found] ` <1402592317-7043-1-git-send-email-jaswinder.singh-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-06-12 17:01 ` [PATCHv7 2/5] mailbox: Introduce framework for mailbox Jassi Brar
[not found] ` <1402592479-7244-1-git-send-email-jaswinder.singh-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-06-13 20:40 ` Mark Brown
2014-06-18 0:27 ` Kevin Hilman
[not found] ` <7hionz9i5e.fsf-4poPxKt068f/PtFMR13I2A@public.gmane.org>
2014-06-18 8:33 ` Jassi Brar
[not found] ` <CAJe_ZhcuOa39Db_tE4JupY74aze02=v1FWzduFD0sO15nMrKvw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-18 17:03 ` Kevin Hilman
2014-06-19 2:55 ` Jassi Brar
2014-06-19 12:14 ` Ashwin Chaugule
2014-06-19 12:36 ` Sudeep Holla
2014-06-19 18:17 ` Sudeep Holla
2014-06-19 19:03 ` Matt Porter
2014-06-19 20:29 ` Jassi Brar
2014-06-19 20:40 ` Matt Porter
2014-06-20 15:25 ` Sudeep Holla
2014-06-19 20:21 ` Jassi Brar
2014-06-20 16:07 ` Sudeep Holla [this message]
2014-06-20 16:30 ` Jassi Brar
2014-06-20 16:58 ` Sudeep Holla
2014-06-20 18:05 ` Lubomir Rintel
2014-06-22 10:56 ` Lubomir Rintel
2014-06-12 17:02 ` [PATCHv7 4/5] mailbox: Fix deleteing poll timer Jassi Brar
2014-06-12 17:02 ` [PATCHv7 5/5] MAINTAINERS: Add maintainer entry for Mailbox API Jassi Brar
2014-06-30 16:16 ` [PATCHv7 0/5] Common Mailbox Framework Lubomir Rintel
2014-06-30 16:22 ` Jassi Brar
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=53A45C54.2010103@arm.com \
--to=sudeep.holla@arm.com \
--cc=Mark.Rutland@arm.com \
--cc=Pawel.Moll@arm.com \
--cc=arnd@arndb.de \
--cc=ashwin.chaugule@linaro.org \
--cc=bjorn@kryo.se \
--cc=courtney.cavin@sonymobile.com \
--cc=devicetree@vger.kernel.org \
--cc=galak@codeaurora.org \
--cc=gregkh@linuxfoundation.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jaswinder.singh@linaro.org \
--cc=joshc@codeaurora.org \
--cc=ks.giri@samsung.com \
--cc=lftan.linux@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=loic.pallardy@st.com \
--cc=mporter@linaro.org \
--cc=patches@linaro.org \
--cc=robh+dt@kernel.org \
--cc=s-anna@ti.com \
--cc=slapdau@yahoo.com.au \
/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;
as well as URLs for NNTP newsgroup(s).