linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* shared resources in AMP between Cortex-A9 and Cortex-M4
@ 2016-06-07 16:25 Uwe Kleine-König
  2016-06-07 16:50 ` Sudeep Holla
  0 siblings, 1 reply; 3+ messages in thread
From: Uwe Kleine-König @ 2016-06-07 16:25 UTC (permalink / raw)
  To: linux-arm-kernel

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?

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.

Best regards
Uwe

[1] https://falstaff.agner.ch/2015/05/17/u-boot-command-to-boot-vybrids-cortex-m4-core/
-- 
Pengutronix e.K.                           | Uwe Kleine-K?nig            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

^ permalink raw reply	[flat|nested] 3+ messages in thread

* shared resources in AMP between Cortex-A9 and Cortex-M4
  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
  0 siblings, 1 reply; 3+ messages in thread
From: Sudeep Holla @ 2016-06-07 16:50 UTC (permalink / raw)
  To: linux-arm-kernel



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?
>
> 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.
>

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.

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 3+ messages in thread

* shared resources in AMP between Cortex-A9 and Cortex-M4
  2016-06-07 16:50 ` Sudeep Holla
@ 2016-06-07 17:06   ` Stefan Agner
  0 siblings, 0 replies; 3+ messages in thread
From: Stefan Agner @ 2016-06-07 17:06 UTC (permalink / raw)
  To: linux-arm-kernel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-06-07 17:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 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).