20 Jun, 2017

1 commit


15 Jun, 2017

1 commit

  • * pm-cpufreq:
    cpufreq: conservative: Allow down_threshold to take values from 1 to 10
    Revert "cpufreq: schedutil: Reduce frequencies slower"

    * pm-cpuidle:
    cpuidle: dt: Add missing 'of_node_put()'

    * pm-devfreq:
    PM / devfreq: exynos-ppmu: Staticize event list
    PM / devfreq: exynos-ppmu: Handle return value of clk_prepare_enable
    PM / devfreq: exynos-nocp: Handle return value of clk_prepare_enable

    Rafael J. Wysocki
     

12 Jun, 2017

1 commit

  • 'of_node_put()' should be called on pointer returned by
    'of_parse_phandle()' when done. In this function this is done in all path
    except this 'continue', so add it.

    Fixes: 97735da074fd (drivers: cpuidle: Add status property to ARM idle states)
    Signed-off-by: Christophe Jaillet
    Signed-off-by: Rafael J. Wysocki

    Christophe Jaillet
     

15 May, 2017

1 commit

  • Ville reported that on his Core2, which has TSC stop in idle, we would
    always report very short idle durations. He tracked this down to
    commit:

    e93e59ce5b85 ("cpuidle: Replace ktime_get() with local_clock()")

    which replaces ktime_get() with local_clock().

    Add a sched_clock_idle_wakeup_event() call, which will re-sync the
    clock with ktime_get_ns() when TSC is unstable and no-op otherwise.

    Reported-by: Ville Syrjälä
    Tested-by: Ville Syrjälä
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Daniel Lezcano
    Cc: Linus Torvalds
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Rafael J . Wysocki
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Fixes: e93e59ce5b85 ("cpuidle: Replace ktime_get() with local_clock()")
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

10 May, 2017

1 commit

  • * pm-domains:
    PM / Domains: Add DT file to MAINTAINERS
    PM / Domains: Fix DT example

    * pm-cpuidle:
    x86/intel_idle: add Gemini Lake support
    cpuidle: check dev before usage in cpuidle_use_deepest_state()

    * pm-sleep:
    ACPI / sleep: Ignore spurious SCI wakeups from suspend-to-idle
    PM / wakeup: Integrate mechanism to abort transitions in progress

    * powercap:
    powercap: intel_rapl: Add support for Gemini Lake

    Rafael J. Wysocki
     

02 May, 2017

1 commit

  • In case of there is no cpuidle devices registered, dev will be null, and
    panic will be triggered like below;
    In this patch, add checking of dev before usage, like that done in
    cpuidle_idle_call.

    Panic without fix:
    [ 184.961328] BUG: unable to handle kernel NULL pointer dereference at
    (null)
    [ 184.961328] IP: cpuidle_use_deepest_state+0x30/0x60
    ...
    [ 184.961328] play_idle+0x8d/0x210
    [ 184.961328] ? __schedule+0x359/0x8e0
    [ 184.961328] ? _raw_spin_unlock_irqrestore+0x28/0x50
    [ 184.961328] ? kthread_queue_delayed_work+0x41/0x80
    [ 184.961328] clamp_idle_injection_func+0x64/0x1e0

    Fixes: bb8313b603eb8 (cpuidle: Allow enforcing deepest idle state selection)
    Signed-off-by: Li, Fei
    Tested-by: Shi, Feng
    Reviewed-by: Andy Shevchenko
    Cc: 4.10+ # 4.10+
    Signed-off-by: Rafael J. Wysocki

    Li, Fei
     

29 Apr, 2017

1 commit

  • * pm-cpuidle:
    cpuidle: powernv: Avoid a branch in the core snooze_loop() loop
    cpuidle: powernv: Don't continually set thread priority in snooze_loop()
    cpuidle: powernv: Don't bounce between low and very low thread priority
    cpuidle: cpuidle-cps: remove unused variable
    powernv-cpuidle: Validate DT property array size

    * pm-core:
    PM / runtime: Document autosuspend-helper side effects
    PM / runtime: Fix autosuspend documentation

    * pm-domains:
    PM / Domains: Ignore domain-idle-states that are not compatible
    PM / Domains: Don't warn about IRQ safe device for an always on PM domain
    PM / Domains: Respect errors from genpd's ->power_off() callback
    PM / Domains: Enable users of genpd to specify always on PM domains
    PM / Domains: Clean up code validating genpd's status
    PM / Domain: remove conditional from error case

    * pm-avs:
    PM / AVS: rockchip-io: add io selectors and supplies for rk3328

    * pm-devfreq:
    PM / devfreq: Move struct devfreq_governor to devfreq directory

    Rafael J. Wysocki
     

