All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dominik Brodowski <linux@dominikbrodowski.net>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Andreas Mohr <andi@lisas.de>,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	johnstul@us.ibm.com, hirofumi@mail.parknet.co.jp,
	alan@lxorguk.ukuu.org.uk, arjan@infradead.org
Subject: [PATCH v2 1/2] acpi_pm.c: use proper read function also in errata mode
Date: Sat, 23 Aug 2008 00:22:33 +0200	[thread overview]
Message-ID: <20080822222233.GA547@isilmar.linta.de> (raw)
In-Reply-To: <20080819025915.c34951b6.akpm@linux-foundation.org>

next try...


From: Dominik Brodowski <linux@dominikbrodowski.net>
Date: Fri, 22 Aug 2008 23:49:21 +0200
Subject: [PATCH 1/2] acpi_pm.c: use proper read function also in errata mode.

On all hardware (some Intel ICH4, PIIX4 and PIIX4E chipsets) affected by a
hardware errata there's about a 4.2% chance that initialization of the ACPI
PMTMR fails. On those chipsets, we need to read out the timer value at least
three times to get a correct result, for every once in a while (i.e. within
a 3 ns window every 69.8 ns) the read returns a bogus result. During normal
operation we work around this issue, but during initialization reading a
bogus value may lead to -EINVAL even though the hardware is usable.

Thanks to Andreas Mohr for spotting this issue.

CC: John Stultz <johnstul@us.ibm.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
---
 drivers/clocksource/acpi_pm.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index 5ca1d80..860d033 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
@@ -151,13 +151,13 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_LE,
  */
 static int verify_pmtmr_rate(void)
 {
-	u32 value1, value2;
+	cycle_t value1, value2;
 	unsigned long count, delta;
 
 	mach_prepare_counter();
-	value1 = read_pmtmr();
+	value1 = clocksource_acpi_pm.read();
 	mach_countup(&count);
-	value2 = read_pmtmr();
+	value2 = clocksource_acpi_pm.read();
 	delta = (value2 - value1) & ACPI_PM_MASK;
 
 	/* Check that the PMTMR delta is within 5% of what we expect */
@@ -177,7 +177,7 @@ static int verify_pmtmr_rate(void)
 
 static int __init init_acpi_pm_clocksource(void)
 {
-	u32 value1, value2;
+	cycle_t value1, value2;
 	unsigned int i;
 
 	if (!pmtmr_ioport)
@@ -187,9 +187,9 @@ static int __init init_acpi_pm_clocksource(void)
 						clocksource_acpi_pm.shift);
 
 	/* "verify" this timing source: */
-	value1 = read_pmtmr();
+	value1 = clocksource_acpi_pm.read();
 	for (i = 0; i < 10000; i++) {
-		value2 = read_pmtmr();
+		value2 = clocksource_acpi_pm.read();
 		if (value2 == value1)
 			continue;
 		if (value2 > value1)
@@ -197,11 +197,11 @@ static int __init init_acpi_pm_clocksource(void)
 		if ((value2 < value1) && ((value2) < 0xFFF))
 			goto pm_good;
 		printk(KERN_INFO "PM-Timer had inconsistent results:"
-			" 0x%#x, 0x%#x - aborting.\n", value1, value2);
+			" 0x%#llx, 0x%#llx - aborting.\n", value1, value2);
 		return -EINVAL;
 	}
 	printk(KERN_INFO "PM-Timer had no reasonable result:"
-			" 0x%#x - aborting.\n", value1);
+			" 0x%#llx - aborting.\n", value1);
 	return -ENODEV;
 
 pm_good:
-- 
1.5.2.5


  reply	other threads:[~2008-08-22 22:22 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
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                       ` Dominik Brodowski [this message]
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=20080822222233.GA547@isilmar.linta.de \
    --to=linux@dominikbrodowski.net \
    --cc=akpm@linux-foundation.org \
    --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.