18 May, 2010

3 commits


17 May, 2010

10 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
     
  • Enable hardware perf-events if CPU_HAS_PMU and select
    HAVE_OPROFILE if HAVE_PERF_EVENTS. If no hardware support
    is present, OProfile will fall back to timer mode.

    This patch also removes the old OProfile drivers in favour
    of the code implemented by perf.

    Signed-off-by: Will Deacon
    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
     
  • For OProfile to initialise oprofilefs correctly, it needs to know
    the number of counters it can represent.

    This patch adds a function to the ARM perf-events backend to return
    the number of hardware counters available for the current PMU.

    Cc: Jamie Iles
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • The perf-events framework for ARM only supports v6 and v7 cores.

    This patch adds support for xscale v1 and v2 PMUs to perf, based on the
    OProfile drivers in arch/arm/oprofile/op_model_xscale.c

    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • The ARM perf-events framework provides support for a number of different
    PMUs using struct arm_pmu. The char *name field of this struct can be
    used to identify the PMU, but this is cumbersome if used outside of perf.

    This patch replaces the name string for a PMU with an enum, which holds
    a unique ID for the PMU being represented. This ID can be used to index
    an array of names within perf, so no functionality is lost. The presence
    of the ID field, allows other kernel subsystems [currently oprofile] to
    use their own mappings for the PMU name.

    Cc: Jean Pihet
    Acked-by: Jamie Iles
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • The current PMU infrastructure for ARM requires that the IRQs for the PMU
    device are fixed at compile time and are selected based on the ARCH_ or MACH_ flags. This has the disadvantage of tying the Kernel down to a
    particular board as far as profiling is concerned.

    This patch replaces the compile-time IRQ registration with a runtime mechanism which allows the IRQs to be registered with the framework as
    a platform_device.

    A further advantage of this change is that there is scope for registering
    different types of performance counters in the future by changing the id
    of the platform_device and attaching different resources to it.

    Acked-by: Jamie Iles
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • …xa', 'spear' and 'versatile' into devel

    Conflicts:
    arch/arm/Makefile
    arch/arm/common/Makefile
    arch/arm/mm/Kconfig

    Russell King
     
  • Provide a configuration option to allow the ARMv6 to use normal
    bufferable memory for coherent DMA. This option is forced to 'y'
    for ARMv7, and offered as a configuration option on ARMv6.

    Enabling this option requires drivers to have the necessary barriers
    to ensure that data in DMA coherent memory is visible prior to the
    DMA operation commencing.

    Reviewed-by: Catalin Marinas
    Signed-off-by: Russell King

    Russell King
     
  • Russell King
     

15 May, 2010

11 commits


13 May, 2010

3 commits


11 May, 2010

13 commits