20 Apr, 2017

4 commits


30 Mar, 2017

1 commit

  • drv->cpumask defaults to cpu_possible_mask in __cpuidle_driver_init().
    On PowerNV platform cpu_present could be less than cpu_possible in cases
    where firmware detects the cpu, but it is not available to the OS. When
    CONFIG_HOTPLUG_CPU=n, such cpus are not hotplugable at runtime and hence
    we skip creating cpu_device.

    This breaks cpuidle on powernv where register_cpu() is not called for
    cpus in cpu_possible_mask that cannot be hot-added at runtime.

    Trying cpuidle_register_device() on cpu without cpu_device will cause
    crash like this:

    cpu 0xf: Vector: 380 (Data SLB Access) at [c000000ff1503490]
    pc: c00000000022c8bc: string+0x34/0x60
    lr: c00000000022ed78: vsnprintf+0x284/0x42c
    sp: c000000ff1503710
    msr: 9000000000009033
    dar: 6000000060000000
    current = 0xc000000ff1480000
    paca = 0xc00000000fe82d00 softe: 0 irq_happened: 0x01
    pid = 1, comm = swapper/8
    Linux version 4.11.0-rc2 (sv@sagarika) (gcc version 4.9.4
    (Buildroot 2017.02-00004-gc28573e) ) #15 SMP Fri Mar 17 19:32:02 IST 2017
    enter ? for help
    [link register ] c00000000022ed78 vsnprintf+0x284/0x42c
    [c000000ff1503710] c00000000022ebb8 vsnprintf+0xc4/0x42c (unreliable)
    [c000000ff1503800] c00000000022ef40 vscnprintf+0x20/0x44
    [c000000ff1503830] c0000000000ab61c vprintk_emit+0x94/0x2cc
    [c000000ff15038a0] c0000000000acc9c vprintk_func+0x60/0x74
    [c000000ff15038c0] c000000000619694 printk+0x38/0x4c
    [c000000ff15038e0] c000000000224950 kobject_get+0x40/0x60
    [c000000ff1503950] c00000000022507c kobject_add_internal+0x60/0x2c4
    [c000000ff15039e0] c000000000225350 kobject_init_and_add+0x70/0x78
    [c000000ff1503a60] c00000000053c288 cpuidle_add_sysfs+0x9c/0xe0
    [c000000ff1503ae0] c00000000053aeac cpuidle_register_device+0xd4/0x12c
    [c000000ff1503b30] c00000000053b108 cpuidle_register+0x98/0xcc
    [c000000ff1503bc0] c00000000085eaf0 powernv_processor_idle_init+0x140/0x1e0
    [c000000ff1503c60] c00000000000cd60 do_one_initcall+0xc0/0x15c
    [c000000ff1503d20] c000000000833e84 kernel_init_freeable+0x1a0/0x25c
    [c000000ff1503dc0] c00000000000d478 kernel_init+0x24/0x12c
    [c000000ff1503e30] c00000000000b564 ret_from_kernel_thread+0x5c/0x78

    This patch fixes the bug by passing correct cpumask from
    powernv-cpuidle driver.

    Signed-off-by: Vaidyanathan Srinivasan
    Reviewed-by: Gautham R. Shenoy
    Acked-by: Michael Ellerman
    [ rjw: Comment massage ]
    Signed-off-by: Rafael J. Wysocki

    Vaidyanathan Srinivasan
     

29 Mar, 2017

1 commit

  • The various properties associated with powernv idle states such as
    names, flags, residency-ns, latencies-ns, psscr, psscr-mask are
    exposed in the device-tree as property arrays such the pointwise
    entries in each of these arrays correspond to the properties of the
    same idle state.

    This patch validates that the lengths of the property arrays are the
    same. If there is a mismatch, the patch will ensure that we bail out
    and not expose the platform idle states via cpuidle.

    Signed-off-by: Gautham R. Shenoy
    Reviewed-by: Shilpasri G Bhat
    Signed-off-by: Rafael J. Wysocki

    Gautham R. Shenoy
     

22 Mar, 2017

