]> git.dujemihanovic.xyz Git - linux.git/commitdiff
Merge tag 'pm-5.3-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 18 Jul 2019 16:32:28 +0000 (09:32 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 18 Jul 2019 16:32:28 +0000 (09:32 -0700)
Pull more power management updates from Rafael Wysocki:
 "These modify the Intel RAPL driver to allow it to use an MMIO
  interface to the hardware, make the int340X thermal driver provide
  such an interface for it, add Intel Ice Lake CPU IDs to the RAPL
  driver (these changes depend on the previously merged x86 arch
  changes), update cpufreq to use the PM QoS framework for managing the
  min and max frequency limits, and add update the imx-cpufreq-dt
  cpufreq driver to support i.MX8MN.

  Specifics:

   - Add MMIO interface support to the Intel RAPL power capping driver
     and update the int340X thermal driver to provide a RAPL MMIO
     interface (Zhang Rui, Stephen Rothwell).

   - Add Intel Ice Lake CPU IDs to the RAPL driver (Zhang Rui, Rajneesh
     Bhardwaj).

   - Make cpufreq use the PM QoS framework (instead of notifiers) for
     managing the min and max frequency constraints (Viresh Kumar).

   - Add i.MX8MN support to the imx-cpufreq-dt cpufreq driver (Anson
     Huang)"

* tag 'pm-5.3-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (27 commits)
  cpufreq: Make cpufreq_generic_init() return void
  intel_rapl: need linux/cpuhotplug.h for enum cpuhp_state
  powercap/rapl: Add Ice Lake NNPI support to RAPL driver
  powercap/intel_rapl: add support for ICX-D
  powercap/intel_rapl: add support for ICX
  powercap/intel_rapl: add support for IceLake desktop
  intel_rapl: Fix module autoloading issue
  int340X/processor_thermal_device: add support for MMIO RAPL
  intel_rapl: support two power limits for every RAPL domain
  intel_rapl: support 64 bit register
  intel_rapl: abstract RAPL common code
  intel_rapl: cleanup hardcoded MSR access
  intel_rapl: cleanup some functions
  intel_rapl: abstract register access operations
  intel_rapl: abstract register address
  intel_rapl: introduce struct rapl_if_private
  intel_rapl: introduce intel_rapl.h
  intel_rapl: remove hardcoded register index
  intel_rapl: use reg instead of msr
  cpufreq: imx-cpufreq-dt: Add i.MX8MN support
  ...

1  2 
Documentation/power/pm_qos_interface.rst
MAINTAINERS
drivers/thermal/intel/int340x_thermal/processor_thermal_device.c

index 945fc6d760c906ee6ad1b4da3009b47c2ff26fbf,cfcb1df3979921b32d3de12a05793dac80754caa..69921f072ce199f03c672bd63aa0eaab17bd1217
@@@ -113,76 -107,72 +113,78 @@@ the aggregated value does not require a
  From kernel mode the use of this interface is the following:
  
  int dev_pm_qos_add_request(device, handle, type, value):
 -Will insert an element into the list for that identified device with the
 -target value.  Upon change to this list the new target is recomputed and any
 -registered notifiers are called only if the target value is now different.
 -Clients of dev_pm_qos need to save the handle for future use in other
 -dev_pm_qos API functions.
 +  Will insert an element into the list for that identified device with the
 +  target value.  Upon change to this list the new target is recomputed and any
 +  registered notifiers are called only if the target value is now different.
 +  Clients of dev_pm_qos need to save the handle for future use in other
 +  dev_pm_qos API functions.
  
  int dev_pm_qos_update_request(handle, new_value):
 -Will update the list element pointed to by the handle with the new target value
 -and recompute the new aggregated target, calling the notification trees if the
 -target is changed.
 +  Will update the list element pointed to by the handle with the new target
 +  value and recompute the new aggregated target, calling the notification
 +  trees if the target is changed.
  
  int dev_pm_qos_remove_request(handle):
 -Will remove the element.  After removal it will update the aggregate target and
 -call the notification trees if the target was changed as a result of removing
 -the request.
 +  Will remove the element.  After removal it will update the aggregate target
 +  and call the notification trees if the target was changed as a result of
 +  removing the request.
  
