[PATCH v2 0/3] thermal/netlink/intel_hfi: Enable HFI feature only when required
From: Stanislaw Gruszka <hidden>
Date: 2024-02-06 13:36:12
Also in:
linux-pm
The patchset introduces a new genetlink family bind/unbind callbacks and thermal/netlink notifications, which allow drivers to send netlink multicast events based on the presence of actual user-space consumers. This functionality optimizes resource usage by allowing disabling of features when not needed. Then implement the notification mechanism in the intel_hif driver, it is utilized to disable the Hardware Feedback Interface (HFI) dynamically. By implementing a thermal genl notify callback, the driver can now enable or disable the HFI based on actual demand, particularly when user-space applications like intel-speed-select or Intel Low Power daemon utilize events related to performance and energy efficiency capabilities. On machines where Intel HFI is present, but there are no user-space components installed, we can save tons of CPU cycles. Changes v1 -> v2: - Rewrite using netlink_bind/netlink_unbind callbacks. - Minor changelog tweaks. - Add missing check in intel hfi syscore resume (had it on my testing, but somehow missed in post). - Do not use netlink_has_listeners() any longer, use custom counter instead. To keep using netlink_has_listners() would be required to rearrange netlink_setsockopt() and possibly netlink_bind() functions, to call nlk->netlink_bind() after listeners are updated. So I decided to custom counter. This have potential issue as thermal netlink registers before intel_hif, so theoretically intel_hif can miss events. But since both are required to be kernel build-in (if CONFIG_INTEL_HFI_THERMAL is configured), they start before any user-space. v1: https://lore.kernel.org/linux-pm/Zb48Z408e18QgsAr@nanopsycho/#r (local) Stanislaw Gruszka (3): genetlink: Add per family bind/unbind callbacks thermal: netlink: Add genetlink bind/unbind notifications thermal: intel: hfi: Enable interface only when required drivers/thermal/intel/intel_hfi.c | 96 +++++++++++++++++++++++++++---- drivers/thermal/thermal_netlink.c | 40 +++++++++++-- drivers/thermal/thermal_netlink.h | 25 ++++++++ include/net/genetlink.h | 4 ++ net/netlink/genetlink.c | 33 +++++++++++ 5 files changed, 183 insertions(+), 15 deletions(-) base-commit: bd0e3c391ff3c3c5c9b41227d6b7433fcf4d9c61 -- 2.34.1