linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali.rohar@gmail.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Arnd Bergmann <arnd@arndb.de>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org, Valdis.Kletnieks@vt.edu,
	Steven Honeyman <stevenhoneyman@gmail.com>,
	Jean Delvare <jdelvare@suse.de>,
	Gabriele Mazzotta <gabriele.mzt@gmail.com>,
	Jochen Eisinger <jochen@penguin-breeder.org>
Subject: Re: [PATCH v2 1/2] i8k: Autodetect maximal fan speed and fan RPM multiplier
Date: Sun, 21 Dec 2014 10:13:36 +0100	[thread overview]
Message-ID: <201412211013.36508@pali> (raw)
In-Reply-To: <5495C228.4030400@roeck-us.net>

[-- Attachment #1: Type: Text/Plain, Size: 3411 bytes --]

On Saturday 20 December 2014 19:38:32 Guenter Roeck wrote:
> > +	if (fan_mult <= 0) {
> 
> Wonder what to do in the < 0 case. It might be better to make
> the variable and the module parameter an unsigned int to
> cover that case, since a negative multiplier doesn't really
> make sense. Same for fan_max.
> 

In some other kernel modules negative value means autodetect. I 
think we can do that too.

> > +		/*
> > +		 * Autodetect fan multiplier for each fan based on
> > nominal rpm +		 * First set default fan multiplier for each
> > fan +		 * And if it reports rpm value too high then set
> > multiplier to 1 +		 *
> > +		 * Try also setting multiplier from current rpm, but 
this
> > will +		 * work only in case when fan is not turned off. It
> > is better +		 * then nothing for machines which does not
> > support nominal rpm +		 * SMM function.
> > +		 */
> > +		for (fan = 0; fan < ARRAY_SIZE(i8k_fan_mult); ++fan) {
> > +			i8k_fan_mult[fan] = I8K_FAN_DEFAULT_MULT;
> > +			if (i8k_get_fan_speed(fan) > I8K_FAN_MAX_RPM) {
> > +				i8k_fan_mult[fan] = 1;
> > +				continue;
> > +			}
> 
> What if i8k_get_fan_speed(fan) returns an error ? Doesn't that
> imply that the fan does not exist, and that you would not
> need the second loop in the first place ?
> 

See my other email "[PATCH] i8k: Add support for fan labels". DOS 
binary check for fan presence by another function. I bet it is 
because fan could have same problem as temperature sensors. If 
fan is on GPU and GPU is turned off reading fan rpm will fail. 
But my laptop (with GPU which can be turned on/off) does not have 
GPU fan so this is just my assumption.

> > +			for (val = 0; val < 256; ++val) {
> > +				ret = i8k_get_fan_nominal_speed(fan, val);
> > +				if (ret > I8K_FAN_MAX_RPM) {
> > +					i8k_fan_mult[fan] = 1;
> > +					break;
> > +				} else if (ret < 0) {
> > +					break;
> > +				}
> 
> Traditionally error checks come first.
> 

Ok.

> > +		for (fan = 0; fan < ARRAY_SIZE(i8k_fan_max); ++fan) {
> > +			for (val = 0; val < 256; ++val) {
> > +				if (i8k_get_fan_nominal_speed(fan, val) < 0)
> > +					break;
> > +			}
> > +			--val; /* set last value which not failed */
> > +			if (val <= 0) /* Must not be 0 (and non negative) 
*/
> > +				val = I8K_FAN_HIGH;
> > +			i8k_fan_max[fan] = val;
> 
> I kind of dislike that you are (at least potentially) looping
> through all the nominal speeds twice; not sure how long that
> will delay the boot process. I don't know if or how that can
> be solved easily, though. Either case, I would prefer
> something like
> 			i8k_fan_max = I8K_FAN_HIGH;
> 			for (val = 0; val < 256; ++val) {
> 				if (i8k_get_fan_nominal_speed(fan, val) < 0)
> 					break;
> 				i8k_fan_max = val;
> 			}
> 
> since that would take care of all the meddling at the end.
> 

Ok, I will change code.

> > +		}
> > +	} else {
> > +		/* Maximal fan speed was specified in module param or 
in
> > dmi */ +		for (fan = 0; fan < ARRAY_SIZE(i8k_fan_max);
> > ++fan) +			i8k_fan_max[fan] = fan_max;
> > 
> >   	}
> 
> Overall I think it would make sense to move the auto-detection
> code to a separate function. This is getting a bit large to
> have it all in a single function.
> 

Now when I reduced fan detection for first available fan code is 
smaller.

-- 
Pali Rohár
pali.rohar@gmail.com

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

  reply	other threads:[~2014-12-21  9:13 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-09 20:06 [PATCH 0/3] i8k: Rework fan_mult and fan_max code Pali Rohár
2014-12-09 20:06 ` [PATCH 1/3] i8k: cosmetic: distinguish between fan speed and fan rpm Pali Rohár
2014-12-09 20:23   ` Guenter Roeck
2014-12-09 20:39     ` Pali Rohár
2014-12-09 22:49       ` Guenter Roeck
2014-12-09 20:07 ` [PATCH 2/3] i8k: Autodetect maximal fan speed and fan RPM multiplier Pali Rohár
2014-12-09 20:20   ` Guenter Roeck
2014-12-09 20:23     ` Pali Rohár
2014-12-09 22:42       ` Guenter Roeck
2014-12-10 11:50         ` Pali Rohár
2014-12-10 14:08           ` Guenter Roeck
2014-12-18 11:13             ` Pali Rohár
2014-12-19 18:33               ` Guenter Roeck
2014-12-09 20:07 ` [PATCH 3/3] i8k: Remove laptop specific config data (fan_mult, fan_max) from driver Pali Rohár
2014-12-10 11:51   ` Pali Rohár
2014-12-10 13:32     ` Gabriele Mazzotta
2014-12-18 11:08       ` Pali Rohár
2014-12-18 15:08         ` Valdis.Kletnieks
2014-12-18 16:34           ` Pali Rohár
2014-12-18 16:44             ` Valdis.Kletnieks
2014-12-25 21:54         ` Gabriele Mazzotta
2014-12-27 14:13           ` Gabriele Mazzotta
2014-12-28  8:22             ` Pali Rohár
2014-12-28  8:28               ` Guenter Roeck
2014-12-28  8:46                 ` Pali Rohár
2014-12-28 15:25                   ` Gabriele Mazzotta
2014-12-28 15:48                     ` Pali Rohár
2014-12-28 16:02                       ` Gabriele Mazzotta
2014-12-28 16:07                         ` Pali Rohár
2014-12-28 16:17                           ` Gabriele Mazzotta
2014-12-29 12:22                             ` Pali Rohár
2014-12-29 12:50                               ` Gabriele Mazzotta
2014-12-30  7:35                                 ` Guenter Roeck
2014-12-17 17:54     ` Pali Rohár
2014-12-17 18:20       ` Steven Honeyman
2014-12-18  9:02         ` Valdis.Kletnieks
2014-12-18 11:11         ` Pali Rohár
2014-12-10 13:41   ` Gabriele Mazzotta
2014-12-19 18:04 ` [PATCH v2 1/2] i8k: Autodetect maximal fan speed and fan RPM multiplier Pali Rohár
2014-12-19 18:32   ` Guenter Roeck
2014-12-19 18:51     ` Pali Rohár
2014-12-19 19:28       ` Guenter Roeck
2014-12-20  8:57         ` Pali Rohár
2014-12-20 12:04           ` Guenter Roeck
2014-12-20 12:18             ` Pali Rohár
2014-12-20 12:44               ` Guenter Roeck
2014-12-20 12:54                 ` Pali Rohár
2014-12-20 17:20                   ` Guenter Roeck
2014-12-20 17:27                     ` Steven Honeyman
2014-12-20 18:07                       ` Guenter Roeck
2014-12-21  9:06                         ` Pali Rohár
2014-12-20 18:38   ` Guenter Roeck
2014-12-21  9:13     ` Pali Rohár [this message]
2014-12-21 11:47       ` Guenter Roeck
2014-12-20 19:02   ` Guenter Roeck
2014-12-21  9:15     ` Pali Rohár
2014-12-21  9:20   ` [PATCH v3] " Pali Rohár
2014-12-21 11:57     ` Guenter Roeck
2014-12-21 12:09       ` Pali Rohár
2014-12-21 12:23         ` Guenter Roeck
2014-12-21 16:37           ` Pali Rohár
2014-12-21 16:55             ` Steven Honeyman
2014-12-21 17:25               ` Pali Rohár
2014-12-21 17:23     ` [PATCH v4] " Pali Rohár
2014-12-21 18:27       ` Guenter Roeck
2014-12-21 18:40         ` Pali Rohár
2014-12-21 18:51           ` Guenter Roeck
2014-12-21 19:56             ` Pali Rohár
2014-12-21 19:51       ` Guenter Roeck
2014-12-22 15:07         ` Pali Rohár
2014-12-23 13:52           ` Guenter Roeck
2014-12-23 19:11             ` Pali Rohár
2014-12-19 18:04 ` [PATCH v2 2/2] i8k: Remove DMI config data for Latitude E6x40 Pali Rohár

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201412211013.36508@pali \
    --to=pali.rohar@gmail.com \
    --cc=Valdis.Kletnieks@vt.edu \
    --cc=arnd@arndb.de \
    --cc=gabriele.mzt@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jdelvare@suse.de \
    --cc=jochen@penguin-breeder.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=stevenhoneyman@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).