提交 b5d5f27d 编写于 作者: P Peter Zijlstra 提交者: Thomas Gleixner

x86/topology: Fix logical package mapping

That first branch testing pkg against __max_logical_packages is wrong,
because if the first pkg id is larger, then the find_first_zero will
find us logical package id 0. However, if the second pkg id is indeed
0, we'll again claim it without testing if it was already taken.

Also, it fails to print the mapping.

Fixes: 1f12e32f ("x86/topology: Create logical package id")
Reported-by: NXiong Zhou <jencce.kernel@gmail.com>
Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: aherrmann@suse.com
Cc: bp@alien8.de
Cc: Mike Galbraith <umgwanakikbuti@gmail.com>
Link: http://lkml.kernel.org/r/20160317095220.GO6344@twins.programming.kicks-ass.net
Link: http://lkml.kernel.org/r/20160318150538.482393396@infradead.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 551adc60
...@@ -274,11 +274,6 @@ int topology_update_package_map(unsigned int apicid, unsigned int cpu) ...@@ -274,11 +274,6 @@ int topology_update_package_map(unsigned int apicid, unsigned int cpu)
if (test_and_set_bit(pkg, physical_package_map)) if (test_and_set_bit(pkg, physical_package_map))
goto found; goto found;
if (pkg < __max_logical_packages) {
set_bit(pkg, logical_package_map);
physical_to_logical_pkg[pkg] = pkg;
goto found;
}
new = find_first_zero_bit(logical_package_map, __max_logical_packages); new = find_first_zero_bit(logical_package_map, __max_logical_packages);
if (new >= __max_logical_packages) { if (new >= __max_logical_packages) {
physical_to_logical_pkg[pkg] = -1; physical_to_logical_pkg[pkg] = -1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册