#
daeeb032 |
| 02-Apr-2024 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: core: Move threshold out of struct thermal_trip
The threshold field in struct thermal_trip is only used internally by the thermal core and it is better to prevent drivers from misusing it.
thermal: core: Move threshold out of struct thermal_trip
The threshold field in struct thermal_trip is only used internally by the thermal core and it is better to prevent drivers from misusing it. It also takes some space unnecessarily in the trip tables passed by drivers to the core during thermal zone registration.
For this reason, introduce struct thermal_trip_desc as a wrapper around struct thermal_trip, move the threshold field directly into it and make the thermal core store struct thermal_trip_desc objects in the internal thermal zone trip tables. Adjust all of the code using trip tables in the thermal core accordingly.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
show more ...
|
#
afdaff37 |
| 23-Feb-2024 |
Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> |
thermal: netlink: Rename thermal_gnl_family
Almost all thermal netlink structures use thermal_genl prefix. Change thermal_gnl_family name accordingly for consistency.
No functional impact.
Signed-
thermal: netlink: Rename thermal_gnl_family
Almost all thermal netlink structures use thermal_genl prefix. Change thermal_gnl_family name accordingly for consistency.
No functional impact.
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
cf580ad4 |
| 23-Feb-2024 |
Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> |
thermal: netlink: Add genetlink bind/unbind notifications
Introduce a new feature to the thermal netlink framework, enabling the registration of sub drivers to receive events via a notifier mechanis
thermal: netlink: Add genetlink bind/unbind notifications
Introduce a new feature to the thermal netlink framework, enabling the registration of sub drivers to receive events via a notifier mechanism. Specifically, implement genetlink family bind and unbind callbacks to send BIND and UNBIND events.
The primary purpose of this enhancement is to facilitate the tracking of user-space consumers by the Intel HFI driver. By leveraging these notifications, the driver can determine when consumers are present or absent.
Suggested-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
11fde939 |
| 09-Jan-2024 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Rework notify API for cooling devices
In analogy with some previous thermal netlink API changes, redefine thermal_notify_cdev_state_update(), thermal_notify_cdev_add() and thermal_
thermal: netlink: Rework notify API for cooling devices
In analogy with some previous thermal netlink API changes, redefine thermal_notify_cdev_state_update(), thermal_notify_cdev_add() and thermal_notify_cdev_delete() to take a const cdev pointer as their first argument and let them extract the requisite information from there by themselves.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
2f521890 |
| 03-Jan-2024 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Pass thermal zone pointer to notify routines
There are several rountines in the thermal netlink API that take a thermal zone ID or a thermal zone type as their arguments, but from
thermal: netlink: Pass thermal zone pointer to notify routines
There are several rountines in the thermal netlink API that take a thermal zone ID or a thermal zone type as their arguments, but from their callers perspective it would be more convenient to pass a thermal zone pointer to them and let them extract the necessary data from the given thermal zone object by themselves.
Modify the code accordingly.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
4ae535f3 |
| 15-Dec-2023 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Drop thermal_notify_tz_trip_add/delete()
Because thermal_notify_tz_trip_add/delete() are never used, drop them entirely along with the related code.
The addition or removal of tri
thermal: netlink: Drop thermal_notify_tz_trip_add/delete()
Because thermal_notify_tz_trip_add/delete() are never used, drop them entirely along with the related code.
The addition or removal of trip points is not supported by the thermal core and is unlikely to be supported in the future, so it is also unlikely that these functions will ever be needed.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
f52557ed |
| 15-Dec-2023 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Pass pointers to thermal_notify_tz_trip_up/down()
Instead of requiring the callers of thermal_notify_tz_trip_up/down() to provide specific values needed to populate struct param in
thermal: netlink: Pass pointers to thermal_notify_tz_trip_up/down()
Instead of requiring the callers of thermal_notify_tz_trip_up/down() to provide specific values needed to populate struct param in them, make them extract those values from objects passed by the callers via const pointers.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
7e72fc41 |
| 03-Jan-2024 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Pass pointers to thermal_notify_tz_trip_change()
Instead of requiring the caller of thermal_notify_tz_trip_change() to provide specific values needed to populate struct param in it
thermal: netlink: Pass pointers to thermal_notify_tz_trip_change()
Instead of requiring the caller of thermal_notify_tz_trip_change() to provide specific values needed to populate struct param in it, make it extract those values from objects passed to it by the caller via const pointers.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
04c3b030 |
| 28-Dec-2023 |
Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> |
thermal: netlink: Add thermal_group_has_listeners() helper
Add a helper function to check if there are listeners for thermal_gnl_family multicast groups.
For now use it to avoid unnecessary allocat
thermal: netlink: Add thermal_group_has_listeners() helper
Add a helper function to check if there are listeners for thermal_gnl_family multicast groups.
For now use it to avoid unnecessary allocations and sending thermal genl messages when there are no recipients.
In the future, in conjunction with (not yet implemented) notification of change in the netlink socket group membership, this helper can be used to open/close hardware interfaces based on the presence of user space subscribers.
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
5eb4f413 |
| 28-Dec-2023 |
Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> |
thermal: netlink: Add enum for mutlicast groups indexes
Use enum instead of hard-coded numbers for indexing multicast groups.
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Ac
thermal: netlink: Add enum for mutlicast groups indexes
Use enum instead of hard-coded numbers for indexing multicast groups.
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
183b6413 |
| 04-Dec-2023 |
Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
thermal: netlink: Use for_each_trip() in thermal_genl_cmd_tz_get_trip()
Make thermal_genl_cmd_tz_get_trip() use for_each_trip() instead of an open- coded loop over trip indices.
No intentional func
thermal: netlink: Use for_each_trip() in thermal_genl_cmd_tz_get_trip()
Make thermal_genl_cmd_tz_get_trip() use for_each_trip() instead of an open- coded loop over trip indices.
No intentional functional impact.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
show more ...
|
#
58d1c9fd |
| 23-Jan-2023 |
Daniel Lezcano <daniel.lezcano@linaro.org> |
thermal/core: Fix unregistering netlink at thermal init time
The thermal subsystem initialization miss an netlink unregistering function in the error. Add it.
Signed-off-by: Daniel Lezcano <daniel.
thermal/core: Fix unregistering netlink at thermal init time
The thermal subsystem initialization miss an netlink unregistering function in the error. Add it.
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
7c3d5c20 |
| 03-Oct-2022 |
Daniel Lezcano <daniel.lezcano@linaro.org> |
thermal/core: Add a generic thermal_zone_get_trip() function
The thermal_zone_device_ops structure defines a set of ops family, get_trip_temp(), get_trip_hyst(), get_trip_type(). Each of them is ret
thermal/core: Add a generic thermal_zone_get_trip() function
The thermal_zone_device_ops structure defines a set of ops family, get_trip_temp(), get_trip_hyst(), get_trip_type(). Each of them is returning a property of a trip point.
The result is the code is calling the ops everywhere to get a trip point which is supposed to be defined in the backend driver. It is a non-sense as a thermal trip can be generic and used by the backend driver to declare its trip points.
Part of the thermal framework has been changed and all the OF thermal drivers are using the same definition for the trip point and use a thermal zone registration variant to pass those trip points which are part of the thermal zone device structure.
Consequently, we can use a generic function to get the trip points when they are stored in the thermal zone device structure.
This approach can be generalized to all the drivers and we can get rid of the ops->get_trip_*. That will result to a much more simpler code and make possible to rework how the thermal trip are handled in the thermal core framework as discussed previously.
This change adds a function thermal_zone_get_trip() where we get the thermal trip point structure which contains all the properties (type, temp, hyst) instead of doing multiple calls to ops->get_trip_*.
That opens the door for trip point extension with more attributes. For instance, replacing the trip points disabled bitmask with a 'disabled' field in the structure.
Here we replace all the calls to ops->get_trip_* in the thermal core code with a call to the thermal_zone_get_trip() function.
The thermal zone ops defines a callback to retrieve the critical temperature. As the trip handling is being reworked, all the trip points will be the same whatever the driver and consequently finding the critical trip temperature will be just a loop to search for a critical trip point type.
Provide such a generic function, so we encapsulate the ops get_crit_temp() which can be removed when all the backend drivers are using the generic trip points handling.
While at it, add the thermal_zone_get_num_trips() to encapsulate the code more and reduce the grip with the thermal framework internals.
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Zhang Rui <rui.zhang@intel.com> Link: https://lore.kernel.org/r/20221003092602.1323944-2-daniel.lezcano@linaro.org
show more ...
|
#
9c5d03d3 |
| 25-Aug-2022 |
Jakub Kicinski <kuba@kernel.org> |
genetlink: start to validate reserved header bytes
We had historically not checked that genlmsghdr.reserved is 0 on input which prevents us from using those precious bytes in the future.
One use ca
genetlink: start to validate reserved header bytes
We had historically not checked that genlmsghdr.reserved is 0 on input which prevents us from using those precious bytes in the future.
One use case would be to extend the cmd field, which is currently just 8 bits wide and 256 is not a lot of commands for some core families.
To make sure that new families do the right thing by default put the onus of opting out of validation on existing families.
Signed-off-by: Jakub Kicinski <kuba@kernel.org> Acked-by: Paul Moore <paul@paul-moore.com> (NetLabel) Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
e5bfcd30 |
| 22-Jul-2022 |
Daniel Lezcano <daniel.lezcano@linexp.org> |
thermal/core: Rename 'trips' to 'num_trips'
In order to use thermal trips defined in the thermal structure, rename the 'trips' field to 'num_trips' to have the 'trips' field containing the thermal t
thermal/core: Rename 'trips' to 'num_trips'
In order to use thermal trips defined in the thermal structure, rename the 'trips' field to 'num_trips' to have the 'trips' field containing the thermal trip points.
Cc: Alexandre Bailon <abailon@baylibre.com> Cc: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linexp.org> Link: https://lore.kernel.org/r/20220722200007.1839356-8-daniel.lezcano@linexp.org Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
show more ...
|
#
5838a148 |
| 28-Feb-2022 |
Nicolas Cavallari <nicolas.cavallari@green-communications.fr> |
thermal: core: Fix TZ_GET_TRIP NULL pointer dereference
Do not call get_trip_hyst() from thermal_genl_cmd_tz_get_trip() if the thermal zone does not define one.
Fixes: 1ce50e7d408e ("thermal: core:
thermal: core: Fix TZ_GET_TRIP NULL pointer dereference
Do not call get_trip_hyst() from thermal_genl_cmd_tz_get_trip() if the thermal zone does not define one.
Fixes: 1ce50e7d408e ("thermal: core: genetlink support for events/cmd/sampling") Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr> Cc: 5.10+ <stable@vger.kernel.org> # 5.10+ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
e4b1eb24 |
| 27-Jan-2022 |
Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> |
thermal: netlink: Add a new event to notify CPU capabilities change
Add a new netlink event to notify change in CPU capabilities in terms of performance and efficiency.
Firmware may change CPU capa
thermal: netlink: Add a new event to notify CPU capabilities change
Add a new netlink event to notify change in CPU capabilities in terms of performance and efficiency.
Firmware may change CPU capabilities as a result of thermal events in the system or to account for changes in the TDP (thermal design power) level.
This notification type will allow user space to avoid running workloads on certain CPUs or proactively adjust power limits to avoid future events.
The netlink message consists of a nested attribute (THERMAL_GENL_ATTR_CPU_CAPABILITY) with three attributes:
* THERMAL_GENL_ATTR_CPU_CAPABILITY_ID (type u32): -- logical CPU number * THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE (type u32): -- Scaled performance from 0-1023 * THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY (type u32): -- Scaled efficiency from 0-1023
Reviewed-by: Len Brown <len.brown@intel.com> Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
show more ...
|
#
fc656fa1 |
| 01-Oct-2021 |
Daniel Lezcano <daniel.lezcano@linaro.org> |
thermal/drivers/netlink: Add the temperature when crossing a trip point
The slope of the temperature increase or decrease can be high and when the temperature crosses the trip point, there could be
thermal/drivers/netlink: Add the temperature when crossing a trip point
The slope of the temperature increase or decrease can be high and when the temperature crosses the trip point, there could be a significant difference between the trip temperature and the measured temperatures.
That forces the userspace to read the temperature back right after receiving a trip violation notification.
In order to be efficient, give the temperature which resulted in the trip violation.
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Acked-by: Rafael J. Wysocki <rafael@kernel.org> Link: https://lore.kernel.org/r/20211001223323.1836640-1-daniel.lezcano@linaro.org
show more ...
|
#
48b45859 |
| 29-Sep-2020 |
Jing Xiangfeng <jingxiangfeng@huawei.com> |
thermal: core: Adding missing nlmsg_free() in thermal_genl_sampling_temp()
thermal_genl_sampling_temp() misses to call nlmsg_free() in an error path.
Jump to out_free to fix it.
Fixes: 1ce50e7d408
thermal: core: Adding missing nlmsg_free() in thermal_genl_sampling_temp()
thermal_genl_sampling_temp() misses to call nlmsg_free() in an error path.
Jump to out_free to fix it.
Fixes: 1ce50e7d408ef2 ("thermal: core: genetlink support for events/cmd/sampling") Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20200929082652.59876-1-jingxiangfeng@huawei.com
show more ...
|
#
66a9b928 |
| 02-Oct-2020 |
Jakub Kicinski <kuba@kernel.org> |
genetlink: move to smaller ops wherever possible
Bulk of the genetlink users can use smaller ops, move them.
Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Johannes Berg <johannes@sip
genetlink: move to smaller ops wherever possible
Bulk of the genetlink users can use smaller ops, move them.
Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
0b588afd |
| 02-Oct-2020 |
Jakub Kicinski <kuba@kernel.org> |
genetlink: add small version of ops
We want to add maxattr and policy back to genl_ops, to enable dumping per command policy to user space. This, however, would cause bloat for all the families with
genetlink: add small version of ops
We want to add maxattr and policy back to genl_ops, to enable dumping per command policy to user space. This, however, would cause bloat for all the families with global policies. Introduce smaller version of ops (half the size of genl_ops). Translate these smaller ops into a full blown struct before use in the core.
v1: - use struct assignment - put a full copy of the op in struct genl_dumpit_info - s/light/small/
Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: David S. Miller <davem@davemloft.net>
show more ...
|
#
d2a89b52 |
| 17-Jul-2020 |
Daniel Lezcano <daniel.lezcano@linaro.org> |
thermal: netlink: Improve the initcall ordering
The initcalls like to play joke. In our case, the thermal-netlink initcall is called after the thermal-core initcall but this one sends a notification
thermal: netlink: Improve the initcall ordering
The initcalls like to play joke. In our case, the thermal-netlink initcall is called after the thermal-core initcall but this one sends a notification before the former is initialized. No issue was spotted, but it could lead to a memory corruption, so instead of relying on the core_initcall for the thermal-netlink, let's initialize directly from the thermal-core init routine, so we have full control of the init ordering.
Reported-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> Link: https://lore.kernel.org/r/20200717164217.18819-1-daniel.lezcano@linaro.org
show more ...
|
#
52674f56 |
| 06-Jul-2020 |
Colin Ian King <colin.king@canonical.com> |
thermal: core: remove redundant initialization of variable ret
The variable ret is being initialized with a value that is never read and it is being updated later with a new value. The initializati
thermal: core: remove redundant initialization of variable ret
The variable ret is being initialized with a value that is never read and it is being updated later with a new value. The initialization is redundant and can be removed.
Addresses-Coverity: ("Unused value") Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20200706140747.489075-1-colin.king@canonical.com
show more ...
|
#
1ce50e7d |
| 06-Jul-2020 |
Daniel Lezcano <daniel.lezcano@linaro.org> |
thermal: core: genetlink support for events/cmd/sampling
Initially the thermal framework had a very simple notification mechanism to send generic netlink messages to the userspace.
The notification
thermal: core: genetlink support for events/cmd/sampling
Initially the thermal framework had a very simple notification mechanism to send generic netlink messages to the userspace.
The notification function was never called from anywhere and the corresponding dead code was removed. It was probably a first attempt to introduce the netlink notification.
At LPC2018, the presentation "Linux thermal: User kernel interface", proposed to create the notifications to the userspace via a kfifo.
The advantage of the kfifo is the performance. It is usually used from a 1:1 communication channel where a driver captures data and sends it as fast as possible to a userspace process.
The drawback is that only one process uses the notification channel exclusively, thus no other process is allowed to use the channel to get temperature or notifications.
This patch defines a generic netlink API to discover the current thermal setup and adds event notifications as well as temperature sampling. As any genetlink protocol, it can evolve and the versioning allows to keep the backward compatibility.
In order to prevent the user from getting flooded with data on a single channel, there are two multicast channels, one for the temperature sampling when the thermal zone is updated and another one for the events, so the user can get the events only without the thermal zone temperature sampling.
Also, a list of commands to discover the thermal setup is added and can be extended when needed.
Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Acked-by: Zhang Rui <rui.zhang@intel.com> Link: https://lore.kernel.org/r/20200706105538.2159-3-daniel.lezcano@linaro.org
show more ...
|