Received: from milmhbs1.lsil.com (147.145.21.209) by coscas01.lsi.com
 (172.21.36.60) with Microsoft SMTP Server id 8.1.393.1; Tue, 10 Nov 2009
 04:46:00 -0700
Received: from mail2.lsil.com (mail2.lsil.com [147.145.40.22])	by
 milmhbs1.lsil.com (8.12.11/8.12.11) with ESMTP id nAABjxkH001240	for
 <andy.sharp@lsi.com>; Tue, 10 Nov 2009 03:45:59 -0800
Received: from psmtp.com (na3sys009amx202.postini.com [74.125.149.42])	by
 mail2.lsil.com (8.12.11/8.12.11) with SMTP id nAABg41i004193	for
 <andy.sharp@lsi.com>; Tue, 10 Nov 2009 03:42:04 -0800 (PST)
Received: from source ([78.24.191.182]) by na3sys009amx202.postini.com
 ([74.125.148.14]) with SMTP;	Tue, 10 Nov 2009 05:45:58 CST
Received: from localhost.localdomain ([127.0.0.1]:54856 "EHLO
	eddie.linux-mips.org" rhost-flags-OK-OK-OK-FAIL) by ftp.linux-mips.org	with
 ESMTP id S1492381AbZKJLpt (ORCPT <rfc822;andy.sharp@lsi.com>);	Tue, 10 Nov
 2009 12:45:49 +0100
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 10 Nov 2009 12:45:32
 +0100 (CET)
Received: from krynn.se.axis.com ([193.13.178.10]:44365 "EHLO
	krynn.se.axis.com" rhost-flags-OK-OK-OK-OK) by ftp.linux-mips.org	with ESMTP
 id S1492376AbZKJLpY convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 10 Nov 2009 12:45:24 +0100
Received: from xmail3.se.axis.com (xmail3.se.axis.com [10.0.5.75])	by
 krynn.se.axis.com (8.14.3/8.14.3/Debian-5) with ESMTP id nAABjI6u018880	for
 <linux-mips@linux-mips.org>; Tue, 10 Nov 2009 12:45:18 +0100
Received: from xmail3.se.axis.com ([10.0.5.75]) by xmail3.se.axis.com
 ([10.0.5.75]) with mapi; Tue, 10 Nov 2009 12:45:18 +0100
From: Mikael Starvik <mikael.starvik@axis.com>
To: "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>
CC: Jesper Nilsson <Jesper.Nilsson@axis.com>
Sender: "linux-mips-bounce@linux-mips.org" <linux-mips-bounce@linux-mips.org>
Date: Tue, 10 Nov 2009 04:45:17 -0700
Subject: RE: SMTC lookup in smtc_distribute_timer
Thread-Topic: SMTC lookup in smtc_distribute_timer
Thread-Index: Acph4gXOS/S88Vv4SZWXqV+QJhpHfwAEkyuw
Message-ID: <4BEA3FF3CAA35E408EA55C7BE2E61D0546A586E7EA@xmail3.se.axis.com>
Accept-Language: sv-SE
Content-Language: en-US
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Organization-AuthSource: coscas01.lsi.com
X-MS-Has-Attach:
X-Auto-Response-Suppress: All
X-MS-TNEF-Correlator:
acceptlanguage: sv-SE
x-scanned-by: MIMEDefang 2.39
errors-to: linux-mips-bounce@linux-mips.org
x-pstn-levels: (S:89.42941/99.90000 CV:99.9000 FC:95.5390 LC:95.5390
 R:95.9108 P:95.9108 M:97.0282 C:98.6951 )
x-pstn-settings: 3 (1.0000:1.0000) s cv gt3 gt2 gt1 r p m c 
x-pstn-addresses: from <mikael.starvik@axis.com> [22/1] 
x-pstn-neptune: 0/0/0.00/0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

Ok, my guess is something like this:

1. At the end of smtc_distribute_timer, nextstamp is valid and has already=
=20
passed so we goto repeat.=20
2. Nothing updates nextstamp (only updated if the timeout is in the future=
=20
And we just decided it is in the past)
3. At the end nextstamp still has the same value so it is still valid and
in the past.
4. This repeats until read_c0_count has a value which causes nextstamp to
be in the future.

One possible patch that seams to solve it for me below. This is probably=20
not the correct solution so I'll need help from the SMTC experts to review
it and come up with the correct solution.

Best Regards
/Mikael

Index: cevt-smtc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /usr/local/cvs/linux/os/linux-2.6/arch/mips/kernel/cevt-smtc.c,v
retrieving revision 1.2
diff -u -r1.2 cevt-smtc.c
--- cevt-smtc.c	2 Sep 2009 10:07:51 -0000	1.2
+++ cevt-smtc.c	10 Nov 2009 11:40:31 -0000
@@ -223,8 +223,10 @@
 		write_c0_compare(nextstamp);
 		ehb();
 		if ((nextstamp - (unsigned long)read_c0_count())
-			> (unsigned long)LONG_MAX)
+			> (unsigned long)LONG_MAX) {
+				nextstamp =3D 0L; =20
 				goto repeat;
+			}
 	}
 }


