15 Dec, 2015

1 commit


13 Dec, 2015

1 commit

  • Pull ARM SoC fixes from Arnd Bergmann:
    "Here are a bunch of small bug fixes for various ARM platforms, nothing
    really sticks out this week, most of either fixes bugs in code that
    was just added in 4.4, or that has been broken for many years without
    anyone noticing.

    at91/sama5d2:
    - fix sama5de hardware setup of sd/mmc interface
    - proper selection of pinctrl drivers. PIO4 is necessary for sama5d2

    berlin:
    - fix incorrect clock input for SDIO

    exynos:
    - Fix potential NULL pointer dereference in Exynos PMU driver.

    imx:
    - Fix vf610 SAI clock configuration bug which is discovered by the
    newly added master mode support in SAI audio driver.
    - Fix buggy L2 cache latency values in vf610 device trees, which may
    cause system hang when cpu runs at a higher frequency.

    ixp4xx:
    - fix prototypes for readl/writel functions

    ls2080a:
    - use little-endian register access for GPIO and SDHCI

    omap:
    - Fix clock source for ARM TWD and global timers on am437x
    - Always select REGULATOR_FIXED_VOLTAGE for omap2+ instead of when
    MACH_OMAP3_PANDORA is selected
    - Fix SPI DMA handles for dm816x as only some were mapped
    - Fix up mbox cells for dm816x to make mailbox usable

    pxa:
    - use PWM lookup table for all ezx machines

    s3c24xx:
    - Remove incorrect __init annotation from s3c24xx cpufreq driver
    structures.

    versatile:
    - fix PCI IRQ mapping on Versatile PB"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ls2080a/dts: Add little endian property for GPIO IP block
    dt-bindings: define little-endian property for QorIQ GPIO
    ARM64: dts: ls2080a: fix eSDHC endianness
    ARM: dts: vf610: use reset values for L2 cache latencies
    ARM: pxa: use PWM lookup table for all machines
    ARM: dts: berlin: add 2nd clock for BG2Q sdhci0 and sdhci1
    ARM: dts: berlin: correct BG2Q's sdhci2 2nd clock
    ARM: dts: am4372: fix clock source for arm twd and global timers
    ARM: at91: fix pinctrl driver selection
    ARM: at91/dt: add always-on to 1.8V regulator
    ARM: dts: vf610: fix clock definition for SAI2
    ARM: imx: clk-vf610: fix SAI clock tree
    ARM: ixp4xx: fix read{b,w,l} return types
    irqchip/versatile-fpga: Fix PCI IRQ mapping on Versatile PB
    ARM: OMAP2+: enable REGULATOR_FIXED_VOLTAGE
    ARM: dts: add dm816x missing spi DT dma handles
    ARM: dts: add dm816x missing #mbox-cells
    cpufreq: s3c24xx: Do not mark s3c2410_plls_add as __init
    ARM: EXYNOS: Fix potential NULL pointer access in exynos_sys_powerdown_conf

    Linus Torvalds
     

12 Dec, 2015

2 commits

  • 785ee27 ("cpufreq: intel_pstate: Fix limits->max_perf rounding error")
    hardcodes the value of FRAC_BITS. This patch fixes that minor issue.

    Fixes: 785ee2788141 (cpufreq: intel_pstate: Fix limits->max_perf rounding error)
    Signed-off-by: Prarit Bhargava
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Prarit Bhargava
     
  • This driver is the only one that calls regulator_sync_voltage(), but it
    can currently be built with CONFIG_REGULATOR disabled, producing
    this build error:

    drivers/cpufreq/tegra124-cpufreq.c: In function 'tegra124_cpu_switch_to_pllx':
    drivers/cpufreq/tegra124-cpufreq.c:68:2: error: implicit declaration of function 'regulator_sync_voltage' [-Werror=implicit-function-declaration]
    regulator_sync_voltage(priv->vdd_cpu_reg);

    My first attempt was to implement a helper for this function
    for regulator_sync_voltage, but Mark Brown explained:

    We don't do this for *all* regulator API functions - there's some where
    using them strongly suggests that there is actually a dependency on
    the regulator API. This does seem like it might be falling into the
    specialist category [...]
    Looking at the code I'm pretty unclear on what the authors think the
    use of _sync_voltage() is doing in the first place so it may be even
    better to just remove the call. It seems to have been included in the
    first commit so there's not changelog explaining things and there's
    no comment either. I'd *expect* it to be a noop as far as I can see.

    This adds the dependency to make the driver always build successfully
    or not be enabled at all. Alternatively, we could investigate if the
    driver should stop calling regulator_sync_voltage instead.

    Signed-off-by: Arnd Bergmann
    Acked-by: Viresh Kumar
    Acked-by: Jon Hunter
    Signed-off-by: Rafael J. Wysocki

    Arnd Bergmann
     

11 Dec, 2015

1 commit

  • …/krzk/linux into fixes

    Merge "Fixes for Exynos" from Krzysztof Kozlowski:

    1. Fix potential NULL pointer dereference in Exynos PMU driver.
    2. Remove incorrect __init annotation from s3c24xx cpufreq driver
    structures.

    * tag 'samsung-fixes-4.4' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
    cpufreq: s3c24xx: Do not mark s3c2410_plls_add as __init
    ARM: EXYNOS: Fix potential NULL pointer access in exynos_sys_powerdown_conf

    Arnd Bergmann
     

04 Dec, 2015

1 commit


03 Dec, 2015

