lkml.org 
[lkml]   [2011]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch 4/4] Handle memory unmap while hardware sampling is running
    On 20.12.10 08:05:45, graalfs@linux.vnet.ibm.com wrote:
    > From: graalfs@linux.vnet.ibm.com
    >
    > During memory unmap hardware sampling is deactivated.
    > After all samples have been collected hardware sampling is reactivated again.

    Do you mean you switch off the profiler for each buffer sync? This
    happens per default every 100ms. Why is this needed? Which memory is
    unmapped?

    This hooks in the sync_buffer() are ugly. We must try to find a better
    solution here.

    There is oprofile_put_buff() that allows to write directly to the the
    event buffer which is used in powerpc/cell.

    -Robert

    >
    > Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
    > Signed-off-by: Maran Pakkirisamy <maranp@linux.vnet.ibm.com>
    > Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
    > ---
    > arch/s390/oprofile/hwsampler_files.c | 2 +-
    > drivers/oprofile/buffer_sync.c | 13 +++++++++++++
    > 2 files changed, 14 insertions(+), 1 deletion(-)
    >
    > Index: linux-2.6/drivers/oprofile/buffer_sync.c
    > ===================================================================
    > --- linux-2.6.orig/drivers/oprofile/buffer_sync.c
    > +++ linux-2.6/drivers/oprofile/buffer_sync.c
    > @@ -32,6 +32,11 @@
    > #include <linux/sched.h>
    > #include <linux/gfp.h>
    >
    > +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
    > +#include <asm/hwsampler.h>
    > +extern unsigned long oprofile_hwsampler;
    > +#endif
    > +
    > #include "oprofile_stats.h"
    > #include "event_buffer.h"
    > #include "cpu_buffer.h"
    > @@ -513,6 +518,10 @@ void sync_buffer(int cpu)
    >
    > mutex_lock(&buffer_mutex);
    >
    > +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
    > + if (oprofile_hwsampler)
    > + hwsampler_deactivate(cpu);
    > +#endif
    > add_cpu_switch(cpu);
    >
    > op_cpu_buffer_reset(cpu);
    > @@ -569,6 +578,10 @@ void sync_buffer(int cpu)
    >
    > mark_done(cpu);
    >
    > +#ifdef CONFIG_OPROFILE_HWSAMPLING_MODE
    > + if (oprofile_hwsampler)
    > + hwsampler_activate(cpu);
    > +#endif
    > mutex_unlock(&buffer_mutex);
    > }
    >
    > Index: linux-2.6/arch/s390/oprofile/hwsampler_files.c
    > ===================================================================
    > --- linux-2.6.orig/arch/s390/oprofile/hwsampler_files.c
    > +++ linux-2.6/arch/s390/oprofile/hwsampler_files.c
    > @@ -22,7 +22,7 @@ unsigned long oprofile_max_interval;
    > static unsigned long oprofile_sdbt_blocks = DEFAULT_SDBT_BLOCKS;
    > static unsigned long oprofile_sdb_blocks = DEFAULT_SDB_BLOCKS;
    >
    > -static unsigned long oprofile_hwsampler;
    > +unsigned long oprofile_hwsampler;
    >
    > static int oprofile_hwsampler_start(void)
    > {
    >
    >

    --
    Advanced Micro Devices, Inc.
    Operating System Research Center



    \
     
     \ /
      Last update: 2011-01-03 21:41    [W:4.153 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site