Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'thermal-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull thermal control updates from Rafael Wysocki:
"These add support for Intel Panther Lake processors in multiple
places, modify Intel thermal drivers to stop selecting the user space
thermal governor which is not necessary for them to work any more and
clean up the thermal core somewhat:

- Add support for Panther Lake processors in multiple places (Zhang
Rui, Srinivas Pandruvada)

- Remove explicit user_space governor selection from Intel thermal
drivers (Srinivas Pandruvada)

- Rename a few things and relocate a comment in the thermal subsystem
(Rafael Wysocki)"

* tag 'thermal-6.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
thermal: core: Rename function argument related to trip crossing
thermal: gov_bang_bang: Relocate regulation logic description
thermal: core: Rename callback functions in two governors
thermal: intel: Fix compile issue when CONFIG_NET is not defined
thermal: intel: int340x: Panther Lake power floor and workload hint support
thermal: intel: int340x: Panther Lake DLVR support
thermal: intel: Remove explicit user_space governor selection
ACPI: DPTF: Support Panther Lake
thermal: intel: int340x: processor: Enable MMIO RAPL for Panther Lake
powercap: intel_rapl: Add support for Panther Lake platform

+61 -48
+1
drivers/acpi/dptf/dptf_pch_fivr.c
··· 152 152 {"INTC1064", 0}, 153 153 {"INTC106B", 0}, 154 154 {"INTC10A3", 0}, 155 + {"INTC10D7", 0}, 155 156 {"", 0}, 156 157 }; 157 158 MODULE_DEVICE_TABLE(acpi, pch_fivr_device_ids);
+2
drivers/acpi/dptf/dptf_power.c
··· 236 236 {"INTC106D", 0}, 237 237 {"INTC10A4", 0}, 238 238 {"INTC10A5", 0}, 239 + {"INTC10D8", 0}, 240 + {"INTC10D9", 0}, 239 241 {"", 0}, 240 242 }; 241 243 MODULE_DEVICE_TABLE(acpi, int3407_device_ids);
+6
drivers/acpi/dptf/int340x_thermal.c
··· 55 55 {"INTC10A3"}, 56 56 {"INTC10A4"}, 57 57 {"INTC10A5"}, 58 + {"INTC10D4"}, 59 + {"INTC10D5"}, 60 + {"INTC10D6"}, 61 + {"INTC10D7"}, 62 + {"INTC10D8"}, 63 + {"INTC10D9"}, 58 64 {""}, 59 65 }; 60 66
+1
drivers/acpi/fan.h
··· 19 19 {"INTC1063", }, /* Fan for Meteor Lake generation */ \ 20 20 {"INTC106A", }, /* Fan for Lunar Lake generation */ \ 21 21 {"INTC10A2", }, /* Fan for Raptor Lake generation */ \ 22 + {"INTC10D6", }, /* Fan for Panther Lake generation */ \ 22 23 {"PNP0C0B", } /* Generic ACPI fan */ 23 24 24 25 #define ACPI_FPS_NAME_LEN 20
+1
drivers/powercap/intel_rapl_common.c
··· 1265 1265 X86_MATCH_VFM(INTEL_SAPPHIRERAPIDS_X, &rapl_defaults_spr_server), 1266 1266 X86_MATCH_VFM(INTEL_EMERALDRAPIDS_X, &rapl_defaults_spr_server), 1267 1267 X86_MATCH_VFM(INTEL_LUNARLAKE_M, &rapl_defaults_core), 1268 + X86_MATCH_VFM(INTEL_PANTHERLAKE_L, &rapl_defaults_core), 1268 1269 X86_MATCH_VFM(INTEL_ARROWLAKE_H, &rapl_defaults_core), 1269 1270 X86_MATCH_VFM(INTEL_ARROWLAKE, &rapl_defaults_core), 1270 1271 X86_MATCH_VFM(INTEL_ARROWLAKE_U, &rapl_defaults_core),
+28 -29
drivers/thermal/gov_bang_bang.c
··· 7 7 * Based on step_wise.c with following Copyrights: 8 8 * Copyright (C) 2012 Intel Corp 9 9 * Copyright (C) 2012 Durgadoss R <durgadoss.r@intel.com> 10 + * 11 + * Regulation Logic: a two point regulation, deliver cooling state depending 12 + * on the previous state shown in this diagram: 13 + * 14 + * Fan: OFF ON 15 + * 16 + * | 17 + * | 18 + * trip_temp: +---->+ 19 + * | | ^ 20 + * | | | 21 + * | | Temperature 22 + * (trip_temp - hyst): +<----+ 23 + * | 24 + * | 25 + * | 26 + * 27 + * * If the fan is not running and temperature exceeds trip_temp, the fan 28 + * gets turned on. 29 + * * In case the fan is running, temperature must fall below 30 + * (trip_temp - hyst) so that the fan gets turned off again. 10 31 */ 11 32 12 33 #include <linux/thermal.h> ··· 55 34 } 56 35 57 36 /** 58 - * bang_bang_control - controls devices associated with the given zone 37 + * bang_bang_trip_crossed - controls devices associated with the given zone 59 38 * @tz: thermal_zone_device 60 39 * @trip: the trip point 61 - * @crossed_up: whether or not the trip has been crossed on the way up 62 - * 63 - * Regulation Logic: a two point regulation, deliver cooling state depending 64 - * on the previous state shown in this diagram: 65 - * 66 - * Fan: OFF ON 67 - * 68 - * | 69 - * | 70 - * trip_temp: +---->+ 71 - * | | ^ 72 - * | | | 73 - * | | Temperature 74 - * (trip_temp - hyst): +<----+ 75 - * | 76 - * | 77 - * | 78 - * 79 - * * If the fan is not running and temperature exceeds trip_temp, the fan 80 - * gets turned on. 81 - * * In case the fan is running, temperature must fall below 82 - * (trip_temp - hyst) so that the fan gets turned off again. 83 - * 40 + * @upward: whether or not the trip has been crossed on the way up 84 41 */ 85 - static void bang_bang_control(struct thermal_zone_device *tz, 86 - const struct thermal_trip *trip, 87 - bool crossed_up) 42 + static void bang_bang_trip_crossed(struct thermal_zone_device *tz, 43 + const struct thermal_trip *trip, 44 + bool upward) 88 45 { 89 46 const struct thermal_trip_desc *td = trip_to_trip_desc(trip); 90 47 struct thermal_instance *instance; ··· 74 75 tz->temperature, trip->hysteresis); 75 76 76 77 list_for_each_entry(instance, &td->thermal_instances, trip_node) 77 - bang_bang_set_instance_target(instance, crossed_up); 78 + bang_bang_set_instance_target(instance, upward); 78 79 } 79 80 80 81 static void bang_bang_manage(struct thermal_zone_device *tz) ··· 122 123 123 124 static struct thermal_governor thermal_gov_bang_bang = { 124 125 .name = "bang_bang", 125 - .trip_crossed = bang_bang_control, 126 + .trip_crossed = bang_bang_trip_crossed, 126 127 .manage = bang_bang_manage, 127 128 .update_tz = bang_bang_update_tz, 128 129 };
+6 -6
drivers/thermal/gov_user_space.c
··· 23 23 } 24 24 25 25 /** 26 - * notify_user_space - Notifies user space about thermal events 26 + * user_space_trip_crossed - Notify user space about trip crossing events 27 27 * @tz: thermal_zone_device 28 28 * @trip: trip point 29 - * @crossed_up: whether or not the trip has been crossed on the way up 29 + * @upward: whether or not the trip has been crossed on the way up 30 30 * 31 31 * This function notifies the user space through UEvents. 32 32 */ 33 - static void notify_user_space(struct thermal_zone_device *tz, 34 - const struct thermal_trip *trip, 35 - bool crossed_up) 33 + static void user_space_trip_crossed(struct thermal_zone_device *tz, 34 + const struct thermal_trip *trip, 35 + bool upward) 36 36 { 37 37 char *thermal_prop[5]; 38 38 int i; ··· 52 52 53 53 static struct thermal_governor thermal_gov_user_space = { 54 54 .name = "user_space", 55 - .trip_crossed = notify_user_space, 55 + .trip_crossed = user_space_trip_crossed, 56 56 .bind_to_tz = user_space_bind, 57 57 }; 58 58 THERMAL_GOVERNOR_DECLARE(thermal_gov_user_space);
+2 -2
drivers/thermal/intel/Kconfig
··· 21 21 22 22 config X86_PKG_TEMP_THERMAL 23 23 tristate "X86 package temperature thermal driver" 24 - depends on X86_THERMAL_VECTOR 25 - select THERMAL_GOV_USER_SPACE 24 + depends on X86_THERMAL_VECTOR && NET 25 + select THERMAL_NETLINK 26 26 select INTEL_TCC 27 27 default m 28 28 help
+2 -2
drivers/thermal/intel/int340x_thermal/Kconfig
··· 5 5 6 6 config INT340X_THERMAL 7 7 tristate "ACPI INT340X thermal drivers" 8 - depends on X86_64 && ACPI && PCI 9 - select THERMAL_GOV_USER_SPACE 8 + depends on X86_64 && ACPI && PCI && NET 9 + select THERMAL_NETLINK 10 10 select ACPI_THERMAL_REL 11 11 select ACPI_FAN 12 12 select ACPI_THERMAL_LIB
+1 -1
drivers/thermal/intel/int340x_thermal/int3400_thermal.c
··· 521 521 }; 522 522 523 523 static struct thermal_zone_params int3400_thermal_params = { 524 - .governor_name = "user_space", 525 524 .no_hwmon = true, 526 525 }; 527 526 ··· 689 690 {"INTC1042", 0}, 690 691 {"INTC1068", 0}, 691 692 {"INTC10A0", 0}, 693 + {"INTC10D4", 0}, 692 694 {} 693 695 }; 694 696
+1
drivers/thermal/intel/int340x_thermal/int3403_thermal.c
··· 275 275 {"INTC1062", 0}, 276 276 {"INTC1069", 0}, 277 277 {"INTC10A1", 0}, 278 + {"INTC10D5", 0}, 278 279 {"", 0}, 279 280 }; 280 281 MODULE_DEVICE_TABLE(acpi, int3403_device_ids);
-1
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c
··· 105 105 } 106 106 107 107 static struct thermal_zone_params int340x_thermal_params = { 108 - .governor_name = "user_space", 109 108 .no_hwmon = true, 110 109 }; 111 110
+1
drivers/thermal/intel/int340x_thermal/processor_thermal_device.h
··· 30 30 #define PCI_DEVICE_ID_INTEL_RPL_THERMAL 0xA71D 31 31 #define PCI_DEVICE_ID_INTEL_SKL_THERMAL 0x1903 32 32 #define PCI_DEVICE_ID_INTEL_TGL_THERMAL 0x9A03 33 + #define PCI_DEVICE_ID_INTEL_PTL_THERMAL 0xB01D 33 34 34 35 struct power_config { 35 36 u32 index;
+3 -1
drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c
··· 272 272 }; 273 273 274 274 static struct thermal_zone_params tzone_params = { 275 - .governor_name = "user_space", 276 275 .no_hwmon = true, 277 276 }; 278 277 ··· 494 495 PROC_THERMAL_FEATURE_DVFS | PROC_THERMAL_FEATURE_DLVR | PROC_THERMAL_FEATURE_WT_HINT) }, 495 496 { PCI_DEVICE_DATA(INTEL, RPL_THERMAL, PROC_THERMAL_FEATURE_RAPL | 496 497 PROC_THERMAL_FEATURE_FIVR | PROC_THERMAL_FEATURE_DVFS | PROC_THERMAL_FEATURE_WT_REQ) }, 498 + { PCI_DEVICE_DATA(INTEL, PTL_THERMAL, PROC_THERMAL_FEATURE_RAPL | 499 + PROC_THERMAL_FEATURE_DLVR | PROC_THERMAL_FEATURE_MSI_SUPPORT | 500 + PROC_THERMAL_FEATURE_WT_HINT | PROC_THERMAL_FEATURE_POWER_FLOOR) }, 497 501 { }, 498 502 }; 499 503
+5 -5
drivers/thermal/thermal_core.c
··· 453 453 static void thermal_governor_trip_crossed(struct thermal_governor *governor, 454 454 struct thermal_zone_device *tz, 455 455 const struct thermal_trip *trip, 456 - bool crossed_up) 456 + bool upward) 457 457 { 458 458 if (trip->type == THERMAL_TRIP_HOT || trip->type == THERMAL_TRIP_CRITICAL) 459 459 return; 460 460 461 461 if (governor->trip_crossed) 462 - governor->trip_crossed(tz, trip, crossed_up); 462 + governor->trip_crossed(tz, trip, upward); 463 463 } 464 464 465 465 static void thermal_trip_crossed(struct thermal_zone_device *tz, 466 466 struct thermal_trip_desc *td, 467 467 struct thermal_governor *governor, 468 - bool crossed_up) 468 + bool upward) 469 469 { 470 470 const struct thermal_trip *trip = &td->trip; 471 471 472 - if (crossed_up) { 472 + if (upward) { 473 473 if (trip->type == THERMAL_TRIP_PASSIVE) 474 474 tz->passive++; 475 475 else if (trip->type == THERMAL_TRIP_CRITICAL || ··· 486 486 thermal_notify_tz_trip_down(tz, trip); 487 487 thermal_debug_tz_trip_down(tz, trip); 488 488 } 489 - thermal_governor_trip_crossed(governor, tz, trip, crossed_up); 489 + thermal_governor_trip_crossed(governor, tz, trip, upward); 490 490 } 491 491 492 492 void thermal_zone_set_trip_hyst(struct thermal_zone_device *tz,
+1 -1
drivers/thermal/thermal_core.h
··· 56 56 void (*unbind_from_tz)(struct thermal_zone_device *tz); 57 57 void (*trip_crossed)(struct thermal_zone_device *tz, 58 58 const struct thermal_trip *trip, 59 - bool crossed_up); 59 + bool upward); 60 60 void (*manage)(struct thermal_zone_device *tz); 61 61 void (*update_tz)(struct thermal_zone_device *tz, 62 62 enum thermal_notify_event reason);