1 commit

  • If a given cpu is not in cpu_present and cpu hotplug
    is disabled, arch can skip setting up the cpu_dev.

    Arch cpuidle driver should pass correct cpu mask
    for registration, but failing to do so by the driver
    causes error to propagate and crash like this:

    [ 30.076045] Unable to handle kernel paging request for data at address 0x00000048
    [ 30.076100] Faulting instruction address: 0xc0000000007b2f30
    cpu 0x4d: Vector: 300 (Data Access) at [c000003feb18b670]
    pc: c0000000007b2f30: kobject_get+0x20/0x70
    lr: c0000000007b3c94: kobject_add_internal+0x54/0x3f0
    sp: c000003feb18b8f0
    msr: 9000000000009033
    dar: 48
    dsisr: 40000000
    current = 0xc000003fd2ed8300
    paca = 0xc00000000fbab500 softe: 0 irq_happened: 0x01
    pid = 1, comm = swapper/0
    Linux version 4.11.0-rc2-svaidy+ (sv@sagarika) (gcc version 6.2.0
    20161005 (Ubuntu 6.2.0-5ubuntu12) ) #10 SMP Sun Mar 19 00:08:09 IST 2017
    enter ? for help
    [c000003feb18b960] c0000000007b3c94 kobject_add_internal+0x54/0x3f0
    [c000003feb18b9f0] c0000000007b43a4 kobject_init_and_add+0x64/0xa0
    [c000003feb18ba70] c000000000e284f4 cpuidle_add_sysfs+0xb4/0x130
    [c000003feb18baf0] c000000000e26038 cpuidle_register_device+0x118/0x1c0
    [c000003feb18bb30] c000000000e26c48 cpuidle_register+0x78/0x120
    [c000003feb18bbc0] c00000000168fd9c powernv_processor_idle_init+0x110/0x1c4
    [c000003feb18bc40] c00000000000cff8 do_one_initcall+0x68/0x1d0
    [c000003feb18bd00] c0000000016242f4 kernel_init_freeable+0x280/0x360
    [c000003feb18bdc0] c00000000000d864 kernel_init+0x24/0x160
    [c000003feb18be30] c00000000000b4e8 ret_from_kernel_thread+0x5c/0x74

    Validating cpu_dev fixes the crash and reports correct error message like:

    [ 30.163506] Failed to register cpuidle device for cpu136
    [ 30.173329] Registration of powernv driver failed.

    Signed-off-by: Vaidyanathan Srinivasan
    [ rjw: Comment massage ]
    Signed-off-by: Rafael J. Wysocki

    Vaidyanathan Srinivasan
     

04 Mar, 2017

1 commit

  • Pull sched.h split-up from Ingo Molnar:
    "The point of these changes is to significantly reduce the
    header footprint, to speed up the kernel build and to
    have a cleaner header structure.

    After these changes the new 's typical preprocessed
    size goes down from a previous ~0.68 MB (~22K lines) to ~0.45 MB (~15K
    lines), which is around 40% faster to build on typical configs.

    Not much changed from the last version (-v2) posted three weeks ago: I
    eliminated quirks, backmerged fixes plus I rebased it to an upstream
    SHA1 from yesterday that includes most changes queued up in -next plus
    all sched.h changes that were pending from Andrew.

    I've re-tested the series both on x86 and on cross-arch defconfigs,
    and did a bisectability test at a number of random points.

    I tried to test as many build configurations as possible, but some
    build breakage is probably still left - but it should be mostly
    limited to architectures that have no cross-compiler binaries
    available on kernel.org, and non-default configurations"

    * 'WIP.sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (146 commits)
    sched/headers: Clean up
    sched/headers: Remove #ifdefs from
    sched/headers: Remove the include from
    sched/headers, hrtimer: Remove the include from
    sched/headers, x86/apic: Remove the header inclusion from
    sched/headers, timers: Remove the include from
    sched/headers: Remove from
    sched/headers: Remove from
    sched/core: Remove unused prefetch_stack()
    sched/headers: Remove from
    sched/headers: Remove the 'init_pid_ns' prototype from
    sched/headers: Remove from
    sched/headers: Remove from
    sched/headers: Remove the runqueue_is_locked() prototype
    sched/headers: Remove from
    sched/headers: Remove from
    sched/headers: Remove from
    sched/headers: Remove from
    sched/headers: Remove the include from
    sched/headers: Remove from
    ...

    Linus Torvalds
     

03 Mar, 2017

