lkml.org 
[lkml]   [2008]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 06/10] x86/oprofile: cleanup IBS init/exit functions in op_model_amd.c
    Date
    Implementation of pairwise init/exit funcions for IBS and IBS NMI
    setup. There are also some function renames and the removal of forward
    function declarations.

    Signed-off-by: Robert Richter <robert.richter@amd.com>
    ---
    arch/x86/oprofile/op_model_amd.c | 32 +++++++++++++++++---------------
    1 files changed, 17 insertions(+), 15 deletions(-)

    diff --git a/arch/x86/oprofile/op_model_amd.c b/arch/x86/oprofile/op_model_amd.c
    index 8ff657b..98658f2 100644
    --- a/arch/x86/oprofile/op_model_amd.c
    +++ b/arch/x86/oprofile/op_model_amd.c
    @@ -106,11 +106,6 @@ struct ibs_op_sample {
    unsigned int ibs_dc_phys_high;
    };

    -/*
    - * unitialize the APIC for the IBS interrupts if needed on AMD Family10h+
    - */
    -static void clear_ibs_nmi(void);
    -
    static int ibs_allowed; /* AMD Family10h and later */

    struct op_ibs_config {
    @@ -390,7 +385,7 @@ static inline void apic_clear_ibs_nmi_per_cpu(void *arg)
    setup_APIC_eilvt_ibs(0, APIC_EILVT_MSG_FIX, 1);
    }

    -static int pfm_amd64_setup_eilvt(void)
    +static int init_ibs_nmi(void)
    {
    #define IBSCTL_LVTOFFSETVAL (1 << 8)
    #define IBSCTL 0x1cc
    @@ -438,15 +433,22 @@ static int pfm_amd64_setup_eilvt(void)
    return 0;
    }

    +/* uninitialize the APIC for the IBS interrupts if needed */
    +static void clear_ibs_nmi(void)
    +{
    + if (ibs_allowed)
    + on_each_cpu(apic_clear_ibs_nmi_per_cpu, NULL, 1);
    +}
    +
    /* initialize the APIC for the IBS interrupts if available */
    -static void setup_ibs(void)
    +static void ibs_init(void)
    {
    ibs_allowed = boot_cpu_has(X86_FEATURE_IBS);

    if (!ibs_allowed)
    return;

    - if (pfm_amd64_setup_eilvt()) {
    + if (init_ibs_nmi()) {
    ibs_allowed = 0;
    return;
    }
    @@ -454,12 +456,12 @@ static void setup_ibs(void)
    printk(KERN_INFO "oprofile: AMD IBS detected\n");
    }

    -
    -/* uninitialize the APIC for the IBS interrupts if needed */
    -static void clear_ibs_nmi(void)
    +static void ibs_exit(void)
    {
    - if (ibs_allowed)
    - on_each_cpu(apic_clear_ibs_nmi_per_cpu, NULL, 1);
    + if (!ibs_allowed)
    + return;
    +
    + clear_ibs_nmi();
    }

    static int (*create_arch_files)(struct super_block *sb, struct dentry *root);
    @@ -509,7 +511,7 @@ static int setup_ibs_files(struct super_block *sb, struct dentry *root)

    static int op_amd_init(struct oprofile_operations *ops)
    {
    - setup_ibs();
    + ibs_init();
    create_arch_files = ops->create_files;
    ops->create_files = setup_ibs_files;
    return 0;
    @@ -517,7 +519,7 @@ static int op_amd_init(struct oprofile_operations *ops)

    static void op_amd_exit(void)
    {
    - clear_ibs_nmi();
    + ibs_exit();
    }

    #else
    --
    1.6.0.1



    \
     
     \ /
      Last update: 2008-12-11 17:53    [W:0.074 / U:0.012 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site