Thread (1 message) 1 message, 1 author, 2011-01-27

Re: [PATCH 1/2] powerpc: document the MPIC device tree binding

From: Meador Inge <hidden>
Date: 2011-01-27 23:50:32
Also in: linuxppc-dev

Possibly related (same subject, not in this thread)

On 01/20/2011 09:50 AM, Yoder Stuart-B08248 wrote:
quoted
-----Original Message-----
From: Meador Inge [mailto:meador_inge-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org]
Sent: Wednesday, January 19, 2011 6:08 PM
To: Yoder Stuart-B08248
Cc: Wood Scott-B07421; linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org; devicetree-
discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org; Blanchard, Hollis
Subject: Re: [PATCH 1/2] powerpc: document the MPIC device tree binding

On 01/19/2011 04:14 PM, Yoder Stuart-B08248 wrote:
quoted
quoted
+** Optional properties:
+
+   - no-reset : The presence of this property indicates that the MPIC
+                should not be reset during runtime initialization.
+   - protected-sources : Specifies a list of interrupt sources that
+ are not
+                         available for use and whose corresponding
+ vectors
+                         should not be initialized.  A typical use
+ case for
+                         this property is in AMP systems where multiple
+                         independent operating systems need to share
+ the MPIC
+                         without clobbering each other.
Is "protected-sources" really needed for AMP systems to tell the OSes
not to clobber each other?  Won't each OS be given a device tree with
only its interrupt sources?  ...so you know what you are allowed to
touch.
This was discussed a little bit already [1, 2].  The MPIC driver currently
initializes the VECPRI register for all interrupt sources, which can lead
to the aforementioned clobbering.
For sources that are protected and not to be touched, it seems
that the other need is for the OS to know (be guaranteed?) that
those sources have been put in state where the source is masked
or directed to other cores.   You can't have interrupts occurring
on sources that you are not allowed to initialize.

So the "no-reset" property could potentially cover this as well-- if it was
defined to mean "don't reset the mpic" and boot firmware has put all sources
in a sane initial state.   And we wouldn't need the "protected-sources"
property any longer.
This seems reasonable to me.  If "no-reset" is there, then we will not 
reset the MPIC and *only* sources explicitly listed in "interrupts" 
properties are up for any sort of initialization (e.g. the VECPRI init). 
   If "no-reset" is not there, then anything is free game.

In terms of implementation, I think we can (1) pull the protected 
sources code, (2) keep the VECPRI initialization in 'mpic_init' from 
happening when "no-reset" is present, and (3) "lazily" perform the 
VECPRI initialization in 'mpic_host_map' (this way only sources 
mentioned in the device tree are initialized).

I will send out a patch with these updates tomorrow.  I also CC'd Ben, 
who wrote the original protected sources work, to make sure something 
about the original use case is not being missed.

-- 
Meador Inge     | meador_inge AT mentor.com
Mentor Embedded | http://www.mentor.com/embedded-software
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help