07 Sep, 2016

1 commit


22 Jun, 2015

1 commit

  • The idle cpus which stay in snooze for a long period can degrade the
    perfomance of the sibling cpus. If the cpu stays in snooze for more
    than target residency of the next available idle state, then exit from
    snooze. This gives a chance to the cpuidle governor to re-evaluate the
    last idle state of the cpu to promote it to deeper idle states.

    Signed-off-by: Shilpasri G Bhat
    Reviewed-by: Preeti U Murthy
    Signed-off-by: Rafael J. Wysocki

    Shilpasri G Bhat
     

13 Nov, 2014

1 commit

  • The only place where the time is invalid is when the ACPI_CSTATE_FFH entry
    method is not set. Otherwise for all the drivers, the time can be correctly
    measured.

    Instead of duplicating the CPUIDLE_FLAG_TIME_VALID flag in all the drivers
    for all the states, just invert the logic by replacing it by the flag
    CPUIDLE_FLAG_TIME_INVALID, hence we can set this flag only for the acpi idle
    driver, remove the former flag from all the drivers and invert the logic with
    this flag in the different governor.

    Signed-off-by: Daniel Lezcano
    Signed-off-by: Rafael J. Wysocki

    Daniel Lezcano
     

12 Feb, 2014

1 commit

  • Commit d8c6ad3184ca651 ("sched/idle, PPC: Remove redundant
    cpuidle_idle_call()") reintroduced ppc64_runlatch_off/on() in the
    pseries cpuidle backend driver. Hence the cleanup caused by the
    commit "c0c4301c54adde05:pseries/cpuidle: Remove redundant call
    to ppc64_runlatch_off() in cpu idle routines" in conjuction
    with the commit d8c6ad3184ca651 causes a build failure.

    Signed-off-by: Preeti U Murthy
    Cc: Peter Zijlstra
    Cc: Nicolas Pitre
    Cc: Stephen Rothwell
    Link: http://lkml.kernel.org/r/52FAFD2D.2090306@linux.vnet.ibm.com
    Signed-off-by: Ingo Molnar

    Preeti U Murthy
     

11 Feb, 2014

1 commit

  • The core idle loop now takes care of it. However a few things need
    checking:

    - Invocation of cpuidle_idle_call() in pseries_lpar_idle() happened
    through arch_cpu_idle() and was therefore always preceded by a call
    to ppc64_runlatch_off(). To preserve this property now that
    cpuidle_idle_call() is invoked directly from core code, a call to
    ppc64_runlatch_off() has been added to idle_loop_prolog() in
    platforms/pseries/processor_idle.c.

    - Similarly, cpuidle_idle_call() was followed by ppc64_runlatch_off()
    so a call to the later has been added to idle_loop_epilog().

    - And since arch_cpu_idle() always made sure to re-enable IRQs if they
    were not enabled, this is now
    done in idle_loop_epilog() as well.

    The above was made in order to keep the execution flow close to the
    original. I don't know if that was strictly necessary. Someone well
    aquainted with the platform details might find some room for possible
    optimizations.

    Signed-off-by: Nicolas Pitre
    Reviewed-by: Preeti U Murthy
    Cc: "Rafael J. Wysocki"
    Cc: Daniel Lezcano
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-sh@vger.kernel.org
    Cc: linux-pm@vger.kernel.org
    Cc: Russell King
    Cc: linaro-kernel@lists.linaro.org
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mundt
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/n/tip-47o4m03citrfg9y1vxic5asb@git.kernel.org
    Signed-off-by: Ingo Molnar

    Nicolas Pitre
     

29 Jan, 2014

5 commits

  • smt-snooze-delay was designed to disable NAP state or delay the entry
    to the NAP state prior to adoption of cpuidle framework. This
    is per-cpu variable. With the coming of CPUIDLE framework,
    states can be disabled on per-cpu basis using the cpuidle/enable
    sysfs entry.

    Also, with the coming of cpuidle driver each state's target residency
    is per-driver unlike earlier which was per-device. Therefore,
    the per-cpu sysfs smt-snooze-delay which decides the target residency
    of the idle state on a particular cpu causes more confusion to the user
    as we cannot have different smt-snooze-delay (target residency)
    values for each cpu.

    In the current code, smt-snooze-delay functionality is completely broken.
    It makes sense to remove smt-snooze-delay from idle driver with the
    coming of cpuidle framework.
    However, sysfs files are retained as ppc64_util currently
    utilises it. Once we fix ppc64_util, propose to clean
    up the kernel code.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Benjamin Herrenschmidt

    Deepthi Dharwar
     
  • This patch removes the usage of MAX_IDLE_STATE macro
    and dead code around it. The number of states
    are determined at run time based on the cpuidle
    state table selected on a given platform

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Benjamin Herrenschmidt

    Deepthi Dharwar
     
  • Currently cpuidle-pseries backend driver cannot be
    built as a module due to dependencies wrt cpuidle framework.
    This patch removes all the module related code in the driver.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Benjamin Herrenschmidt

    Deepthi Dharwar
     
  • This patch replaces the cpuidle driver and devices initialisation
    calls with a single generic cpuidle_register() call
    and also includes minor refactoring of the code around it.

    Remove the cpu online check in snooze loop, as this code can
    only locally run on a cpu only if it is online. Therefore,
    this check is not required.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Benjamin Herrenschmidt

    Deepthi Dharwar
     
  • Move the file from arch specific pseries/processor_idle.c
    to drivers/cpuidle/cpuidle-pseries.c
    Make the relevant Makefile and Kconfig changes.
    Also, introduce Kconfig.powerpc in drivers/cpuidle
    for all powerpc cpuidle drivers.

    Signed-off-by: Deepthi Dharwar
    Signed-off-by: Benjamin Herrenschmidt

    Deepthi Dharwar