public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: john stultz <johnstul@us.ibm.com>
To: Alexey Fisher <bug-track@fisher-privat.net>
Cc: Priit Laes <plaes@plaes.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	tglx@linutronix.de, Chris Wilson <chris@chris-wilson.co.uk>
Subject: Re: [BISECTED/2.6.35+] Regression: Machine runs really slowly after commit f12a15be
Date: Mon, 09 Aug 2010 12:51:58 -0700	[thread overview]
Message-ID: <1281383518.2444.7.camel@localhost.localdomain> (raw)
In-Reply-To: <1281382707.22355.0.camel@mini>

On Mon, 2010-08-09 at 21:38 +0200, Alexey Fisher wrote:
> cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
> hpet
> 
> cat /sys/devices/system/clocksource/clocksource0/available_clocksource
> hpet acpi_pm 


On Mon, 2010-08-09 at 22:43 +0300, Priit Laes wrote:
> cat /sys/devices/system/clocksource/clocksource0/current_clocksource
> hpet
> cat /sys/devices/system/clocksource/clocksource0/available_clocksource
> hpet acpi_pm 


Ok. Good. Chris Wilson has created the following patch which should
hopefully resolve this issue. It would be great if you could try booting
with it to verify that there are no other problems lurking here.

Thanks again for the great bug reporting!

thanks
-john


From: Chris Wilson <chris@chris-wilson.co.uk>
Subject: [PATCH] x86/hpet: Use the FSEC_PER_SEC constant for femto-second
 periods

The current computation, introduced with f12a15be63, of FSEC_PER_SEC using
the multiplication of (FSEC_PER_NSEC * NSEC_PER_SEC) is performed only
with 32bit integers on small machines, resulting in an overflow and a
*very* short intervals being programmed.  An interrupt storm follows.

Note that we also have to specify FSEC_PER_SEC as being long long to
overcome the same limitations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: John Stultz <johnstul@us.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/kernel/hpet.c |    4 ++--
 include/linux/time.h   |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 33dbcc4..351f9c0 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -582,7 +582,7 @@ static void init_one_hpet_msi_clockevent(struct hpet_dev *hdev, int cpu)
 	 * scaled math multiplication factor for nanosecond to hpet tick
 	 * conversion.
 	 */
-	hpet_freq = 1000000000000000ULL;
+	hpet_freq = FSEC_PER_SEC;
 	do_div(hpet_freq, hpet_period);
 	evt->mult = div_sc((unsigned long) hpet_freq,
 				      NSEC_PER_SEC, evt->shift);
@@ -837,7 +837,7 @@ static int hpet_clocksource_register(void)
 	 * cyc/sec = FSEC_PER_SEC/hpet_period(fsec/cyc)
 	 * cyc/sec = (FSEC_PER_NSEC * NSEC_PER_SEC)/hpet_period
 	 */
-	hpet_freq = FSEC_PER_NSEC * NSEC_PER_SEC;
+	hpet_freq = FSEC_PER_SEC;
 	do_div(hpet_freq, hpet_period);
 	clocksource_register_hz(&clocksource_hpet, (u32)hpet_freq);

diff --git a/include/linux/time.h b/include/linux/time.h
index cb34e35..1261270 100644
--- a/include/linux/time.h
+++ b/include/linux/time.h
@@ -38,7 +38,7 @@ extern struct timezone sys_tz;
 #define NSEC_PER_MSEC	1000000L
 #define USEC_PER_SEC	1000000L
 #define NSEC_PER_SEC	1000000000L
-#define FSEC_PER_SEC	1000000000000000L
+#define FSEC_PER_SEC	1000000000000000LL

 #define TIME_T_MAX	(time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1)

-- 
1.7.1





  reply	other threads:[~2010-08-09 19:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-07 13:15 [BISECTED/2.6.35+] Regression: Machine runs really slowly after commit f12a15be Priit Laes
2010-08-09 19:01 ` john stultz
2010-08-09 19:38   ` Alexey Fisher
2010-08-09 19:51     ` john stultz [this message]
2010-08-09 20:19       ` Alexey Fisher
2010-08-09 19:43   ` Priit Laes

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=1281383518.2444.7.camel@localhost.localdomain \
    --to=johnstul@us.ibm.com \
    --cc=bug-track@fisher-privat.net \
    --cc=chris@chris-wilson.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=plaes@plaes.org \
    --cc=tglx@linutronix.de \
    /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