Loading Documentation/kernel-parameters.txt +4 −0 Original line number Diff line number Diff line Loading @@ -1823,6 +1823,10 @@ and is between 256 and 4096 characters. It is defined in the file -1: disable all active trip points in all thermal zones <degrees C>: override all lowest active trip points thermal.crt= [HW,ACPI] -1: disable all critical trip points in all thermal zones <degrees C>: lower all critical trip points thermal.nocrt= [HW,ACPI] Set to disable actions on ACPI thermal zone critical and hot trip points. Loading drivers/acpi/thermal.c +40 −7 Original line number Diff line number Diff line Loading @@ -77,23 +77,27 @@ MODULE_LICENSE("GPL"); static int act; module_param(act, int, 0644); MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.\n"); MODULE_PARM_DESC(act, "Disable or override all lowest active trip points."); static int crt; module_param(crt, int, 0644); MODULE_PARM_DESC(crt, "Disable or lower all critical trip points."); static int tzp; module_param(tzp, int, 0444); MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n"); MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds."); static int nocrt; module_param(nocrt, int, 0); MODULE_PARM_DESC(nocrt, "Set to disable action on ACPI thermal zone critical and hot trips.\n"); MODULE_PARM_DESC(nocrt, "Set to take no action upon ACPI thermal zone critical trips points."); static int off; module_param(off, int, 0); MODULE_PARM_DESC(off, "Set to disable ACPI thermal support.\n"); MODULE_PARM_DESC(off, "Set to disable ACPI thermal support."); static int psv; module_param(psv, int, 0644); MODULE_PARM_DESC(psv, "Disable or override all passive trip points.\n"); MODULE_PARM_DESC(psv, "Disable or override all passive trip points."); static int acpi_thermal_add(struct acpi_device *device); static int acpi_thermal_remove(struct acpi_device *device, int type); Loading Loading @@ -340,6 +344,20 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz) tz->trips.critical.temperature)); } if (tz->trips.critical.flags.valid == 1) { if (crt == -1) { tz->trips.critical.flags.valid = 0; } else if (crt > 0) { unsigned long crt_k = CELSIUS_TO_KELVIN(crt); /* * Allow override to lower critical threshold */ if (crt_k < tz->trips.critical.temperature) tz->trips.critical.temperature = crt_k; } } /* Critical Sleep (optional) */ status = Loading Loading @@ -1067,9 +1085,9 @@ static int acpi_thermal_add_fs(struct acpi_device *device) entry->owner = THIS_MODULE; } /* 'trip_points' [R/W] */ /* 'trip_points' [R] */ entry = create_proc_entry(ACPI_THERMAL_FILE_TRIP_POINTS, S_IFREG | S_IRUGO | S_IWUSR, S_IRUGO, acpi_device_dir(device)); if (!entry) return -ENODEV; Loading Loading @@ -1339,6 +1357,13 @@ static int thermal_act(struct dmi_system_id *d) { } return 0; } static int thermal_nocrt(struct dmi_system_id *d) { printk(KERN_NOTICE "ACPI: %s detected: " "disabling all critical thermal trip point actions.\n", d->ident); nocrt = 1; return 0; } static int thermal_tzp(struct dmi_system_id *d) { if (tzp == 0) { Loading Loading @@ -1387,6 +1412,14 @@ static struct dmi_system_id thermal_dmi_table[] __initdata = { DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"), }, }, { .callback = thermal_nocrt, .ident = "Gigabyte GA-7ZX", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), DMI_MATCH(DMI_BOARD_NAME, "7ZX"), }, }, {} }; #endif /* CONFIG_DMI */ Loading Loading
Documentation/kernel-parameters.txt +4 −0 Original line number Diff line number Diff line Loading @@ -1823,6 +1823,10 @@ and is between 256 and 4096 characters. It is defined in the file -1: disable all active trip points in all thermal zones <degrees C>: override all lowest active trip points thermal.crt= [HW,ACPI] -1: disable all critical trip points in all thermal zones <degrees C>: lower all critical trip points thermal.nocrt= [HW,ACPI] Set to disable actions on ACPI thermal zone critical and hot trip points. Loading
drivers/acpi/thermal.c +40 −7 Original line number Diff line number Diff line Loading @@ -77,23 +77,27 @@ MODULE_LICENSE("GPL"); static int act; module_param(act, int, 0644); MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.\n"); MODULE_PARM_DESC(act, "Disable or override all lowest active trip points."); static int crt; module_param(crt, int, 0644); MODULE_PARM_DESC(crt, "Disable or lower all critical trip points."); static int tzp; module_param(tzp, int, 0444); MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n"); MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds."); static int nocrt; module_param(nocrt, int, 0); MODULE_PARM_DESC(nocrt, "Set to disable action on ACPI thermal zone critical and hot trips.\n"); MODULE_PARM_DESC(nocrt, "Set to take no action upon ACPI thermal zone critical trips points."); static int off; module_param(off, int, 0); MODULE_PARM_DESC(off, "Set to disable ACPI thermal support.\n"); MODULE_PARM_DESC(off, "Set to disable ACPI thermal support."); static int psv; module_param(psv, int, 0644); MODULE_PARM_DESC(psv, "Disable or override all passive trip points.\n"); MODULE_PARM_DESC(psv, "Disable or override all passive trip points."); static int acpi_thermal_add(struct acpi_device *device); static int acpi_thermal_remove(struct acpi_device *device, int type); Loading Loading @@ -340,6 +344,20 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz) tz->trips.critical.temperature)); } if (tz->trips.critical.flags.valid == 1) { if (crt == -1) { tz->trips.critical.flags.valid = 0; } else if (crt > 0) { unsigned long crt_k = CELSIUS_TO_KELVIN(crt); /* * Allow override to lower critical threshold */ if (crt_k < tz->trips.critical.temperature) tz->trips.critical.temperature = crt_k; } } /* Critical Sleep (optional) */ status = Loading Loading @@ -1067,9 +1085,9 @@ static int acpi_thermal_add_fs(struct acpi_device *device) entry->owner = THIS_MODULE; } /* 'trip_points' [R/W] */ /* 'trip_points' [R] */ entry = create_proc_entry(ACPI_THERMAL_FILE_TRIP_POINTS, S_IFREG | S_IRUGO | S_IWUSR, S_IRUGO, acpi_device_dir(device)); if (!entry) return -ENODEV; Loading Loading @@ -1339,6 +1357,13 @@ static int thermal_act(struct dmi_system_id *d) { } return 0; } static int thermal_nocrt(struct dmi_system_id *d) { printk(KERN_NOTICE "ACPI: %s detected: " "disabling all critical thermal trip point actions.\n", d->ident); nocrt = 1; return 0; } static int thermal_tzp(struct dmi_system_id *d) { if (tzp == 0) { Loading Loading @@ -1387,6 +1412,14 @@ static struct dmi_system_id thermal_dmi_table[] __initdata = { DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"), }, }, { .callback = thermal_nocrt, .ident = "Gigabyte GA-7ZX", .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), DMI_MATCH(DMI_BOARD_NAME, "7ZX"), }, }, {} }; #endif /* CONFIG_DMI */ Loading