• Gu Zheng's avatar
    x86/acpi: Introduce persistent storage for cpuid <-> apicid mapping · 8f54969d
    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 2.
    
    In this patch, we introduce a new static array named cpuid_to_apicid[],
    which is large enough to store info for all possible cpus.
    
    And then, we modify the cpuid calculation. In generic_processor_info(),
    it simply finds the next unused cpuid. And it is also why the cpuid <-> nodeid
    mapping changes with node hotplug.
    
    After this patch, we find the next unused cpuid, map it to an apicid,
    and store the mapping in cpuid_to_apicid[], so that cpuid <-> apicid
    mapping will be persistent.
    
    And finally we will use this array to make cpuid <-> nodeid persistent.
    
    cpuid <-> apicid mapping is established at local apic registeration time.
    But non-present or disabled cpus are ignored.
    
    In this patch, we establish all possible cpuid <-> apicid mapping when
    registering local apic.
    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-4-git-send-email-douly.fnst@cn.fujitsu.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    8f54969d
apic.c 65.1 KB