14 Jul, 2010

1 commit


08 Jan, 2009

1 commit

  • This patch adds the SPU event based profiling funcitonality for the
    IBM Cell processor. Previously, the CELL OProfile kernel code supported
    PPU event, PPU cycle profiling and SPU cycle profiling. The addition of
    SPU event profiling allows the users to identify where in their SPU code
    various SPU evnets are occuring. This should help users further identify
    issues with their code. Note, SPU profiling has some limitations due to HW
    constraints. Only one event at a time can be used for profiling and SPU event
    profiling must be time sliced across all of the SPUs in a node.

    The patch adds a new arch specific file to the OProfile file system. The
    file has bit 0 set to indicate that the kernel supports SPU event profiling.
    The user tool must check this file/bit to make sure the kernel supports
    SPU event profiling before trying to do SPU event profiling. The user tool
    check is part of the user tool patch for SPU event profiling.

    Signed-off-by: Carl Love
    Signed-off-by: Robert Richter

    Carl Love
     

26 Jun, 2008

1 commit


06 Feb, 2008

1 commit

  • Some of the more recent e300 cores have the same performance monitor
    implementation as the e500. e300 isn't book-e, so the name isn't
    really appropriate. In preparation for e300 support, rename a bunch
    of fsl_booke things to say fsl_emb (Freescale Embedded Performance Monitors).

    Signed-off-by: Andy Fleming
    Signed-off-by: Kumar Gala

    Andy Fleming
     

21 Jul, 2007

1 commit

  • From: Maynard Johnson

    This patch updates the existing arch/powerpc/oprofile/op_model_cell.c
    to add in the SPU profiling capabilities. In addition, a 'cell' subdirectory
    was added to arch/powerpc/oprofile to hold Cell-specific SPU profiling code.
    Exports spu_set_profile_private_kref and spu_get_profile_private_kref which
    are used by OProfile to store private profile information in spufs data
    structures.

    Also incorporated several fixes from other patches (rrn). Check pointer
    returned from kzalloc. Eliminated unnecessary cast. Better error
    handling and cleanup in the related area. 64-bit unsigned long parameter
    was being demoted to 32-bit unsigned int and eventually promoted back to
    unsigned long.

    Signed-off-by: Carl Love
    Signed-off-by: Maynard Johnson
    Signed-off-by: Bob Nelson
    Signed-off-by: Arnd Bergmann
    Acked-by: Paul Mackerras

    Bob Nelson
     

24 Apr, 2007

1 commit


24 Jan, 2007

1 commit


04 Dec, 2006

2 commits

  • A few code paths need to check whether or not they are running
    on the PS3's LV1 hypervisor before making hcalls. This introduces
    a new firmware feature bit for this, FW_FEATURE_PS3_LV1.

    Now when both PS3 and IBM_CELL_BLADE are enabled, but not PSERIES,
    FW_FEATURE_PS3_LV1 and FW_FEATURE_LPAR get enabled at compile time,
    which is a bug. The same problem can also happen for (PPC_ISERIES &&
    !PPC_PSERIES && PPC_SOMETHING_ELSE). In order to solve this, I
    introduce a new CONFIG_PPC_NATIVE option that is set when at least
    one platform is selected that can run without a hypervisor and then
    turns the firmware feature check into a run-time option.

    The new cell oprofile support that was recently merged does not
    work on hypervisor based platforms like the PS3, therefore make
    it depend on PPC_CELL_NATIVE instead of PPC_CELL. This may change
    if we get oprofile support for PS3.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • Add PPU event-based and cycle-based profiling support to Oprofile for Cell.

    Oprofile is expected to collect data on all CPUs simultaneously.
    However, there is one set of performance counters per node. There are
    two hardware threads or virtual CPUs on each node. Hence, OProfile must
    multiplex in time the performance counter collection on the two virtual
    CPUs.

    The multiplexing of the performance counters is done by a virtual
    counter routine. Initially, the counters are configured to collect data
    on the even CPUs in the system, one CPU per node. In order to capture
    the PC for the virtual CPU when the performance counter interrupt occurs
    (the specified number of events between samples has occurred), the even
    processors are configured to handle the performance counter interrupts
    for their node. The virtual counter routine is called via a kernel
    timer after the virtual sample time. The routine stops the counters,
    saves the current counts, loads the last counts for the other virtual
    CPU on the node, sets interrupts to be handled by the other virtual CPU
    and restarts the counters, the virtual timer routine is scheduled to run
    again. The virtual sample time is kept relatively small to make sure
    sampling occurs on both CPUs on the node with a relatively small
    granularity. Whenever the counters overflow, the performance counter
    interrupt is called to collect the PC for the CPU where data is being
    collected.

    The oprofile driver relies on a firmware RTAS call to setup the debug bus
    to route the desired signals to the performance counter hardware to be
    counted. The RTAS call must set the routing registers appropriately in
    each of the islands to pass the signals down the debug bus as well as
    routing the signals from a particular island onto the bus. There is a
    second firmware RTAS call to reset the debug bus to the non pass thru
    state when the counters are not in use.

    Signed-off-by: Carl Love
    Signed-off-by: Maynard Johnson
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Maynard Johnson
     

