From: Chris Snook <csnook@redhat.com>
To: Jeff Hansen <x@jeffhansen.com>
Cc: torvalds@linux-foundation.org, linux-kernel@vger.kernel.org,
mingo@elte.hu
Subject: Re: x86_32 tsc/pit and hrtimers
Date: Wed, 08 Oct 2008 16:25:12 -0400 [thread overview]
Message-ID: <48ED1728.5060708@redhat.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0810081342570.11108@ren>
Jeff Hansen wrote:
> This worked perfectly! I second adding a kernel option that forces
> trusting the TSC. I can make a patch if you'd like. Should the option
> be something like "trusttsc" or "tsc=noverify"?
How about a "highres=noverify" flag, to disable all CLOCK_SOURCE_MUST_VERIFY
checking? People might want to use this with other timers too.
-- Chris
> On Wed, 8 Oct 2008, Chris Snook wrote:
>
>> Jeff Hansen wrote:
>>> Linus, Ingo, All,
>>>
>>> I've been struggling with hrtimer support in 2.6.26.5 on an older
>>> x86_32/i386 system, and I'm wondering if there are any easy fixes
>>> that you
>>> (or anyone else) would suggest.
>>>
>>> Basically, this system does not print out the message:
>>>
>>> "Switched to high resolution mode on CPU 0"
>>>
>>> indicating that one-shot, hrtimers, etc. won't work, since high
>>> resolution
>>> mode has not been enabled. I've verified that hrtimers started with
>>> hrtimer_start do not have the expected resolution further than 1/HZ.
>>>
>>> This system does not have LAPIC, ACPI, or HPET, so really the only
>>> clocksources I can use are TSC and PIT. This should be fine (in
>>> theory,
>>> unless it wasn't designed like that), but apparently the clocksource
>>> flags
>>> are not initialized in such a way that one of them ever gets marked as
>>> CLOCK_SOURCE_VALID_FOR_HRES.
>>>
>>> The flow of the flags on each of these clocksources is as follows:
>>>
>>> 1) The flags on the TSC clocksource are CLOCK_SOURCE_IS_CONTINUOUS |
>>> CLOCK_SOURCE_MUST_VERIFY, which causes PIT to be used as the
>>> watchdog
>>> clocksource. (see kernel/time/clocksource.c:~171)
>>> 2) Around line 122 in kernel/time/clocksource.c, where most
>>> clocksources'
>>> flags usually get ORed with CLOCK_SOURCE_VALID_FOR_HRES, the
>>> PIT's do
>>> not because it is not CLOCK_SOURCE_IS_CONTINUOUS, and the TSC's
>>> do not
>>> also because the PIT (as the watchdog) is not
>>> CLOCK_SOURCE_IS_CONTINUOUS.
>>>
>>> I get the same results on a new laptop booting into 32-bit Linux
>>> with hpet
>>> and acpi disabled.
>>>
>>> Can you please tell me if this is supposed to work, and I just have a
>>> poorly configured kernel; or if TSC/PIT drivers were not designed to
>>> work
>>> this way in the first place. If it wasn't designed to do this, do you
>>> have any tips on implementing this, since I'll be needing to do that?
>>>
>>> -Jeff Hansen
>>
>> This is not supposed to work, but it might be worthwhile to add a boot
>> option to force the kernel to trust the TSC, as hardware that lacks
>> any high-res timers also tends to be primitive enough that the TSC can
>> be trusted, if it exists. If you patch out the
>> CLOCK_SOURCE_MUST_VERIFY flag on the TSC, do you get
>> correctly-functioning high-res timers on this system?
>>
>> -- Chris
>>
>>
>>
next prev parent reply other threads:[~2008-10-08 20:25 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-07 22:41 x86_32 tsc/pit and hrtimers Jeff Hansen
2008-10-08 18:41 ` Chris Snook
2008-10-08 19:46 ` Jeff Hansen
2008-10-08 20:25 ` Chris Snook [this message]
2008-10-08 21:43 ` [PATCH] " Jeff Hansen
2008-10-08 21:47 ` Randy.Dunlap
2008-10-08 21:47 ` Chris Snook
2008-10-08 21:56 ` Jeff Hansen
2008-10-09 7:14 ` Thomas Gleixner
2008-10-09 18:39 ` Chris Snook
2008-10-09 19:18 ` Thomas Gleixner
2008-10-09 19:45 ` Jeff Hansen
2008-10-09 19:53 ` Thomas Gleixner
2008-10-09 20:45 ` Alok kataria
2008-10-09 21:03 ` Chris Snook
2008-10-09 21:18 ` Jeff Hansen
2008-10-09 22:03 ` Alok Kataria
2008-10-09 21:53 ` Alok Kataria
2008-10-09 22:50 ` Chris Snook
2008-10-09 23:22 ` Alok Kataria
2008-10-09 23:37 ` Chris Snook
2008-10-10 14:24 ` Jeff Hansen
2008-10-09 17:20 ` Pavel Machek
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=48ED1728.5060708@redhat.com \
--to=csnook@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=torvalds@linux-foundation.org \
--cc=x@jeffhansen.com \
/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.