lkml.org 
[lkml]   [2010]   [Dec]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCHSET] x86: unify x86_32 and 64 NUMA init paths, take#4
    Date
    Hello,

    This is the fourth take of unify-x86_32-and-64-NUMA-init-paths
    patchset.

    The only change from the last take[L] is that it's now based on
    tip/x86/numa. Unfortunately, some of the collisions weren't trivial
    and led to some ugliness.

    Commit c1c3443c ("x86, numa: Fake node-to-cpumask for NUMA emulation")
    introduced hard dependency on x86_64 into numa_add/remove_cpu() when
    CONFIG_NUMA_EMU is enabled. 0015 has been updated so that the 32/64
    bit common versions used when !CONFIG_NUMA_EMU are in numa.c while
    CONFIG_NUMA_EMU variants are in numa_64.c.

    This is ugly but still better than before. IIUC, Shaohui's patchsets
    is going to unify NUMA emulation across 32 and 64bit, which should
    remove the above ugliness. I haven't looked through the patchset yet
    but after skimming through the current NUMA_EMU code, here are some of
    my thoughts, FWIW.

    * There's no reason for different NUMA config methods to construct
    different data structures. They all, including 32bit, can build a
    single set of data structures.

    * Then, unification of NUMA_EMU would naturally follow. There's no
    reason to think about whether the underlying NUMA and proximity
    information is provided by ACPI, AMD or whatever. It just needs to
    manipulate the processed data.

    Let's _please_ head that way instead of adding more gluing codes and
    hacks everywhere. It would be a bit more churn but I don't think
    there's any other sustainable way.

    This patchset contains the following sixteen patches.

    0001-x86-Kill-unused-static-boot_cpu_logical_apicid-in-sm.patch
    0002-x86-Rename-x86_32-MAX_APICID-to-MAX_LOCAL_APIC.patch
    0003-x86-Make-default_send_IPI_mask_sequence-allbutself_l.patch
    0004-x86-Replace-cpu_2_logical_apicid-with-early-percpu-v.patch
    0005-x86-Always-use-x86_cpu_to_logical_apicid-for-cpu-log.patch
    0006-x86-Kill-apic-cpu_to_logical_apicid.patch
    0007-x86-Add-apic-x86_32_early_logical_apicid.patch
    0008-x86-Implement-the-default-x86_32_early_logical_apici.patch
    0009-x86-Implement-x86_32_early_logical_apicid-for-bigsmp.patch
    0010-x86-Implement-x86_32_early_logical_apicid-for-summit.patch
    0011-x86-Implement-x86_32_early_logical_apicid-for-numaq_.patch
    0012-x86-Replace-apic-apicid_to_node-with-x86_32_numa_cpu.patch
    0013-x86-Unify-cpu-apicid-NUMA-node-mapping-between-32-an.patch
    0014-x86-Unify-CPU-NUMA-node-mapping-between-32-and-64bit.patch
    0015-x86-Unify-node_to_cpumask_map-handling-between-32-an.patch
    0016-x86-Unify-NUMA-initialization-between-32-and-64bit.patch

    It's based on top of the current tip/x86/numa (d50e8fc7) and available
    in the following git branch.

    git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc.git unify-numa

    Diffstat follows.

    arch/x86/Kconfig | 2
    arch/x86/include/asm/apic.h | 36 +++---
    arch/x86/include/asm/apicdef.h | 1
    arch/x86/include/asm/ipi.h | 8 -
    arch/x86/include/asm/mpspec.h | 3
    arch/x86/include/asm/numa.h | 45 +++++++
    arch/x86/include/asm/numa_32.h | 7 +
    arch/x86/include/asm/numa_64.h | 16 --
    arch/x86/include/asm/smp.h | 3
    arch/x86/include/asm/topology.h | 17 --
    arch/x86/kernel/acpi/boot.c | 8 -
    arch/x86/kernel/apic/apic.c | 39 ++++++
    arch/x86/kernel/apic/apic_flat_64.c | 4
    arch/x86/kernel/apic/apic_noop.c | 26 ++--
    arch/x86/kernel/apic/bigsmp_32.c | 34 ++---
    arch/x86/kernel/apic/es7000_32.c | 35 ++----
    arch/x86/kernel/apic/ipi.c | 12 +-
    arch/x86/kernel/apic/numaq_32.c | 21 ++-
    arch/x86/kernel/apic/probe_32.c | 10 +
    arch/x86/kernel/apic/summit_32.c | 47 ++------
    arch/x86/kernel/apic/x2apic_cluster.c | 2
    arch/x86/kernel/apic/x2apic_phys.c | 2
    arch/x86/kernel/apic/x2apic_uv_x.c | 2
    arch/x86/kernel/cpu/amd.c | 51 +++++---
    arch/x86/kernel/cpu/common.c | 2
    arch/x86/kernel/cpu/intel.c | 5
    arch/x86/kernel/setup.c | 2
    arch/x86/kernel/setup_percpu.c | 11 +
    arch/x86/kernel/smpboot.c | 68 -----------
    arch/x86/mm/amdtopology_64.c | 4
    arch/x86/mm/numa.c | 197 +++++++++++++++++++++++++++++++++-
    arch/x86/mm/numa_32.c | 7 +
    arch/x86/mm/numa_64.c | 192 +++------------------------------
    arch/x86/mm/srat_32.c | 6 -
    arch/x86/mm/srat_64.c | 12 +-
    35 files changed, 484 insertions(+), 453 deletions(-)

    --
    tejun

    [L] http://thread.gmane.org/gmane.linux.kernel/1081199


    \
     
     \ /
      Last update: 2010-12-30 18:51    [W:0.025 / U:29.760 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site