1 commit

  • For cpufreq drivers which use setpolicy interface, after offline->online
    the policy is set to default. This can be reproduced by setting the
    default policy of intel_pstate or longrun to ondemand and then change to
    "performance". After offline and online, the setpolicy will be called with
    the policy=ondemand.

    For drivers using governors this condition is handled by storing
    last_governor, during offline and restoring during online. The same should
    be done for drivers using setpolicy interface. Storing last_policy during
    offline and restoring during online.

    Signed-off-by: Srinivas Pandruvada
    Signed-off-by: Rafael J. Wysocki

    Srinivas Pandruvada
     

27 Nov, 2015

2 commits

  • * pm-cpufreq:
    intel_pstate: Fix "performance" mode behavior with HWP enabled
    cpufreq: SCPI: Depend on SCPI clk driver
    cpufreq: intel_pstate: Fix limits->max_perf rounding error
    cpufreq: intel_pstate: Fix limits->max_policy_pct rounding error
    cpufreq: Always remove sysfs cpuX/cpufreq link on ->remove_dev()

    * acpi-cppc:
    cpufreq: CPPC: Initialize and check CPUFreq CPU co-ord type correctly

    Rafael J. Wysocki
     
  • s3c2410_plls_add is a device notifier that may be called at runtime and
    is correctly not marked __init. However it calls s3c_plltab_register()
    which is marked __init, and that triggers a build error when we are
    checking for section mismatches:

    WARNING: vmlinux.o(.text+0x195e0): Section mismatch in reference from the function s3c2410_plls_add() to the function .init.text:s3c_plltab_register()
    The function s3c2410_plls_add() references
    the function __init s3c_plltab_register().
    This is often because s3c2410_plls_add lacks a __init
    annotation or the annotation of s3c_plltab_register is wrong.

    This removes the __init annotation from s3c2410_plls_add as well as the
    __initdata section annotations from s3c2440_plls_12 and s3c2440_plls_169344,
    which in turn are referenced from s3c2410_plls_add.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Krzysztof Kozlowski

    Arnd Bergmann
     

26 Nov, 2015

1 commit

  • If hardware-driven P-state selection (HWP) is enabled, the
    "performance" mode of intel_pstate should only allow the processor
    to use the highest-performance P-state available. That is not
    the case currently, so make it actually happen.

    Acked-by: Srinivas Pandruvada
    Signed-off-by: Alexandra Yates
    [ rjw: Subject and changelog ]
    Signed-off-by: Rafael J. Wysocki

    Alexandra Yates
     

24 Nov, 2015

6 commits

  • The SCPI clk driver registers the virtual cpufreq device that kicks off
    initialisation of the SCPI cpufreq driver. Also, clk_get() will fail for
    the cpufreq driver if the SCPI clk driver is missing.

    Fix this by making the SCPI cpufreq driver explicitly depend on the SCPI
    clk driver.

    Fixes: 8def31034d03 (cpufreq: arm_big_little: add SCPI interface driver)
    Signed-off-by: Punit Agrawal
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Punit Agrawal
     
  • Rafael J. Wysocki
     
  • A rounding error was found in the calculation of limits->max_perf
    in intel_pstate_set_policy(), which is used to calculate the max and min
    pstate values in intel_pstate_get_min_max(). In that code,
    limits->max_perf is truncated to 2 hex digits such that, for example,
    0x169 was incorrectly calculated to 0x16 instead of 0x17. This resulted in
    the pstate being set one level too low. This patch rounds the value of
    limits->max_perf up instead of down so that the correct max pstate can
    be reached.

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

    Prarit Bhargava
     
  • I have a Intel (6,63) processor with a "marketing" frequency (from
    /proc/cpuinfo) of 2100MHz, and a max turbo frequency of 2600MHz. I
    can execute

    cpupower frequency-set -g powersave --min 1200MHz --max 2100MHz

    and the max_freq_pct is set to 80. When adding load to the system I noticed
    that the cpu frequency only reached 2000MHZ and not 2100MHz as expected.

    This is because limits->max_policy_pct is calculated as 2100 * 100 /2600 = 80.7
    and is rounded down to 80 when it should be rounded up to 81. This patch
    adds a DIV_ROUND_UP() which will return the correct value.

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

    Prarit Bhargava
     
  • Subsys interface's ->remove_dev() is called when the cpufreq driver is
    unregistering or the CPU is getting physically removed. We keep removing
    the cpuX/cpufreq link for all CPUs except the last one, which is a
    mistake as all CPUs contain a link now.

    Because of this, one CPU from each policy will still contain a link (to
    an already removed policyX directory), after the cpufreq driver is
    unregistered.

    Fix that by removing the link first and then only see if the policy is
    required to be freed. That will make sure that no links are left out.

    Fixes: 96bdda61f58b ("cpufreq: create cpu/cpufreq/policyX directories")
    Reported-and-tested-by: Srinivas Pandruvada
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     
  • The CPU policy struct indicates the co-ordination type
    for all CPUs of a common freq domain. Initialize it
    correctly using the CPU specific data gathered from
    CPPC ACPI lib via acpi_get_psd_map().

    The PSD object is optional, so the cpu->shared_type
    can also be 0. So instead of assuming any value other
    than SW_ANY(0xFD) is unsupported, explictly check
    if shared_type is SW_ALL and then bail.

    Signed-off-by: Ashwin Chaugule
    Signed-off-by: Rafael J. Wysocki

    Ashwin Chaugule
     

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