1 commit

  • Pull more power management updates deom Rafael Wysocki:
    "These fix two bugs introduced by recent power management updates (in
    the cpuidle menu governor and intel_pstate) and a few other issues,
    clean up things and remove unused code.

    Specifics:

    - Fix for a cpuidle menu governor problem that started to take an
    unnecessary spinlock after one of the recent updates and that did
    not play well with the RT patch (Rafael Wysocki).

    - Fix for the new intel_pstate operation mode switching feature added
    recently that did not reinitialize P-state limits properly when
    switching operation modes (Rafael Wysocki).

    - Removal of unused global notifiers from the PM QoS framework
    (Viresh Kumar).

    - Generic power domains framework update to make it handle
    asynchronous invocations of PM callbacks in the "noirq" phases of
    system suspend/hibernation correctly (Ulf Hansson).

    - Two hibernation core cleanups (Rafael Wysocki).

    - intel_idle cleanup related to the sysfs interface (Len Brown).

    - Off-by-one bug fix in the OPP (Operating Performance Points)
    framework (Andrzej Hajda).

    - OPP framework's documentation fix (Viresh Kumar).

    - cpufreq qoriq driver cleanup (Tang Yuantian).

    - Fixes for typos in comments in the device runtime PM framework
    (Christophe Jaillet)"

    * tag 'pm-extra-4.11-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    PM / OPP: Documentation: Fix opp-microvolt in examples
    intel_idle: stop exposing platform acronyms in sysfs
    cpufreq: intel_pstate: Fix limits issue with operation mode switching
    PM / hibernate: Define pr_fmt() and use pr_*() instead of printk()
    PM / hibernate: Untangle power_down()
    cpuidle: menu: Avoid taking spinlock for accessing QoS values
    PM / QoS: Remove global notifiers
    PM / runtime: Fix some typos
    cpufreq: qoriq: clean up unused code
    PM / OPP: fix off-by-one bug in dev_pm_opp_get_max_volt_latency loop
    PM / Domains: Power off masters immediately in the power off sequence
    PM / Domains: Rename is_async to one_dev_on for genpd_power_off()
    PM / Domains: Move genpd_power_off() above genpd_power_on()

    Linus Torvalds
     

02 Mar, 2017

4 commits


27 Feb, 2017

1 commit

  • After commit 9908859acaa9 (cpuidle/menu: add per CPU PM QoS resume
    latency consideration) the cpuidle menu governor calls
    dev_pm_qos_read_value() on CPU devices to read the current resume
    latency QoS constraint values for them. That function takes a spinlock
    to prevent the device's power.qos pointer from becoming NULL during
    the access which is a problem for the RT patchset where spinlocks are
    converted into mutexes and the idle loop stops working.

    However, it is not even necessary for the menu governor to take
    that spinlock, because the power.qos pointer accessed under it
    cannot be modified during the access anyway.

    For this reason, introduce a "raw" routine for accessing device
    QoS resume latency constraints without locking and use it in the
    menu governor.

    Fixes: 9908859acaa9 (cpuidle/menu: add per CPU PM QoS resume latency consideration)
    Acked-by: Alex Shi
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

23 Feb, 2017

1 commit

  • Pull powerpc updates from Michael Ellerman:
    "Highlights include:

    - Support for direct mapped LPC on POWER9, giving Linux direct access
    to devices that may be on there such as a UART.

    - Memory hotplug support for the Power9 Radix MMU.

    - Add new AUX vectors describing the processor's cache geometry, to
    be used by glibc.

    - The ability for a guest to ask the hypervisor to resize the guest's
    hash table, and in addition support for doing so automatically when
    memory is hotplugged into/out-of the guest. This allows the hash
    table to be sized based on the current memory usage of the guest,
    rather than the maximum possible memory usage.

    - Implementation of optprobes (kprobe optimisation) for powerpc.

    In addition there's the topic branch shared with the KVM tree, which
    includes support for guests to use the Radix MMU on Power9.

    Thanks to:
    Alistair Popple, Andrew Donnellan, Aneesh Kumar K.V, Anju T, Anton
    Blanchard, Benjamin Herrenschmidt, Chris Packham, Daniel Axtens,
    Daniel Borkmann, David Gibson, Finn Thain, Gautham R. Shenoy, Gavin
    Shan, Greg Kurz, Joel Stanley, John Allen, Madhavan Srinivasan,
    Mahesh Salgaonkar, Markus Elfring, Michael Neuling, Nathan Fontenot,
    Naveen N. Rao, Nicholas Piggin, Paul Mackerras, Ravi Bangoria, Reza
    Arbab, Shailendra Singh, Vaibhav Jain, Wei Yongjun"

    * tag 'powerpc-4.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (129 commits)
    powerpc/mm/radix: Skip ptesync in pte update helpers
    powerpc/mm/radix: Use ptep_get_and_clear_full when clearing pte for full mm
    powerpc/mm/radix: Update pte update sequence for pte clear case
    powerpc/mm: Update PROTFAULT handling in the page fault path
    powerpc/xmon: Fix data-breakpoint
    powerpc/mm: Fix build break with BOOK3S_64=n and MEMORY_HOTPLUG=y
    powerpc/mm: Fix build break when CMA=n && SPAPR_TCE_IOMMU=y
    powerpc/mm: Fix build break with RADIX=y & HUGETLBFS=n
    powerpc/pseries: Fix typo in parameter description
    powerpc/kprobes: Remove kprobe_exceptions_notify()
    kprobes: Introduce weak variant of kprobe_exceptions_notify()
    powerpc/ftrace: Fix confusing help text for DISABLE_MPROFILE_KERNEL
    powerpc/powernv: Fix opal_exit tracepoint opcode
    powerpc: Add a prototype for mcount() so it can be versioned
    powerpc: Drop GPL from of_node_to_nid() export to match other arches
    powerpc/kprobes: Optimize kprobe in kretprobe_trampoline()
    powerpc/kprobes: Implement Optprobes
    powerpc/kprobes: Fixes for kprobe_lookup_name() on BE
    powerpc: Add helper to check if offset is within relative branch range
    powerpc/bpf: Introduce __PPC_SH64()
    ...

    Linus Torvalds
     

