From: Dominik Brodowski <linux@dominikbrodowski.net>
To: Andreas Mohr <andi@lisas.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
john stultz <johnstul@us.ibm.com>,
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
linux-acpi@vger.kernel.org,
Arjan van de Ven <arjan@infradead.org>
Subject: Re: ACPI PM-Timer on K6-3 SiS5591: Houston...
Date: Sun, 10 Aug 2008 22:02:24 +0200 [thread overview]
Message-ID: <20080810200224.GA6551@comet.dominikbrodowski.net> (raw)
In-Reply-To: <20080810190759.GA1879@rhlx01.hs-esslingen.de>
Hi Andreas,
On Sun, Aug 10, 2008 at 09:08:02PM +0200, Andreas Mohr wrote:
> And it's in fact not this triple-read which has any weakness here but rather
> the init check.
right.
> IMHO the current init check is too weak, it will catch the very simplest
> types of problems only, and that's not a good thing.
what about this?
Best,
Dominik
acpi_pm.c: check for monotonicity
Expand the check for monotonicity by doing ten tests instead of one.
Applies on top of "acpi_pm.c: use proper read function also in errata mode."
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.de>
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index 2c00edd..f05c4fb 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -178,7 +178,7 @@ static int verify_pmtmr_rate(void)
static int __init init_acpi_pm_clocksource(void)
{
cycle_t value1, value2;
- unsigned int i;
+ unsigned int i, j, good = 0;
if (!pmtmr_ioport)
return -ENODEV;
@@ -187,24 +187,32 @@ static int __init init_acpi_pm_clocksource(void)
clocksource_acpi_pm.shift);
/* "verify" this timing source: */
- value1 = clocksource_acpi_pm.read();
- for (i = 0; i < 10000; i++) {
- value2 = clocksource_acpi_pm.read();
- if (value2 == value1)
- continue;
- if (value2 > value1)
- goto pm_good;
- if ((value2 < value1) && ((value2) < 0xFFF))
- goto pm_good;
- printk(KERN_INFO "PM-Timer had inconsistent results:"
- " 0x%#llx, 0x%#llx - aborting.\n", value1, value2);
- return -EINVAL;
+ for (j = 0; j < 10; j++) {
+ value1 = clocksource_acpi_pm.read();
+ for (i = 0; i < 10000; i++) {
+ value2 = clocksource_acpi_pm.read();
+ if (value2 == value1)
+ continue;
+ if (value2 > value1)
+ good++;
+ break;
+ if ((value2 < value1) && ((value2) < 0xFFF))
+ good++;
+ break;
+ printk(KERN_INFO "PM-Timer had inconsistent results:"
+ " 0x%#llx, 0x%#llx - aborting.\n",
+ value1, value2);
+ return -EINVAL;
+ }
+ udelay(300 * i);
+ }
+
+ if (good != 10) {
+ printk(KERN_INFO "PM-Timer had no reasonable result:"
+ " 0x%#llx - aborting.\n", value1);
+ return -ENODEV;
}
- printk(KERN_INFO "PM-Timer had no reasonable result:"
- " 0x%#llx - aborting.\n", value1);
- return -ENODEV;
-pm_good:
if (verify_pmtmr_rate() != 0)
return -ENODEV;
next prev parent reply other threads:[~2008-08-10 20:02 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-10 10:17 ACPI PM-Timer on K6-3 SiS5591: Houston Andreas Mohr
2008-08-10 16:29 ` Dominik Brodowski
2008-08-10 16:40 ` Arjan van de Ven
2008-08-10 19:08 ` Andreas Mohr
2008-08-10 19:08 ` Andreas Mohr
2008-08-10 20:02 ` Dominik Brodowski [this message]
2008-08-18 19:03 ` [git pull?] clocksource: ACPI pmtmr bugfixes [Was: Re: ACPI PM-Timer on K6-3 SiS5591: Houston...] Dominik Brodowski
2008-08-18 19:05 ` [PATCH 1/2] acpi_pm.c: use proper read function also in errata mode Dominik Brodowski
2008-08-18 19:05 ` [PATCH 2/2] acpi_pm.c: check for monotonicity Dominik Brodowski
2008-08-18 19:19 ` [git pull?] clocksource: ACPI pmtmr bugfixes [Was: Re: ACPI PM-Timer on K6-3 SiS5591: Houston...] Andrew Morton
2008-08-18 19:35 ` Dominik Brodowski
2008-08-18 19:47 ` Andrew Morton
2008-08-18 20:09 ` Dominik Brodowski
2008-08-18 20:10 ` [PATCH 1/2] acpi_pm.c: use proper read function also in errata mode Dominik Brodowski
2008-08-18 20:10 ` Dominik Brodowski
2008-08-19 9:43 ` Andrew Morton
2008-08-19 9:49 ` Dominik Brodowski
2008-08-19 9:59 ` Andrew Morton
2008-08-22 22:22 ` [PATCH v2 " Dominik Brodowski
2008-08-22 22:26 ` [PATCH v2 2/2] acpi_pm.c: check for monotonicity Dominik Brodowski
2008-08-23 8:48 ` Jochen Voß
2008-08-23 8:48 ` Jochen Voß
2008-08-18 20:11 ` [PATCH " Dominik Brodowski
2008-08-18 20:11 ` Dominik Brodowski
2008-08-18 20:18 ` Andreas Mohr
2008-08-18 20:18 ` Andreas Mohr
2008-08-18 20:28 ` Andrew Morton
2008-08-18 20:28 ` Andrew Morton
2008-08-18 20:42 ` Dominik Brodowski
2008-08-18 20:25 ` [git pull?] clocksource: ACPI pmtmr bugfixes [Was: Re: ACPI PM-Timer on K6-3 SiS5591: Houston...] Andrew Morton
2008-08-18 20:29 ` Dominik Brodowski
2008-08-18 20:00 ` Andreas Mohr
2008-08-18 20:00 ` Andreas Mohr
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=20080810200224.GA6551@comet.dominikbrodowski.net \
--to=linux@dominikbrodowski.net \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=andi@lisas.de \
--cc=arjan@infradead.org \
--cc=hirofumi@mail.parknet.co.jp \
--cc=johnstul@us.ibm.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.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.