From: stefan@agner.ch (Stefan Agner)
To: linux-arm-kernel@lists.infradead.org
Subject: shared resources in AMP between Cortex-A9 and Cortex-M4
Date: Tue, 07 Jun 2016 10:06:24 -0700 [thread overview]
Message-ID: <3c51425927c13aed01026d2ab8a50551@agner.ch> (raw)
In-Reply-To: <5756FB64.6060207@arm.com>
Hi Uwe, Hi Sudeep,
On 2016-06-07 09:50, Sudeep Holla wrote:
> On 07/06/16 17:25, Uwe Kleine-K?nig wrote:
>> Hello Stefan,
>>
>> I'm currently trying to get Linux running on the M4 of an i.MX6 Solo X
>> and found you describing doing this on the Vybrid already[1].
>>
>> I see the problem that clk and pinmux must be used by both cores. Did
>> you solve this for your Vybrid experiments? And if so, how did it work?
No, it is basically unsolved. I just used "clk_ignore_unused" on both
sides to avoid stuff getting disabled. It works surprisingly well :-)
>>
>> Having two drivers on the same IP is racy at best and using some kind of
>> inter cpu communication to let (say) the A9 enable the clks for the M4
>> sounds like overkill.
>>
On a high level there are these two options:
1) One core takes care of the IP, hence needs to know the other cores
needs and provide it
2) Both cores access the IP (with some kind of mutual exclusion to avoid
races and conflicts of shared resources)
Especially for the clock stuff I fell that 1 is probably easier.
>
> IMO it should be other way around. In-fact few latest platforms(with
> performant Cortex-A cores) have dedicated Cortex-M core to do such
> system control and power management as it are low power and mostly
> always on.
Whether that is the M4 or the A-class CPU is probably application
specific. If it is used for system control/power management, I agree
with Sudeep, however, the NXP's new AMP designs mainly target user
applications, e.g. to fulfill real-time requirements. In those
applications I feel that the A-class CPU being the master is probably
more common. Usually you only want to solve a small subset of your
application on the M4.
I thought about device trees which describe the other cores needs,
basically a massively enhanced version of this:
http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/remoteproc/wkup_m3_rproc.txt
I mean, we could assign lets say a UART to the remote proc, and then let
the master core handle pinmux, clocks etc...
--
Stefan
prev parent reply other threads:[~2016-06-07 17:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-07 16:25 shared resources in AMP between Cortex-A9 and Cortex-M4 Uwe Kleine-König
2016-06-07 16:50 ` Sudeep Holla
2016-06-07 17:06 ` Stefan Agner [this message]
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=3c51425927c13aed01026d2ab8a50551@agner.ch \
--to=stefan@agner.ch \
--cc=linux-arm-kernel@lists.infradead.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.