All of lore.kernel.org
 help / color / mirror / Atom feed
From: Henrik Rydberg <rydberg@euromail.se>
To: guenter.roeck@ericsson.com
Cc: Jean Delvare <khali@linux-fr.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a
Date: Tue, 09 Nov 2010 19:32:44 +0000	[thread overview]
Message-ID: <4CD9A1DC.2000407@euromail.se> (raw)
In-Reply-To: <1289329469.22931.221.camel@groeck-laptop>

Hi Guenter,

>> +/*

>> + * applesmc_init_smcreg_try - Try to initialize register cache. Idempotent.
>> + */
>> +static int applesmc_init_smcreg_try(void)
>> +{
>> +       struct applesmc_registers *s = &smcreg;
>> +       int ret;
>> +
>> +       if (s->init_complete)
>> +               return 0;
>> +
>> +       mutex_init(&s->mutex);
>> +
> I am a bit concerned that mutex_init() can be called multiple times. Are
> you sure this is safe ?


mutex_destroy() is defined as a nop, so I guess the question is whether anything
could be holding the lock when entering a second init. There are no sysfs files
created at that point, so I would say no. The mutex could be put back with a
static initializer, if this is not satisfactory. The real reason to move it to
the smcreg struct was to force a rename of the mutex itself.

> 
>> +       ret = read_register_count(&s->key_count);
>> +       if (ret)
>> +               return ret;
>> +
>> +       if (!s->cache)
>> +               s->cache = kcalloc(s->key_count, sizeof(*s->cache), GFP_KERNEL);
>> +       if (!s->cache)
>> +               return -ENOMEM;
>> +
>> +       s->init_complete = true;
>> +
>> +       pr_info("key=%d\n", s->key_count);
>> +
> Hope that means more to macbook users than it does to me ;).


It means a lot from a diagnostic point of view - a normal user does not really
care about the dmesg output anyways. :-)

>> +static int applesmc_init_smcreg(void)
>> +{
>> +       int ms, ret;
>> +
>> +       for (ms = 0; ms < INIT_TIMEOUT_MSECS; ms += INIT_WAIT_MSECS) {
>> +               ret = applesmc_init_smcreg_try();
>> +               if (!ret)
>> +                       return 0;
>> +               pr_warn("slow init, retrying\n");
> 
> INIT_WAIT_MS is 50ms, so you issue this warning every 50ms for up to
> five seconds. Pretty noisy... sure that is what you want ? Also, does it
> really make sense to retry if the error is ENOMEM ?


With the empirical failure rate, it is extremely unlikely to get more than a
couple of failures in a row - information which in itself could be very useful.
A direct escape on ENOMEM makes sense, though.

Changing the place of the mutex will ripple through all patches, so I will
resend from this one onwards. I suppose you have more comments on the following
patches?

Thanks,
Henrik

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

WARNING: multiple messages have this Message-ID (diff)
From: Henrik Rydberg <rydberg@euromail.se>
To: guenter.roeck@ericsson.com
Cc: Jean Delvare <khali@linux-fr.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2)
Date: Tue, 09 Nov 2010 20:32:44 +0100	[thread overview]
Message-ID: <4CD9A1DC.2000407@euromail.se> (raw)
In-Reply-To: <1289329469.22931.221.camel@groeck-laptop>

Hi Guenter,

>> +/*

>> + * applesmc_init_smcreg_try - Try to initialize register cache. Idempotent.
>> + */
>> +static int applesmc_init_smcreg_try(void)
>> +{
>> +       struct applesmc_registers *s = &smcreg;
>> +       int ret;
>> +
>> +       if (s->init_complete)
>> +               return 0;
>> +
>> +       mutex_init(&s->mutex);
>> +
> I am a bit concerned that mutex_init() can be called multiple times. Are
> you sure this is safe ?


mutex_destroy() is defined as a nop, so I guess the question is whether anything
could be holding the lock when entering a second init. There are no sysfs files
created at that point, so I would say no. The mutex could be put back with a
static initializer, if this is not satisfactory. The real reason to move it to
the smcreg struct was to force a rename of the mutex itself.

> 
>> +       ret = read_register_count(&s->key_count);
>> +       if (ret)
>> +               return ret;
>> +
>> +       if (!s->cache)
>> +               s->cache = kcalloc(s->key_count, sizeof(*s->cache), GFP_KERNEL);
>> +       if (!s->cache)
>> +               return -ENOMEM;
>> +
>> +       s->init_complete = true;
>> +
>> +       pr_info("key=%d\n", s->key_count);
>> +
> Hope that means more to macbook users than it does to me ;).


It means a lot from a diagnostic point of view - a normal user does not really
care about the dmesg output anyways. :-)

