[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <48364469.5090400@aknet.ru>
Date: Fri, 23 May 2008 08:13:29 +0400
From: Stas Sergeev <stsp@...et.ru>
To: Magosányi Árpád <m4gw4s@...il.com>
CC: Thomas Gleixner <tglx@...utronix.de>,
Linux kernel <linux-kernel@...r.kernel.org>
Subject: Re: hrtimer_get_res() problem (pcsp does not work)
Hello.
Magosányi Árpád wrote:
> code:
> hrtimer_get_res(CLOCK_MONOTONIC, &tp);
> + printk(KERN_INFO "PCSP: sec=%li, nsec=%linS\n",tp.tv_sec, tp.tv_nsec);
>
> output:
> [ 22.882520] PCSP: sec=0, nsec=1nS
> after an rmmod and modprobe:
> [ 476.300571] PCSP: sec=0, nsec=1nS
> after an rmmod, changing clocksource to tsc, and insmod:
> [ 669.124557] PCSP: sec=0, nsec=1nS
OK, thanks you.
In this case I suspect this is not an
snd-pcsp bug, but a hrtimer bug. Adding
more people to CC.
So what we have:
---
I have a PIIX4 chipset, the full dmesg is attached.
Note that it is an old 400Mhz pentium, and there is some problem with
the timer source I use:
[ 0.822740] * Found PM-Timer Bug on the chipset. Due to workarounds
for a bug,
[ 0.822750] * this clock source is slow. Consider trying other clock
sources
---
and (presumably) because of that PM-Timer
Bug, snd-pcsp produces only the noice.
dmesg said that the clock source is slow,
yet the hrtimer_get_res() claims the
resolution is 1nS. I think this is wrong,
hrtimer_get_res() might be broken.
Can someone please comment on that?
Is hrtimer_get_res() known to return 1nS
regardless of the real clock resolution?
timer_list looks like this:
---
Timer List Version: v0.3
HRTIMER_MAX_CLOCK_BASES: 2
now at 79874071159020 nsecs
cpu: 0
clock 0:
.index: 0
.resolution: 1 nsecs
.get_time: ktime_get_real
.offset: 1211322015091845449 nsecs
active timers:
clock 1:
.index: 1
.resolution: 1 nsecs
.get_time: ktime_get
.offset: 0 nsecs
active timers:
#0: <c0961ee4>, pcsp_do_timer, S:01
# expires at 79874071262305 nsecs [in 103285 nsecs]
#1: <c0961ee4>, tick_sched_timer, S:01
# expires at 79874072000000 nsecs [in 840980 nsecs]
#2: <c0961ee4>, hrtick, S:01
# expires at 79874085178046 nsecs [in 14019026 nsecs]
#3: <c0961ee4>, hrtimer_wakeup, S:01
# expires at 79874089149344 nsecs [in 17990324 nsecs]
#4: <c0961ee4>, hrtimer_wakeup, S:01
# expires at 79874092750344 nsecs [in 21591324 nsecs]
#5: <c0961ee4>, hrtimer_wakeup, S:01
# expires at 79874202526015 nsecs [in 131366995 nsecs]
#6: <c0961ee4>, it_real_fn, S:01
# expires at 79881608643657 nsecs [in 7537484637 nsecs]
#7: <c0961ee4>, it_real_fn, S:01
# expires at 79881608750640 nsecs [in 7537591620 nsecs]
#8: <c0961ee4>, it_real_fn, S:01
# expires at 79895660824942 nsecs [in 21589665922 nsecs]
#9: <c0961ee4>, hrtimer_wakeup, S:01
# expires at 79906270402875 nsecs [in 32199243855 nsecs]
#10: <c0961ee4>, hrtimer_wakeup, S:01
# expires at 82853302086673 nsecs [in 2979230927653 nsecs]
.expires_next : 79874071584133 nsecs
.hres_active : 1
.nr_events : 82831195
.nohz_mode : 0
.idle_tick : 0 nsecs
.tick_stopped : 0
.idle_jiffies : 0
.idle_calls : 0
.idle_sleeps : 0
.idle_entrytime : 0 nsecs
.idle_waketime : 0 nsecs
.idle_exittime : 0 nsecs
.idle_sleeptime : 0 nsecs
.last_jiffies : 0
.next_jiffies : 0
.idle_expires : 0 nsecs
jiffies: 79574071
Tick Device: mode: 1
Clock Event Device: <NULL>
tick_broadcast_mask: 00000000
tick_broadcast_oneshot_mask: 00000000
Tick Device: mode: 1
Clock Event Device: pit
max_delta_ns: 27461866
min_delta_ns: 12571
mult: 5124677
shift: 32
mode: 3
next_event: 79874071637771 nsecs
set_next_event: pit_next_event
set_mode: init_pit_timer
event_handler: hrtimer_interrupt
---
> I attach my kernel config.
View attachment "config.txt" of type "text/plain" (48331 bytes)
Powered by blists - more mailing lists