lkml.org 
[lkml]   [2008]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/16] x86: cpu common merge detect_ht
    Date
    Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
    ---
    arch/x86/kernel/cpu/common.c | 13 ++++++++++++-
    arch/x86/kernel/cpu/common_64.c | 9 +++++++++
    2 files changed, 21 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
    index f919120..b2018f7 100644
    --- a/arch/x86/kernel/cpu/common.c
    +++ b/arch/x86/kernel/cpu/common.c
    @@ -330,6 +330,9 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)
    if (cpu_has(c, X86_FEATURE_CMP_LEGACY))
    goto out;

    + if (cpu_has(c, X86_FEATURE_XTOPOLOGY))
    + return;
    +
    cpuid(1, &eax, &ebx, &ecx, &edx);

    smp_num_siblings = (ebx & 0xff0000) >> 16;
    @@ -346,8 +349,11 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)
    }

    index_msb = get_count_order(smp_num_siblings);
    +#ifdef CONFIG_X86_64
    + c->phys_proc_id = phys_pkg_id(index_msb);
    +#else
    c->phys_proc_id = phys_pkg_id(c->initial_apicid, index_msb);
    -
    +#endif

    smp_num_siblings = smp_num_siblings / c->x86_max_cores;

    @@ -355,8 +361,13 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)

    core_bits = get_count_order(c->x86_max_cores);

    +#ifdef CONFIG_X86_64
    + c->cpu_core_id = phys_pkg_id(index_msb) &
    + ((1 << core_bits) - 1);
    +#else
    c->cpu_core_id = phys_pkg_id(c->initial_apicid, index_msb) &
    ((1 << core_bits) - 1);
    +#endif
    }

    out:
    diff --git a/arch/x86/kernel/cpu/common_64.c b/arch/x86/kernel/cpu/common_64.c
    index f7a2d52..7ac0a00 100644
    --- a/arch/x86/kernel/cpu/common_64.c
    +++ b/arch/x86/kernel/cpu/common_64.c
    @@ -349,7 +349,11 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)
    }

    index_msb = get_count_order(smp_num_siblings);
    +#ifdef CONFIG_X86_64
    c->phys_proc_id = phys_pkg_id(index_msb);
    +#else
    + c->phys_proc_id = phys_pkg_id(c->initial_apicid, index_msb);
    +#endif

    smp_num_siblings = smp_num_siblings / c->x86_max_cores;

    @@ -357,8 +361,13 @@ void __cpuinit detect_ht(struct cpuinfo_x86 *c)

    core_bits = get_count_order(c->x86_max_cores);

    +#ifdef CONFIG_X86_64
    c->cpu_core_id = phys_pkg_id(index_msb) &
    ((1 << core_bits) - 1);
    +#else
    + c->cpu_core_id = phys_pkg_id(c->initial_apicid, index_msb) &
    + ((1 << core_bits) - 1);
    +#endif
    }

    out:
    --
    1.5.4.5


    \
     
     \ /
      Last update: 2008-09-05 05:15    [W:0.024 / U:0.044 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site