From: Benoit Boissinot <benoit.boissinot@ens-lyon.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, john stultz <johnstul@us.ibm.com>
Subject: Re: 2.6.17-rc3-mm1
Date: Tue, 9 May 2006 14:40:55 +0200 [thread overview]
Message-ID: <20060509124055.GA14437@ens-lyon.fr> (raw)
In-Reply-To: <1146911438.7467.13.camel@localhost.localdomain>
On Sat, May 06, 2006 at 10:30:38AM +0000, Thomas Gleixner wrote:
> Benoit,
>
> On Fri, 2006-05-05 at 17:05 +0200, Benoit Boissinot wrote:
> > @@ -437,6 +438,12 @@ hrtimer_start(struct hrtimer *timer, kti
> >
> > if (mode == HRTIMER_REL) {
> - tim = ktime_add(tim, new_base->get_time());
> + ktime_t curr = new_base->get_time();
> +
> + tim = ktime_add(tim, curr);
> +
>
> Can you change the debug that way? So we have the values which are
> added. Please print out new_base->id too.
>
> > and when urxvtd hanged I had the following in dmesg:
> > [ 356.696000] urxvtd: empty nanosleep 356726124322 17948911854451
> >
> > So I suppose something is wrong in ktime_add()
>
> Well, ktime_add is adding two 64 bit values.
>
> The delta between the two values is 0xFFFFFFB3451. That looks like the
> timekeeping on your box is screwed by 0x100000000000.
>
> John, any idea ?
>
> tglx
>
With the following patch:
Index: linux/kernel/hrtimer.c
===================================================================
--- linux.orig/kernel/hrtimer.c
+++ linux/kernel/hrtimer.c
@@ -426,6 +426,7 @@ hrtimer_start(struct hrtimer *timer, kti
struct hrtimer_base *base, *new_base;
unsigned long flags;
int ret;
+ ktime_t save = tim;
base = lock_hrtimer_base(timer, &flags);
@@ -436,7 +437,18 @@ hrtimer_start(struct hrtimer *timer, kti
new_base = switch_hrtimer_base(timer, base);
if (mode == HRTIMER_REL) {
- tim = ktime_add(tim, new_base->get_time());
+ ktime_t curr = new_base->get_time();
+ tim = ktime_add(tim, curr);
+ if(save.tv64 == 0) {
+ char comm[TASK_COMM_LEN];
+ ktime_t diff = ktime_sub(new_base->get_time(), tim);
+ ktime_t diff2 = ktime_sub(curr, tim);
+ if (diff.tv64 < 0) {
+ get_task_comm(comm, current);
+ printk("%s: index %d empty nanosleep %lld 0x%llx 0x%llx\n", comm, new_base->index, diff.tv64, tim.tv64, curr.tv64);
+ printk("%s: %lld\n", comm, diff2.tv64);
+ }
+ }
/*
* CONFIG_TIME_LOW_RES is a temporary way for architectures
* to signal that they simply return xtime in
I get this debug info:
[ 7078.568000] urxvtd: index 1 empty nanosleep -3994384 0x670370f0183 0x670370f0183
[ 7078.568000] urxvtd: 0
[ 7969.696000] urxvtd: index 1 empty nanosleep -3994384 0x73fb5bf0b55 0x73fb5bf0b55
[ 7969.696000] urxvtd: 0
[ 8323.276000] urxvtd: index 1 empty nanosleep -3994383 0x7920a12d47a 0x7920a12d47a
[ 8323.276000] urxvtd: 0
[ 8937.072000] urxvtd: index 1 empty nanosleep -3995221 0x820f573e204 0x820f573e204
[ 8937.072000] urxvtd: 0
[ 8966.216000] urxvtd: index 1 empty nanosleep -3995222 0x827beaddd13 0x827beaddd13
[ 8966.216000] urxvtd: 0
[ 9170.380000] urxvtd: index 1 empty nanosleep -3995221 0x857488ff0fa 0x857488ff0fa
[ 9170.380000] urxvtd: 0
[ 9179.752000] urxvtd: index 1 empty nanosleep -3995221 0x85977363cca 0x85977363cca
[ 9179.752000] urxvtd: 0
[ 9272.320000] urxvtd: index 1 empty nanosleep -3994384 0x86f050a277f 0x86f050a277f
[ 9272.320000] urxvtd: 0
[ 9452.596000] urxvtd: index 1 empty nanosleep -3995221 0x898feff7f5e 0x898feff7f5e
[ 9452.596000] urxvtd: 0
[10783.932000] urxvtd: index 1 empty nanosleep -3994383 0x9cefdc45406 0x9cefdc45406
[10783.932000] urxvtd: 0
[11277.380000] urxvtd: index 1 empty nanosleep -17592185627881 0x1a41e328e9ab 0x1a41e328e9ab
[11277.380000] urxvtd: 0
regards,
Benoit
(Now I'll try the patch from John Stultz)
next prev parent reply other threads:[~2006-05-09 12:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-01 8:47 2.6.17-rc3-mm1 Andrew Morton
2006-05-01 12:54 ` 2.6.17-rc3-mm1 Josh Boyer
2006-05-01 16:59 ` 2.6.17-rc3-mm1 Andrew Morton
2006-05-01 17:33 ` 2.6.17-rc3-mm1 Josh Boyer
2006-05-01 18:57 ` 2.6.17-rc3-mm1 H. Peter Anvin
2006-05-01 21:29 ` 2.6.17-rc3-mm1 Sam Ravnborg
2006-05-01 21:35 ` 2.6.17-rc3-mm1 H. Peter Anvin
2006-05-01 17:10 ` pi-futex-patchset-v4.patch (was 2.6.17-rc3-mm1 Valdis.Kletnieks
2006-05-03 9:11 ` 2.6.17-rc3-mm1 Benoit Boissinot
2006-05-03 13:48 ` 2.6.17-rc3-mm1 Andrew Morton
2006-05-03 14:15 ` 2.6.17-rc3-mm1 Thomas Gleixner
[not found] ` <20060503144318.GA5505@ens-lyon.fr>
2006-05-05 15:05 ` 2.6.17-rc3-mm1 Benoit Boissinot
2006-05-06 10:30 ` 2.6.17-rc3-mm1 Thomas Gleixner
2006-05-08 17:48 ` 2.6.17-rc3-mm1 john stultz
2006-05-12 11:41 ` 2.6.17-rc3-mm1 Benoit Boissinot
2006-05-12 17:22 ` 2.6.17-rc3-mm1 john stultz
2006-05-09 12:40 ` Benoit Boissinot [this message]
2006-05-12 7:25 ` 2.6.17-rc3-mm1 J.A. Magallón
2006-05-12 7:40 ` 2.6.17-rc3-mm1 Andrew Morton
2006-05-12 7:47 ` 2.6.17-rc3-mm1 J.A. Magallón
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=20060509124055.GA14437@ens-lyon.fr \
--to=benoit.boissinot@ens-lyon.org \
--cc=akpm@osdl.org \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.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
all inboxes | Powered by JetHome®