Messages in this thread | | | Date | Mon, 6 Oct 2014 11:55:37 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH v2 1/2] x86: Add cpu_detect_cache_sizes() to init_intel(), add Quark to legacy_cache() |
| |
On Sat, 4 Oct 2014, Bryan O'Donoghue wrote: > @@ -381,7 +381,18 @@ static void init_intel(struct cpuinfo_x86 *c) > #endif > } > > - l2 = init_intel_cacheinfo(c); > + /* Detect legacy cache sizes */ > + cpu_detect_cache_sizes(c); > + > + /* > + * If cache_size has not been initialized via legacy_cache() > + * probe it via init_intel_cacheinfo(). > + */ > + if (c->x86_cache_size == 0) > + l2 = init_intel_cacheinfo(c); > + else > + l2 = c->x86_cache_size;
Looking a bit deeper. This wont work because cpu_detect_cache_sizes() will set c->x86_cache_size for all cpus with extended_cpuid_level >= 0x80000005, which is the case for everything modern. So this results in init_intel_cacheinfo() not being called anymore.
So we might need the following conditional:
l2 = init_intel_cacheinfo(c); + if (!c->x86_cache_size) { + cpu_detect_cache_sizes(c); + l2 = c->x86_cache_size; + }
If that does not work because c->x86_cache_size is not 0 after init_intel_cacheinfo() we really need to make it family/model dependent.
Thanks,
tglx
| |