[RFC PATCH 1/2] powerpc/numa: Introduce logical numa id
Nathan Lynch
nathanl at linux.ibm.com
Sat Aug 8 06:45:32 AEST 2020
"Aneesh Kumar K.V" <aneesh.kumar at linux.ibm.com> writes:
> On 8/7/20 9:54 AM, Nathan Lynch wrote:
>> "Aneesh Kumar K.V" <aneesh.kumar at linux.ibm.com> writes:
>>> diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
>>> index e437a9ac4956..6c659aada55b 100644
>>> --- a/arch/powerpc/mm/numa.c
>>> +++ b/arch/powerpc/mm/numa.c
>>> @@ -221,25 +221,51 @@ static void initialize_distance_lookup_table(int nid,
>>> }
>>> }
>>>
>>> +static u32 nid_map[MAX_NUMNODES] = {[0 ... MAX_NUMNODES - 1] = NUMA_NO_NODE};
>>
>> It's odd to me to use MAX_NUMNODES for this array when it's going to be
>> indexed not by Linux's logical node IDs but by the platform-provided
>> domain number, which has no relation to MAX_NUMNODES.
>
>
> I didn't want to dynamically allocate this. We could fetch
> "ibm,max-associativity-domains" to find the size for that. The current
> code do assume firmware group id to not exceed MAX_NUMNODES. Hence kept
> the array size to be MAX_NUMNODEs. I do agree that it is confusing. May
> be we can do #define MAX_AFFINITY_DOMAIN MAX_NUMNODES?
Well, consider:
- ibm,max-associativity-domains can change at runtime with LPM. This
doesn't happen in practice yet, but we should probably start thinking
about how to support that.
- The domain numbering isn't clearly specified to have any particular
properties such as beginning at zero or a contiguous range.
While the current code likely contains assumptions contrary to these
points, a change such as this is an opportunity to think about whether
those assumptions can be reduced or removed. In particular I think it
would be good to gracefully degrade when the number of NUMA affinity
domains can exceed MAX_NUMNODES. Using the platform-supplied domain
numbers to directly index Linux data structures will make that
impossible.
So, maybe genradix or even xarray wouldn't actually be overengineering
here.
More information about the Linuxppc-dev
mailing list