On 01/20/2011 09:50 AM, Yoder Stuart-B08248 wrote:


-----Original Message-----
From: Meador Inge [mailto:meador_i...@mentor.com]
Sent: Wednesday, January 19, 2011 6:08 PM
To: Yoder Stuart-B08248
Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; devicetree-
disc...@lists.ozlabs.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:

+** 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
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to