1. 20 Feb, 2017 5 commits
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-core', 'pm-qos' and 'pm-domains' · 58339fea
      Rafael J. Wysocki authored
      * pm-core:
        PM / wakeirq: report a wakeup_event on dedicated wekup irq
        PM / wakeirq: Fix spurious wake-up events for dedicated wakeirqs
        PM / wakeirq: Enable dedicated wakeirq for suspend
      
      * pm-qos:
        PM / QoS: Fix memory leak on resume_latency.notifiers
        PM / QoS: Remove unneeded linux/miscdevice.h include
      
      * pm-domains:
        PM / Domains: Provide dummy governors if CONFIG_PM_GENERIC_DOMAINS=n
        PM / Domains: Fix asynchronous execution of *noirq() callbacks
        PM / Domains: Correct comment in irq_safe_dev_in_no_sleep_domain()
        PM / Domains: Rename functions in genpd for power on/off
      58339fea
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-devfreq' · 41ef3d1d
      Rafael J. Wysocki authored
      * pm-devfreq:
        PM / devfreq: Modify the device name as devfreq(X) for sysfs
        PM / devfreq: Simplify the sysfs name of devfreq-event device
        PM / devfreq: Remove unnecessary separate _remove_devfreq()
        PM / devfreq: Fix wrong trans_stat of passive devfreq device
        PM / devfreq: Fix available_governor sysfs
        PM / devfreq: exynos-ppmu: Show the registred device for ppmu device
        PM / devfreq: Fix the wrong description for userspace governor
        PM / devfreq: Fix the checkpatch warnings
        PM / devfreq: exynos-bus: Print the real clock rate of bus
        PM / devfreq: exynos-ppmu: Use the regmap interface to handle the registers
        PM / devfreq: exynos-bus: Add the detailed correlation for Exynos5433
        PM / devfreq: Don't delete sysfs group twice
      41ef3d1d
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpuidle' · ad7eec42
      Rafael J. Wysocki authored
      * pm-cpuidle:
        CPU / PM: expose pm_qos_resume_latency for CPUs
        cpuidle/menu: add per CPU PM QoS resume latency consideration
        cpuidle/menu: stop seeking deeper idle if current state is deep enough
        ACPI / idle: small formatting fixes
      ad7eec42
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-cpufreq' · f6cbe34f
      Rafael J. Wysocki authored
      * pm-cpufreq: (28 commits)
        MAINTAINERS: cpufreq: add bmips-cpufreq.c
        cpufreq: CPPC: add ACPI_PROCESSOR dependency
        cpufreq: make ti-cpufreq explicitly non-modular
        cpufreq: Do not clear real_cpus mask on policy init
        cpufreq: dt: Don't use generic platdev driver for ti-cpufreq platforms
        cpufreq: ti: Add cpufreq driver to determine available OPPs at runtime
        Documentation: dt: add bindings for ti-cpufreq
        cpufreq: qoriq: Don't look at clock implementation details
        cpufreq: qoriq: add ARM64 SoCs support
        cpufreq: brcmstb-avs-cpufreq: remove unnecessary platform_set_drvdata()
        cpufreq: s3c2416: double free on driver init error path
        MIPS: BMIPS: enable CPUfreq
        cpufreq: bmips-cpufreq: CPUfreq driver for Broadcom's BMIPS SoCs
        BMIPS: Enable prerequisites for CPUfreq in MIPS Kconfig.
        MIPS: BMIPS: Update defconfig
        cpufreq: Fix typos in comments
        cpufreq: intel_pstate: Calculate guaranteed performance for HWP
        cpufreq: intel_pstate: Make HWP limits compatible with legacy
        cpufreq: intel_pstate: Lower frequency than expected under no_turbo
        cpufreq: intel_pstate: Operation mode control from sysfs
        ...
      f6cbe34f
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-opp' · 64f758a0
      Rafael J. Wysocki authored
      * pm-opp: (24 commits)
        PM / OPP: Expose _of_get_opp_desc_node as dev_pm_opp API
        PM / OPP: Make _find_opp_table_unlocked() static
        PM / OPP: Update Documentation to remove RCU specific bits
        PM / OPP: Simplify dev_pm_opp_get_max_volt_latency()
        PM / OPP: Simplify _opp_set_availability()
        PM / OPP: Move away from RCU locking
        PM / OPP: Take kref from _find_opp_table()
        PM / OPP: Update OPP users to put reference
        PM / OPP: Add 'struct kref' to struct dev_pm_opp
        PM / OPP: Use dev_pm_opp_get_opp_table() instead of _add_opp_table()
        PM / OPP: Take reference of the OPP table while adding/removing OPPs
        PM / OPP: Return opp_table from dev_pm_opp_set_*() routines
        PM / OPP: Add 'struct kref' to OPP table
        PM / OPP: Add per OPP table mutex
        PM / OPP: Split out part of _add_opp_table() and _remove_opp_table()
        PM / OPP: Don't expose srcu_head to register notifiers
        PM / OPP: Rename dev_pm_opp_get_suspend_opp() and return OPP rate
        PM / OPP: Don't allocate OPP table from _opp_allocate()
        PM / OPP: Rename and split _dev_pm_opp_remove_table()
        PM / OPP: Add light weight _opp_free() routine
        ...
      64f758a0
  2. 18 Feb, 2017 2 commits
    • Markus Mayer's avatar
      MAINTAINERS: cpufreq: add bmips-cpufreq.c · 20bb5505
      Markus Mayer authored
      Add maintainer information for bmips-cpufreq.c.
      Signed-off-by: default avatarMarkus Mayer <mmayer@broadcom.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      20bb5505
    • John Keeping's avatar
      PM / QoS: Fix memory leak on resume_latency.notifiers · e84b4a84
      John Keeping authored
      Since commit 2d984ad1 (PM / QoS: Introcuce latency tolerance device
      PM QoS type) we reassign "c" to point at qos->latency_tolerance before
      freeing c->notifiers, but the notifiers field of latency_tolerance is
      never used.
      
      Restore the original behaviour of freeing the notifiers pointer on
      qos->resume_latency, which is used, and fix the following kmemleak
      warning.
      
      unreferenced object 0xed9dba00 (size 64):
        comm "kworker/0:1", pid 36, jiffies 4294670128 (age 15202.983s)
        hex dump (first 32 bytes):
          00 00 00 00 04 ba 9d ed 04 ba 9d ed 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<c06f6084>] kmemleak_alloc+0x74/0xb8
          [<c011c964>] kmem_cache_alloc_trace+0x170/0x25c
          [<c035f448>] dev_pm_qos_constraints_allocate+0x3c/0xe4
          [<c035f574>] __dev_pm_qos_add_request+0x84/0x1a0
          [<c035f6cc>] dev_pm_qos_add_request+0x3c/0x54
          [<c03c3fc4>] usb_hub_create_port_device+0x110/0x2b8
          [<c03b2a60>] hub_probe+0xadc/0xc80
          [<c03bb050>] usb_probe_interface+0x1b4/0x260
          [<c035773c>] driver_probe_device+0x198/0x40c
          [<c0357b14>] __device_attach_driver+0x8c/0x98
          [<c0355bbc>] bus_for_each_drv+0x8c/0x9c
          [<c0357494>] __device_attach+0x98/0x138
          [<c0357c64>] device_initial_probe+0x14/0x18
          [<c03569dc>] bus_probe_device+0x30/0x88
          [<c0354c54>] device_add+0x430/0x554
          [<c03b92d8>] usb_set_configuration+0x660/0x6fc
      
      Fixes: 2d984ad1 (PM / QoS: Introcuce latency tolerance device PM QoS type)
      Signed-off-by: default avatarJohn Keeping <john@metanate.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      e84b4a84
  3. 16 Feb, 2017 1 commit
  4. 15 Feb, 2017 2 commits
  5. 13 Feb, 2017 3 commits
    • Grygorii Strashko's avatar
      PM / wakeirq: report a wakeup_event on dedicated wekup irq · 09bb6e93
      Grygorii Strashko authored
      There are two reasons for reporting wakeup event when dedicated wakeup
      IRQ is triggered:
      
      - wakeup events accounting, so proper statistical data will be
        displayed in sysfs and debugfs;
      
      - there are small window when System is entering suspend during which
        dedicated wakeup IRQ can be lost:
      
      dpm_suspend_noirq()
        |- device_wakeup_arm_wake_irqs()
            |- dev_pm_arm_wake_irq(X)
               |- IRQ is enabled and marked as wakeup source
      [1]...
        |- suspend_device_irqs()
           |- suspend_device_irq(X)
      	|- irqd_set(X, IRQD_WAKEUP_ARMED);
      	   |- wakup IRQ armed
      
      The wakeup IRQ can be lost if it's triggered at point [1]
      and not armed yet.
      
      Hence, fix above cases by adding simple pm_wakeup_event() call in
      handle_threaded_wake_irq().
      
      Fixes: 4990d4fe (PM / Wakeirq: Add automated device wake IRQ handling)
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      Tested-by: default avatarKeerthy <j-keerthy@ti.com>
      [ tony@atomide.com: added missing return to avoid warnings ]
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      09bb6e93
    • Grygorii Strashko's avatar
      PM / wakeirq: Fix spurious wake-up events for dedicated wakeirqs · 0bf0ee8e
      Grygorii Strashko authored
      Dedicated wakeirq is a one time event to wake-up the system from
      low-power state and then call pm_runtime_resume() on the device wired
      with the dedicated wakeirq.
      
      Sometimes dedicated wakeirqs can get deferred if they trigger after we
      call disable_irq_nosync() in dev_pm_disable_wake_irq(). This can happen
      if pm_runtime_get() is called around the same time a wakeirq fires.
      
      If an interrupt fires after disable_irq_nosync(), by default it will get
      tagged with IRQS_PENDING and will run later on when the interrupt is
      enabled again.
      
      Deferred wakeirqs usually just produce pointless wake-up events. But they
      can also cause suspend to fail if the deferred wakeirq fires during
      dpm_suspend_noirq() for example. So we really don't want to see the
      deferred wakeirqs triggering after the device has resumed.
      
      Let's fix the issue by setting IRQ_DISABLE_UNLAZY flag for the dedicated
      wakeirqs. The other option would be to implement irq_disable() in the
      dedicated wakeirq controller, but that's not a generic solution.
      
      For reference below is what happens with a IRQ_TYPE_EDGE_BOTH IRQ
      type wakeirq:
      
      - resume by dedicated IRQ (EDGE_FALLING)
       - suspend_enter()
        ....
       - arch_suspend_enable_irqs()
         |- dedicated IRQ armed and fired
         |- irq_pm_check_wakeup()
            |- disarm, disable IRQ and mark as IRQS_PENDING
        ....
       - dpm_resume_noirq()
         |- resume_device_irqs()
            |- __enable_irq()
               |- check_irq_resend()
                  |- handle_threaded_wake_irq()
       	       |- dedicated IRQ processed
         |- device_wakeup_disarm_wake_irqs()
            |- disable_irq_wake()
        ....
       !-> dedicated IRQ (EDGE_RISING)
           -| handle_edge_irq()
              |- IRQ disabled: mask_ack_irq and mark as IRQS_PENDING
        ....
      - subsequent suspend
        ....
        |- dpm_suspend_noirq()
           |- device_wakeup_arm_wake_irqs()
              |- __enable_irq()
                 |- check_irq_resend()
      (a)           |- handle_threaded_wake_irq()
                       |- pm_wakeup_event() --> abort suspend
        ....
           |- suspend_device_irqs()
              |- suspend_device_irq()
                 |-  dedicated IRQ armed
        ....
      (b)  |- resend_irqs
              |- irq_pm_check_wakeup()
                 |- IRQ armed -> abort suspend
      
      because of pending IRQ System suspend can be aborted at points
      (a)-not armed or (b)-armed.
      
      Fixes: 4990d4fe (PM / Wakeirq: Add automated device wake IRQ handling)
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      [ tony@atomide.com: added a comment, updated the description ]
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      0bf0ee8e
    • Grygorii Strashko's avatar
      PM / wakeirq: Enable dedicated wakeirq for suspend · c8434559
      Grygorii Strashko authored
      We currently rely on runtime PM to enable dedicated wakeirq for suspend.
      This assumption fails in the following two cases:
      
      1. If the consumer driver does not have runtime PM implemented, the
         dedicated wakeirq never gets enabled for suspend
      
      2. If the consumer driver has runtime PM implemented, but does not idle
         in suspend
      
      Let's fix the issue by always enabling the dedicated wakeirq during
      suspend.
      
      Depends-on: bed57030 (PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend)
      Fixes: 4990d4fe (PM / Wakeirq: Add automated device wake IRQ handling)
      Reported-by: default avatarKeerthy <j-keerthy@ti.com>
      Tested-by: default avatarKeerthy <j-keerthy@ti.com>
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      [ tony@atomide.com: updated based on bed57030, added description ]
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      c8434559
  6. 12 Feb, 2017 1 commit
  7. 11 Feb, 2017 8 commits
  8. 10 Feb, 2017 18 commits