25 Mar, 2016

2 commits

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

    * pm-clk:
    PM / clk: Add support for obtaining clocks from device-tree

    * pm-devfreq:
    PM / devfreq: Spelling s/frequnecy/frequency/

    * pm-sleep:
    ACPI / PM: Runtime resume devices when waking from hibernate
    PM / sleep: Clear pm_suspend_global_flags upon hibernate

    Rafael J. Wysocki
     
  • * pm-cpufreq:
    cpufreq: governor: Always schedule work on the CPU running update
    cpufreq: Always update current frequency before startig governor
    cpufreq: Introduce cpufreq_update_current_freq()
    cpufreq: Introduce cpufreq_start_governor()
    cpufreq: powernv: Add sysfs attributes to show throttle stats
    cpufreq: acpi-cpufreq: make Intel/AMD MSR access, io port access static
    cpufreq: powernv: Define per_cpu chip pointer to optimize hot-path
    cpufreq: acpi-cpufreq: Clean up hot plug notifier callback
    intel_pstate: Do not call wrmsrl_on_cpu() with disabled interrupts
    cpufreq: Make cpufreq_quick_get() safe to call

    * pm-cpuidle:
    intel_idle: Support for Intel Xeon Phi Processor x200 Product Family
    intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled
    cpuidle: menu: Fall back to polling if next timer event is near
    cpuidle: menu: use high confidence factors only when considering polling

    Rafael J. Wysocki
     

24 Mar, 2016

4 commits

  • Pull intel_idle patches for 4.6 from Len Brown.

    * 'cpuidle' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    intel_idle: Support for Intel Xeon Phi Processor x200 Product Family
    intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled

    Rafael J. Wysocki
     
  • This adds the necessary data for handling io voltage domains on the rk3399.
    As interesting tidbit, the rk3399 contains two separate iodomain areas.
    One in the regular General Register Files (GRF) and one in PMUGRF in the
    pmu power domain.

    Signed-off-by: David Wu
    Reviewed-by: Heiko Stuebner
    Acked-by: Kevin Hilman
    Signed-off-by: Rafael J. Wysocki

    David Wu
     
  • Enables "Intel(R) Xeon Phi(TM) Processor x200 Product Family" support,
    formerly code-named KNL. It is based on modified Intel Atom Silvermont
    microarchitecture.

    Signed-off-by: Dasaratharaman Chandramouli
    [micah.barany@intel.com: adjusted values of residency and latency]
    Signed-off-by: Micah Barany
    [hubert.chrzaniuk@intel.com: removed deprecated CPUIDLE_FLAG_TIME_VALID flag]
    Signed-off-by: Hubert Chrzaniuk
    Signed-off-by: Pawel Karczewski
    Signed-off-by: Len Brown

    Dasaratharaman Chandramouli
     
  • Some SKL-H configurations require "intel_idle.max_cstate=7" to boot.
    While that is an effective workaround, it disables C10.

    This patch detects the problematic configuration,
    and disables C8 and C9, keeping C10 enabled.

    Note that enabling SGX in BIOS SETUP can also prevent this issue,
    if the system BIOS provides that option.

    https://bugzilla.kernel.org/show_bug.cgi?id=109081
    "Freezes with Intel i7 6700HQ (Skylake), unless intel_idle.max_cstate=7"

    Signed-off-by: Len Brown
    Cc: stable@vger.kernel.org

    Len Brown
     

23 Mar, 2016

