[PATCH 2/2] arm64: topology: add MPIDR-based detection
Zi Shen Lim
zlim at broadcom.com
Wed Apr 23 12:22:28 PDT 2014
On Wed, Apr 23, 2014 at 07:26:11PM +0100, Mark Brown wrote:
> On Wed, Apr 23, 2014 at 10:27:20AM -0700, Zi Shen Lim wrote:
>
> It will at least ensure that all clusters get assigned a unique ID and
> we don't end up discarding some of the information and coming out with
> two identically numbered clusters which then have identically numbered
> CPUs inside of them which doesn't seem clever.
I agree with you. Simply ignoring aff3 is not acceptable, whether or not
someone is using it.
>
> When I was looking at this it wasn't sufficiently clear to me that the
> cluster clustering would be well modelled by sockets as the scheduler
> currently assumes them, nor what to do with additional levels of that
> (the DT binding allows for infinite levels). Punting and just putting
> all clusters at the same level avoids active bugs and seems fairly
> conservative.
>
Sounds like you prefer "cluster of clusters" over "socket", correct?
In any case, with only 4 affinity levels defined in the arch, as long as
we also have 4 variables to capture that information, we should be good,
right?
Anything more exotic not expressable by these 4 affinity levels in MPIDR
will require additional information from other sources such as DT or ACPI.
> > Perhaps we should just add a new 'socket_id' and that will accommodate
> > all cases (up to aff3).
>
> Not in the non-MT case where we've got two levels above the cluster ID
> in affinity level 1 unless we just combine 2 and 3 (which would be
> reasonable enough of course).
Is the following an accurate description of your proposal for non-MT?
thread_id = -1
core_id = aff0
cluster_id = aff1
clusters_id = combine(aff2,aff3)
More information about the linux-arm-kernel
mailing list