lkml.org 
[lkml]   [2009]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] x86/oprofile: add module parameter option to force a core 2 cpu
    Date
    The current userland does not yet fully support all cpu types
    implemented in the kernel. With the module parameter:

    oprofile.cpu_type=core_2

    the kernel reports a core_2 cpu to the userland on an Intel system and
    thus makes oprofile usable with current distros.

    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Robert Richter <robert.richter@amd.com>
    ---
    Documentation/kernel-parameters.txt | 3 ++-
    arch/x86/oprofile/nmi_int.c | 17 ++++++++++++++---
    2 files changed, 16 insertions(+), 4 deletions(-)

    diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
    index 6ce5f48..ea7ead3 100644
    --- a/Documentation/kernel-parameters.txt
    +++ b/Documentation/kernel-parameters.txt
    @@ -1653,10 +1653,11 @@ and is between 256 and 4096 characters. It is defined in the file
    oprofile.cpu_type= Force an oprofile cpu type
    This might be useful if you have an older oprofile
    userland or if you want common events.
    - Format: { archperfmon }
    + Format: { archperfmon | core_2 }
    archperfmon: [X86] Force use of architectural
    perfmon on Intel CPUs instead of the
    CPU specific event set.
    + core_2: [X86] On Intel systems: report core_2 CPU.

    osst= [HW,SCSI] SCSI Tape Driver
    Format: <buffer_size>,<write_threshold>
    diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
    index 3b285e6..d7348a2 100644
    --- a/arch/x86/oprofile/nmi_int.c
    +++ b/arch/x86/oprofile/nmi_int.c
    @@ -386,12 +386,20 @@ static int __init p4_init(char **cpu_type)
    return 0;
    }

    -static int force_arch_perfmon;
    +static enum {
    + NONE = 0,
    + ARCH_PERFMON,
    + CORE_2,
    +} forced_cpu;
    +
    static int force_cpu_type(const char *str, struct kernel_param *kp)
    {
    if (!strcmp(str, "archperfmon")) {
    - force_arch_perfmon = 1;
    + forced_cpu = ARCH_PERFMON;
    printk(KERN_INFO "oprofile: forcing architectural perfmon\n");
    + } else if (!strcmp(str, "core_2")) {
    + forced_cpu = CORE_2;
    + printk(KERN_INFO "oprofile: forcing core_2\n");
    }

    return 0;
    @@ -402,9 +410,12 @@ static int __init ppro_init(char **cpu_type)
    {
    __u8 cpu_model = boot_cpu_data.x86_model;

    - if (force_arch_perfmon && cpu_has_arch_perfmon)
    + if (forced_cpu == ARCH_PERFMON && cpu_has_arch_perfmon)
    return 0;

    + if (forced_cpu == CORE_2)
    + cpu_model = 15;
    +
    switch (cpu_model) {
    case 0 ... 2:
    *cpu_type = "i386/ppro";
    --
    1.6.1.3



    \
     
     \ /
      Last update: 2009-05-06 14:51    [W:0.027 / U:30.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site