8 commits

  • Commit 58a1fbbb2ee8 ("PM / PCI / ACPI: Kick devices that might have been
    reset by firmware") added a runtime resume for devices that were runtime
    suspended when the system entered suspend-to-RAM.

    Briefly, the motivation was to ensure that devices did not remain in a
    reset-power-on state after resume, potentially preventing deep SoC-wide
    low-power states from being entered on idle.

    Currently we're not doing the same when leaving suspend-to-disk and this
    asymmetry is a problem if drivers rely on the automatic resume triggered
    by pm_complete_with_resume_check(). Fix it.

    Fixes: 58a1fbbb2ee8 (PM / PCI / ACPI: Kick devices that might have been reset by firmware)
    Signed-off-by: Lukas Wunner
    Cc: 4.4+ # 4.4+
    Signed-off-by: Rafael J. Wysocki

    Lukas Wunner
     
  • When suspending to RAM, waking up and later suspending to disk,
    we gratuitously runtime resume devices after the thaw phase.
    This does not occur if we always suspend to RAM or always to disk.

    pm_complete_with_resume_check(), which gets called from
    pci_pm_complete() among others, schedules a runtime resume
    if PM_SUSPEND_FLAG_FW_RESUME is set. The flag is set during
    a suspend-to-RAM cycle. It is cleared at the beginning of
    the suspend-to-RAM cycle but not afterwards and it is not
    cleared during a suspend-to-disk cycle at all. Fix it.

    Fixes: ef25ba047601 (PM / sleep: Add flags to indicate platform firmware involvement)
    Signed-off-by: Lukas Wunner
    Cc: 4.4+ # 4.4+
    Signed-off-by: Rafael J. Wysocki

    Lukas Wunner
     
  • Modify dbs_irq_work() to always schedule the process-context work
    on the current CPU which also ran the dbs_update_util_handler()
    that the irq_work being handled came from.

    This causes the entire frequency update handling (involving the
    "ondemand" or "conservative" governors) to be carried out by the
    CPU whose frequency is to be updated and reduces the overall amount
    of inter-CPU noise related to cpufreq.

    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Make policy->cur match the current frequency returned by the driver's
    ->get() callback before starting the governor in case they went out of
    sync in the meantime and drop the piece of code attempting to
    resync policy->cur with the real frequency of the boot CPU from
    cpufreq_resume() as it serves no purpose any more (and it's racy and
    super-ugly anyway).

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

    Rafael J. Wysocki
     
  • Move the part of cpufreq_update_policy() that obtains the current
    frequency from the driver and updates policy->cur if necessary to
    a separate function, cpufreq_get_current_freq().

    That should not introduce functional changes and subsequent change
    set will need it.

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

    Rafael J. Wysocki
     
  • Starting a governor in cpufreq always follows the same pattern
    involving two calls to cpufreq_governor(), one with the event
    argument set to CPUFREQ_GOV_START and one with that argument set to
    CPUFREQ_GOV_LIMITS.

    Introduce cpufreq_start_governor() that will carry out those two
    operations and make all places where governors are started use it.

    That slightly modifies the behavior of cpufreq_set_policy() which
    now also will go back to the old governor if the second call to
    cpufreq_governor() (the one with event equal to CPUFREQ_GOV_LIMITS)
    fails, but that really is how it should work in the first place.

    Also cpufreq_resume() will now pring an error message if the
    CPUFREQ_GOV_LIMITS call to cpufreq_governor() fails, but that
    makes it follow cpufreq_add_policy_cpu() and cpufreq_offline()
    in that respect.

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

    Rafael J. Wysocki
     
  • Create sysfs attributes to export throttle information in
    /sys/devices/system/cpu/cpuX/cpufreq/throttle_stats directory. The
    newly added sysfs files are as follows:

    1)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/turbo_stat
    2)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/sub-turbo_stat
    3)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/unthrottle
    4)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/powercap
    5)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overtemp
    6)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/supply_fault
    7)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/overcurrent
    8)/sys/devices/system/cpu/cpuX/cpufreq/throttle_stats/occ_reset

    Detailed explanation of each attribute is added to
    Documentation/ABI/testing/sysfs-devices-system-cpu

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

    Shilpasri G Bhat
     
  • These frequency register read/write operations' implementations for the
    given processor (Intel/AMD MSR access or I/O port access) are only used
    internally in acpi-cpufreq, so make them static.

    Signed-off-by: Jisheng Zhang
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Jisheng Zhang
     

22 Mar, 2016

1 commit

  • Commit 96c4726f01cd "cpufreq: powernv: Remove cpu_to_chip_id() from
    hot-path" introduced a 'core_to_chip_map' array to cache the chip-ids
    of all cores.

    Replace this with a per-CPU variable that stores the pointer to the
    chip-array. This removes the linear lookup and provides a neater and
    simpler solution.

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

    Michael Neuling
     

21 Mar, 2016

1 commit

  • Commit a9ceb78bc75c (cpuidle,menu: use interactivity_req to disable
    polling) changed the behavior of the fallback state selection part
    of menu_select() so it looks at interactivity_req instead of
    data->next_timer_us when it makes its decision. That effectively
    caused polling to be used more often as fallback idle which led to
    significant increases of energy consumption in some cases.

    Commit e132b9b3bc7f (cpuidle: menu: use high confidence factors
    only when considering polling) changed that logic again to be more
    predictable, but that didn't help with the increased energy
    consumption problem.

    For this reason, go back to making decisions on which state to fall
    back to based on data->next_timer_us which is the time we know for
    sure something will happen rather than a prediction (which may be
    inaccurate and turns out to be so often enough to be problematic).
    However, take the target residency of the first proper idle state
    (C1) into account, so that state is not used as the fallback one
    if its target residency is greater than data->next_timer_us.

    Fixes: a9ceb78bc75c (cpuidle,menu: use interactivity_req to disable polling)
    Signed-off-by: Rafael J. Wysocki
    Reported-and-tested-by: Doug Smythies

    Rafael J. Wysocki
     

20 Mar, 2016

2 commits

  • This driver has two issues. First, it tries to fiddle with the hot
    plugged CPU's MSR on the UP_PREPARE event, at a time when the CPU is
    not yet online. Second, the driver sets the "boost-disable" bit for a
    CPU when going down, but does not clear the bit again if the CPU comes
    up again due to DOWN_FAILED.

    This patch fixes the issues by changing the driver to react to the
    ONLINE/DOWN_FAILED events instead of UP_PREPARE. As an added benefit,
    the driver also becomes symmetric with respect to the hot plug
    mechanism.

    Signed-off-by: Richard Cochran
    Signed-off-by: Rafael J. Wysocki

    Richard Cochran
     
  • After commit a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with
    utilization update callbacks) wrmsrl_on_cpu() cannot be called in the
    intel_pstate_adjust_busy_pstate() path as that is executed with
    disabled interrupts. However, atom_set_pstate() called from there
    via intel_pstate_set_pstate() uses wrmsrl_on_cpu() to update the
    IA32_PERF_CTL MSR which triggers the WARN_ON_ONCE() in
    smp_call_function_single().

    The reason why wrmsrl_on_cpu() is used by atom_set_pstate() is
    because intel_pstate_set_pstate() calling it is also invoked during
    the initialization and cleanup of the driver and in those cases it is
    not guaranteed to be run on the CPU that is being updated. However,
    in the case when intel_pstate_set_pstate() is called by
    intel_pstate_adjust_busy_pstate(), wrmsrl() can be used to update
    the register safely. Moreover, intel_pstate_set_pstate() already
    contains code that only is executed if the function is called by
    intel_pstate_adjust_busy_pstate() and there is a special argument
    passed to it because of that.

    To fix the problem at hand, rearrange the code taking the above
    observations into account.

    First, replace the ->set() callback in struct pstate_funcs with a
    ->get_val() one that will return the value to be written to the
    IA32_PERF_CTL MSR without updating the register.

    Second, split intel_pstate_set_pstate() into two functions,
    intel_pstate_update_pstate() to be called by
    intel_pstate_adjust_busy_pstate() that will contain all of the
    intel_pstate_set_pstate() code which only needs to be executed in
    that case and will use wrmsrl() to update the MSR (after obtaining
    the value to write to it from the ->get_val() callback), and
    intel_pstate_set_min_pstate() to be invoked during the
    initialization and cleanup that will set the P-state to the
    minimum one and will update the MSR using wrmsrl_on_cpu().

    Finally, move the code shared between intel_pstate_update_pstate()
    and intel_pstate_set_min_pstate() to a new static inline function
    intel_pstate_record_pstate() and make them both call it.

    Of course, that unifies the handling of the IA32_PERF_CTL MSR writes
    between Atom and Core.

    Fixes: a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with utilization update callbacks)
    Reported-and-tested-by: Josh Boyer
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     

