Messages in this thread | | | Date | Fri, 20 Oct 2017 11:03:03 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH 2/3 v3] x86/topology: Avoid wasting 128k for package id array |
| |
On Thu, 19 Oct 2017, Prarit Bhargava wrote: > static void remove_siblinginfo(int cpu) > { > - int sibling; > + int phys_pkg_id, sibling; > struct cpuinfo_x86 *c = &cpu_data(cpu); > > for_each_cpu(sibling, topology_core_cpumask(cpu)) { > @@ -1529,6 +1526,12 @@ static void remove_siblinginfo(int cpu) > cpumask_clear(topology_core_cpumask(cpu)); > c->phys_proc_id = 0; > c->cpu_core_id = 0; > + > + phys_pkg_id = c->phys_pkg_id; > + c->phys_pkg_id = U16_MAX;
This leaves c->logical_proc_set = 1, which is inconsistent at best. I have no idea why we need this logical_proc_set flag at all.
> + if (topology_phys_to_logical_pkg(phys_pkg_id) < 0) > + logical_packages--;
Now this has another issue. Depending on hotplug ordering the logical package association can change across hotplug operations. I don't know it that's an issue, but this needs to be analyzed before we merge that.
Thanks,
tglx
| |