From: Jassi Brar <jassisinghbrar@gmail.com>
To: Lee Jones <lee.jones@linaro.org>
Cc: "linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
kernel@stlinux.com, Devicetree List <devicetree@vger.kernel.org>
Subject: Re: [PATCH 3/6] mailbox: Add support for ST's Mailbox IP
Date: Thu, 23 Jul 2015 22:01:06 +0530 [thread overview]
Message-ID: <CABb+yY0iKAU6aa99muVrkHyp-Ywpf1BoMRna91L6fbR7e89XZQ@mail.gmail.com> (raw)
In-Reply-To: <20150723082934.GW3061@x1>
On Thu, Jul 23, 2015 at 1:59 PM, Lee Jones <lee.jones@linaro.org> wrote:
>> On Fri, Jul 17, 2015 at 5:34 PM, Lee Jones <lee.jones@linaro.org> wrote:
>> > +static void sti_mbox_enable_channel(struct mbox_chan *chan)
>> > +{
>> > + struct sti_channel *chan_info = chan->con_priv;
>> > + struct sti_mbox_device *mdev = chan_info->mdev;
>> > + struct sti_mbox_pdata *pdata = dev_get_platdata(mdev->dev);
>> > + unsigned int instance = chan_info->instance;
>> > + unsigned int channel = chan_info->channel;
>> > + unsigned long flags;
>> > + void __iomem *base;
>> > +
>> > + base = mdev->base + (instance * sizeof(u32));
>> > +
>> Maybe have something simpler like MBOX_BASE(instance)? Or some inline
>> function to avoid this 5-lines ritual?
>
> I've checked and we can't do this, as the we need most (all?) of the
> intermediary variables too. No ritual just to get the final variable
> for instance.
>
OK. How about ?
#define MBOX_BASE(m, n) ((m)->base + (n) * 4)
void __iomem *base = MBOX_BASE(mdev, instance);
>> > + spin_lock_irqsave(&sti_mbox_chan_lock, flags);
>> > + mdev->enabled[instance] |= BIT(channel);
>> > + writel_relaxed(BIT(channel), base + pdata->ena_set);
>> > + spin_unlock_irqrestore(&sti_mbox_chan_lock, flags);
>> >
>> You don't need locking for SET/CLR type registers which are meant for
>> when they could be accessed by processors that can not share a lock.
>> So maybe drop the lock here and elsewhere.
>
> From what I can gather, I think we need this locking. What happens if
> we get scheduled between setting the enabled bit in our cache and
> actually setting the ena_set bit? We would be out of sync.
>
IIU what you mean... can't that still happen because of the _relaxed()?
Anyways my point was about set/clr type regs. And you may look at if
channel really needs disabling while interrupts are handled? I think
it shouldn't because either it is going to be a to-fro communication
or random broadcasts without any guarantee of reception. But of course
you would know better your platform.
BTW sti_mbox_channel_is_enabled() also needs to have locking around
enabled[] if you want to keep it. And maybe embed sti_mbox_chan_lock
inside sti_mbox_device.
>> However, you need some mechanism to check if you succeeded 'owning'
>> the channel by reading back what you write to own the channel (not
>> sure which is that register here). Usually we need that action and
>> verification when we assign a channel to some user.
>
> I don't think we need to do that with this driver. All of the
> allocation is controlled from within this code base. The channels are
> pre-allocated and written into the co-proc's Firmware.
>
OK
>> > + }
>> > +
>> Doesn't mbox->chans[i].con_priv need some locking here?
>
> Not that I can see. Would you mind explaining further please?
>
Not anymore, after the clarification that we don't need a 'break' statement.
cheers.
next prev parent reply other threads:[~2015-07-23 16:31 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-17 12:04 [PATCH 0/6] Mailbox: Provide support STi based platforms Lee Jones
2015-07-17 12:04 ` [PATCH 1/6] mailbox: dt: Supply bindings for ST's Mailbox IP Lee Jones
2015-07-17 12:04 ` [PATCH 2/6] mailbox: dt-bindings: Add shared [driver <=> device tree] defines Lee Jones
2015-07-17 12:04 ` [PATCH 3/6] mailbox: Add support for ST's Mailbox IP Lee Jones
[not found] ` <1437134647-28298-4-git-send-email-lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-07-21 14:41 ` Jassi Brar
2015-07-21 15:06 ` Lee Jones
2015-07-21 15:29 ` Jassi Brar
[not found] ` <CABb+yY25DC_hmuUhbEVvdEqdUnM6bJxCjBcamZBL97o=jR83Ug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-21 15:52 ` Lee Jones
2015-07-21 16:09 ` Jassi Brar
2015-07-21 17:48 ` Lee Jones
2015-07-21 18:36 ` Jassi Brar
[not found] ` <CABb+yY2nAT6V4Q8suAXRtPXrXkArGWVTAW28ts4Z3C_ybuJovA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-07-23 8:29 ` Lee Jones
2015-07-23 16:31 ` Jassi Brar [this message]
2015-07-24 9:36 ` Lee Jones
2015-07-24 17:34 ` Jassi Brar
2015-07-23 17:23 ` Alexey Klimov
2015-07-24 9:52 ` Lee Jones
2015-07-17 12:04 ` [PATCH 4/6] ARM: STi: stih407-family: Add nodes for Mailbox Lee Jones
[not found] ` <1437134647-28298-1-git-send-email-lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2015-07-17 12:04 ` [PATCH 5/6] mailbox: Add generic mechanism for testing Mailbox Controllers Lee Jones
2015-07-17 12:04 ` [PATCH 6/6] ARM: STi: DT: STiH407: Enable Mailbox testing facility Lee Jones
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=CABb+yY0iKAU6aa99muVrkHyp-Ywpf1BoMRna91L6fbR7e89XZQ@mail.gmail.com \
--to=jassisinghbrar@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=kernel@stlinux.com \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).