31 Jan, 2017

2 commits

  • The power9_idle_stop method currently takes only the requested stop
    level as a parameter and picks up the rest of the PSSCR bits from a
    hand-coded macro. This is not a very flexible design, especially when
    the firmware has the capability to communicate the psscr value and the
    mask associated with a particular stop state via device tree.

    This patch modifies the power9_idle_stop API to take as parameters the
    PSSCR value and the PSSCR mask corresponding to the stop state that
    needs to be set. These PSSCR value and mask are respectively obtained
    by parsing the "ibm,cpu-idle-state-psscr" and
    "ibm,cpu-idle-state-psscr-mask" fields from the device tree.

    In addition to this, the patch adds support for handling stop states
    for which ESL and EC bits in the PSSCR are zero. As per the
    architecture, a wakeup from these stop states resumes execution from
    the subsequent instruction as opposed to waking up at the System
    Vector.

    The older firmware sets only the Requested Level (RL) field in the
    psscr and psscr-mask exposed in the device tree. For older firmware
    where psscr-mask=0xf, this patch will set the default sane values that
    the set for for remaining PSSCR fields (i.e PSLL, MTL, ESL, EC, and
    TR). For the new firmware, the patch will validate that the invariants
    required by the ISA for the psscr values are maintained by the
    firmware.

    This skiboot patch that exports fully populated PSSCR values and the
    mask for all the stop states can be found here:
    https://lists.ozlabs.org/pipermail/skiboot/2016-September/004869.html

    [Optimize the number of instructions before entering STOP with
    ESL=EC=0, validate the PSSCR values provided by the firimware
    maintains the invariants required as per the ISA suggested by Balbir
    Singh]

    Acked-by: Balbir Singh
    Signed-off-by: Gautham R. Shenoy
    Signed-off-by: Michael Ellerman

    Gautham R. Shenoy
     
  • In the current code for powernv_add_idle_states, there is a lot of code
    duplication while initializing an idle state in powernv_states table.

    Add an inline helper function to populate the powernv_states[] table
    for a given idle state. Invoke this for populating the "Nap",
    "Fastsleep" and the stop states in powernv_add_idle_states.

    Signed-off-by: Gautham R. Shenoy
    Acked-by: Balbir Singh
    Acked-by: Rafael J. Wysocki
    Signed-off-by: Michael Ellerman

    Gautham R. Shenoy
     

30 Jan, 2017

