On 3/14/23 16:16, Ricardo Neri wrote:
-static unsigned short num_cache_leaves; +static DEFINE_PER_CPU(unsigned short, num_cache_leaves);
+static inline unsigned short get_num_cache_leaves(unsigned int cpu) +{
- return per_cpu(num_cache_leaves, cpu);
+}
I know it's in generic code, but we do already have this:
static DEFINE_PER_CPU(struct cpu_cacheinfo, ci_cpu_cacheinfo);
which has a num_leaves in it:
struct cpu_cacheinfo { struct cacheinfo *info_list; unsigned int num_levels; unsigned int num_leaves; bool cpu_map_populated; };
That's currently _populated_ from the arch code that you are modifying. Do we really need this data stored identically in two different per-cpu locations?
I'd also love to hear some more background on "Intel Meteor Lake" and _why_ it has an asymmetric cache topology.