Skip to content
  • Gu Zheng's avatar
    x86/acpi: Enable MADT APIs to return disabled apicids · 8ad893fa
    Gu Zheng authored
    
    
    The whole patch-set aims at making cpuid <-> nodeid mapping persistent. So that,
    when node online/offline happens, cache based on cpuid <-> nodeid mapping such as
    wq_numa_possible_cpumask will not cause any problem.
    It contains 4 steps:
    1. Enable apic registeration flow to handle both enabled and disabled cpus.
    2. Introduce a new array storing all possible cpuid <-> apicid mapping.
    3. Enable _MAT and MADT relative apis to return non-present or disabled cpus' apicid.
    4. Establish all possible cpuid <-> nodeid mapping.
    
    This patch finishes step 3.
    
    There are four mappings in the kernel:
    1. nodeid (logical node id)   <->   pxm        (persistent)
    2. apicid (physical cpu id)   <->   nodeid     (persistent)
    3. cpuid (logical cpu id)     <->   apicid     (not persistent, now persistent by step 2)
    4. cpuid (logical cpu id)     <->   nodeid     (not persistent)
    
    So, in order to setup persistent cpuid <-> nodeid mapping for all possible CPUs,
    we should:
    1. Setup cpuid <-> apicid mapping for all possible CPUs, which has been done in step 1, 2.
    2. Setup cpuid <-> nodeid mapping for all possible CPUs. But before that, we should
       obtain all apicids from MADT.
    
    All processors' apicids can be obtained by _MAT method or from MADT in ACPI.
    The current code ignores disabled processors and returns -ENODEV.
    
    After this patch, a new parameter will be added to MADT APIs so that caller
    is able to control if disabled processors are ignored.
    
    Signed-off-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarTang Chen <tangchen@cn.fujitsu.com>
    Signed-off-by: default avatarZhu Guihua <zhugh.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarDou Liyang <douly.fnst@cn.fujitsu.com>
    Acked-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: mika.j.penttila@gmail.com
    Cc: len.brown@intel.com
    Cc: rafael@kernel.org
    Cc: rjw@rjwysocki.net
    Cc: yasu.isimatu@gmail.com
    Cc: linux-mm@kvack.org
    Cc: linux-acpi@vger.kernel.org
    Cc: isimatu.yasuaki@jp.fujitsu.com
    Cc: gongzhaogang@inspur.com
    Cc: tj@kernel.org
    Cc: izumi.taku@jp.fujitsu.com
    Cc: cl@linux.com
    Cc: chen.tang@easystack.cn
    Cc: akpm@linux-foundation.org
    Cc: kamezawa.hiroyu@jp.fujitsu.com
    Cc: lenb@kernel.org
    Link: http://lkml.kernel.org/r/1472114120-3281-5-git-send-email-douly.fnst@cn.fujitsu.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    8ad893fa