[Cbe-oss-dev] [PATCH] cell: move SPU affinity init code to a separate file

Michael Ellerman michael at ellerman.id.au
Mon Jul 30 09:23:57 EST 2007


On Sun, 2007-07-29 at 21:34 +0200, Arnd Bergmann wrote:
> On Friday 27 July 2007, Benjamin Herrenschmidt wrote:
> > > > +static int init_spu_affinity(void)
> > > > +{
> > > > +   if (of_has_vicinity()) {
> > > > +           init_aff_fw_vicinity();
> > > > +   } else {
> > > > +           long root = of_get_flat_dt_root();
> > > > +           if (of_flat_dt_is_compatible(root, "IBM,CPBW-1.0"))
> > > > +                   init_aff_QS20_harcoded();
> > > > +   }
> > > > +
> > > > +   return 0;
> > > > +}
> > > > +
> > > > +module_init(init_spu_affinity);
> > > 
> > > 
> > > There is nothing here to prevent this code from executing
> > > on the PS3.  module_init() will unconditionaly run
> > > init_spu_affinity() for all platforms.  PS3 has no OF, and
> > > when this code runs it will most likely fault.  Even if it
> > > does run, it won't be doing the correct thing.
> > 
> > In fact, it may even do damage on !cell no ?
> > 
> 
> I would guess not, because if any other platform has vicinity properties
> (which is rather unlikely), the executing init_aff_fw_vicinity() should
> not have any negative impact, and otherwise it is guaranteed not to
> be compatible with "IBM,CPBW-1.0", so the initcall will not do anything.

But is of_has_vicinity() safe when the cbe_spu_infos have not been
initialised?

cheers

-- 
Michael Ellerman
OzLabs, IBM Australia Development Lab

wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)

We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/cbe-oss-dev/attachments/20070730/5db45331/attachment.pgp>


More information about the cbe-oss-dev mailing list