20 Nov, 2015

1 commit

  • * pm-cpufreq:
    Revert "Documentation: kernel_parameters for Intel P state driver"
    cpufreq: mediatek: fix build error
    cpufreq: intel_pstate: Add separate support for Airmont cores
    cpufreq: intel_pstate: Replace BYT with ATOM
    Revert "cpufreq: intel_pstate: Use ACPI perf configuration"
    Revert "cpufreq: intel_pstate: Avoid calculation for max/min"

    * acpi-cppc:
    ACPI / CPPC: Use h/w reduced version of the PCCT structure

    Rafael J. Wysocki
     

19 Nov, 2015

5 commits

  • The recently added mt8173 cpufreq driver relies on the cpu topology
    that is always present on ARM64 but optional on ARM32:

    drivers/cpufreq/mt8173-cpufreq.c: In function 'mtk_cpufreq_init':
    drivers/cpufreq/mt8173-cpufreq.c:441:30: error: 'cpu_topology' undeclared (first use in this function)
    cpumask_copy(policy->cpus, &cpu_topology[policy->cpu].core_sibling);

    This refines the Kconfig dependencies so that we can still build on
    ARM32, but only if COMPILE_TEST is selected and the CPU topology
    code is present.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Rafael J. Wysocki

    Arnd Bergmann
     
  • There are two flavors of Atom cores to be supported by intel_pstate,
    Silvermont and Airmont, so make the driver distinguish between them by
    adding separate frequency tables.

    Separate the CPU defaults params for each of them and match the CPU IDs
    against them as appropriate.

    Signed-off-by: Philippe Longepe
    Signed-off-by: Stephane Gasparini
    Acked-by: Srinivas Pandruvada
    [ rjw: Subject and changelog ]
    Signed-off-by: Rafael J. Wysocki

    Philippe Longepe
     
  • Rename symbol and function names starting with "BYT" or "byt" to
    start with "ATOM" or "atom", respectively, so as to make it clear
    that they may apply to Atom in general and not just to Baytrail
    (the goal is to support several Atoms architectures eventually).

    This should not lead to any functional changes.

    Signed-off-by: Philippe Longepe
    Signed-off-by: Stephane Gasparini
    Acked-by: Srinivas Pandruvada
    [ rjw : Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Philippe Longepe
     
  • Revert commit 37afb0003242 (cpufreq: intel_pstate: Use ACPI perf
    configuration) that is reported to cause a regression to happen
    on a system where invalid data are returned by the ACPI _PSS object.

    Since that commit makes assumptions regarding the _PSS output
    correctness that may turn out to be overly optimistic in general,
    there is a concern that it may introduce regression on more
    systems, so it's better to revert it now and we'll revisit the
    underlying issue in the next cycle with a more robust solution.

    Conflicts:
    drivers/cpufreq/intel_pstate.c

    Fixes: 37afb0003242 (cpufreq: intel_pstate: Use ACPI perf configuration)
    Reported-by: Borislav Petkov
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Revert commit 4ef451487019 (cpufreq: intel_pstate: Avoid calculation for
    max/min) as it depends on commit 37afb0003242 (cpufreq: intel_pstate: Use
    ACPI perf configuration) that causes problems to happen and needs to be
    reverted.

    Conflicts:
    drivers/cpufreq/intel_pstate.c

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

13 Nov, 2015

1 commit

  • Pull more power management and ACPI updates from Rafael Wysocki:
    "The only new feature in this batch is support for the ACPI _CCA device
    configuration object, which it a pre-requisite for future ACPI PCI
    support on ARM64, but should not affect the other architectures.

    The rest is fixes and cleanups, mostly in cpufreq (including
    intel_pstate), the Operating Performace Points (OPP) framework and
    tools (cpupower and turbostat).

    Specifics:

    - Support for the ACPI _CCA configuration object intended to tell the
    OS whether or not a bus master device supports hardware managed
    cache coherency and a new set of functions to allow drivers to
    check the cache coherency support for devices in a platform
    firmware interface agnostic way (Suravee Suthikulpanit, Jeremy
    Linton).

    - ACPI backlight quirks for ESPRIMO Mobile M9410 and Dell XPS L421X
    (Aaron Lu, Hans de Goede).

    - Fixes for the arm_big_little and s5pv210-cpufreq cpufreq drivers
    (Jon Medhurst, Nicolas Pitre).

    - kfree()-related fixup for the recently introduced CPPC cpufreq
    frontend (Markus Elfring).

    - intel_pstate fix reducing kernel log noise on systems where
    P-states are managed by hardware (Prarit Bhargava).

    - intel_pstate maintainers information update (Srinivas Pandruvada).

    - cpufreq core optimization related to the handling of delayed work
    items used by governors (Viresh Kumar).

    - Locking fixes and cleanups of the Operating Performance Points
    (OPP) framework (Viresh Kumar).

    - Generic power domains framework cleanups (Lina Iyer).

    - cpupower tool updates (Jacob Tanenbaum, Sriram Raghunathan, Thomas
    Renninger).

    - turbostat tool updates (Len Brown)"

    * tag 'pm+acpi-4.4-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (32 commits)
    PCI: ACPI: Add support for PCI device DMA coherency
    PCI: OF: Move of_pci_dma_configure() to pci_dma_configure()
    of/pci: Fix pci_get_host_bridge_device leak
    device property: ACPI: Remove unused DMA APIs
    device property: ACPI: Make use of the new DMA Attribute APIs
    device property: Adding DMA Attribute APIs for Generic Devices
    ACPI: Adding DMA Attribute APIs for ACPI Device
    device property: Introducing enum dev_dma_attr
    ACPI: Honor ACPI _CCA attribute setting
    cpufreq: CPPC: Delete an unnecessary check before the function call kfree()
    PM / OPP: Add opp_rcu_lockdep_assert() to _find_device_opp()
    PM / OPP: Hold dev_opp_list_lock for writers
    PM / OPP: Protect updates to list_dev with mutex
    PM / OPP: Propagate error properly from dev_pm_opp_set_sharing_cpus()
    cpufreq: s5pv210-cpufreq: fix wrong do_div() usage
    MAINTAINERS: update for intel P-state driver
    Creating a common structure initialization pattern for struct option
    cpupower: Enable disabled Cstates if they are below max latency
    cpupower: Remove debug message when using cpupower idle-set -D switch
    cpupower: cpupower monitor reports uninitialized values for offline cpus
    ...

    Linus Torvalds
     

11 Nov, 2015

1 commit

  • Pull ARM SoC driver updates from Olof Johansson:
    "As we've enabled multiplatform kernels on ARM, and greatly done away
    with the contents under arch/arm/mach-*, there's still need for
    SoC-related drivers to go somewhere.

    Many of them go in through other driver trees, but we still have
    drivers/soc to hold some of the "doesn't fit anywhere" lowlevel code
    that might be shared between ARM and ARM64 (or just in general makes
    sense to not have under the architecture directory).

    This branch contains mostly such code:

    - Drivers for qualcomm SoCs for SMEM, SMD and SMD-RPM, used to
    communicate with power management blocks on these SoCs for use by
    clock, regulator and bus frequency drivers.

    - Allwinner Reduced Serial Bus driver, again used to communicate with
    PMICs.

    - Drivers for ARM's SCPI (System Control Processor). Not to be
    confused with PSCI (Power State Coordination Interface). SCPI is
    used to communicate with the assistant embedded cores doing power
    management, and we have yet to see how many of them will implement
    this for their hardware vs abstracting in other ways (or not at all
    like in the past).

    - To make confusion between SCPI and PSCI more likely, this release
    also includes an update of PSCI to interface version 1.0.

    - Rockchip support for power domains.

    - A driver to talk to the firmware on Raspberry Pi"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (57 commits)
    soc: qcom: smd-rpm: Correct size of outgoing message
    bus: sunxi-rsb: Add driver for Allwinner Reduced Serial Bus
    bus: sunxi-rsb: Add Allwinner Reduced Serial Bus (RSB) controller bindings
    ARM: bcm2835: add mutual inclusion protection
    drivers: psci: make PSCI 1.0 functions initialization version dependent
    dt-bindings: Correct paths in Rockchip power domains binding document
    soc: rockchip: power-domain: don't try to print the clock name in error case
    soc: qcom/smem: add HWSPINLOCK dependency
    clk: berlin: add cpuclk
    ARM: berlin: dts: add CLKID_CPU for BG2Q
    ARM: bcm2835: Add the Raspberry Pi firmware driver
    soc: qcom: smem: Move RPM message ram out of smem DT node
    soc: qcom: smd-rpm: Correct the active vs sleep state flagging
    soc: qcom: smd: delete unneeded of_node_put
    firmware: qcom-scm: build for correct architecture level
    soc: qcom: smd: Correct SMEM items for upper channels
    qcom-scm: add missing prototype for qcom_scm_is_available()
    qcom-scm: fix endianess issue in __qcom_scm_is_call_available
    soc: qcom: smd: Reject send of too big packets
    soc: qcom: smd: Handle big endian CPUs
    ...

    Linus Torvalds
     

07 Nov, 2015

3 commits


06 Nov, 2015

1 commit


02 Nov, 2015

6 commits

  • gov_queue_work() acquires cpufreq_governor_lock to allow
    cpufreq_governor_stop() to drain delayed work items possibly scheduled
    on CPUs that share the policy with a CPU being taken offline.

    However, the same goal may be achieved in a more straightforward way if
    the policy pointer in the struct cpu_dbs_info matching the policy CPU is
    reset upfront by cpufreq_governor_stop() under the timer_mutex belonging
    to it and checked against NULL, under the same lock, at the beginning of
    dbs_timer().

    In that case every instance of dbs_timer() run for a struct cpu_dbs_info
    sharing the policy pointer in question after cpufreq_governor_stop() has
    started will notice that that pointer is NULL and bail out immediately
    without queuing up any new work items. In turn, gov_cancel_work()
    called by cpufreq_governor_stop() before destroying timer_mutex will
    wait for all of the delayed work items currently running on the CPUs
    sharing the policy to drop the mutex, so it may be destroyed safely.

    Make cpufreq_governor_stop() and dbs_timer() work as described and
    modify gov_queue_work() so it does not acquire cpufreq_governor_lock any
    more.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • When booting an HWP enabled system the kernel displays one "HWP enabled"
    message for each cpu. The messages are superfluous since HWP is globally
    enabled across all CPUs. This patch also adds an informational message
    when HWP is disabled via intel_pstate=no_hwp.

    Signed-off-by: Prarit Bhargava
    Reviewed-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Prarit Bhargava
     
  • The check for correct frequency being set in bL_cpufreq_set_rate is
    broken when the big.LITTLE switcher is active, for two reasons.

    1. The 'new_rate' variable gets overwritten before the test by the
    code calculating the frequency of the old cluster.

    2. The frequency returned by bL_cpufreq_get_rate will be the virtual
    frequency, not the actual one the intended version of new_rate contains.

    This means the function always returns an error causing an endless
    stream of: "cpufreq: __target_index: Failed to change cpu frequency: -5"

    As the intent is to check for errors that clk_set_rate doesn't report
    lets move the check to immediately after that and directly use
    clk_get_rate, rather than the arm_big_little helpers which only confuse
    matters. Also, update the comment to be hopefully clearer about the
    purpose of the code.

    Fixes: 0a95e630b49a (cpufreq: arm_big_little: check if the frequency is set correctly)
    Signed-off-by: Jon Medhurst
    Acked-by: Sudeep Holla
    Acked-by: Viresh Kumar
    Reviewed-by: Michael Turquette
    Signed-off-by: Rafael J. Wysocki

    Jon Medhurst \(Tixy\)
     
  • * pm-opp:
    PM / OPP: passing NULL to PTR_ERR()
    PM / OPP: Move cpu specific code to opp/cpu.c
    PM / OPP: Move opp core to its own directory
    PM / OPP: Prefix exported opp routines with dev_pm_opp_
    PM / OPP: Rename opp init/free table routines
    PM / OPP: reuse of_parse_phandle()

    Rafael J. Wysocki
     
  • * pm-cpufreq:
    cpufreq: postfix policy directory with the first CPU in related_cpus
    cpufreq: create cpu/cpufreq/policyX directories
    cpufreq: remove cpufreq_sysfs_{create|remove}_file()
    cpufreq: create cpu/cpufreq at boot time
    cpufreq: Use cpumask_copy instead of cpumask_or to copy a mask
    cpufreq: ondemand: Drop unnecessary locks from update_sampling_rate()
    cpufreq: intel_pstate: Fix intel_pstate powersave min_perf_pct value
    cpufreq: intel_pstate: Avoid calculation for max/min
    Documentation: kernel_parameters for Intel P state driver
    cpufreq: intel_pstate: Use ACPI perf configuration
    cpufreq: intel-pstate: Use separate max pstate for scaling
    cpufreq: intel_pstate: get P1 from TAR when available
    cpufreq: Drop redundant check for inactive policies
    cpufreq : powernv: Report Pmax throttling if capped below nominal frequency
    cpufreq: imx: update the clock switch flow to support imx6ul
    cpufreq: tegra20: remove superfluous CONFIG_PM ifdefs
    cpufreq: conservative: remove 'enable' field
    cpufreq: integrator: Fix module autoload for OF platform driver

    * pm-cpuidle:
    cpuidle: mvebu: disable the bind/unbind attributes and use builtin_platform_driver
    cpuidle: mvebu: clean up multiple platform drivers

    Rafael J. Wysocki
     
  • * acpi-processor:
    ACPI / CPPC: Fix potential memory leak
    ACPI / CPPC: signedness bug in register_pcc_channel()
    ACPI: Allow selection of the ACPI processor driver for ARM64
    CPPC: Probe for CPPC tables for each ACPI Processor object
    ACPI: Add weak routines for ACPI CPU Hotplug
    ACPI / CPPC: Add a CPUFreq driver for use with CPPC
    ACPI: Introduce CPU performance controls using CPPC

    Rafael J. Wysocki
     

28 Oct, 2015

6 commits

  • The sysfs policy directory is postfixed currently with the CPU number
    for which the policy was created, which isn't necessarily the first CPU
    in related_cpus mask.

    To make it more consistent and predictable, lets postfix the policy with
    the first cpu in related-cpus mask.

    Suggested-by: Saravana Kannan
    Signed-off-by: Viresh Kumar
    Reviewed-by: Saravana Kannan
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • The cpufreq sysfs interface had been a bit inconsistent as one of the
    CPUs for a policy had a real directory within its sysfs 'cpuX' directory
    and all other CPUs had links to it. That also made the code a bit
    complex as we need to take care of moving the sysfs directory if the CPU
    containing the real directory is getting physically hot-unplugged.

    Solve this by creating 'policyX' directories (per-policy) in
    /sys/devices/system/cpu/cpufreq/ directory, where X is the CPU for which
    the policy was first created.

    This also removes the need of keeping kobj_cpu and we can remove it now.

    Suggested-by: Saravana Kannan
    Signed-off-by: Viresh Kumar
    Reviewed-by: Saravana Kannan
    Acked-by: is more of a general agreement from the person that he is
    Reviewed-by: is a more strict tag and implies that the reviewer has
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • They don't do anything special now, remove the unnecessary wrapper.

    Reviewed-by: Saravana Kannan
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • Later patches will need to create policy specific directories in
    /sys/devices/system/cpu/cpufreq/ directory and so the cpufreq directory
    wouldn't be ever empty.

    And so no fun creating/destroying it on need basis anymore. Create it
    once on system boot.

    Reviewed-by: Saravana Kannan
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • ->related_cpus is empty at this point of time and copying ->cpus to it
    or orring ->related_cpus with ->cpus would result in the same value. But
    cpumask_copy makes it rather clear.

    Reviewed-by: Saravana Kannan
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • 'timer_mutex' is required to sync work-handlers of policy->cpus.
    update_sampling_rate() is just canceling the works and queuing them
    again. This isn't protecting anything at all in update_sampling_rate()
    and is not gonna be of any use.

    Even if a work-handler is already running for a CPU,
    cancel_delayed_work_sync() will wait for it to finish.

    Drop these unnecessary locks.

    Reviewed-by: Preeti U Murthy
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     

17 Oct, 2015

2 commits

  • On systems that initialize the intel_pstate driver with the performance
    governor, and then switch to the powersave governor will not transition to
    lower cpu frequencies until /sys/devices/system/cpu/intel_pstate/min_perf_pct
    is set to a low value.

    The behavior of governor switching changed after commit a04759924e25
    ("[cpufreq] intel_pstate: honor user space min_perf_pct override on
    resume"). The commit introduced tracking of performance percentage
    changes via sysfs in order to restore userspace changes during
    suspend/resume. The problem occurs because the global values of the newly
    introduced max_sysfs_pct and min_sysfs_pct are not lowered on the governor
    change and this causes the powersave governor to inherit the performance
    governor's settings.

    A simple change would have been to reset max_sysfs_pct to 100 and
    min_sysfs_pct to 0 on a governor change, which fixes the problem with
    governor switching. However, since we cannot break userspace[1] the fix
    is now to give each governor its own limits storage area so that governor
    specific changes are tracked.

    I successfully tested this by booting with both the performance governor
    and the powersave governor by default, and switching between the two
    governors (while monitoring /sys/devices/system/cpu/intel_pstate/ values,
    and looking at the output of cpupower frequency-info). Suspend/Resume
    testing was performed by Doug Smythies.

    [1] Systems which suspend/resume using the unmaintained pm-utils package
    will always transition to the performance governor before the suspend and
    after the resume. This means a system using the powersave governor will
    go from powersave to performance, then suspend/resume, performance to
    powersave. The simple change during governor changes would have been
    overwritten when the governor changed before and after the suspend/resume.
    I have submitted https://bugzilla.redhat.com/show_bug.cgi?id=1271225
    against Fedora to remove the 94cpufreq file that causes the problem. It
    should be noted that pm-utils is obsoleted with newer versions of systemd.

    Signed-off-by: Prarit Bhargava
    Acked-by: Kristen Carlson Accardi
    Signed-off-by: Rafael J. Wysocki

    Prarit Bhargava
     
  • Rafael J. Wysocki
     

16 Oct, 2015

1 commit

  • This is a workaround for KNL platform, where in some cases MPERF counter
    will not have updated value before next read of MSR_IA32_MPERF. In this
    case divide by zero will occur. This change ignores current sample for
    busy calculation in this case.

    Fixes: b34ef932d79a (intel_pstate: Knights Landing support)
    Signed-off-by: Srinivas Pandruvada
    Acked-by: Kristen Carlson Accardi
    Cc: 4.1+ # 4.1+
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     

15 Oct, 2015

4 commits

  • When requested from cpufreq to set policy, look into _pss and get
    control values, instead of using max/min perf calculations. These
    calculation misses next control state in boundary conditions.

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Kristen Carlson Accardi
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     
  • Use ACPI _PSS to limit the Intel P State turbo, max and min ratios.
    This driver uses acpi processor perf lib calls to register performance.
    The following logic is used to adjust Intel P state driver limits:
    - If there is no turbo entry in _PSS, then disable Intel P state turbo
    and limit to non turbo max
    - If the non turbo max ratio is more than _PSS max non turbo value, then
    set the max non turbo ratio to _PSS non turbo max
    - If the min ratio is less than _PSS min then change the min ratio
    matching _PSS min
    - Scale the _PSS turbo frequency to max turbo frequency based on control
    value.
    This feature can be disabled by using kernel parameters:
    intel_pstate=no_acpi

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Kristen Carlson Accardi
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     
  • Systems with configurable TDP have multiple max non turbo p state. Intel
    P state uses max non turbo P state for scaling. But using the real max
    non turbo p state causes underestimation of next P state. So using
    the physical max non turbo P state as before for scaling.

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Kristen Carlson Accardi
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     
  • After Ivybridge, the max non turbo ratio obtained from platform info msr
    is not always guaranteed P1 on client platforms. The max non turbo
    activation ratio (TAR), determines the max for the current level of TDP.
    The ratio in platform info is physical max. The TAR MSR can be locked,
    so updating this value is not possible on all platforms.
    This change gets this ratio from MSR TURBO_ACTIVATION_RATIO if
    available,
    but also do some sanity checking to make sure that this value is
    correct.
    The sanity check involves reading the TDP ratio for the current tdp
    control value when platform has configurable TDP present and matching
    TAC
    with this.

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Kristen Carlson Accardi
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     

14 Oct, 2015

2 commits

  • …udeep.holla/linux into next/drivers

    Merge "ARM System Control and Power Interface(SCPI) support" from Sudeep Holla

    It adds support for the following features provided by SCP firmware
    using different subsystems in Linux:
    1. SCPI mailbox protocol driver which using mailbox framework
    2. Clocks provided by SCP using clock framework
    3. CPU DVFS(cpufreq) using existing arm-big-little driver
    4. SCPI based sensors including temperature sensors

    * tag 'arm-scpi-for-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux:
    hwmon: Support thermal zones registration for SCP temperature sensors
    hwmon: Support sensors exported via ARM SCP interface
    firmware: arm_scpi: Extend to support sensors
    Documentation: add DT bindings for ARM SCPI sensors
    cpufreq: arm_big_little: add SCPI interface driver
    clk: scpi: add support for cpufreq virtual device
    clk: add support for clocks provided by SCP(System Control Processor)
    firmware: add support for ARM System Control and Power Interface(SCPI) protocol
    Documentation: add DT binding for ARM System Control and Power Interface(SCPI) protocol

    Arnd Bergmann
     
  • We just made sure policy->cpu is online and this check will always fail
    as the policy is active. Drop it.

    Signed-off-by: Viresh Kumar
    Acked-by: Saravana Kannan
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     

13 Oct, 2015

2 commits


09 Oct, 2015

2 commits

  • When scaling_available_frequencies is read on an offlined cpu, then
    either lockup or junk values are displayed. This is caused by
    freed freq_table, which policy is using.

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     
  • When freqdomain_cpus attribute is read from an offlined cpu, it will
    cause crash. This change prevents calling cpufreq_show_cpus when
    policy driver_data is NULL.

    Crash info:

    [ 170.814949] BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
    [ 170.814990] IP: [] _find_next_bit.part.0+0x10/0x70
    [ 170.815021] PGD 227d30067 PUD 229e56067 PMD 0
    [ 170.815043] Oops: 0000 [#2] SMP
    [ 170.816022] CPU: 3 PID: 3121 Comm: cat Tainted: G D OE 4.3.0-rc3+ #33
    ...
    ...
    [ 170.816657] Call Trace:
    [ 170.816672] [] ? find_next_bit+0x15/0x20
    [ 170.816696] [] cpufreq_show_cpus+0x5c/0xd0
    [ 170.816722] [] show_freqdomain_cpus+0x19/0x20 [acpi_cpufreq]
    [ 170.816749] [] show+0x3b/0x60
    [ 170.816769] [] sysfs_kf_seq_show+0xbc/0x130
    [ 170.816793] [] kernfs_seq_show+0x23/0x30
    [ 170.816816] [] seq_read+0xec/0x390
    [ 170.816837] [] kernfs_fop_read+0x10a/0x160
    [ 170.816861] [] __vfs_read+0x37/0x100
    [ 170.816883] [] ? security_file_permission+0xa0/0xc0
    [ 170.816909] [] vfs_read+0x83/0x130
    [ 170.816930] [] SyS_read+0x55/0xc0
    ...
    ...
    [ 170.817185] ---[ end trace bc6eadf82b2b965a ]---

    Signed-off-by: Srinivas Pandruvada
    Acked-by: Viresh Kumar
    Cc: 4.2+ # 4.2+
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     

28 Sep, 2015

1 commit

  • On some ARM based systems, a separate Cortex-M based System Control
    Processor(SCP) provides the overall power, clock, reset and system
    control including CPU DVFS. SCPI Message Protocol is used to
    communicate with the SCPI.

    This patch adds a interface driver for adding OPPs and registering
    the arm_big_little cpufreq driver for such systems.

    Signed-off-by: Sudeep Holla
    Acked-by: Viresh Kumar
    Cc: "Rafael J. Wysocki"
    Cc: linux-pm@vger.kernel.org

    Sudeep Holla
     

26 Sep, 2015

2 commits

  • Log a 'critical' message if the max frequency is reduced below nominal
    frequency. We already log 'info' message if the max frequency is
    capped below turbo frequency. CPU should guarantee atleast nominal
    frequency, but not turbo frequency in all system configurations and
    environments. So report the pmax throttling with severity when Pmax is
    dipped below nominal frequency.

    Signed-off-by: Shilpasri G Bhat
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Shilpasri G Bhat
     
  • For i.MX6UL, the clock switch flow is slightly different from
    other i.MX6 SOCs. It has a 'secondary_sel' clk that will be used
    when the CPU freq is higher than 396MHz. So the clock switch flow in
    'set_target' callback need to update to support i.MX6UL in the common
    i.MX6 SOC cpufreq driver.

    Signed-off-by: Bai Ping
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Bai Ping