18 Mar, 2016

1 commit

  • The function, cpufreq_quick_get, accesses the global 'cpufreq_driver' and
    its fields without taking the associated lock, cpufreq_driver_lock.

    Without the locking, nothing guarantees that 'cpufreq_driver' remains
    consistent during the call. This patch fixes the issue by taking the lock
    before accessing the data structure.

    Signed-off-by: Richard Cochran
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Richard Cochran
     

17 Mar, 2016

9 commits

  • The menu governor uses five different factors to pick the
    idle state:
    - the user configured latency_req
    - the time until the next timer (next_timer_us)
    - the typical sleep interval, as measured recently
    - an estimate of sleep time by dividing next_timer_us by an observed factor
    - a load corrected version of the above, divided again by load

    Only the first three items are known with enough confidence that
    we can use them to consider polling, instead of an actual CPU
    idle state, because the cost of being wrong about polling can be
    excessive power use.

    The latter two are used in the menu governor's main selection
    loop, and can result in choosing a shallower idle state when
    the system is expected to be busy again soon.

    This pushes a busy system in the "performance" direction of
    the performance<>power tradeoff, when choosing between idle
    states, but stays more strictly on the "power" state when
    deciding between polling and C1.

    Signed-off-by: Rik van Riel
    Signed-off-by: Rafael J. Wysocki

    Rik van Riel
     
  • The PM clocks framework requires clients to pass either a con-id or a
    valid clk pointer in order to add a clock to a device. Add a new
    function of_pm_clk_add_clks() to allows device clocks to be retrieved
    from device-tree and populated for a given device. Note that it is
    not necessary to make the compilation of this new function dependent
    upon CONFIG_OF because there are stubs functions for the device-tree
    APIs used.

    In order to handle errors encountered when adding clocks from
    device-tree, add a function pm_clk_remove_clk() to remove any clocks
    (using a pointer to the clk structure) that have been added
    successfully before the error occurred.

    Signed-off-by: Jon Hunter
    Acked-by: Geert Uytterhoeven
    Signed-off-by: Rafael J. Wysocki

    Jon Hunter
     
  • Signed-off-by: Geert Uytterhoeven
    Reviewed-by: Chanwoo Choi
    Signed-off-by: Rafael J. Wysocki

    Geert Uytterhoeven
     
  • Pull power management and ACPI updates from Rafael Wysocki:
    "This time the majority of changes go into cpufreq and they are
    significant.

    First off, the way CPU frequency updates are triggered is different
    now. Instead of having to set up and manage a deferrable timer for
    each CPU in the system to evaluate and possibly change its frequency
    periodically, cpufreq governors set up callbacks to be invoked by the
    scheduler on a regular basis (basically on utilization updates). The
    "old" governors, "ondemand" and "conservative", still do all of their
    work in process context (although that is triggered by the scheduler
    now), but intel_pstate does it all in the callback invoked by the
    scheduler with no need for any additional asynchronous processing.

    Of course, this eliminates the overhead related to the management of
    all those timers, but also it allows the cpufreq governor code to be
    simplified quite a bit. On top of that, the common code and data
    structures used by the "ondemand" and "conservative" governors are
    cleaned up and made more straightforward and some long-standing and
    quite annoying problems are addressed. In particular, the handling of
    governor sysfs attributes is modified and the related locking becomes
    more fine grained which allows some concurrency problems to be avoided
    (particularly deadlocks with the core cpufreq code).

    In principle, the new mechanism for triggering frequency updates
    allows utilization information to be passed from the scheduler to
    cpufreq. Although the current code doesn't make use of it, in the
    works is a new cpufreq governor that will make decisions based on the
    scheduler's utilization data. That should allow the scheduler and
    cpufreq to work more closely together in the long run.

    In addition to the core and governor changes, cpufreq drivers are
    updated too. Fixes and optimizations go into intel_pstate, the
    cpufreq-dt driver is updated on top of some modification in the
    Operating Performance Points (OPP) framework and there are fixes and
    other updates in the powernv cpufreq driver.

    Apart from the cpufreq updates there is some new ACPICA material,
    including a fix for a problem introduced by previous ACPICA updates,
    and some less significant changes in the ACPI code, like CPPC code
    optimizations, ACPI processor driver cleanups and support for loading
    ACPI tables from initrd.

    Also updated are the generic power domains framework, the Intel RAPL
    power capping driver and the turbostat utility and we have a bunch of
    traditional assorted fixes and cleanups.

    Specifics:

    - Redesign of cpufreq governors and the intel_pstate driver to make
    them use callbacks invoked by the scheduler to trigger CPU
    frequency evaluation instead of using per-CPU deferrable timers for
    that purpose (Rafael Wysocki).

    - Reorganization and cleanup of cpufreq governor code to make it more
    straightforward and fix some concurrency problems in it (Rafael
    Wysocki, Viresh Kumar).

    - Cleanup and improvements of locking in the cpufreq core (Viresh
    Kumar).

    - Assorted cleanups in the cpufreq core (Rafael Wysocki, Viresh
    Kumar, Eric Biggers).

    - intel_pstate driver updates including fixes, optimizations and a
    modification to make it enable enable hardware-coordinated P-state
    selection (HWP) by default if supported by the processor (Philippe
    Longepe, Srinivas Pandruvada, Rafael Wysocki, Viresh Kumar, Felipe
    Franciosi).

    - Operating Performance Points (OPP) framework updates to improve its
    handling of voltage regulators and device clocks and updates of the
    cpufreq-dt driver on top of that (Viresh Kumar, Jon Hunter).

    - Updates of the powernv cpufreq driver to fix initialization and
    cleanup problems in it and correct its worker thread handling with
    respect to CPU offline, new powernv_throttle tracepoint (Shilpasri
    Bhat).

    - ACPI cpufreq driver optimization and cleanup (Rafael Wysocki).

    - ACPICA updates including one fix for a regression introduced by
    previos changes in the ACPICA code (Bob Moore, Lv Zheng, David Box,
    Colin Ian King).

    - Support for installing ACPI tables from initrd (Lv Zheng).

    - Optimizations of the ACPI CPPC code (Prashanth Prakash, Ashwin
    Chaugule).

    - Support for _HID(ACPI0010) devices (ACPI processor containers) and
    ACPI processor driver cleanups (Sudeep Holla).

    - Support for ACPI-based enumeration of the AMBA bus (Graeme Gregory,
    Aleksey Makarov).

    - Modification of the ACPI PCI IRQ management code to make it treat
    255 in the Interrupt Line register as "not connected" on x86 (as
    per the specification) and avoid attempts to use that value as a
    valid interrupt vector (Chen Fan).

    - ACPI APEI fixes related to resource leaks (Josh Hunt).

    - Removal of modularity from a few ACPI drivers (BGRT, GHES,
    intel_pmic_crc) that cannot be built as modules in practice (Paul
    Gortmaker).

    - PNP framework update to make it treat ACPI_RESOURCE_TYPE_SERIAL_BUS
    as a valid resource type (Harb Abdulhamid).

    - New device ID (future AMD I2C controller) in the ACPI driver for
    AMD SoCs (APD) and in the designware I2C driver (Xiangliang Yu).

    - Assorted ACPI cleanups (Colin Ian King, Kaiyen Chang, Oleg Drokin).

    - cpuidle menu governor optimization to avoid a square root
    computation in it (Rasmus Villemoes).

    - Fix for potential use-after-free in the generic device properties
    framework (Heikki Krogerus).

    - Updates of the generic power domains (genpd) framework including
    support for multiple power states of a domain, fixes and debugfs
    output improvements (Axel Haslam, Jon Hunter, Laurent Pinchart,
    Geert Uytterhoeven).

    - Intel RAPL power capping driver updates to reduce IPI overhead in
    it (Jacob Pan).

    - System suspend/hibernation code cleanups (Eric Biggers, Saurabh
    Sengar).

    - Year 2038 fix for the process freezer (Abhilash Jindal).

    - turbostat utility updates including new features (decoding of more
    registers and CPUID fields, sub-second intervals support, GFX MHz
    and RC6 printout, --out command line option), fixes (syscall jitter
    detection and workaround, reductioin of the number of syscalls
    made, fixes related to Xeon x200 processors, compiler warning
    fixes) and cleanups (Len Brown, Hubert Chrzaniuk, Chen Yu)"

    * tag 'pm+acpi-4.6-rc1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (182 commits)
    tools/power turbostat: bugfix: TDP MSRs print bits fixing
    tools/power turbostat: correct output for MSR_NHM_SNB_PKG_CST_CFG_CTL dump
    tools/power turbostat: call __cpuid() instead of __get_cpuid()
    tools/power turbostat: indicate SMX and SGX support
    tools/power turbostat: detect and work around syscall jitter
    tools/power turbostat: show GFX%rc6
    tools/power turbostat: show GFXMHz
    tools/power turbostat: show IRQs per CPU
    tools/power turbostat: make fewer systems calls
    tools/power turbostat: fix compiler warnings
    tools/power turbostat: add --out option for saving output in a file
    tools/power turbostat: re-name "%Busy" field to "Busy%"
    tools/power turbostat: Intel Xeon x200: fix turbo-ratio decoding
    tools/power turbostat: Intel Xeon x200: fix erroneous bclk value
    tools/power turbostat: allow sub-sec intervals
    ACPI / APEI: ERST: Fixed leaked resources in erst_init
    ACPI / APEI: Fix leaked resources
    intel_pstate: Do not skip samples partially
    intel_pstate: Remove freq calculation from intel_pstate_calc_busy()
    intel_pstate: Move intel_pstate_calc_busy() into get_target_pstate_use_performance()
    ...

    Linus Torvalds
     
  • Merge first patch-bomb from Andrew Morton:

    - some misc things

    - ofs2 updates

    - about half of MM

    - checkpatch updates

    - autofs4 update

    * emailed patches from Andrew Morton : (120 commits)
    autofs4: fix string.h include in auto_dev-ioctl.h
    autofs4: use pr_xxx() macros directly for logging
    autofs4: change log print macros to not insert newline
    autofs4: make autofs log prints consistent
    autofs4: fix some white space errors
    autofs4: fix invalid ioctl return in autofs4_root_ioctl_unlocked()
    autofs4: fix coding style line length in autofs4_wait()
    autofs4: fix coding style problem in autofs4_get_set_timeout()
    autofs4: coding style fixes
    autofs: show pipe inode in mount options
    kallsyms: add support for relative offsets in kallsyms address table
    kallsyms: don't overload absolute symbol type for percpu symbols
    x86: kallsyms: disable absolute percpu symbols on !SMP
    checkpatch: fix another left brace warning
    checkpatch: improve UNSPECIFIED_INT test for bare signed/unsigned uses
    checkpatch: warn on bare unsigned or signed declarations without int
    checkpatch: exclude asm volatile from complex macro check
    mm: memcontrol: drop unnecessary lru locking from mem_cgroup_migrate()
    mm: migrate: consolidate mem_cgroup_migrate() calls
    mm/compaction: speed up pageblock_pfn_to_page() when zone is contiguous
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Fix misspellings in comments.
    m68k: Use conventional function parameters for do_sigreturn
    zorro: Use kobj_to_dev()

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:

    - Add the CPU id for the new z13s machine

    - Add a s390 specific XOR template for RAID-5 checksumming based on the
    XC instruction. Remove all other alternatives, XC is always faster

    - The merge of our four different stack tracers into a single one

    - Tidy up the code related to page tables, several large inline
    functions are now out-of-line. Bloat-o-meter reports ~11K text size
    reduction

    - A binary interface for the priviledged CLP instruction to retrieve
    the hardware view of the installed PCI functions

    - Improvements for the dasd format code

    - Bug fixes and cleanups

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (31 commits)
    s390/pci: enforce fmb page boundary rule
    s390: fix floating pointer register corruption (again)
    s390/cpumf: add missing lpp magic initialization
    s390: Fix misspellings in comments
    s390/mm: split arch/s390/mm/pgtable.c
    s390/mm: uninline pmdp_xxx functions from pgtable.h
    s390/mm: uninline ptep_xxx functions from pgtable.h
    s390/pci: add ioctl interface for CLP
    s390: Use pr_warn instead of pr_warning
    s390/dasd: remove casts to dasd_*_private
    s390/dasd: Refactor dasd format functions
    s390/dasd: Simplify code in format logic
    s390/dasd: Improve dasd format code
    s390/percpu: remove this_cpu_cmpxchg_double_4
    s390/cpumf: Improve guest detection heuristics
    s390/fault: merge report_user_fault implementations
    s390/dis: use correct escape sequence for '%' character
    s390/kvm: simplify set_guest_storage_key
    s390/oprofile: add z13/z13s model numbers
    s390: add z13s model number to z13 elf platform
    ...

    Linus Torvalds
     
  • Pull AVR32 updates from Hans-Christian Egtvedt.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32:
    avr32: fix asm operand constraint in cmpxchg()
    avr32: wire up copy_file_range syscall

    Linus Torvalds
     
  • Pull KVM updates from Paolo Bonzini:
    "One of the largest releases for KVM... Hardly any generic
    changes, but lots of architecture-specific updates.

    ARM:
    - VHE support so that we can run the kernel at EL2 on ARMv8.1 systems
    - PMU support for guests
    - 32bit world switch rewritten in C
    - various optimizations to the vgic save/restore code.

    PPC:
    - enabled KVM-VFIO integration ("VFIO device")
    - optimizations to speed up IPIs between vcpus
    - in-kernel handling of IOMMU hypercalls
    - support for dynamic DMA windows (DDW).

    s390:
    - provide the floating point registers via sync regs;
    - separated instruction vs. data accesses
    - dirty log improvements for huge guests
    - bugfixes and documentation improvements.

    x86:
    - Hyper-V VMBus hypercall userspace exit
    - alternative implementation of lowest-priority interrupts using
    vector hashing (for better VT-d posted interrupt support)
    - fixed guest debugging with nested virtualizations
    - improved interrupt tracking in the in-kernel IOAPIC
    - generic infrastructure for tracking writes to guest
    memory - currently its only use is to speedup the legacy shadow
    paging (pre-EPT) case, but in the future it will be used for
    virtual GPUs as well
    - much cleanup (LAPIC, kvmclock, MMU, PIT), including ubsan fixes"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (217 commits)
    KVM: x86: remove eager_fpu field of struct kvm_vcpu_arch
    KVM: x86: disable MPX if host did not enable MPX XSAVE features
    arm64: KVM: vgic-v3: Only wipe LRs on vcpu exit
    arm64: KVM: vgic-v3: Reset LRs at boot time
    arm64: KVM: vgic-v3: Do not save an LR known to be empty
    arm64: KVM: vgic-v3: Save maintenance interrupt state only if required
    arm64: KVM: vgic-v3: Avoid accessing ICH registers
    KVM: arm/arm64: vgic-v2: Make GICD_SGIR quicker to hit
    KVM: arm/arm64: vgic-v2: Only wipe LRs on vcpu exit
    KVM: arm/arm64: vgic-v2: Reset LRs at boot time
    KVM: arm/arm64: vgic-v2: Do not save an LR known to be empty
    KVM: arm/arm64: vgic-v2: Move GICH_ELRSR saving to its own function
    KVM: arm/arm64: vgic-v2: Save maintenance interrupt state only if required
    KVM: arm/arm64: vgic-v2: Avoid accessing GICH registers
    KVM: s390: allocate only one DMA page per VM
    KVM: s390: enable STFLE interpretation only if enabled for the guest
    KVM: s390: wake up when the VCPU cpu timer expires
    KVM: s390: step the VCPU timer while in enabled wait
    KVM: s390: protect VCPU cpu timer with a seqcount
    KVM: s390: step VCPU cpu timer during kvm_run ioctl
    ...

    Linus Torvalds
     

