On Fri, 30 Mar 2012, Will Deacon wrote: > Hi Nicolas, > > On Wed, Mar 28, 2012 at 03:17:29PM +0100, Nicolas Pitre wrote: > > On Mon, 26 Mar 2012, Will Deacon wrote: > > > > > Now, if everything was device-tree based then we could simply use a > > > different binding for each CPU but since we support perf on non-DT > > > platforms, probing the CPU type is the best solution. I would like to avoid > > > the probing code if we are initialised from DT, but I've not got round to it > > > yet (this would be useful for big.LITTLE). > > > > Still... my opinion is that we should try to autodetect as much as > > possible and avoid overstuffing the DT with content that can otherwise > > be run-time probed. OK to use DT to override the probe for corner > > cases, but IMHO the probe should be the default method of > > initialization. The rational is that we want to spread knowledge about > > part of the system and have it confined into respective drivers and > > subsystems for easier maintenance. If the guy who has to maintain the > > dts has to know all the details for everything then that won't scale and > > the risk for discrepancies is increased. > > I agree that probing is preferable where possible but, since the PMUs are > banked, we cannot reliably probe them on big.LITTLE platforms. Are they tied to each cluster power domains? If so you'll have to preserve/restore their state when clusters are suspended even if the interface tries to present a consistent view to users. The probe can be done there, and differences in capabilities adjusted dynamically. Nicolas