All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: rpm@xenomai.org
Cc: xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] Testing LTTng: first insights
Date: Thu, 08 Nov 2007 21:11:25 +0100	[thread overview]
Message-ID: <47336D6D.2020203@domain.hid> (raw)
In-Reply-To: <47336447.8090203@domain.hid>

[-- Attachment #1: Type: text/plain, Size: 3030 bytes --]

Philippe Gerum wrote:
> Jan Kiszka wrote:
>> Jan Kiszka wrote:
>>> ...
>>> Xenomai is loaded at this time but not yet used. Linux runs in tickless
>>> highres mode and obviously had programmed the host timer to fire here.
>>> But instead of one timer IRQ (233) + its handling, we see an additional
>>> early shot (about 3 µs too early here - the longer the timer is
>>> programmed in advance, the larger the error gets) before the xntimer
>>> finally expires. But at the same time, /proc/xenomai/latency reports
>>> 1000 (1 µs). So there must be more discrepancy between TSC and APIC
>>> timebases, no? Well, nothing critical, but at least suboptimal, maybe
>>> pointing at some hidden minor bug. Once time permits, I will check the
>>> APIC frequency and the delay calculation on my box and compare it to
>>> what Linux uses.
>> Looks like Xenomai is using an inaccurate APIC frequency (probably since
>> ages): 10.383 MHz on one of my boxes vs. 10.39591 MHz according to
>> Linux' calibration ( (1,000,000,000 ns * clock_event_device.mult) >>
>> clock_event_device.shift ), which is based on the PM-timer. As the real
>> frequency is higher, the APIC fires earlier than we want to. Consider,
>> e.g., the 4 ms host tick period => 5 µs too early! This correlates with
>> my LTTng traces.
>>
> 
> Oops. Once again, this proves that having a permanent trace facility in
> place is key to uncover bugs.
> 
>> I will try to fix this issue by extending the ipipe_request_tickdev
>> interface so that it returns also the frequency of the requested tick
>> device - as long as Xenomai 2.4 is not released, such an API breakage
>> should not cause any hassle IMHO.
>>
> 
> You may want to have a look at ipipe_get_sysinfo() first, and track the
> use of the tmfreq field in Xenomai. This may be what you want to fix,

Nope tmfreq is not involved. The problem is:

	rthal_timerfreq_arg = apic_read(APIC_TMICT) * HZ;

> IIUC. This would keep the older patches usable with the next Xenomai
> version, which is very desirable.

We could extend the information ipipe_get_sysinfo returns by the timer
frequency. But to play cleanly, we would have to critical_enter first,
look up the currently used clock_event_device, maybe even validate that
it was hijacked, and then return its frequency. The problem with this
API is, that it is by nature unsynchronised with ipipe_request_tickdev,
thus would not always be able to return a valid frequency.

Actually, we would only exclude a few patches when going the
ipipe_request_tickdev way: those few that were clockevent-aware up to
today. For all others (namely 2.6.20 on i386 and up to 2.6.23 on
x86_64), we would simply fall back to our current inaccurate approach. I
think this is more acceptable than an ipipe_get_sysinfo extension.

Hmm, maybe we could install a temporary API for x86_64 so that users
don't have to wait for 2.6.24 to get an accurate APIC. This would be
removed again with the first unified x86-ipipe patch.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]

  reply	other threads:[~2007-11-08 20:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-08  8:13 [Xenomai-core] Testing LTTng: first insights Jan Kiszka
2007-11-08 18:20 ` Jan Kiszka
2007-11-08 19:32   ` Philippe Gerum
2007-11-08 20:11     ` Jan Kiszka [this message]
2007-11-08 21:42       ` Philippe Gerum
2007-11-08 22:00         ` Jan Kiszka
2007-11-08 22:44           ` Philippe Gerum
2007-11-08 22:51             ` Jan Kiszka

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=47336D6D.2020203@domain.hid \
    --to=jan.kiszka@domain.hid \
    --cc=rpm@xenomai.org \
    --cc=xenomai@xenomai.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.