>> +static int applesmc_init_smcreg(void)
>> +{
>> +       int ms, ret;
>> +
>> +       for (ms = 0; ms < INIT_TIMEOUT_MSECS; ms += INIT_WAIT_MSECS) {
>> +               ret = applesmc_init_smcreg_try();
>> +               if (!ret)
>> +                       return 0;
>> +               pr_warn("slow init, retrying\n");
> 
> INIT_WAIT_MS is 50ms, so you issue this warning every 50ms for up to
> five seconds. Pretty noisy... sure that is what you want ? Also, does it
> really make sense to retry if the error is ENOMEM ?


With the empirical failure rate, it is extremely unlikely to get more than a
couple of failures in a row - information which in itself could be very useful.
A direct escape on ENOMEM makes sense, though.

Changing the place of the mutex will ripple through all patches, so I will
resend from this one onwards. I suppose you have more comments on the following
patches?

Thanks,
Henrik

  reply	other threads:[~2010-11-09 19:32 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-09 15:15 [lm-sensors] [PATCH 00/11] hwmon: applesmc: Dynamic configuration Henrik Rydberg
2010-11-09 15:15 ` [PATCH 00/11] hwmon: applesmc: Dynamic configuration rewrite (rev2) Henrik Rydberg
2010-11-09 15:15 ` [lm-sensors] [PATCH 01/11] hwmon: applesmc: Add MacBookAir3, 1(3, Henrik Rydberg
2010-11-09 15:15   ` [PATCH 01/11] hwmon: applesmc: Add MacBookAir3,1(3,2) support Henrik Rydberg
2010-11-09 18:56   ` [lm-sensors] [PATCH 01/11] hwmon: applesmc: Add MacBookAir3, 1(3, Guenter Roeck
2010-11-09 18:56     ` [PATCH 01/11] hwmon: applesmc: Add MacBookAir3,1(3,2) support Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 02/11] hwmon: applesmc: Relax the severity of Henrik Rydberg
2010-11-09 15:15   ` [PATCH 02/11] hwmon: applesmc: Relax the severity of device init failure (rev2) Henrik Rydberg
2010-11-09 18:57   ` [lm-sensors] [PATCH 02/11] hwmon: applesmc: Relax the severity Guenter Roeck
2010-11-09 18:57     ` [PATCH 02/11] hwmon: applesmc: Relax the severity of device init failure (rev2) Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 03/11] drivers/hwmon/applesmc.c: Use pr_fmt and Henrik Rydberg
2010-11-09 15:15   ` [PATCH 03/11] drivers/hwmon/applesmc.c: Use pr_fmt and pr_<level> Henrik Rydberg
2010-11-09 18:57   ` [lm-sensors] [PATCH 03/11] drivers/hwmon/applesmc.c: Use pr_fmt Guenter Roeck
2010-11-09 18:57     ` [PATCH 03/11] drivers/hwmon/applesmc.c: Use pr_fmt and pr_<level> Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a register Henrik Rydberg
2010-11-09 15:15   ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Henrik Rydberg
2010-11-09 19:04   ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-09 19:04     ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Guenter Roeck
2010-11-09 19:32     ` Henrik Rydberg [this message]
2010-11-09 19:32       ` Henrik Rydberg
2010-11-09 20:53       ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-09 20:53         ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Guenter Roeck
2010-11-10 10:57         ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Henrik Rydberg
2010-11-10 10:57           ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Henrik Rydberg
2010-11-10 15:42           ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-10 15:42             ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Guenter Roeck
2010-11-10 17:14             ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Henrik Rydberg
2010-11-10 17:14               ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Henrik Rydberg
2010-11-10 17:57               ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-10 17:57                 ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Guenter Roeck
2010-11-09 22:15       ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-09 22:15         ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev2) Guenter Roeck
2010-11-10 10:58   ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a register Henrik Rydberg
2010-11-10 10:58     ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev3) Henrik Rydberg
2010-11-10 10:58     ` [lm-sensors] [PATCH 05/11] hwmon: applesmc: Dynamic creation of Henrik Rydberg
2010-11-10 10:58       ` [PATCH 05/11] hwmon: applesmc: Dynamic creation of temperature files (rev3) Henrik Rydberg
2010-11-10 18:07       ` [lm-sensors] [PATCH 05/11] hwmon: applesmc: Dynamic creation of Guenter Roeck
2010-11-10 18:07         ` [PATCH 05/11] hwmon: applesmc: Dynamic creation of temperature files (rev3) Guenter Roeck
2010-11-10 10:58     ` [lm-sensors] [PATCH 07/11] hwmon: applesmc: Extract all features Henrik Rydberg
2010-11-10 10:58       ` [PATCH 07/11] hwmon: applesmc: Extract all features generically (rev3) Henrik Rydberg
2010-11-10 18:08       ` [lm-sensors] [PATCH 07/11] hwmon: applesmc: Extract all Guenter Roeck
2010-11-10 18:08         ` [PATCH 07/11] hwmon: applesmc: Extract all features generically (rev3) Guenter Roeck
2010-11-10 18:05     ` [lm-sensors] [PATCH 04/11] hwmon: applesmc: Introduce a Guenter Roeck
2010-11-10 18:05       ` [PATCH 04/11] hwmon: applesmc: Introduce a register lookup table (rev3) Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 05/11] hwmon: applesmc: Dynamic creation of Henrik Rydberg
2010-11-09 15:15   ` [PATCH 05/11] hwmon: applesmc: Dynamic creation of temperature files (rev2) Henrik Rydberg
2010-11-09 15:15 ` [lm-sensors] [PATCH 06/11] hwmon: applesmc: Handle new temperature Henrik Rydberg
2010-11-09 15:15   ` [PATCH 06/11] hwmon: applesmc: Handle new temperature format (rev2) Henrik Rydberg
2010-11-10 18:07   ` [lm-sensors] [PATCH 06/11] hwmon: applesmc: Handle new Guenter Roeck
2010-11-10 18:07     ` [PATCH 06/11] hwmon: applesmc: Handle new temperature format (rev2) Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 07/11] hwmon: applesmc: Extract all features Henrik Rydberg
2010-11-09 15:15   ` [PATCH 07/11] hwmon: applesmc: Extract all features generically (rev2) Henrik Rydberg
2010-11-09 15:15 ` [lm-sensors] [PATCH 08/11] hwmon: applesmc: Dynamic creation of fan Henrik Rydberg
2010-11-09 15:15   ` [PATCH 08/11] hwmon: applesmc: Dynamic creation of fan files (rev2) Henrik Rydberg
2010-11-10 18:09   ` [lm-sensors] [PATCH 08/11] hwmon: applesmc: Dynamic creation of Guenter Roeck
2010-11-10 18:09     ` [PATCH 08/11] hwmon: applesmc: Dynamic creation of fan files (rev2) Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 09/11] hwmon: applesmc: Simplify feature sysfs Henrik Rydberg
2010-11-09 15:15   ` [PATCH 09/11] hwmon: applesmc: Simplify feature sysfs handling (rev2) Henrik Rydberg
2010-11-10 18:10   ` [lm-sensors] [PATCH 09/11] hwmon: applesmc: Simplify feature Guenter Roeck
2010-11-10 18:10     ` [PATCH 09/11] hwmon: applesmc: Simplify feature sysfs handling (rev2) Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 10/11] hwmon: applesmc: Silence driver Henrik Rydberg
2010-11-09 15:15   ` Henrik Rydberg
2010-11-10 18:10   ` [lm-sensors] " Guenter Roeck
2010-11-10 18:10     ` Guenter Roeck
2010-11-09 15:15 ` [lm-sensors] [PATCH 11/11] hwmon: applesmc: Update copyright Henrik Rydberg
2010-11-09 15:15   ` [PATCH 11/11] hwmon: applesmc: Update copyright information Henrik Rydberg
2010-11-10 18:10   ` [lm-sensors] [PATCH 11/11] hwmon: applesmc: Update copyright Guenter Roeck
2010-11-10 18:10     ` [PATCH 11/11] hwmon: applesmc: Update copyright information Guenter Roeck
2010-11-10 18:22     ` [lm-sensors] [PATCH 11/11] hwmon: applesmc: Update copyright Henrik Rydberg
2010-11-10 18:22       ` [PATCH 11/11] hwmon: applesmc: Update copyright information Henrik Rydberg

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=4CD9A1DC.2000407@euromail.se \
    --to=rydberg@euromail.se \
    --cc=guenter.roeck@ericsson.com \
    --cc=khali@linux-fr.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.