• Ingo Molnar's avatar
    [PATCH] sched: fix SCHED_SMT & numa=fake=2 lockup · 7a9a3e86
    Ingo Molnar authored
    This patch fixes an interaction between the numa=fake=<domains> feature,
    the domain setup code and cpu_siblings_map[].  The bug leads to a bootup
    crash when using numa=fake=2 on a 2-way/4-way SMP+HT box.
    
    When SCHED_SMT is turned on the domains-setup code relies on siblings not
    spanning multiple domains (which makes perfect sense).  But numa=fake=2
    creates an assymetric 1101/0010 splitup between CPUs, which results in two
    siblings being on different nodes.
    
    The patch adds a check_siblings_map() function that checks the sibling maps
    and fixes them up if they violate this rule.  (it also prints a warning in
    that case.)
    
    The patch also turns SCHED_DOMAIN_DEBUG back on - had this been enabled
    we'd have noticed this bug much earlier.
    
    From: Badari Pulavarty <pbadari@us.ibm.com>
    
      arch/x86_64/mm/numa.c: In function `numa_setup':
      arch/x86_64/mm/numa.c:332: error: `numa_fake' undeclared (first use in this function)
      arch/x86_64/mm/numa.c:332: error: (Each undeclared identifier is reported only once
      arch/x86_64/mm/numa.c:332: error: for each function it appears in.)
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    7a9a3e86
sched.c 113 KB