01 Nov, 2006

1 commit

  • Fixed a compile error in building the 85xx support with oprofile, and in
    the process cleaned up some issues with the fsl_booke performance monitor
    code.

    * Reorganized FSL Book-E performance monitoring code so that the 7450
    wouldn't be built if the e500 was, and cleaned it up so it was more
    self-contained.

    * Added a cpu_setup function for FSL Book-E. The original
    cpu_setup function prototype had no arguments, assuming that
    the reg_setup function would copy the required information into
    variables which represented the registers. This was silly for
    e500, since it has 1 register per counter (rather than 3 for
    all counters), so the code has been restructured to have
    cpu_setup take the current counter config array as an argument,
    with op_powerpc_setup() invoking op_powerpc_cpu_setup() through
    on_each_cpu(), and op_powerpc_cpu_setup() invoking the
    model-specific cpu_setup function with an argument. The
    argument is ignored on all other platforms at present.

    * Fixed a confusing line where a trinary operator only had two
    arguments

    Signed-off-by: Andrew Fleming
    Signed-off-by: Paul Mackerras

    Andy Fleming
     

27 Jun, 2006

1 commit

  • nmi_create_files() in arch/i386/oprofile/nmi_int.c depends on
    model->num_counters (number of performance counters) being less than 10.
    While this is currently the case, it's too clever by half.

    Other archs aren't quite as clever: they assume 100. I suggest to
    normalize them all to 1000.

    Cc: Philippe Elie
    Cc: John Levon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Markus Armbruster
     

21 Jun, 2006

1 commit

  • This patch removes the changes from an earlier patch that disables
    oProfile for iSeries within the oProfile KConfig (submitted Feb 23,
    2006). Checks within the arch init for iSeries, still allowing profiling
    for timer interrupts (using firmware_has_feature).

    Signed-off-by: Kelly Daly
    Acked-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Kelly Daly
     

22 Apr, 2006

1 commit


29 Mar, 2006

2 commits


14 Jan, 2006

1 commit

  • In 2.6.15-git6 a change was commited in the oprofile support in
    the powerpc architecture. It introduced the powerpc_oprofile_type
    which contains the define G4. This causes a name clash with the
    existing wacom usb tablet driver.

    CC [M] drivers/usb/input/wacom.o
    drivers/usb/input/wacom.c:98: error: conflicting types for `G4'
    include/asm/cputable.h:37: error: previous declaration of `G4'
    CC [M] drivers/usb/mon/mon_text.o
    make[3]: *** [drivers/usb/input/wacom.o] Error 1
    make[2]: *** [drivers/usb/input] Error 2

    The elements of an enum declared in global scope are effectivly
    global identifiers themselves. As such we need to ensure the names
    are unique. This patch updates the later oprofile support to use
    unique names.

    Signed-off-by: Andy Whitcroft
    Signed-off-by: Paul Mackerras

    Andy Whitcroft
     

09 Jan, 2006

2 commits

  • My recent changes to oprofile broke it when built as a module. Fix it by
    using an enum instead of a function pointer. This way we still retain
    the oprofile configuration in the cputable.

    Signed-off-by: Anton Blanchard
    Signed-off-by: Paul Mackerras

    Anton Blanchard
     
  • This patch adds oprofile support for the 7450 and all its multitudinous
    derivatives.

    * Added 7450 (and derivatives) support for oprofile
    * Changed e500 cputable to have oprofile model and cpu_type fields
    * Added support for classic 32-bit performance monitor interrupt
    * Cleaned up common powerpc oprofile code to be as common as possible
    * Cleaned up oprofile_impl.h to reflect 32 bit classic code
    * Added 32-bit MMCRx bitfield definitions and SPR numbers

    Signed-off-by: Andy Fleming
    Signed-off-by: Paul Mackerras

    Andy Fleming
     

20 Oct, 2005

1 commit

  • This patches the ppc32 and ppc64 versions of the headers and .c files
    with helper functions for manipulating the performance counting
    hardware. As a side effect, it removes use of the term "perfmon" from
    ppc32, thus avoiding confusion with the unrelated performance counter
    interface from HP Labs also called "perfmon".

    Built, but not booted, for g5, pSeries, iSeries, and 32-bit Powermac
    with both ARCH=powerpc and ARCH=ppc{,64} as appropriate.

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     

28 Sep, 2005

1 commit


21 Sep, 2005

2 commits