- s32 dev_pm_qos_read_value(device):
+ s32 dev_pm_qos_read_value(device, type):
 -Returns the aggregated value for a given device's constraints list.
 +  Returns the aggregated value for a given device's constraints list.
  
  enum pm_qos_flags_status dev_pm_qos_flags(device, mask)
 -Check PM QoS flags of the given device against the given mask of flags.
 -The meaning of the return values is as follows:
 -      PM_QOS_FLAGS_ALL: All flags from the mask are set
 -      PM_QOS_FLAGS_SOME: Some flags from the mask are set
 -      PM_QOS_FLAGS_NONE: No flags from the mask are set
 -      PM_QOS_FLAGS_UNDEFINED: The device's PM QoS structure has not been
 -                      initialized or the list of requests is empty.
 +  Check PM QoS flags of the given device against the given mask of flags.
 +  The meaning of the return values is as follows:
 +
 +      PM_QOS_FLAGS_ALL:
 +              All flags from the mask are set
 +      PM_QOS_FLAGS_SOME:
 +              Some flags from the mask are set
 +      PM_QOS_FLAGS_NONE:
 +              No flags from the mask are set
 +      PM_QOS_FLAGS_UNDEFINED:
 +              The device's PM QoS structure has not been initialized
 +              or the list of requests is empty.
  
  int dev_pm_qos_add_ancestor_request(dev, handle, type, value)
 -Add a PM QoS request for the first direct ancestor of the given device whose
 -power.ignore_children flag is unset (for DEV_PM_QOS_RESUME_LATENCY requests)
 -or whose power.set_latency_tolerance callback pointer is not NULL (for
 -DEV_PM_QOS_LATENCY_TOLERANCE requests).
 +  Add a PM QoS request for the first direct ancestor of the given device whose
 +  power.ignore_children flag is unset (for DEV_PM_QOS_RESUME_LATENCY requests)
 +  or whose power.set_latency_tolerance callback pointer is not NULL (for
 +  DEV_PM_QOS_LATENCY_TOLERANCE requests).
  
  int dev_pm_qos_expose_latency_limit(device, value)
 -Add a request to the device's PM QoS list of resume latency constraints and
 -create a sysfs attribute pm_qos_resume_latency_us under the device's power
 -directory allowing user space to manipulate that request.
 +  Add a request to the device's PM QoS list of resume latency constraints and
 +  create a sysfs attribute pm_qos_resume_latency_us under the device's power
 +  directory allowing user space to manipulate that request.
  
  void dev_pm_qos_hide_latency_limit(device)
 -Drop the request added by dev_pm_qos_expose_latency_limit() from the device's
 -PM QoS list of resume latency constraints and remove sysfs attribute
 -pm_qos_resume_latency_us from the device's power directory.
 +  Drop the request added by dev_pm_qos_expose_latency_limit() from the device's
 +  PM QoS list of resume latency constraints and remove sysfs attribute
 +  pm_qos_resume_latency_us from the device's power directory.
  
  int dev_pm_qos_expose_flags(device, value)
 -Add a request to the device's PM QoS list of flags and create sysfs attribute
 -pm_qos_no_power_off under the device's power directory allowing user space to
 -change the value of the PM_QOS_FLAG_NO_POWER_OFF flag.
 +  Add a request to the device's PM QoS list of flags and create sysfs attribute
 +  pm_qos_no_power_off under the device's power directory allowing user space to
 +  change the value of the PM_QOS_FLAG_NO_POWER_OFF flag.
  
  void dev_pm_qos_hide_flags(device)
 -Drop the request added by dev_pm_qos_expose_flags() from the device's PM QoS list
 -of flags and remove sysfs attribute pm_qos_no_power_off from the device's power
 -directory.
 +  Drop the request added by dev_pm_qos_expose_flags() from the device's PM QoS list
 +  of flags and remove sysfs attribute pm_qos_no_power_off from the device's power
 +  directory.
  
  Notification mechanisms:
 +
  The per-device PM QoS framework has a per-device notification tree.
  
- int dev_pm_qos_add_notifier(device, notifier):
-   Adds a notification callback function for the device.
+ int dev_pm_qos_add_notifier(device, notifier, type):
 -Adds a notification callback function for the device for a particular request
 -type.
++  Adds a notification callback function for the device for a particular request
++  type.
 -The callback is called when the aggregated value of the device constraints list
 -is changed.
 +  The callback is called when the aggregated value of the device constraints list
-   is changed (for resume latency device PM QoS only).
++  is changed.
  
- int dev_pm_qos_remove_notifier(device, notifier):
+ int dev_pm_qos_remove_notifier(device, notifier, type):
 -Removes the notification callback function for the device.
 +  Removes the notification callback function for the device.
  
  
  Active state latency tolerance
diff --cc MAINTAINERS
Simple merge
index 77dae1e7c3bf644c647607e6cad4166beebc42a9,06c7ab317dee4767426abcc593497fd190d46c31..213ab3cc6b8069a27b2ccd1c51c7a671a8a76b44
@@@ -439,26 -599,10 +599,26 @@@ static void  proc_thermal_pci_remove(st
                        pci_disable_msi(pdev);
                }
        }
+       proc_thermal_rapl_remove();
        proc_thermal_remove(proc_priv);
-       pci_disable_device(pdev);
  }
  
 +#ifdef CONFIG_PM_SLEEP
 +static int proc_thermal_resume(struct device *dev)
 +{
 +      struct proc_thermal_device *proc_dev;
 +
 +      proc_dev = dev_get_drvdata(dev);
 +      proc_thermal_read_ppcc(proc_dev);
 +
 +      return 0;
 +}
 +#else
 +#define proc_thermal_resume NULL
 +#endif
 +
 +static SIMPLE_DEV_PM_OPS(proc_thermal_pm, NULL, proc_thermal_resume);
 +
  static const struct pci_device_id proc_thermal_pci_ids[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_BDW_THERMAL)},
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_PROC_HSB_THERMAL)},