Comment 19 for bug 1179282

Revision history for this message
vitorafsr (vitorafsr) wrote :

Hello raphzahn,

sorry for the late response.

I did some analysis and found the following.

The slow call is for querying the speed of the fan which IS present in the laptop. And, in this case, the function cannot be bypassed; the call must be made in order to know the speed. And now we reach a new problem.

This fact explain why the patch I sent in my last attachment did not worked properly: I thought the slow call happened for calling the speed of the absent fan.

So, the solution might be the one that follows, I think.

Each fan has three speeds: 0, 1 and 2. And these speeds are somehow stable. The solution is to measure each speed at boot time, and store in a variable. In the calls that follows, the kernel module will just read the state of the fan and print the associated speed, without calling the slow call. And I hope, again, that this solves.

 I'm working in the patch, and I will put it here as soon as I finish.

Answering your questions:
1. I don't know why there is a problem reading the fan speed. Perhaps it is hardware stuff :).
2. This is performed for two fans because some Dell notebook models have two fans.
3. In your example, the speed is 0, in the eighth column. If you try 'i8kfan - 2' before 'cat /proc/i8k', an number different from 0 might appear.