23 Dec, 2011

1 commit

  • This change fixes a linking problem, which happens if oprofile
    is selected to be compiled as built-in:

    `oprofile_arch_exit' referenced in section `.init.text' of
    arch/arm/oprofile/built-in.o: defined in discarded section
    `.exit.text' of arch/arm/oprofile/built-in.o

    The problem is appeared after commit 87121ca504, which
    introduced oprofile_arch_exit() calls from __init function. Note
    that the aforementioned commit has been backported to stable
    branches, and the problem is known to be reproduced at least
    with 3.0.13 and 3.1.5 kernels.

    Signed-off-by: Vladimir Zapolskiy
    Signed-off-by: Robert Richter
    Cc: Will Deacon
    Cc: oprofile-list
    Cc:
    Link: http://lkml.kernel.org/r/20111222151540.GB16765@erda.amd.com
    Signed-off-by: Ingo Molnar

    Vladimir Zapolskiy
     

16 Feb, 2011

1 commit


10 Feb, 2011

1 commit

  • Since tail is the previous fp - 1, we need to compare the new fp with tail + 1
    to ensure that we don't end up passing in the same tail again, in order to
    avoid a potential infinite loop in the perf interrupt handler (which has been
    observed to occur). A similar fix seems to be needed in the OProfile code.

    Acked-by: Will Deacon
    Signed-off-by: Rabin Vincent
    Signed-off-by: Russell King

    Rabin Vincent
     

27 Jan, 2011

1 commit

  • Always allow backtraces when using oprofile on ARM, even if a PMU
    isn't present. Restores functionality originally introduced in commit
    1b7b56982fdcd9d85effd76f3928cf5d6eb26155 ("oprofile: Always allow
    backtraces on ARM") by Richard Purdie.

    It is not that obvious, but there is now only one oprofile_arch_init()
    function. So the .backtrace callback is available also in timer mode.

    Implemented by removing code and using stubs for oprofile_perf_{init,
    exit} provided by . This allows cleaning of other
    architecture specific implementations too.

    Cc: stable@kernel.org # 37.x
    Signed-off-by: Ari Kauppi
    Acked-by: Will Deacon
    Signed-off-by: Robert Richter

    Ari Kauppi
     

11 Oct, 2010

5 commits

  • Move the perf-events backend from arch/arm/oprofile into
    drivers/oprofile so that the code can be shared between architectures.

    This allows each architecture to maintain only a single copy of the PMU
    accessor functions instead of one for both perf and OProfile. It also
    becomes possible for other architectures to delete much of their
    OProfile code in favour of the common code now available in
    drivers/oprofile/oprofile_perf.c.

    Signed-off-by: Matt Fleming
    Tested-by: Will Deacon
    Signed-off-by: Robert Richter

    Matt Fleming
     
  • In preparation for moving the majority of this oprofile code into an
    architecture-neutral place separate the architecture-independent code
    into oprofile_perf_init() and oprofile_perf_exit().

    Signed-off-by: Matt Fleming
    Tested-by: Will Deacon
    Signed-off-by: Robert Richter

    Matt Fleming
     
  • In preparation for moving the generic functions out of this file, give
    the functions more general names (e.g. remove "arm" from the names).

    Signed-off-by: Matt Fleming
    Tested-by: Will Deacon
    Signed-off-by: Robert Richter

    Matt Fleming
     
  • Make op_name_from_perf_id() global so that we have a way for each
    architecture to construct an oprofile name for op->cpu_type. We need to
    remove the argument from the function prototype so that we can hide all
    implementation details inside the function.

    Signed-off-by: Matt Fleming
    Signed-off-by: Robert Richter

    Matt Fleming
     
  • The number of counters for the registered pmu is needed in a few places
    so provide a helper function that returns this number.

    Signed-off-by: Matt Fleming
    Tested-by: Will Deacon
    Acked-by: Paul Mundt
    Acked-by: Peter Zijlstra
    Signed-off-by: Robert Richter

    Matt Fleming
     

31 Aug, 2010

2 commits


17 May, 2010

2 commits

  • This is a reworking of an original patch posted by Aaro Koskinen:

    oprofile does not work with PM, because sysdev_suspend() is done with
    interrupts disabled and oprofile needs a mutex. Implementing oprofile
    as a platform device solves this problem.

    Cc: Aaro Koskinen
    Signed-off-by: Will Deacon
    Signed-off-by: Aaro Koskinen
    Signed-off-by: Russell King

    Will Deacon
     
  • There are currently two hardware performance monitoring subsystems in
    the kernel for ARM: OProfile and perf-events. This creates the
    following problems:

    1.) Duplicate PMU accessor code. Inevitable code drift may lead to
    bugs in one framework that are fixed in the other.

    2.) Locking issues. OProfile doesn't reprogram hardware counters
    between profiling runs if the events to be monitored have not been
    changed. This means that other profiling frameworks cannot use the
    counters if OProfile is in use.

    3.) Due to differences in the two frameworks, it may not be possible to
    compare the results obtained by OProfile with those obtained by perf.

    This patch removes the OProfile PMU driver code and replaces it with
    calls to perf, therefore solving the issues mentioned above.

    The only userspace-visible change is the lack of SCU counter support
    for 11MPCore. This is currently unsupported by OProfile userspace tools anyway and therefore shouldn't cause any problems.

    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Robert Richter
    Cc: Jamie Iles
    Cc: Jean Pihet
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     

01 Sep, 2008

1 commit


25 Jan, 2008

1 commit


02 Mar, 2007

1 commit


07 Feb, 2007

2 commits


22 Mar, 2006

3 commits


02 Feb, 2006

1 commit

  • Patch from Russ Dill

    The oprofile init code was broken in commit c6b9da. The new logic will
    always return -ENODEV. This fixes oprofile_arch_init to return 0 on
    success, and return the return value of spec->init() if applicable.

    Signed-off-by: Russ Dill
    Signed-off-by: Russell King

    Russ Dill
     

28 Oct, 2005

4 commits


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds