Skip to content

Commit

Permalink
export thermal notification to userspace when nocrt is set
Browse files Browse the repository at this point in the history
module parameter is used to prevent the thermal_zone action upon
critical trip points.
But exporting this notification to userspace is still useful.
By setting nocrt with this patch applied, ACPI will take no action
but exporting the events to userspace upon critical/hot trip points.

http://bugzilla.kernel.org/show_bug.cgi?id=9139

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Zhang Rui authored and Len Brown committed Dec 7, 2007
1 parent 09b56ad commit 223630f
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions drivers/acpi/thermal.c
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ static int acpi_thermal_get_devices(struct acpi_thermal *tz)

static int acpi_thermal_critical(struct acpi_thermal *tz)
{
if (!tz || !tz->trips.critical.flags.valid || nocrt)
if (!tz || !tz->trips.critical.flags.valid)
return -EINVAL;

if (tz->temperature >= tz->trips.critical.temperature) {
Expand All @@ -501,24 +501,27 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)
} else if (tz->trips.critical.flags.enabled)
tz->trips.critical.flags.enabled = 0;

printk(KERN_EMERG
"Critical temperature reached (%ld C), shutting down.\n",
KELVIN_TO_CELSIUS(tz->temperature));
acpi_bus_generate_proc_event(tz->device, ACPI_THERMAL_NOTIFY_CRITICAL,
tz->trips.critical.flags.enabled);
acpi_bus_generate_netlink_event(tz->device->pnp.device_class,
tz->device->dev.bus_id,
ACPI_THERMAL_NOTIFY_CRITICAL,
tz->trips.critical.flags.enabled);

orderly_poweroff(true);
/* take no action if nocrt is set */
if(!nocrt) {
printk(KERN_EMERG
"Critical temperature reached (%ld C), shutting down.\n",
KELVIN_TO_CELSIUS(tz->temperature));
orderly_poweroff(true);
}

return 0;
}

static int acpi_thermal_hot(struct acpi_thermal *tz)
{
if (!tz || !tz->trips.hot.flags.valid || nocrt)
if (!tz || !tz->trips.hot.flags.valid)
return -EINVAL;

if (tz->temperature >= tz->trips.hot.temperature) {
Expand All @@ -534,7 +537,7 @@ static int acpi_thermal_hot(struct acpi_thermal *tz)
ACPI_THERMAL_NOTIFY_HOT,
tz->trips.hot.flags.enabled);

/* TBD: Call user-mode "sleep(S4)" function */
/* TBD: Call user-mode "sleep(S4)" function if nocrt is cleared */

return 0;
}
Expand Down

0 comments on commit 223630f

Please sign in to comment.