[PATCH v2 0/5] Cavium ThunderX uncore PMU support

Will Deacon will.deacon at arm.com
Tue Apr 26 06:53:54 PDT 2016


On Tue, Apr 26, 2016 at 02:08:09PM +0200, Jan Glauber wrote:
> On Mon, Apr 25, 2016 at 02:19:07PM +0100, Will Deacon wrote:
> > On Mon, Apr 25, 2016 at 02:02:22PM +0200, Jan Glauber wrote:
> > > On Mon, Apr 25, 2016 at 12:22:07PM +0100, Will Deacon wrote:
> > > > On Mon, Apr 04, 2016 at 02:19:54PM +0200, Jan Glauber wrote:
> > > > > can you have a look at these patches?
> > > > 
> > > > Looks like Mark reviewed this last week -- are you planning to respin?
> > > 
> > > Yes, of course. I just had no time yet and I'm a bit lost on how to
> > > proceed without using the NUMA node information which Mark did not like
> > > to be used.
> > > 
> > > The only way to know which device is on which node would be to look
> > > at the PCI topology (which is also the source of the NUMA node_id).
> > > We could do this manually in order to not depend on CONFIG_NUMA,
> > > but I would like to know if that is acceptable before respinning the
> > > patches.
> > 
> > That doesn't feel like it really addresses Mark's concerns -- it's just
> > another way to get the information that isn't a first-class PMU topology
> > description from firmware.
> > 
> > Now, I don't actually mind using the NUMA topology so much in the cases
> > where it genuinely correlates with the PMU topology. My objection is more
> > that we end up sticking everything on node 0 if !CONFIG_NUMA, which could
> > result in working with an incorrect PMU topology and passing all of that
> > through to userspace.
> > 
> > So I'd prefer either making the driver depend on NUMA, or at the very least
> > failing to probe  the PMU if we discover a socketed system and NUMA is not
> > selected. Do either of those work as a compromise?
> > 
> > Will
> 
> That sounds like a good compromise.
> 
> So I could do the following:
> 
> 1) In the uncore setup check for CONFIG_NUMA, if set use the NUMA
>    information to determine the device node
> 
> 2) If CONFIG_NUMA is not set we check if we run on a socketed system
> 
>    a) In that case we return an error and give a message that CONFIG_NUMA needs
>       to be enabled
>    b) Otherwise we have a single node system and use node_id = 0

That sounds sensible to me. How do you "check if we run on a socketed
system"? My assumption would be that you could figure this out from the
firmware tables?

> David noted that it would also be possible to extract the node id from
> the physical address of the device, but I'm not sure that classifies as
> 'first-class' topology description...

I'd rather avoid this sort of probing, as it inevitably breaks when it
sees new hardware that doesn't follow the unwritten assumptions of the
old hardware.

Will



More information about the linux-arm-kernel mailing list