2 commits

  • There may be special requirements on CPU response time, like if a
    interrupt is pinned to a CPU, that CPU should not go into excessively
    deep idle states. For this reason, add a mechanism for adding
    PM QoS resume latency constraints for individual CPUs and modify the
    menu governor to take them into account.

    To that end, extend the device PM QoS pm_qos_resume_latency attribute
    to CPUs, which is possible, because the exit latency for CPUs is
    effectively equivalent to the resume latency for devices.

    Signed-off-by: Alex Shi
    Acked-by: Rik van Riel
    [ rjw : Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki

    Alex Shi
     
  • Obsolete commit 71abbbf856a0 (cpuidle: extend cpuidle and menu governor
    to handle dynamic states) wanted to introduce dynamic C-states, but that
    idea was dropped long ago. The nonsense deeper C-state checking
    remained, though.

    Since both target_residency and exit_latency are longer for deeper
    idle state, there's no need to waste CPU time on useless checks.

    Signed-off-by: Alex Shi
    Acked-by: Rik van Riel
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki

    Alex Shi
     

25 Dec, 2016

1 commit


06 Dec, 2016

2 commits

  • Since cpuidle_use_deepest_state() is not static, add a proper
    kerneldoc comment to it to document its purpose.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • In function cpuidle_add_state_sysfs(), variable ret takes the return
    value. Its value should be negative on errors. Because ret is reset in
    the loop, its value will be 0 during the second and after repeat of the
    loop. If kzalloc() returns a NULL pointer then, it will return 0. It may
    be better to explicitly assign "-ENOMEM" when the call to kzalloc()
    fails.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=188901
    Signed-off-by: Pan Bian
    Signed-off-by: Rafael J. Wysocki

    Pan Bian
     

29 Nov, 2016

1 commit

  • When idle injection is used to cap power, we need to override the
    governor's choice of idle states.

    For this reason, make it possible the deepest idle state selection to
    be enforced by setting a flag on a given CPU to achieve the maximum
    potential power draw reduction.

    Signed-off-by: Jacob Pan
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki

    Jacob Pan
     

25 Nov, 2016

1 commit


23 Nov, 2016

1 commit

  • enter_freeze() callback is expected atleast to do the same as enter()
    but it has to guarantee that interrupts aren't enabled at any point
    in its execution, as the tick is frozen.

    CPUs execute ->enter_freeze with the local tick or entire timekeeping
    suspended, so it must not re-enable interrupts at any point (even
    temporarily) or attempt to change states of clock event devices.

    It will be called when the system goes to suspend-to-idle and will
    reduce power usage because CPUs won't be awaken for unnecessary IRQs
    (i.e. woken up only on IRQs from "wakeup sources")

    We can reuse the same code for both the enter() and enter_freeze()
    callbacks as along as they don't re-enable interrupts. Only "coupled"
    cpuidle mechanism enables interrupts and doing that with timekeeping
    suspended is generally not safe.

    Since this generic DT based idle driver doesn't support "coupled"
    states, it is safe to assume that the interrupts are not re-enabled.

    This patch assign enter_freeze to same as enter callback function which
    helps to save power without any intermittent spurious wakeups from
    suspend-to-idle.

    Signed-off-by: Sudeep Holla
    Tested-by: Andy Gross
    Signed-off-by: Rafael J. Wysocki

    Sudeep Holla
     

21 Oct, 2016

1 commit

  • The governor's code use try_module_get() and put_module() to refcount
    the governor's module. But the governors are not compiled as module.

    The refcount does not prevent to switch the governor or unload
    a module as they aren't compiled as modules. The code is pointless,
    so remove it.

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

    Daniel Lezcano
     

16 Oct, 2016

1 commit

  • Pull MIPS updates from Ralf Baechle:
    "This is the main MIPS pull request for 4.9:

    MIPS core arch code:
    - traps: 64bit kernels should read CP0_EBase 64bit
    - traps: Convert ebase to KSEG0
    - c-r4k: Drop bc_wback_inv() from icache flush
    - c-r4k: Split user/kernel flush_icache_range()
    - cacheflush: Use __flush_icache_user_range()
    - uprobes: Flush icache via kernel address
    - KVM: Use __local_flush_icache_user_range()
    - c-r4k: Fix flush_icache_range() for EVA
    - Fix -mabi=64 build of vdso.lds
    - VDSO: Drop duplicated -I*/-E* aflags
    - tracing: move insn_has_delay_slot to a shared header
    - tracing: disable uprobe/kprobe on compact branch instructions
    - ptrace: Fix regs_return_value for kernel context
    - Squash lines for simple wrapper functions
    - Move identification of VP(E) into proc.c from smp-mt.c
    - Add definitions of SYNC barrierstype values
    - traps: Ensure full EBase is written
    - tlb-r4k: If there are wired entries, don't use TLBINVF
    - Sanitise coherentio semantics
    - dma-default: Don't check hw_coherentio if device is non-coherent
    - Support per-device DMA coherence
    - Adjust MIPS64 CAC_BASE to reflect Config.K0
    - Support generating Flattened Image Trees (.itb)
    - generic: Introduce generic DT-based board support
    - generic: Convert SEAD-3 to a generic board
    - Enable hardened usercopy
    - Don't specify STACKPROTECTOR in defconfigs

    Octeon:
    - Delete dead code and files across the platform.
    - Change to use all memory into use by default.
    - Rename upper case variables in setup code to lowercase.
    - Delete legacy hack for broken bootloaders.
    - Leave maintaining the link state to the actual ethernet/PHY drivers.
    - Add DTS for D-Link DSR-500N.
    - Fix PCI interrupt routing on D-Link DSR-500N.

    Pistachio:
    - Remove ANDROID_TIMED_OUTPUT from defconfig

    TX39xx:
    - Move GPIO setup from .mem_setup() to .arch_init()
    - Convert to Common Clock Framework

    TX49xx:
    - Move GPIO setup from .mem_setup() to .arch_init()
    - Convert to Common Clock Framework

    txx9wdt:
    - Add missing clock (un)prepare calls for CCF

    BMIPS:
    - Add PW, GPIO SDHCI and NAND device node names
    - Support APPENDED_DTB
    - Add missing bcm97435svmb to DT_NONE
    - Rename bcm96358nb4ser to bcm6358-neufbox4-sercom
    - Add DT examples for BCM63268, BCM3368 and BCM6362
    - Add support for BCM3368 and BCM6362

    PCI
    - Reduce stack frame usage
    - Use struct list_head lists
    - Support for CONFIG_PCI_DOMAINS_GENERIC
    - Make pcibios_set_cache_line_size an initcall
    - Inline pcibios_assign_all_busses
    - Split pci.c into pci.c & pci-legacy.c
    - Introduce CONFIG_PCI_DRIVERS_LEGACY
    - Support generic drivers

    CPC
    - Convert bare 'unsigned' to 'unsigned int'
    - Avoid lock when MIPS CM >= 3 is present

    GIC:
    - Delete unused file smp-gic.c

    mt7620:
    - Delete unnecessary assignment for the field "owner" from PCI

    BCM63xx:
    - Let clk_disable() return immediately if clk is NULL

    pm-cps:
    - Change FSB workaround to CPU blacklist
    - Update comments on barrier instructions
    - Use MIPS standard lightweight ordering barrier
    - Use MIPS standard completion barrier
    - Remove selection of sync types
    - Add MIPSr6 CPU support
    - Support CM3 changes to Coherence Enable Register

    SMP:
    - Wrap call to mips_cpc_lock_other in mips_cm_lock_other
    - Introduce mechanism for freeing and allocating IPIs

    cpuidle:
    - cpuidle-cps: Enable use with MIPSr6 CPUs.

    SEAD3:
    - Rewrite to use DT and generic kernel feature.

    USB:
    - host: ehci-sead3: Remove SEAD-3 EHCI code

    FBDEV:
    - cobalt_lcdfb: Drop SEAD3 support

    dt-bindings:
    - Document a binding for simple ASCII LCDs

    auxdisplay:
    - img-ascii-lcd: driver for simple ASCII LCD displays

    irqchip i8259:
    - i8259: Add domain before mapping parent irq
    - i8259: Allow platforms to override poll function
    - i8259: Remove unused i8259A_irq_pending

    Malta:
    - Rewrite to use DT

    of/platform:
    - Probe "isa" busses by default

    CM:
    - Print CM error reports upon bus errors

    Module:
    - Migrate exception table users off module.h and onto extable.h
    - Make various drivers explicitly non-modular:
    - Audit and remove any unnecessary uses of module.h

    mailmap:
    - Canonicalize to Qais' current email address.

    Documentation:
    - MIPS supports HAVE_REGS_AND_STACK_ACCESS_API

    Loongson1C:
    - Add CPU support for Loongson1C
    - Add board support
    - Add defconfig
    - Add RTC support for Loongson1C board

    All this except one Documentation fix has sat in linux-next and has
    survived Imagination's automated build test system"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (127 commits)
    Documentation: MIPS supports HAVE_REGS_AND_STACK_ACCESS_API
    MIPS: ptrace: Fix regs_return_value for kernel context
    MIPS: VDSO: Drop duplicated -I*/-E* aflags
    MIPS: Fix -mabi=64 build of vdso.lds
    MIPS: Enable hardened usercopy
    MIPS: generic: Convert SEAD-3 to a generic board
    MIPS: generic: Introduce generic DT-based board support
    MIPS: Support generating Flattened Image Trees (.itb)
    MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0
    MIPS: Print CM error reports upon bus errors
    MIPS: Support per-device DMA coherence
    MIPS: dma-default: Don't check hw_coherentio if device is non-coherent
    MIPS: Sanitise coherentio semantics
    MIPS: PCI: Support generic drivers
    MIPS: PCI: Introduce CONFIG_PCI_DRIVERS_LEGACY
    MIPS: PCI: Split pci.c into pci.c & pci-legacy.c
    MIPS: PCI: Inline pcibios_assign_all_busses
    MIPS: PCI: Make pcibios_set_cache_line_size an initcall
    MIPS: PCI: Support for CONFIG_PCI_DOMAINS_GENERIC
    MIPS: PCI: Use struct list_head lists
    ...

    Linus Torvalds
     

08 Oct, 2016

1 commit

  • When doing an nmi backtrace of many cores, most of which are idle, the
    output is a little overwhelming and very uninformative. Suppress
    messages for cpus that are idling when they are interrupted and just
    emit one line, "NMI backtrace for N skipped: idling at pc 0xNNN".

    We do this by grouping all the cpuidle code together into a new
    .cpuidle.text section, and then checking the address of the interrupted
    PC to see if it lies within that section.

    This commit suitably tags x86 and tile idle routines, and only adds in
    the minimal framework for other architectures.

    Link: http://lkml.kernel.org/r/1472487169-14923-5-git-send-email-cmetcalf@mellanox.com
    Signed-off-by: Chris Metcalf
    Acked-by: Peter Zijlstra (Intel)
    Tested-by: Peter Zijlstra (Intel)
    Tested-by: Daniel Thompson [arm]
    Tested-by: Petr Mladek
    Cc: Aaron Tomlin
    Cc: Peter Zijlstra (Intel)
    Cc: "Rafael J. Wysocki"
    Cc: Russell King
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Metcalf
     

04 Oct, 2016

2 commits

  • This patch enables the MIPS CPS driver for MIPSr6 CPUs.

    Signed-off-by: Matt Redfearn
    Reviewed-by: Paul Burton
    Reviewed-by: Daniel Lezcano
    Cc: Rafael J. Wysocki
    Cc: linux-mips@linux-mips.org
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/14228/
    Signed-off-by: Ralf Baechle

    Matt Redfearn
     
  • Pull CPU hotplug updates from Thomas Gleixner:
    "Yet another batch of cpu hotplug core updates and conversions:

    - Provide core infrastructure for multi instance drivers so the
    drivers do not have to keep custom lists.

    - Convert custom lists to the new infrastructure. The block-mq custom
    list conversion comes through the block tree and makes the diffstat
    tip over to more lines removed than added.

    - Handle unbalanced hotplug enable/disable calls more gracefully.

    - Remove the obsolete CPU_STARTING/DYING notifier support.

    - Convert another batch of notifier users.

    The relayfs changes which conflicted with the conversion have been
    shipped to me by Andrew.

    The remaining lot is targeted for 4.10 so that we finally can remove
    the rest of the notifiers"

    * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (46 commits)
    cpufreq: Fix up conversion to hotplug state machine
    blk/mq: Reserve hotplug states for block multiqueue
    x86/apic/uv: Convert to hotplug state machine
    s390/mm/pfault: Convert to hotplug state machine
    mips/loongson/smp: Convert to hotplug state machine
    mips/octeon/smp: Convert to hotplug state machine
    fault-injection/cpu: Convert to hotplug state machine
    padata: Convert to hotplug state machine
    cpufreq: Convert to hotplug state machine
    ACPI/processor: Convert to hotplug state machine
    virtio scsi: Convert to hotplug state machine
    oprofile/timer: Convert to hotplug state machine
    block/softirq: Convert to hotplug state machine
    lib/irq_poll: Convert to hotplug state machine
    x86/microcode: Convert to hotplug state machine
    sh/SH-X3 SMP: Convert to hotplug state machine
    ia64/mca: Convert to hotplug state machine
    ARM/OMAP/wakeupgen: Convert to hotplug state machine
    ARM/shmobile: Convert to hotplug state machine
    arm64/FP/SIMD: Convert to hotplug state machine
    ...

    Linus Torvalds
     

02 Oct, 2016

1 commit


07 Sep, 2016

2 commits

  • Install the callbacks via the state machine.

    Signed-off-by: Sebastian Andrzej Siewior
    Cc: linux-pm@vger.kernel.org
    Cc: Peter Zijlstra
    Cc: Daniel Lezcano
    Cc: "Rafael J. Wysocki"
    Cc: rt@linutronix.de
    Link: http://lkml.kernel.org/r/20160824091444.brdr5zpbxjvh6n3f@linutronix.de
    Signed-off-by: Thomas Gleixner

    Sebastian Andrzej Siewior
     
  • Install the callbacks via the state machine.

    v1…v2: - Use only CPUHP_CPUIDLE_DEAD (requested by Daniel Lezcano)

    Signed-off-by: Sebastian Andrzej Siewior
    Cc: linux-pm@vger.kernel.org
    Cc: Peter Zijlstra
    Cc: Daniel Lezcano
    Cc: "Rafael J. Wysocki"
    Cc: rt@linutronix.de
    Link: http://lkml.kernel.org/r/20160824091259.ozyslcopxvbfdqzy@linutronix.de
    Signed-off-by: Thomas Gleixner

    Sebastian Andrzej Siewior