1. 24 Mar, 2016 4 commits
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-soc', 'acpi-misc', 'acpi-pci' and 'device-properties' · ee0140dc
      Rafael J. Wysocki authored
      * acpi-soc:
        ACPI / APD: Add device HID for future AMD UART controller
      
      * acpi-misc:
        ACPI / util: cast data to u64 before shifting to fix sign extension
      
      * acpi-pci:
        PCI: ACPI: IA64: fix IO port generic range check
      
      * device-properties:
        ACPI / property: fix data node parsing in acpi_get_next_subnode()
      ee0140dc
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-avs', 'pm-clk', 'pm-devfreq' and 'pm-sleep' · 3513ac74
      Rafael J. Wysocki authored
      * 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
      3513ac74
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-cpufreq' and 'pm-cpuidle' · 33068b61
      Rafael J. Wysocki authored
      * 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
      33068b61
    • Rafael J. Wysocki's avatar
      Merge branch 'cpuidle' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux into pm-cpuidle · f70ce488
      Rafael J. Wysocki authored
      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
      f70ce488
  2. 23 Mar, 2016 5 commits
  3. 22 Mar, 2016 9 commits
    • Rafael J. Wysocki's avatar
      cpufreq: governor: Always schedule work on the CPU running update · 539a4c42
      Rafael J. Wysocki authored
      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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      539a4c42
    • Rafael J. Wysocki's avatar
      cpufreq: Always update current frequency before startig governor · 3bbf8fe3
      Rafael J. Wysocki authored
      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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      3bbf8fe3
    • Rafael J. Wysocki's avatar
      cpufreq: Introduce cpufreq_update_current_freq() · 999f5729
      Rafael J. Wysocki authored
      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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      999f5729
    • Rafael J. Wysocki's avatar
      cpufreq: Introduce cpufreq_start_governor() · 0a300767
      Rafael J. Wysocki authored
      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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      0a300767
    • Shilpasri G Bhat's avatar
      cpufreq: powernv: Add sysfs attributes to show throttle stats · 1b028984
      Shilpasri G Bhat authored
      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: default avatarShilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      1b028984
    • Jisheng Zhang's avatar
      cpufreq: acpi-cpufreq: make Intel/AMD MSR access, io port access static · ac13b996
      Jisheng Zhang authored
      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: default avatarJisheng Zhang <jszhang@marvell.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ac13b996
    • Lorenzo Pieralisi's avatar
      PCI: ACPI: IA64: fix IO port generic range check · 4a2e7aab
      Lorenzo Pieralisi authored
      The [0 - 64k] ACPI PCI IO port resource boundary check in:
      
      acpi_dev_ioresource_flags()
      
      is currently applied blindly in the ACPI resource parsing to all
      architectures, but only x86 suffers from that IO space limitation.
      
      On arches (ie IA64 and ARM64) where IO space is memory mapped,
      the PCI root bridges IO resource windows are firstly initialized from
      the _CRS (in acpi_decode_space()) and contain the CPU physical address
      at which a root bridge decodes IO space in the CPU physical address
      space with the offset value representing the offset required to translate
      the PCI bus address into the CPU physical address.
      
      The IO resource windows are then parsed and updated in arch code
      before creating and enumerating PCI buses (eg IA64 add_io_space())
      to map in an arch specific way the obtained CPU physical address range
      to a slice of virtual address space reserved to map PCI IO space,
      ending up with PCI bridges resource windows containing IO
      resources like the following on a working IA64 configuration:
      
      PCI host bridge to bus 0000:00
      pci_bus 0000:00: root bus resource [io  0x1000000-0x100ffff window] (bus
      address [0x0000-0xffff])
      pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000fffff window]
      pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff window]
      pci_bus 0000:00: root bus resource [mem 0x80004000000-0x800ffffffff window]
      pci_bus 0000:00: root bus resource [bus 00]
      
      This implies that the [0 - 64K] check in acpi_dev_ioresource_flags()
      leaves platforms with memory mapped IO space (ie IA64) broken (ie kernel
      can't claim IO resources since the host bridge IO resource is disabled
      and discarded by ACPI core code, see log on IA64 with missing root bridge
      IO resource, silently filtered by current [0 - 64k] check in
      acpi_dev_ioresource_flags()):
      
      PCI host bridge to bus 0000:00
      pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000fffff window]
      pci_bus 0000:00: root bus resource [mem 0x80000000-0x8fffffff window]
      pci_bus 0000:00: root bus resource [mem 0x80004000000-0x800ffffffff window]
      pci_bus 0000:00: root bus resource [bus 00]
      
      [...]
      
      pci 0000:00:03.0: [1002:515e] type 00 class 0x030000
      pci 0000:00:03.0: reg 0x10: [mem 0x80000000-0x87ffffff pref]
      pci 0000:00:03.0: reg 0x14: [io  0x1000-0x10ff]
      pci 0000:00:03.0: reg 0x18: [mem 0x88020000-0x8802ffff]
      pci 0000:00:03.0: reg 0x30: [mem 0x88000000-0x8801ffff pref]
      pci 0000:00:03.0: supports D1 D2
      pci 0000:00:03.0: can't claim BAR 1 [io  0x1000-0x10ff]: no compatible
      bridge window
      
      For this reason, the IO port resources boundaries check in generic ACPI
      parsing code should be guarded with a CONFIG_X86 guard so that more arches
      (ie ARM64) can benefit from the generic ACPI resources parsing interface
      without incurring in unexpected resource filtering, fixing at the same
      time current breakage on IA64.
      
      This patch factors out IO ports boundary [0 - 64k] check in generic ACPI
      code and makes the IO space check X86 specific to make sure that IO
      space resources are usable on other arches too.
      
      Fixes: 3772aea7 (ia64/PCI/ACPI: Use common ACPI resource parsing interface for host bridge)
      Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Cc: 4.4+ <stable@vger.kernel.org> # 4.4+
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4a2e7aab
    • Colin Ian King's avatar
      ACPI / util: cast data to u64 before shifting to fix sign extension · 4a798f50
      Colin Ian King authored
      obj->buffer.pointer[i] should be cast to u64 to prevent an unintentional
      sign extension.  For example, if pointer[7] is 0x80, then the value
      0xffffffffff000000 is or'd into mask rather than the intended value
      0xff00000000000000
      
      Detected with static analysis by CoverityScan
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4a798f50
    • Michael Neuling's avatar
      cpufreq: powernv: Define per_cpu chip pointer to optimize hot-path · 3e5963bc
      Michael Neuling authored
      Commit 96c4726f "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: default avatarMichael Neuling <mikey@neuling.org>
      Signed-off-by: default avatarShilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      3e5963bc
  4. 21 Mar, 2016 1 commit
    • Rafael J. Wysocki's avatar
      cpuidle: menu: Fall back to polling if next timer event is near · 0c313cb2
      Rafael J. Wysocki authored
      Commit a9ceb78b (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 e132b9b3 (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: a9ceb78b (cpuidle,menu: use interactivity_req to disable polling)
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Reported-and-tested-by: default avatarDoug Smythies <dsmythies@telus.net>
      0c313cb2
  5. 19 Mar, 2016 2 commits
    • Richard Cochran's avatar
      cpufreq: acpi-cpufreq: Clean up hot plug notifier callback · ed72662a
      Richard Cochran authored
      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: default avatarRichard Cochran <rcochran@linutronix.de>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ed72662a
    • Rafael J. Wysocki's avatar
      intel_pstate: Do not call wrmsrl_on_cpu() with disabled interrupts · fdfdb2b1
      Rafael J. Wysocki authored
      After commit a4675fbc (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: a4675fbc (cpufreq: intel_pstate: Replace timers with utilization update callbacks)
      Reported-and-tested-by: default avatarJosh Boyer <jwboyer@fedoraproject.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      fdfdb2b1
  6. 18 Mar, 2016 1 commit
  7. 17 Mar, 2016 5 commits
  8. 16 Mar, 2016 13 commits
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-4.6-rc1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 277edbab
      Linus Torvalds authored
      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()
        ...
      277edbab
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 271ecc52
      Linus Torvalds authored
      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 <akpm@linux-foundation.org>: (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
        ...
      271ecc52
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · aa6865d8
      Linus Torvalds authored
      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()
      aa6865d8
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 72aafdf0
      Linus Torvalds authored
      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
        ...
      72aafdf0
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 · 1c8e85b1
      Linus Torvalds authored
      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
      1c8e85b1
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 10dc3747
      Linus Torvalds authored
      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
        ...
      10dc3747
    • Linus Torvalds's avatar
      Merge tag 'edac_for_4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · 047486d8
      Linus Torvalds authored
      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()
      047486d8
    • Linus Torvalds's avatar
      Merge tag 'leds_for_4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds · 9256d5a3
      Linus Torvalds authored
      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
      9256d5a3
    • Linus Torvalds's avatar
      Merge tag 'rtc-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux · 13f6f62f
      Linus Torvalds authored
      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
        ...
      13f6f62f
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus-v4.6' of... · f0718cea
      Linus Torvalds authored
      Merge tag 'hwmon-for-linus-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/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
      f0718cea
    • Linus Torvalds's avatar
      Merge tag 'regulator-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 555f8160
      Linus Torvalds authored
      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
        ...
      555f8160
    • Linus Torvalds's avatar
      Merge tag 'regmap-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap · b7aae4a9
      Linus Torvalds authored
      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
        ...
      b7aae4a9
    • Linus Torvalds's avatar
      Merge tag 'spi-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · ff280e36
      Linus Torvalds authored
      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
        ...
      ff280e36