16 Mar, 2016

12 commits

  • Pull EDAC updates from Borislav Petkov:

    - Altera: L2 cache and On-Chip RAM support (Thor Thayer).

    - EDAC: Workqueue handling cleanups (Borislav Petkov).

    - Xgene: Register bus error handling (Loc Ho).

    - Misc small fixes.

    * tag 'edac_for_4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
    ARM: socfpga: Enable OCRAM ECC on startup
    ARM: socfpga: Enable L2 cache ECC on startup
    ARM: dts: Add Altera L2 Cache and OCRAM EDAC entries
    EDAC, altera: Add Altera L2 cache and OCRAM support
    EDAC: Use edac_debugfs_remove_recursive() in edac_debugfs_exit()
    EDAC, mpc85xx: Silence unused variable warning
    EDAC: Cleanup/sync workqueue functions
    EDAC: Kill workqueue setup/teardown functions
    EDAC: Balance workqueue setup and teardown
    arm64: Update the APM X-Gene EDAC node with the RB register resource
    EDAC, xgene: Add missing SoC register bus error handling
    Documentation, EDAC: Update xgene binding for missing register bus
    EDAC, amd64_edac: Shift wrapping issue in f1x_get_norm_dct_addr()

    Linus Torvalds
     
  • Pull LED updates from Jacek Anaszewski:
    "LED core improvements:
    - Fix misleading comment after workqueue removal from drivers
    - Avoid error message when a USB LED device is unplugged
    - Add helpers for calling brightness_set(_blocking)

    LED triggers:
    - Simplify led_trigger_store by using sysfs_streq()

    LED class drivers improvements:
    - Improve wording and formatting in a comment: lp3944
    - Fix return value check in create_gpio_led(): leds-gpio
    - Use GPIOF_OUT_INIT_LOW instead of hardcoded zero: leds-gpio
    - Use devm_led_classdev_register(): leds-lm3533, leds-lm3533,
    leds-lp8788, leds-wm831x-status, leds-s3c24xx, leds-s3c24xx,
    leds-max8997.

    New LED class driver:
    - Add driver for the ISSI IS31FL32xx family of LED controllers.

    Device Tree documentation:
    - of: Add vendor prefixes for Integrated Silicon Solutions Inc.
    (issi) and Si-En Technology (si-en).
    - DT: Add common bindings for Si-En Technology SN3216/18 and
    IS31FL32xx family of LED controllers, since they seem to be the
    same hardware, just rebranded"

    * tag 'leds_for_4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
    leds: triggers: simplify led_trigger_store
    leds: max8997: Use devm_led_classdev_register
    leds: da903x: Use devm_led_classdev_register
    leds: s3c24xx: Use devm_led_classdev_register
    leds: wm831x-status: Use devm_led_classdev_register
    leds: lp8788: Use devm_led_classdev_register
    leds: 88pm860x: Use devm_led_classdev_register
    leds: Add SN3218 and SN3216 support to the IS31FL32XX driver
    of: Add vendor prefix for Si-En Technology
    leds: Add driver for the ISSI IS31FL32xx family of LED controllers
    DT: leds: Add binding for the ISSI IS31FL32xx family of LED controllers
    DT: Add vendor prefix for Integrated Silicon Solutions Inc.
    leds: lm3533: Use devm_led_classdev_register
    leds: gpio: Use GPIOF_OUT_INIT_LOW instead of hardcoded zero
    leds: core: add helpers for calling brightness_set(_blocking)
    leds: leds-gpio: Fix return value check in create_gpio_led()
    leds: lp3944: improve wording and formatting in a comment
    leds: core: avoid error message when a USB LED device is unplugged
    leds: core: fix misleading comment after workqueue removal from drivers

    Linus Torvalds
     
  • Pull RTC updates from Alexandre Belloni:
    "Core:
    - New sysfs interface to set and read clock offset
    - Drivers can now be both I2C and SPI (see pcf2127 and ds3232)

    New drivers:
    - Alphascale ASM9260
    - Epson RX6110SA
    - Maxim max20024 and max77620 (in max77686)
    - Microchip PIC32
    - NXP pcf2129 (in pcf2127)

    Subsystem wide cleanups:
    - remove IRQF_EARLY_RESUME when unecessary

    Drivers:
    - ds1307: clock output, temperature sensor and wakeup-source support
    - ds1685: actually spin forever in poweroff error path
    - ds3232: many cleanups
    - ds3234: merged in ds3232
    - hym8563: fix invalid year calculation
    - max77686: many cleanups
    - max77802 merged in max77686
    - pcf2123: cleanups and offset support
    - pcf85063: cleanups
    - pcf8523: propely handle oscillator stop bit
    - rv3029: many cleanups, trickle charger and temperature sensor support
    - rv8803: convert spin_lock to mutex_lock
    - rx8025: many fixes
    - vr41xx: restore alarm_irq_enable"

    * tag 'rtc-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (86 commits)
    rtc: pcf2127: add pcf2129 device id
    rtc: pcf2127: add support for spi interface
    rtc: pcf2127: convert to use regmap
    rtc: rv3029: Add thermometer hwmon support
    rtc: rv3029: Add update_bits helper for eeprom access
    rtc: ds1685: actually spin forever in poweroff error path
    rtc: hym8563: fix invalid year calculation
    rtc: ds3232: use rtc->ops_lock to protect alarm operations
    rtc: ds3232: fix issue when irq is shared several devices
    rtc: ds3232: remove unused UIE code
    rtc: ds3232: add register access error checks
    rtc: ds3232: fix read on /dev/rtc after RTC_AIE_ON
    rtc: merge ds3232 and ds3234
    rtc: ds3232: convert to use regmap
    rtc: pxa: fix Kconfig indentation
    rtc: rv3029: Add device tree property for trickle charger
    rtc: rv3029: Add functions for EEPROM access
    rtc: rv3029: Add i2c register update-bits helper
    rtc: rv3029: Add missing register definitions
    rtc: rv3029: Add "rv3029" I2C device id
    ...

    Linus Torvalds
     
  • …t/groeck/linux-staging

    Pull hwmon updates from Guenter Roeck:
    - New drivers for NSA320 and LTC2990
    - Added support for ADM1278 to adm1275 driver
    - Added support for ncpXXxh103 to ntc_thermistor driver
    - Renamed vexpress hwmon implementation
    - Minor cleanups and improvements

    * tag 'hwmon-for-linus-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: Create an NSA320 hardware monitoring driver
    hwmon: Define binding for the nsa320-hwmon driver
    hwmon: (adm1275) Add support for ADM1278
    hwmon: (ntc_thermistor) Add support for ncpXXxh103
    Doc: hwmon: Fix typo "montoring" in hwmon
    ARM: dts: vfxxx: Add iio_hwmon node for ADC temperature channel
    ARM: dts: Change iio_hwmon nodes to use hypen in node names
    hwmon: (iio_hwmon) Allow the driver to accept hypen in device tree node names
    hwmon: Add LTC2990 sensor driver
    hwmon: (vexpress) rename vexpress hwmon implementation

    Linus Torvalds
     
  • Pull regulator updates from Mark Brown:
    "This has been an extremely quiet release for the regulator API, aside
    from bugfixes and small enhancements the only thing that really stands
    out are the new drivers for Action Semiconductors ACT8945A, HiSilicon
    HI665x, and the Maxim MAX20024 and MAX77620"

    * tag 'regulator-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: (46 commits)
    regulator: pwm: Add support to have multiple instance of pwm regulator
    regulator: pwm: Fix calculation of voltage-to-duty cycle
    regulator: of: Use of_property_read_u32() for reading min/max
    regulator: pv88060: fix incorrect clear of event register
    regulator: pv88090: fix incorrect clear of event register
    regulator: max77620: Add support to configure active-discharge
    regulator: core: Add support for active-discharge configuration
    regulator: helper: Add helper to configure active-discharge using regmap
    regulator: core: Add support for active-discharge configuration
    regulator: DT: Add DT property for active-discharge configuration
    regulator: act8865: Specify fixed voltage of 3.3V for ACT8600's REG9
    regulator: act8865: Rename platform_data field to init_data
    regulator: act8865: Remove "static" from local variable
    ASoC: cs4271: add regulator consumer support
    regulator: max77620: Remove duplicate module alias
    regulator: max77620: Eliminate duplicate code
    regulator: max77620: Remove unused fields
    regulator: core: fix crash in error path of regulator_register
    regulator: core: Request GPIO before creating sysfs entries
    regulator: gpio: don't print error on EPROBE_DEFER
    ...

    Linus Torvalds
     
  • Pull regmap updates from Mark Brown:
    "This has been a very busy release for regmap, not just in cleaning up
    the mess we got ourselves into with the endianness handling but also
    in other areas too:

    - Fixes for the endianness handling so that we now explicitly default
    to little endian (the code used to do this by accident). This
    fixes handling of explictly specified endianness on big endian
    systems.

    - Optimisation of the implementation of register striding.

    - A refectoring of the _update_bits() code to reduce duplication.

    - Fixes and enhancements for the interrupt implementation which make
    it easier to use in a wider range of systems"

    * tag 'regmap-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: (28 commits)
    regmap: irq: add devm apis for regmap_{add,del}_irq_chip
    regmap: replace regmap_write_bits()
    regmap: irq: Enable irq retriggering for nested irqs
    regmap: add regmap_fields_force_xxx() macros
    regmap: add regmap_field_force_xxx() macros
    regmap: merge regmap_fields_update_bits() into macro
    regmap: merge regmap_fields_write() into macro
    regmap: add regmap_fields_update_bits_base()
    regmap: merge regmap_field_update_bits() into macro
    regmap: merge regmap_field_write() into macro
    regmap: add regmap_field_update_bits_base()
    regmap: merge regmap_update_bits_check_async() into macro
    regmap: merge regmap_update_bits_check() into macro
    regmap: merge regmap_update_bits_async() into macro
    regmap: merge regmap_update_bits() into macro
    regmap: add regmap_update_bits_base()
    regcache: flat: Introduce register strider order
    regcache: Introduce the index parsing API by stride order
    regmap: core: Introduce register stride order
    regmap: irq: add devm apis for regmap_{add,del}_irq_chip
    ...

    Linus Torvalds
     
  • Pull spi updates from Mark Brown:
    "Not the biggest set of changes for SPI but a bit of a pickup in
    activity on the core:

    - Support for memory mapped read from flash devices via a SPI
    controller.

    - The beginnings of a message rewriting framework in the core which
    should in time allow us to support transforming messages to work
    around the limits of controllers or optimise the performance for
    controllers transparently to calling drivers.

    - Updates to the PXA2xx, the main functional change being to improve
    the ACPI support.

    - A new driver for the Analog Devices AXI SPI engine"

    * tag 'spi-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (66 commits)
    spi: Add gfp parameter to kernel-doc to fix build warning
    spi: Fix htmldocs build error due struct spi_replaced_transfers
    spi: rockchip: covert rsd_nsecs to u32 type
    spi: rockchip: header file cleanup
    spi: xilinx: Add devicetree binding for spi-xilinx
    spi: respect the maximum segment size of DMA device
    spi: rockchip: check requesting dma channel with EPROBE_DEFER
    spi: rockchip: migrate to dmaengine_terminate_async
    spi: rockchip: check return value of dmaengine_prep_slave_sg
    spi: core: Fix deadlock when sending messages
    spi/rockchip: fix endian mode for 16-bit transfers
    spi/rockchip: Make sure spi clk is on in rockchip_spi_set_cs
    spi: pxa2xx: Use newer more explicit DMAengine terminate API
    spi: pxa2xx: Add support for Intel Broxton B-Step
    spi: lp-8841: return correct error code from probe
    spi: imx: drop bogus tests for rx/tx bufs in DMA transfer
    spi: imx: set MX51_ECSPI_CTRL_SMC bit in setup function
    spi: imx: make some register defines simpler
    spi: imx: remove unnecessary bit clearing in mx51_ecspi_config
    spi: imx: add support for all SPI word width for DMA
    ...

    Linus Torvalds
     
  • Pull pin control updates from Linus Walleij:
    "An almost purely driver related set of changes with no major changes
    to the framework, only one patch adding an unlocked version of the
    pinctrl_find_gpio_range_from_pin() library call.

    New drivers:
    - ST Microelectronics STM32 MCU support: this is a non-MMU low-end
    platform for IoT things (etc).
    - Microchip PIC32 MCU support: same story as for STM32.

    New subdrivers:
    - Allwinner SunXi H3 R_PIO controller support.
    - Qualcomm IPQ4019 support.
    - MediaTek MT2701 and MT7623.
    - Allwinner A64

    Non-critical fixes:
    - gpio_disable_free() for the Vybrid.
    - pinctrl single: use a separate lockdep class.

    Misc:
    - Substantial cleanups and rewrites for the Super-H PFC driver and
    subdrivers.
    - Various fixes and cleanups, especially Paul Gortmakers work to make
    nonmodular drivers nonmodular"

    * tag 'pinctrl-v4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (75 commits)
    pinctrl: single: Use a separate lockdep class
    drivers: pinctrl: add driver for Allwinner A64 SoC
    pinctrl: Broadcom Northstar2 pinctrl device tree bindings
    pinctrl: amlogic: Make driver independent from two-domain configuration
    pinctrl: amlogic: Separate some pin functions for Meson8 / Meson8b
    pinctrl: at91: use __maybe_unused to hide pm functions
    pinctrl: sh-pfc: core: don't open code of_device_get_match_data()
    pinctrl: uniphier: rename CONFIG options and file names
    pinctrl: sunxi: make A80 explicitly non-modular
    pinctrl: stm32: make explicitly non-modular
    pinctrl: sh-pfc: make explicitly non-modular
    pinctrl: meson: make explicitly non-modular
    pinctrl: pinctrl-mt6397 driver explicitly non-modular
    pinctrl: sunxi: does not need module.h
    pinctrl: pxa2xx: export symbols
    pinctrl: sunxi: Change mux setting on PI irq pins
    pinctrl: sunxi: Remove non existing irq's
    pinctrl: imx: attach iomuxc device to gpr syscon
    pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing
    pinctrl: lpc1850-scu: document nxp,gpio-pin-interrupt
    ...

    Linus Torvalds
     
  • Since including linux/string.h will now do the right thing remove the
    conditional check.

    Signed-off-by: Ian Kent
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Use the standard pr_xxx() log macros directly for log prints instead of
    the AUTOFS_XXX() macros.

    Signed-off-by: Ian Kent
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Common kernel coding practice is to include the newline of log prints
    within the log text rather than hidden away in a macro.

    To avoid introducing inconsistencies as changes are made change the log
    macros to not include the newline.

    Signed-off-by: Ian Kent
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent
     
  • Use the pr_*() print in AUTOFS_*() macros instead of printks and include
    the module name in log message macros. Also use the AUTOFS_*() macros
    everywhere instead of raw printks.

    Signed-off-by: Ian Kent
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Kent