Skip to contentSkip to conversation

Show devices for active/passive cooling in thermal trip_points file

PATCH In review Thomas Renninger 2 participants 3 messages Nov 19, 2006 – May 20, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Show devices for active/passive cooling in thermal trip_points file

Len, can you queue this one for after 2.6.19 inclusion, please. With this and a firmwarekit test it should be possible to identify not working fans as it happened on some HPs in 2.6.16 and later automatically.

Thanks,

Thomas

Show devices for active/passive cooling in thermal trip_points file

Currently the internal pointer to a ACPI handle of a device which is used for active/passive cooling at a certain temperature is exported to userspace. This pointer isn't of any use for userspace.

Instead, export the device name, so
that automated tests (e.g. linuxfirmwarekit) can check whether the device (at least fans for active cooling trip points) really get activated on the right temperature.

 drivers/acpi/thermal.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)
drivers/acpi/thermal.c +7 -6
Index: linux-2.6.19-rc6/drivers/acpi/thermal.c
===================================================================
@@ -838,6 +838,7 @@ static int acpi_thermal_temp_open_fs(str
 static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
 {
 	struct acpi_thermal *tz = (struct acpi_thermal *)seq->private;
+	struct acpi_device *device;
 	int i = 0;
 	int j = 0;
 
@@ -860,9 +861,8 @@ static int acpi_thermal_trip_seq_show(st
 			   tz->trips.passive.tc1, tz->trips.passive.tc2,
 			   tz->trips.passive.tsp);
 		for (j = 0; j < tz->trips.passive.devices.count; j++) {
-
-			seq_printf(seq, "0x%p ",
-				   tz->trips.passive.devices.handles[j]);
+			acpi_bus_get_device(tz->trips.passive.devices.handles[j], &device);
+			seq_printf(seq, "%4.4s ", acpi_device_bid(device));
 		}
 		seq_puts(seq, "\n");
 	}
@@ -873,9 +873,10 @@ static int acpi_thermal_trip_seq_show(st
 		seq_printf(seq, "active[%d]:               %ld C: devices=",
 			   i,
 			   KELVIN_TO_CELSIUS(tz->trips.active[i].temperature));
-		for (j = 0; j < tz->trips.active[i].devices.count; j++)
-			seq_printf(seq, "0x%p ",
-				   tz->trips.active[i].devices.handles[j]);
+		for (j = 0; j < tz->trips.active[i].devices.count; j++){
+			acpi_bus_get_device(tz->trips.active[i].devices.handles[j], &device);
+			seq_printf(seq, "%4.4s ", acpi_device_bid(device));
+		}
 		seq_puts(seq, "\n");
 	}
 
#1 lore raw
Quoted 4 lines · Thomas Renninger

Len, can you queue this one for after 2.6.19 inclusion, please. With this and a firmwarekit test it should be possible to identify not working fans as it happened on some HPs in 2.6.16 and later automatically.

Here is an example of how trip_points file looks like then, got some time to boot on a machine with active trip points to make the intend of the patch more obvious:

trip_points file:
-----------------

critical (S5):           105 C
passive:                 100 C: tc1=1 tc2=2 tsp=100 devices=C000
active[0]:               80 C: devices=C25C
active[1]:               65 C: devices=C25D
active[2]:               55 C: devices=C25E
active[3]:               35 C: devices=C25F

ls -d /proc/acpi/fan/*:
----------------------
/proc/acpi/fan/C25C
/proc/acpi/fan/C25D
/proc/acpi/fan/C25E
/proc/acpi/fan/C25F

ls -d /proc/acpi/processor/*:
-----------------------------
/proc/acpi/processor/C000

reviewer
#2 lore raw
In reply to Thomas Renninger

Applied a refreshed version of this patch.
(thought I had done so a while ago)

thanks,
-Len

Quoted 71 lines · Thomas Renninger

Len, can you queue this one for after 2.6.19 inclusion, please. With this and a firmwarekit test it should be possible to identify not working fans as it happened on some HPs in 2.6.16 and later automatically.

Thanks,

Thomas

Show devices for active/passive cooling in thermal trip_points file

Currently the internal pointer to a ACPI handle of a device which is used for active/passive cooling at a certain temperature is exported to userspace. This pointer isn't of any use for userspace.

Instead, export the device name, so
that automated tests (e.g. linuxfirmwarekit) can check whether the device (at least fans for active cooling trip points) really get activated on the right temperature.

 drivers/acpi/thermal.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

Index: linux-2.6.19-rc6/drivers/acpi/thermal.c
===================================================================

drivers/acpi/thermal.c +7 -7
@@ -838,6 +838,7 @@ static int acpi_thermal_temp_open_fs(str
 static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
 {
 	struct acpi_thermal *tz = (struct acpi_thermal *)seq->private;
+	struct acpi_device *device;
 	int i = 0;
 	int j = 0;
 
@@ -860,9 +861,8 @@ static int acpi_thermal_trip_seq_show(st
 			   tz->trips.passive.tc1, tz->trips.passive.tc2,
 			   tz->trips.passive.tsp);
 		for (j = 0; j < tz->trips.passive.devices.count; j++) {
-
-			seq_printf(seq, "0x%p ",
-				   tz->trips.passive.devices.handles[j]);
+			acpi_bus_get_device(tz->trips.passive.devices.handles[j], &device);
+			seq_printf(seq, "%4.4s ", acpi_device_bid(device));
 		}
 		seq_puts(seq, "\n");
 	}
@@ -873,9 +873,10 @@ static int acpi_thermal_trip_seq_show(st
 		seq_printf(seq, "active[%d]:               %ld C: devices=",
 			   i,
 			   KELVIN_TO_CELSIUS(tz->trips.active[i].temperature));
-		for (j = 0; j < tz->trips.active[i].devices.count; j++)
-			seq_printf(seq, "0x%p ",
-				   tz->trips.active[i].devices.handles[j]);
+		for (j = 0; j < tz->trips.active[i].devices.count; j++){
+			acpi_bus_get_device(tz->trips.active[i].devices.handles[j], &device);
+			seq_printf(seq, "%4.4s ", acpi_device_bid(device));
+		}
 		seq_puts(seq, "\n");
 	}
 
 
 
 
-

To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html