thermal: int340x: processor_thermal: Support power floor notifications
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Mon, 9 Oct 2023 19:05:35 +0000 (12:05 -0700)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 12 Oct 2023 19:09:48 +0000 (21:09 +0200)
commitb473d6a9d68f5bc27c7e35f5c98172d5f2206039
tree0f97382405451355c61989e1fc0071ea84f5500a
parent6ebc25d8b053a208786295bab58abbb66b39c318
thermal: int340x: processor_thermal: Support power floor notifications

When the hardware reduces the power to the minimum possible, the power
floor is notified via an interrupt.

This can happen when user space requests a power limit via powercap RAPL
interface, which forces the system to enter to the lowest power. This
power floor indication can be used as a hint to resort to other methods
of reducing power than via RAPL power limit.

Before power floor status can be read or the firmware can trigger
notifications regarding it, it needs to be configured via a mailbox
command. The actual power floor status is read via bit 39 of MMIO
offset 0x5B18 of the processor thermal PCI device.

To show the current power floor status and get notification
on a sysfs attribute, add 2 new attributes to
/sys/bus/pci/devices/0000\:00\:04.0/power_limits/

power_floor_enable : This attribute is present when power floor
 notifications are supported. This attribute allows to enable/disable
 power floor notifications.

power_floor_status : This attribute is present when power floor
 notifications are supported. When enabled via power_floor_enable, this
 attribute shows the current power floor status.

The power floor implementation provides interfaces which are called
from the sysfs callbacks to enable/disable and read power floor
status. It also provides two additional interfaces to check if the
current processor thermal device interrupt is for power floor status
and to send notifications to user space.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
[ rjw: Changelog and documentation changes edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/driver-api/thermal/intel_dptf.rst
drivers/thermal/intel/int340x_thermal/Makefile
drivers/thermal/intel/int340x_thermal/processor_thermal_device.c
drivers/thermal/intel/int340x_thermal/processor_thermal_device.h
drivers/thermal/intel/int340x_thermal/processor_thermal_power_floor.c [new file with mode: 0644]