mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stefan Agner <stefan@agner.ch>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Mark Rutland <Mark.Rutland@arm.com>,
	devicetree@vger.kernel.org, Nishanth Menon <nm@ti.com>,
	Russell King <linux@arm.linux.org.uk>,
	Jason Cooper <jason@lakedaemon.net>,
	Arnd Bergmann <arnd@arndb.de>,
	ijc+devicetree@hellion.org.uk, daniel.lezcano@linaro.org,
	LKML <linux-kernel@vger.kernel.org>,
	Sricharan R <r.sricharan@ti.com>,
	Santosh Shilimkar <ssantosh@kernel.org>,
	robh+dt@kernel.org, Pawel Moll <Pawel.Moll@arm.com>,
	kernel@pengutronix.de, u.kleine-koenig@pengutronix.de,
	olof@lixom.net, galak@codeaurora.org, shawn.guo@linaro.org,
	LAK <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 03/12] irqchip: gic: define register_routable_domain_ops conditional
Date: Thu, 04 Dec 2014 14:50:41 +0100	[thread overview]
Message-ID: <4b5c5f64f844ae08e2d2cede9bb4f693@agner.ch> (raw)
In-Reply-To: <548064B9.4080300@arm.com>

On 2014-12-04 14:42, Marc Zyngier wrote:
> On 04/12/14 13:35, Stefan Agner wrote:
>> On 2014-12-03 20:04, Marc Zyngier wrote:
>> <snip>
>>>> What do you mean by the shared state in the drawing above? Currently, I
>>>> check whether a interrupt is already used by the other core by reading
>>>> the register (do this configuration register reflect the "shared state"
>>>> in your drawing?).
>>>
>>> I think that is basically it. It should only be the register that
>>> decides on the actual routing. BTW, how do you arbitrate between
>>> concurrent accesses to this register? Or is only the A5 allowed to
>>> change it?
>>
>> No arbitration so far... The whole Vybrid on M4 stuff is quite a hack
>> right now. For instance also the concurrent access to the clock
>> registers is not handled. Currently, I start the M4 from a booted A5
>> Linux. To avoid half of the clocks get turned of by the M4 clock driver,
>> I need to specify clk_ignore_unused. Beside that, peripherals have to be
>> enabled/disabled in a non conflicting manor in the device trees...
>>
>> For the interrupt router in MSCM, it would be nice if the access could
>> be done an atomic way, which would avoid the use of a lock mechanism.
>> But I guess this is not possible, since peripherals only support
>> standard ldr/str...?
>>
>> There is the SEMA4 module which provides hardware semaphores. I'm aware
>> of the hardware spinlock drivers (drivers/hwspinlock/), I started to
>> implement such a driver for Vybrid. But so far a grep through the kernel
>> does not show one usage of that framework... I guess we could add dt
>> support for that, so we can assign the locks to individual drivers.
>>
>> I also plan to have a deeper look into remoteproc/rpmsg, not sure if
>> locking of shared peripherals is part (or planned to be part) of that
>> framework.
>>
>> For the clock stuff, the problem is more complex: I guess the would need
>> some kind of master/slave definition, where we disallow the change of
>> the shared clocks for the slave.
>>
>> If you are aware of patches/solutions, I'm happy to hear it...
> 
> I don't have a real solution for this, but I'd be tempted to generate
> the M4 DT based on the HW the A5 is not using, and only describe that.
> 
> Clearly not ideal, but it gives you the control you need (don't describe
> the HW you don't want to see touched)...
> 

Yeah, that avoids the need for any synchronization for those
peripherals.

However, for some hardware (e.g. clocks and that interrupt controller)
both sides need access... I guess to do it properly, I need to take care
of it...

--
Stefan


  reply	other threads:[~2014-12-04 13:48 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-03  0:11 [PATCH 00/12] ARM: vf610m4: Add Vybrid Cortex-M4 support Stefan Agner
2014-12-03  0:12 ` [PATCH 01/12] ARM: dts: vf610: add routable-irqs property for gic node Stefan Agner
2014-12-03  0:12 ` [PATCH 02/12] ARM: dts: vf610: add Miscellaneous System Control Module (MSCM) Stefan Agner
2014-12-03  0:12 ` [PATCH 03/12] irqchip: gic: define register_routable_domain_ops conditional Stefan Agner
2014-12-03 10:46   ` Arnd Bergmann
2014-12-03 13:04     ` Thomas Gleixner
2014-12-03 17:28       ` Stefan Agner
2014-12-03 19:04         ` Marc Zyngier
2014-12-04  0:03           ` Thomas Gleixner
2014-12-04 13:35           ` Stefan Agner
2014-12-04 13:42             ` Marc Zyngier
2014-12-04 13:50               ` Stefan Agner [this message]
2014-12-03  0:12 ` [PATCH 04/12] irqchip: nvic: support routable irq domain ops Stefan Agner
2014-12-03  9:39   ` Uwe Kleine-König
2014-12-03 10:49   ` Arnd Bergmann
2014-12-03 17:32     ` Stefan Agner
2014-12-03  0:12 ` [PATCH 05/12] irqchip: nvic: increase number of external interrupts to 112 Stefan Agner
2014-12-03  8:12   ` Uwe Kleine-König
2014-12-03 17:40     ` Stefan Agner
2014-12-03  0:12 ` [PATCH 06/12] ARM: imx: add support for MSCM interrupt router Stefan Agner
2014-12-03 10:51   ` Arnd Bergmann
2014-12-03  0:12 ` [PATCH 07/12] Documentation: dt: imx: add MSCM documentation Stefan Agner
2014-12-03 10:52   ` Arnd Bergmann
2014-12-03 17:49     ` Stefan Agner
2014-12-03  0:12 ` [PATCH 08/12] clocksource: add dependencies for Vybrid pit clocksource Stefan Agner
2014-12-03  0:12 ` [PATCH 09/12] ARM: unify MMU/!MMU addruart calls Stefan Agner
2014-12-03 10:53   ` Arnd Bergmann
2014-12-03  0:12 ` [PATCH 10/12] ARM: vf610m4: add new machine and SoC for Vybrid on Cortex-M4 Stefan Agner
2014-12-03 10:56   ` Arnd Bergmann
2014-12-03 18:00     ` Stefan Agner
2014-12-03  0:12 ` [PATCH 11/12] ARM: dts: add support for Vybrid running " Stefan Agner
2014-12-03 11:03   ` Arnd Bergmann
2014-12-16 22:19     ` Stefan Agner
2014-12-17 10:57       ` Arnd Bergmann
2014-12-16 23:41     ` Stefan Agner
2014-12-17 12:31       ` Arnd Bergmann
2014-12-18 20:36         ` Stefan Agner
2014-12-18 22:44           ` Arnd Bergmann
2014-12-20 18:49             ` Stefan Agner
2014-12-03  0:12 ` [PATCH 12/12] ARM: vf610m4: add defconfig for Linux on Vybrids Cortex-M4 Stefan Agner

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=4b5c5f64f844ae08e2d2cede9bb4f693@agner.ch \
    --to=stefan@agner.ch \
    --cc=Mark.Rutland@arm.com \
    --cc=Pawel.Moll@arm.com \
    --cc=arnd@arndb.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jason@lakedaemon.net \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=marc.zyngier@arm.com \
    --cc=nm@ti.com \
    --cc=olof@lixom.net \
    --cc=r.sricharan@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=shawn.guo@linaro.org \
    --cc=ssantosh@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=u.kleine-koenig@pengutronix.de \
    /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

Powered by JetHome