Skip to content
  1. Jun 13, 2018
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-domains' and 'pm-tools' · 6a900f88
      Rafael J. Wysocki authored
      Additional updates of the generic power domains (genpd) framework
      (support for devices attached to multiple domains) and the cpupower
      utility (minor fixes) for 4.18-rc1.
      
      * pm-domains:
        PM / Domains: Add dev_pm_domain_attach_by_id() to manage multi PM domains
        PM / Domains: Add support for multi PM domains per device to genpd
        PM / Domains: Split genpd_dev_pm_attach()
        PM / Domains: Don't attach devices in genpd with multi PM domains
        PM / Domains: dt: Allow power-domain property to be a list of specifiers
      
      * pm-tools:
        cpupower : Fix header name to read idle state name
        cpupower: fix spelling mistake: "logilename" -> "logfilename"
      6a900f88
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · 2652df3a
      Rafael J. Wysocki authored
      Additional cpufreq updates for 4.18-rc1: fixes and cleanups in the
      core and drivers and intel_pstate extension to do iowait boosting
      on systems with HWP that improves performance quite a bit.
      
      * pm-cpufreq:
        cpufreq: imx6q: check speed grades for i.MX6ULL
        cpufreq: governors: Fix long idle detection logic in load calculation
        cpufreq: intel_pstate: enable boost for Skylake Xeon
        cpufreq: intel_pstate: New sysfs entry to control HWP boost
        cpufreq: intel_pstate: HWP boost performance on IO wakeup
        cpufreq: intel_pstate: Add HWP boost utility and sched util hooks
        cpufreq: ti-cpufreq: Use devres managed API in probe()
        cpufreq: ti-cpufreq: Fix an incorrect error return value
        cpufreq: ACPI: make function acpi_cpufreq_fast_switch() static
        cpufreq: kryo: allow building as a loadable module
      2652df3a
  2. Jun 12, 2018
  3. Jun 11, 2018
  4. Jun 08, 2018
  5. Jun 06, 2018
    • Ravi Chandra Sadineni's avatar
      PM / wakeup: Export wakeup_count instead of event_count via sysfs · 2d5ed61c
      Ravi Chandra Sadineni authored
      
      
      Currently we export event_count instead of wakeup_count via the
      per-device wakeup_count sysfs attribute. Change it to wakeup_count
      to make it more meaningful.
      
      wakeup_count increments only when events_check_enabled is set,
      that is whenever writes the current wakeup count to
      /sys/power/wakeup_count.  Also events_check_enabled is cleared on
      every resume. User space is expected to write to this just before
      suspend.  This way pm_wakeup_event(), when called from IRQs handles,
      will increment wakeup_count only if we are in system-wide
      suspend-resume cycle and should give a fair approximation of how many
      times a device may have triggered a wakeup from system suspend.
      
      event_count on the other hand will increment every time
      pm_wakeup_event() is called irrespective of whether we are in a
      suspend-resume cycle and some drivers call it on every interrupt
      which makes it less useful for system wakeup tracking.
      
      Signed-off-by: default avatarRavi Chandra Sadineni <ravisadineni@chromium.org>
      Acked-by: default avatarPavel Machek <pavel@ucw.cz>
      [ rjw: Subject & changelog ]
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      2d5ed61c
    • Ulf Hansson's avatar
      PM / Domains: Add dev_pm_domain_attach_by_id() to manage multi PM domains · 82e12d9e
      Ulf Hansson authored
      
      
      The existing dev_pm_domain_attach() function, allows a single PM domain to
      be attached per device. To be able to support devices that are partitioned
      across multiple PM domains, let's introduce a new interface,
      dev_pm_domain_attach_by_id().
      
      The dev_pm_domain_attach_by_id() returns a new allocated struct device with
      the corresponding attached PM domain. This enables for example a driver to
      operate on the new device from a power management point of view. The driver
      may then also benefit from using the received device, to set up so called
      device-links towards its original device. Depending on the situation, these
      links may then be dynamically changed.
      
      The new interface is typically called by drivers during their probe phase,
      in case they manages devices which uses multiple PM domains. If that is the
      case, the driver also becomes responsible of managing the detaching of the
      PM domains, which typically should be done at the remove phase. Detaching
      is done by calling the existing dev_pm_domain_detach() function and for
      each of the received devices from dev_pm_domain_attach_by_id().
      
      Note, currently its only genpd that supports multiple PM domains per
      device, but dev_pm_domain_attach_by_id() can easily by extended to cover
      other PM domain types, if/when needed.
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      82e12d9e
    • Ulf Hansson's avatar
      PM / Domains: Add support for multi PM domains per device to genpd · 3c095f32
      Ulf Hansson authored
      
      
      To support devices being partitioned across multiple PM domains, let's
      begin with extending genpd to cope with these kind of configurations.
      
      Therefore, add a new exported function genpd_dev_pm_attach_by_id(), which
      is similar to the existing genpd_dev_pm_attach(), but with the difference
      that it allows its callers to provide an index to the PM domain that it
      wants to attach.
      
      Note that, genpd_dev_pm_attach_by_id() shall only be called by the driver
      core / PM core, similar to how the existing dev_pm_domain_attach() makes
      use of genpd_dev_pm_attach(). However, this is implemented by following
      changes on top.
      
      Because, only one PM domain can be attached per device, genpd needs to
      create a virtual device that it can attach/detach instead. More precisely,
      let the new function genpd_dev_pm_attach_by_id() register a virtual struct
      device via calling device_register(). Then let it attach this device to the
      corresponding PM domain, rather than the one that is provided by the
      caller. The actual attaching is done via re-using the existing genpd OF
      functions.
      
      At successful attachment, genpd_dev_pm_attach_by_id() returns the created
      virtual device, which allows the caller to operate on it to deal with power
      management. Following changes on top, provides more details in this
      regards.
      
      To deal with detaching of a PM domain for the multiple PM domains case,
      let's also extend the existing genpd_dev_pm_detach() function, to cover the
      cleanup of the created virtual device, via make it call device_unregister()
      on it. In this way, there is no need to introduce a new function to deal
      with detach for the multiple PM domain case, but instead the existing one
      is re-used.
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      3c095f32
    • Ulf Hansson's avatar
      PM / Domains: Split genpd_dev_pm_attach() · 8cb1cbd6
      Ulf Hansson authored
      
      
      To extend genpd to deal with allowing multiple PM domains per device, some
      of the code in genpd_dev_pm_attach() can be re-used. Let's prepare for this
      by moving some of the code into a sub-function.
      
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      8cb1cbd6
    • Ulf Hansson's avatar
      PM / Domains: Don't attach devices in genpd with multi PM domains · bcd931f2
      Ulf Hansson authored
      
      
      The power-domain DT property may now contain a list of PM domain
      specifiers, which represents that a device are partitioned across multiple
      PM domains. This leads to a new situation in genpd_dev_pm_attach(), as only
      one PM domain can be attached per device.
      
      To remain things simple for the most common configuration, when a single PM
      domain is used, let's treat the multiple PM domain case as being specific.
      
      In other words, let's change genpd_dev_pm_attach() to check for multiple PM
      domains and prevent it from attach any PM domain for this case. Instead,
      leave this to be managed separately, from following changes to genpd.
      
      Suggested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      bcd931f2
    • Ulf Hansson's avatar
      PM / Domains: dt: Allow power-domain property to be a list of specifiers · 657c292c
      Ulf Hansson authored
      
      
      To be able to describe topologies where devices are partitioned across
      multiple power domains, let's extend the power-domain property to allow
      being a list of PM domain specifiers.
      
      Suggested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      657c292c
    • Rafael J. Wysocki's avatar
      Merge tag 'linux-cpupower-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux · 5202e32d
      Rafael J. Wysocki authored
      Pull cpupower updates for v4.18-rc1 from Shuah Khan:
      
      "This cpupower update for 4.18-rc1 consists of two minor fixes."
      
      * tag 'linux-cpupower-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux:
        cpupower : Fix header name to read idle state name
        cpupower: fix spelling mistake: "logilename" -> "logfilename"
      5202e32d
    • Srinivas Pandruvada's avatar
      cpufreq: intel_pstate: New sysfs entry to control HWP boost · aaaece3d
      Srinivas Pandruvada authored
      
      
      A new attribute is added to intel_pstate sysfs to enable/disable
      HWP dynamic performance boost.
      
      Reported-by: default avatarMel Gorman <mgorman@techsingularity.net>
      Tested-by: default avatarGiovanni Gherdovich <ggherdovich@suse.cz>
      Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      aaaece3d
    • Srinivas Pandruvada's avatar
      cpufreq: intel_pstate: HWP boost performance on IO wakeup · 52ccc431
      Srinivas Pandruvada authored
      
      
      This change uses SCHED_CPUFREQ_IOWAIT flag to boost HWP performance.
      Since SCHED_CPUFREQ_IOWAIT flag is set frequently, we don't start
      boosting steps unless we see two consecutive flags in two ticks. This
      avoids boosting due to IO because of regular system activities.
      
      To avoid synchronization issues, the actual processing of the flag is
      done on the local CPU callback.
      
      Reported-by: default avatarMel Gorman <mgorman@techsingularity.net>
      Tested-by: default avatarGiovanni Gherdovich <ggherdovich@suse.cz>
      Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      52ccc431
    • Srinivas Pandruvada's avatar
      cpufreq: intel_pstate: Add HWP boost utility and sched util hooks · e0efd5be
      Srinivas Pandruvada authored
      
      
      Added two utility functions to HWP boost up gradually and boost down to
      the default cached HWP request values.
      
      Boost up:
      Boost up updates HWP request minimum value in steps. This minimum value
      can reach upto at HWP request maximum values depends on how frequently,
      this boost up function is called. At max, boost up will take three steps
      to reach the maximum, depending on the current HWP request levels and HWP
      capabilities. For example, if the current settings are:
      If P0 (Turbo max) = P1 (Guaranteed max) = min
              No boost at all.
      If P0 (Turbo max) > P1 (Guaranteed max) = min
              Should result in one level boost only for P0.
      If P0 (Turbo max) = P1 (Guaranteed max) > min
              Should result in two level boost:
                      (min + p1)/2 and P1.
      If P0 (Turbo max) > P1 (Guaranteed max) > min
              Should result in three level boost:
                      (min + p1)/2, P1 and P0.
      We don't set any level between P0 and P1 as there is no guarantee that
      they will be honored.
      
      Boost down:
      After the system is idle for hold time of 3ms, the HWP request is reset
      to the default value from HWP init or user modified one via sysfs.
      
      Caching of HWP Request and Capabilities
      Store the HWP request value last set using MSR_HWP_REQUEST and read
      MSR_HWP_CAPABILITIES. This avoid reading of MSRs in the boost utility
      functions.
      
      These boost utility functions calculated limits are based on the latest
      HWP request value, which can be modified by setpolicy() callback. So if
      user space modifies the minimum perf value, that will be accounted for
      every time the boost up is called. There will be case when there can be
      contention with the user modified minimum perf, in that case user value
      will gain precedence. For example just before HWP_REQUEST MSR is updated
      from setpolicy() callback, the boost up function is called via scheduler
      tick callback. Here the cached MSR value is already the latest and limits
      are updated based on the latest user limits, but on return the MSR write
      callback called from setpolicy() callback will update the HWP_REQUEST
      value. This will be used till next time the boost up function is called.
      
      In addition add a variable to control HWP dynamic boosting. When HWP
      dynamic boost is active then set the HWP specific update util hook. The
      contents in the utility hooks will be filled in the subsequent patches.
      
      Reported-by: default avatarMel Gorman <mgorman@techsingularity.net>
      Tested-by: default avatarGiovanni Gherdovich <ggherdovich@suse.cz>
      Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e0efd5be
    • Suman Anna's avatar
      cpufreq: ti-cpufreq: Use devres managed API in probe() · d7231f99
      Suman Anna authored
      
      
      The ti_cpufreq_probe() function uses regular kzalloc to allocate
      the ti_cpufreq_data structure and kfree for freeing this memory
      on failures. Simplify this code by using the devres managed
      API.
      
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      d7231f99
    • Suman Anna's avatar
      cpufreq: ti-cpufreq: Fix an incorrect error return value · e5d295b0
      Suman Anna authored
      
      
      Commit 05829d94 (cpufreq: ti-cpufreq: kfree opp_data when
      failure) has fixed a memory leak in the failure path, however
      the patch returned a positive value on get_cpu_device() failure
      instead of the previous negative value. Fix this incorrect error
      return value properly.
      
      Fixes: 05829d94 (cpufreq: ti-cpufreq: kfree opp_data when failure)
      Cc: 4.14+ <stable@vger.kernel.org> # v4.14+
      Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e5d295b0
    • Colin Ian King's avatar
      cpufreq: ACPI: make function acpi_cpufreq_fast_switch() static · 08e9cc40
      Colin Ian King authored
      
      
      The acpi_cpufreq_fast_switch() function is local to the source and
      does not need to be in global scope, so make it static.
      
      Cleans up sparse warning:
      drivers/cpufreq/acpi-cpufreq.c:468:14: warning: symbol
      'acpi_cpufreq_fast_switch' was not declared. Should it be static?
      
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      08e9cc40
    • Arnd Bergmann's avatar
      cpufreq: kryo: allow building as a loadable module · ac289276
      Arnd Bergmann authored
      
      
      Building the kryo cpufreq driver while QCOM_SMEM is a loadable module
      results in a link error:
      
      drivers/cpufreq/qcom-cpufreq-kryo.o: In function `qcom_cpufreq_kryo_probe':
      qcom-cpufreq-kryo.c:(.text+0xbc): undefined reference to `qcom_smem_get'
      
      The problem is that Kconfig ignores interprets the dependency as met
      when the dependent symbol is a 'bool' one. By making it 'tristate',
      it will be forced to be a module here, which builds successfully.
      
      Fixes: 46e2856b (cpufreq: Add Kryo CPU scaling driver)
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ac289276
    • Linus Torvalds's avatar
      Merge tag 'pm-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 3c89adb0
      Linus Torvalds authored
      Pull power management updates from Rafael Wysocki:
       "These include a significant update of the generic power domains
        (genpd) and Operating Performance Points (OPP) frameworks, mostly
        related to the introduction of power domain performance levels,
        cpufreq updates (new driver for Qualcomm Kryo processors, updates of
        the existing drivers, some core fixes, schedutil governor
        improvements), PCI power management fixes, ACPI workaround for
        EC-based wakeup events handling on resume from suspend-to-idle, and
        major updates of the turbostat and pm-graph utilities.
      
        Specifics:
      
         - Introduce power domain performance levels into the the generic
           power domains (genpd) and Operating Performance Points (OPP)
           frameworks (Viresh Kumar, Rajendra Nayak, Dan Carpenter).
      
         - Fix two issues in the runtime PM framework related to the
           initialization and removal of devices using device links (Ulf
           Hansson).
      
         - Clean up the initialization of drivers for devices in PM domains
           (Ulf Hansson, Geert Uytterhoeven).
      
         - Fix a cpufreq core issue related to the policy sysfs interface
           causing CPU online to fail for CPUs sharing one cpufreq policy in
           some situations (Tao Wang).
      
         - Make it possible to use platform-specific suspend/resume hooks in
           the cpufreq-dt driver and make the Armada 37xx DVFS use that
           feature (Viresh Kumar, Miquel Raynal).
      
         - Optimize policy transition notifications in cpufreq (Viresh Kumar).
      
         - Improve the iowait boost mechanism in the schedutil cpufreq
           governor (Patrick Bellasi).
      
         - Improve the handling of deferred frequency updates in the schedutil
           cpufreq governor (Joel Fernandes, Dietmar Eggemann, Rafael Wysocki,
           Viresh Kumar).
      
         - Add a new cpufreq driver for Qualcomm Kryo (Ilia Lin).
      
         - Fix and clean up some cpufreq drivers (Colin Ian King, Dmitry
           Osipenko, Doug Smythies, Luc Van Oostenryck, Simon Horman, Viresh
           Kumar).
      
         - Fix the handling of PCI devices with the DPM_SMART_SUSPEND flag set
           and update stale comments in the PCI core PM code (Rafael Wysocki).
      
         - Work around an issue related to the handling of EC-based wakeup
           events in the ACPI PM core during resume from suspend-to-idle if
           the EC has been put into the low-power mode (Rafael Wysocki).
      
         - Improve the handling of wakeup source objects in the PM core (Doug
           Berger, Mahendran Ganesh, Rafael Wysocki).
      
         - Update the driver core to prevent deferred probe from breaking
           suspend/resume ordering (Feng Kan).
      
         - Clean up the PM core somewhat (Bjorn Helgaas, Ulf Hansson, Rafael
           Wysocki).
      
         - Make the core suspend/resume code and cpufreq support the RT patch
           (Sebastian Andrzej Siewior, Thomas Gleixner).
      
         - Consolidate the PM QoS handling in cpuidle governors (Rafael
           Wysocki).
      
         - Fix a possible crash in the hibernation core (Tetsuo Handa).
      
         - Update the rockchip-io Adaptive Voltage Scaling (AVS) driver (David
           Wu).
      
         - Update the turbostat utility (fixes, cleanups, new CPU IDs, new
           command line options, built-in "Low Power Idle" counters support,
           new POLL and POLL% columns) and add an entry for it to MAINTAINERS
           (Len Brown, Artem Bityutskiy, Chen Yu, Laura Abbott, Matt Turner,
           Prarit Bhargava, Srinivas Pandruvada).
      
         - Update the pm-graph to version 5.1 (Todd Brandt).
      
         - Update the intel_pstate_tracer utility (Doug Smythies)"
      
      * tag 'pm-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (128 commits)
        tools/power turbostat: update version number
        tools/power turbostat: Add Node in output
        tools/power turbostat: add node information into turbostat calculations
        tools/power turbostat: remove num_ from cpu_topology struct
        tools/power turbostat: rename num_cores_per_pkg to num_cores_per_node
        tools/power turbostat: track thread ID in cpu_topology
        tools/power turbostat: Calculate additional node information for a package
        tools/power turbostat: Fix node and siblings lookup data
        tools/power turbostat: set max_num_cpus equal to the cpumask length
        tools/power turbostat: if --num_iterations, print for specific number of iterations
        tools/power turbostat: Add Cannon Lake support
        tools/power turbostat: delete duplicate #defines
        x86: msr-index.h: Correct SNB_C1/C3_AUTO_UNDEMOTE defines
        tools/power turbostat: Correct SNB_C1/C3_AUTO_UNDEMOTE defines
        tools/power turbostat: add POLL and POLL% column
        tools/power turbostat: Fix --hide Pk%pc10
        tools/power turbostat: Build-in "Low Power Idle" counters support
        tools/power turbostat: Don't make man pages executable
        tools/power turbostat: remove blank lines
        tools/power turbostat: a small C-states dump readability immprovement
        ...
      3c89adb0
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20180605' of git://git.kernel.dk/linux-block · 11e7c218
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "This just contains the dm kzalloc fix that was discussed, and a fix
        that I queued up yesterday for a case where blk-mq doesn't honor the
        stop bit appropriately"
      
      * tag 'for-linus-20180605' of git://git.kernel.dk/linux-block:
        dm: Use kzalloc for all structs with embedded biosets/mempools
        blk-mq: return when hctx is stopped in blk_mq_run_work_fn
      11e7c218
    • Linus Torvalds's avatar
      Merge branch 'faddr2line' (patches from Josh) · 9b68ac22
      Linus Torvalds authored
      Merge faddr2line updates from Josh Poimboeuf:
      
       - revert faddr2line's default output to its original non-code-listing
         output, and make the code listing an optional feature
      
       - give faddr2line a real maintainer, so get_maintainer.pl will actually
         CC me on future patches
      
      * emailed patches from Josh Poimboeuf <jpoimboe@redhat.com>:
        MAINTAINERS: add Josh Poimboeuf as faddr2line maintainer
        scripts/faddr2line: make the new code listing format optional
      9b68ac22
    • Josh Poimboeuf's avatar
      MAINTAINERS: add Josh Poimboeuf as faddr2line maintainer · 2562c011
      Josh Poimboeuf authored
      
      
      ... so I finally get credit for my greatest accomplishment.
      
      And, less importantly, so get_maintainer.pl will actually CC me on
      future patches.
      
      Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2562c011
    • Peter Zijlstra (Intel)'s avatar
      scripts/faddr2line: make the new code listing format optional · 689135f0
      Peter Zijlstra (Intel) authored
      
      
      Commit 6870c016 ("scripts/faddr2line: show the code context")
      radically altered the output format of the faddr2line tool.  And while
      the new list output format might have merit it broke my vim usage and
      was hard to read.
      
      Make the new format optional; using a '--list' argument and attempt to
      make the output slightly easier to read by adding a little whitespace to
      separate the different files and explicitly mark the line in question.
      
      Cc: Changbin Du <changbin.du@intel.com>
      Fixes: 6870c016 ("scripts/faddr2line: show the code context")
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      689135f0
  6. Jun 05, 2018
    • Kent Overstreet's avatar
      dm: Use kzalloc for all structs with embedded biosets/mempools · d3775354
      Kent Overstreet authored
      
      
      mempool_init()/bioset_init() require that the mempools/biosets be zeroed
      first; they probably should not _require_ this, but not allocating those
      structs with kzalloc is a fairly nonsensical thing to do (calling
      mempool_exit()/bioset_exit() on an uninitialized mempool/bioset is legal
      and safe, but only works if said memory was zeroed.)
      
      Acked-by: default avatarMike Snitzer <snitzer@redhat.com>
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d3775354
    • Linus Torvalds's avatar
      Merge branch 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 716a685f
      Linus Torvalds authored
      Pull x86 hyperv updates from Thomas Gleixner:
       "A set of commits to enable APIC enlightenment when running as a guest
        on Microsoft HyperV.
      
        This accelerates the APIC access with paravirtualization techniques,
        which are called enlightenments on Hyper-V"
      
      * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/Hyper-V/hv_apic: Build the Hyper-V APIC conditionally
        x86/Hyper-V/hv_apic: Include asm/apic.h
        X86/Hyper-V: Consolidate the allocation of the hypercall input page
        X86/Hyper-V: Consolidate code for converting cpumask to vpset
        X86/Hyper-V: Enhanced IPI enlightenment
        X86/Hyper-V: Enable IPI enlightenments
        X86/Hyper-V: Enlighten APIC access
      716a685f
    • Linus Torvalds's avatar
      Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ab20fd00
      Linus Torvalds authored
      Pull x86 cache resource controller updates from Thomas Gleixner:
       "An update for the Intel Resource Director Technolgy (RDT) which adds a
        feedback driven software controller to runtime adjust the bandwidth
        allocation MSRs.
      
        This makes the allocations more accurate and allows to use bandwidth
        values in understandable units (MB/s) instead of using percentage
        based allocations as the original, still available, interface.
      
        The software controller can be enabled with a new mount option for the
        resctrl filesystem"
      
      * 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/intel_rdt/mba_sc: Feedback loop to dynamically update mem bandwidth
        x86/intel_rdt/mba_sc: Prepare for feedback loop
        x86/intel_rdt/mba_sc: Add schemata support
        x86/intel_rdt/mba_sc: Add initialization support
        x86/intel_rdt/mba_sc: Enable/disable MBA software controller
        x86/intel_rdt/mba_sc: Documentation for MBA software controller(mba_sc)
      ab20fd00
    • Linus Torvalds's avatar
      Merge branch 'timers-2038-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ba252f16
      Linus Torvalds authored
      Pull time/Y2038 updates from Thomas Gleixner:
      
       - Consolidate SySV IPC UAPI headers
      
       - Convert SySV IPC to the new COMPAT_32BIT_TIME mechanism
      
       - Cleanup the core interfaces and standardize on the ktime_get_* naming
         convention.
      
       - Convert the X86 platform ops to timespec64
      
       - Remove the ugly temporary timespec64 hack
      
      * 'timers-2038-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (22 commits)
        x86: Convert x86_platform_ops to timespec64
        timekeeping: Add more coarse clocktai/boottime interfaces
        timekeeping: Add ktime_get_coarse_with_offset
        timekeeping: Standardize on ktime_get_*() naming
        timekeeping: Clean up ktime_get_real_ts64
        timekeeping: Remove timespec64 hack
        y2038: ipc: Redirect ipc(SEMTIMEDOP, ...) to compat_ksys_semtimedop
        y2038: ipc: Enable COMPAT_32BIT_TIME
        y2038: ipc: Use __kernel_timespec
        y2038: ipc: Report long times to user space
        y2038: ipc: Use ktime_...
      ba252f16
    • Linus Torvalds's avatar
      Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0bbcce5d
      Linus Torvalds authored
      Pull timers and timekeeping updates from Thomas Gleixner:
      
       - Core infrastucture work for Y2038 to address the COMPAT interfaces:
      
           + Add a new Y2038 safe __kernel_timespec and use it in the core
             code
      
           + Introduce config switches which allow to control the various
             compat mechanisms
      
           + Use the new config switch in the posix timer code to control the
             32bit compat syscall implementation.
      
       - Prevent bogus selection of CPU local clocksources which causes an
         endless reselection loop
      
       - Remove the extra kthread in the clocksource code which has no value
         and just adds another level of indirection
      
       - The usual bunch of trivial updates, cleanups and fixlets all over the
         place
      
       - More SPDX conversions
      
      * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
        clocksource/drivers/mxs_timer: Switch to SPDX identifier
        clocksource/drivers/timer-imx-tpm: Switch to SPDX identifier
        clocksource/drivers/timer-imx-gpt: Switch to SPDX identifier
        clocksource/drivers/timer-imx-gpt: Remove outdated file path
        clocksource/drivers/arc_timer: Add comments about locking while read GFRC
        clocksource/drivers/mips-gic-timer: Add pr_fmt and reword pr_* messages
        clocksource/drivers/sprd: Fix Kconfig dependency
        clocksource: Move inline keyword to the beginning of function declarations
        timer_list: Remove unused function pointer typedef
        timers: Adjust a kernel-doc comment
        tick: Prefer a lower rating device only if it's CPU local device
        clocksource: Remove kthread
        time: Change nanosleep to safe __kernel_* types
        time: Change types to new y2038 safe __kernel_* types
        time: Fix get_timespec64() for y2038 safe compat interfaces
        time: Add new y2038 safe __kernel_timespec
        posix-timers: Make compat syscalls depend on CONFIG_COMPAT_32BIT_TIME
        time: Introduce CONFIG_COMPAT_32BIT_TIME
        time: Introduce CONFIG_64BIT_TIME in architectures
        compat: Enable compat_get/put_timespec64 always
        ...
      0bbcce5d
    • Linus Torvalds's avatar
      Merge branch 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0ef283d4
      Linus Torvalds authored
      Pull x86 RAS updates from Thomas Gleixner:
      
       - Fix a stack out of bounds write in the MCE error injection code.
      
       - Avoid IPIs during CPU hotplug to read the MCx_MISC block address from
         a remote CPU. That's fragile and pointless because the block
         addresses are the same on all CPUs. So they can be read once and
         local.
      
       - Add support for MCE broadcasting on newer VIA Centaur CPUs.
      
      * 'ras-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/MCE/AMD: Read MCx_MISC block addresses on any CPU
        x86/MCE: Fix stack out-of-bounds write in mce-inject.c: Flags_read()
        x86/MCE: Enable MCE broadcasting on new Centaur CPUs
      0ef283d4
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · db020be9
      Linus Torvalds authored
      Pull irq updates from Thomas Gleixner:
      
       - Consolidation of softirq pending:
      
         The softirq mask and its accessors/mutators have many implementations
         scattered around many architectures. Most do the same things
         consisting in a field in a per-cpu struct (often irq_cpustat_t)
         accessed through per-cpu ops. We can provide instead a generic
         efficient version that most of them can use. In fact s390 is the only
         exception because the field is stored in lowcore.
      
       - Support for level!?! triggered MSI (ARM)
      
         Over the past couple of years, we've seen some SoCs coming up with
         ways of signalling level interrupts using a new flavor of MSIs, where
         the MSI controller uses two distinct messages: one that raises a
         virtual line, and one that lowers it. The target MSI controller is in
         charge of maintaining the state of the line.
      
         This allows for a much simplified HW signal routing (no need to have
         hundreds of discrete lines to signal level interrupts if you already
         have a memory bus), but results in a departure from the current idea
         the kernel has of MSIs.
      
       - Support for Meson-AXG GPIO irqchip
      
       - Large stm32 irqchip rework (suspend/resume, hierarchical domains)
      
       - More SPDX conversions
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
        ARM: dts: stm32: Add exti support to stm32mp157 pinctrl
        ARM: dts: stm32: Add exti support for stm32mp157c
        pinctrl/stm32: Add irq_eoi for stm32gpio irqchip
        irqchip/stm32: Add suspend/resume support for hierarchy domain
        irqchip/stm32: Add stm32mp1 support with hierarchy domain
        irqchip/stm32: Prepare common functions
        irqchip/stm32: Add host and driver data structures
        irqchip/stm32: Add suspend support
        irqchip/stm32: Add falling pending register support
        irqchip/stm32: Checkpatch fix
        irqchip/stm32: Optimizes and cleans up stm32-exti irq_domain
        irqchip/meson-gpio: Add support for Meson-AXG SoCs
        dt-bindings: interrupt-controller: New binding for Meson-AXG SoC
        dt-bindings: interrupt-controller: Fix the double quotes
        softirq/s390: Move default mutators of overwritten softirq mask to s390
        softirq/x86: Switch to generic local_softirq_pending() implementation
        softirq/sparc: Switch to generic local_softirq_pending() implementation
        softirq/powerpc: Switch to generic local_softirq_pending() implementation
        softirq/parisc: Switch to generic local_softirq_pending() implementation
        softirq/ia64: Switch to generic local_softirq_pending() implementation
        ...
      db020be9
    • Linus Torvalds's avatar
      Merge branch 'x86-dax-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d09a8e6f
      Linus Torvalds authored
      Pull x86 dax updates from Ingo Molnar:
       "This contains x86 memcpy_mcsafe() fault handling improvements the
        nvdimm tree would like to make more use of"
      
      * 'x86-dax-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/asm/memcpy_mcsafe: Define copy_to_iter_mcsafe()
        x86/asm/memcpy_mcsafe: Add write-protection-fault handling
        x86/asm/memcpy_mcsafe: Return bytes remaining
        x86/asm/memcpy_mcsafe: Add labels for __memcpy_mcsafe() write fault handling
        x86/asm/memcpy_mcsafe: Remove loop unrolling
      d09a8e6f
    • Linus Torvalds's avatar
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 83163856
      Linus Torvalds authored
      Pull x86 debug updates from Ingo Molnar:
       "This contains the x86 oops code printing reorganization and cleanups
        from Borislav Betkov, with a particular focus in enhancing opcode
        dumping all around"
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/dumpstack: Explain the reasoning for the prologue and buffer size
        x86/dumpstack: Save first regs set for the executive summary
        x86/dumpstack: Add a show_ip() function
        x86/fault: Dump user opcode bytes on fatal faults
        x86/dumpstack: Add loglevel argument to show_opcodes()
        x86/dumpstack: Improve opcodes dumping in the code section
        x86/dumpstack: Carve out code-dumping into a function
        x86/dumpstack: Unexport oops_begin()
        x86/dumpstack: Remove code_bytes
      83163856
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0afe832e
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "Misc cleanups"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/apm: Fix spelling mistake: "caculate" -> "calculate"
        x86/mtrr: Rename main.c to mtrr.c and remove duplicate prefixes
        x86: Remove pr_fmt duplicate logging prefixes
        x86/early-quirks: Rename duplicate define of dev_err
        x86/bpf: Clean up non-standard comments, to make the code more readable
      0afe832e
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 42964c6f
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "A handful of build system (Makefile, linker script) cleanups by
        Masahiro Yamada"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/build/vdso: Put generated linker scripts to $(obj)/
        x86/build/vdso: Remove unnecessary export in Makefile
        x86/build/vdso: Remove unused $(vobjs-nox32) in Makefile
        x86/build: Remove no-op macro VMLINUX_SYMBOL()
      42964c6f
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1b246d22
      Linus Torvalds authored
      Pull x86 asm updates from Ingo Molnar:
      
       - better support (non-atomic) 64-bit readq()/writeq() variants (Andy
         Shevchenko)
      
       - __clear_user() micro-optimization (Alexey Dobriyan)
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/io: Define readq()/writeq() to use 64-bit type
        x86/asm/64: Micro-optimize __clear_user() - Use immediate constants
      1b246d22
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5cef8c2a
      Linus Torvalds authored
      Pull x86 boot updates from Ingo Molnar:
      
       - Centaur CPU updates (David Wang)
      
       - AMD and other CPU topology enumeration improvements and fixes
         (Borislav Petkov, Thomas Gleixner, Suravee Suthikulpanit)
      
       - Continued 5-level paging work (Kirill A. Shutemov)
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Mark __pgtable_l5_enabled __initdata
        x86/mm: Mark p4d_offset() __always_inline
        x86/mm: Introduce the 'no5lvl' kernel parameter
        x86/mm: Stop pretending pgtable_l5_enabled is a variable
        x86/mm: Unify pgtable_l5_enabled usage in early boot code
        x86/boot/compressed/64: Fix trampoline page table address calculation
        x86/CPU: Move x86_cpuinfo::x86_max_cores assignment to detect_num_cpu_cores()
        x86/Centaur: Report correct CPU/cache topology
        x86/CPU: Move cpu_detect_cache_sizes() into init_intel_cacheinfo()
        x86/CPU: Make intel_num_cpu_cores() generic
        x86/CPU: Move cpu local function declarations to local header
        x86/CPU/AMD: Derive CPU topology from CPUID function 0xB when available
        x86/CPU: Modify detect_extended_topology() to return result
        x86/CPU/AMD: Calculate last level cache ID from number of sharing threads
        x86/CPU: Rename intel_cacheinfo.c to cacheinfo.c
        perf/events/amd/uncore: Fix amd_uncore_llc ID to use pre-defined cpu_llc_id
        x86/CPU/AMD: Have smp_num_siblings and cpu_llc_id always be present
        x86/Centaur: Initialize supported CPU features properly
      5cef8c2a
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f7f4e7fc
      Linus Torvalds authored
      Pull scheduler updates from Ingo Molnar:
      
       - power-aware scheduling improvements (Patrick Bellasi)
      
       - NUMA balancing improvements (Mel Gorman)
      
       - vCPU scheduling fixes (Rohit Jain)
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/fair: Update util_est before updating schedutil
        sched/cpufreq: Modify aggregate utilization to always include blocked FAIR utilization
        sched/deadline/Documentation: Add overrun signal and GRUB-PA documentation
        sched/core: Distinguish between idle_cpu() calls based on desired effect, introduce available_idle_cpu()
        sched/wait: Include <linux/wait.h> in <linux/swait.h>
        sched/numa: Stagger NUMA balancing scan periods for new threads
        sched/core: Don't schedule threads on pre-empted vCPUs
        sched/fair: Avoid calling sync_entity_load_avg() unnecessarily
        sched/fair: Rearrange select_task_rq_fair() to optimize it
      f7f4e7fc
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d9b446e2
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "Kernel side changes:
      
         - x86 Intel uncore driver cleanups and enhancements (Kan Liang)
      
         - group scheduling and other fixes (Song Liu
      
         - store frame pointer in the sample traces for better profiling
           (Alexey Budankov)
      
         - compat fixes/enhancements (Eugene Syromiatnikov)
      
        Tooling side changes, which you can build and install in a single step
        via:
      
            make -C tools/perf clean install
      
        perf annotate:
      
         - Support 'perf annotate --group' for non-explicit recorded event
           "groups", showing multiple columns, one for each event, just like
           when dealing with explicit event groups (those enclosed with {})
           (Jin Yao)
      
         - Record min/max LBR cycles (>= Skylake) and add 'perf annotate' TUI
           hotkey to show it (c) (Jin Yao)
      
        perf bpf:
      
         - Add infrastructure to help in writing eBPF C programs to be used
           with '-e name.c' type events in tools such as 'record' and 'trace',
           with headers for common constructs and an examples directory that
           will get populated as we add more such helpers and the 'perf bpf'
           (Arnaldo Carvalho de Melo)
      
        perf stat:
      
         - Display time in precision based on std deviation (Jiri Olsa)
      
         - Add --table option to display time of each run (Jiri Olsa)
      
         - Display length strings of each run for --table option (Jiri Olsa)
      
        perf buildid-cache:
      
         - Add --list and --purge-all options (Ravi Bangoria)
      
        perf test:
      
         - Let 'perf test list' display subtests (Hendrik Brueckner)
      
        perf pti:
      
         - Create extra kernel maps to help in decoding samples in x86 PTI
           entry trampolines (Adrian Hunter)
      
         - Copy x86 PTI entry trampoline sections in the kcore copy used for
           annotation and intel_pt CPU traces decoding (Adrian Hunter)
      
        ... and a lot of other fixes, enhancements and cleanups I did not
        list, see the shortlog and git log for details"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (111 commits)
        perf/x86/intel/uncore: Clean up client IMC uncore
        perf/x86/intel/uncore: Expose uncore_pmu_event*() functions
        perf/x86/intel/uncore: Support IIO free-running counters on SKX
        perf/x86/intel/uncore: Add infrastructure for free running counters
        perf/x86/intel/uncore: Add new data structures for free running counters
        perf/x86/intel/uncore: Correct fixed counter index check in generic code
        perf/x86/intel/uncore: Correct fixed counter index check for NHM
        perf/x86/intel/uncore: Introduce customized event_read() for client IMC uncore
        perf/x86: Store user space frame-pointer value on a sample
        perf/core: Wire up compat PERF_EVENT_IOC_QUERY_BPF, PERF_EVENT_IOC_MODIFY_ATTRIBUTES
        perf/core: Fix bad use of igrab()
        perf/core: Fix group scheduling with mixed hw and sw events
        perf kcore_copy: Amend the offset of sections that remap kernel text
        perf kcore_copy: Copy x86 PTI entry trampoline sections
        perf kcore_copy: Get rid of kernel_map
        perf kcore_copy: Iterate phdrs
        perf kcore_copy: Layout sections
        perf kcore_copy: Calculate offset from phnum
        perf kcore_copy: Keep a count of phdrs
        perf kcore_copy: Keep phdr data in a list
        ...
      d9b446e2