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: , pcsp_do_timer, S:01 # expires at 79874071262305 nsecs [in 103285 nsecs] #1: , tick_sched_timer, S:01 # expires at 79874072000000 nsecs [in 840980 nsecs] #2: , hrtick, S:01 # expires at 79874085178046 nsecs [in 14019026 nsecs] #3: , hrtimer_wakeup, S:01 # expires at 79874089149344 nsecs [in 17990324 nsecs] #4: , hrtimer_wakeup, S:01 # expires at 79874092750344 nsecs [in 21591324 nsecs] #5: , hrtimer_wakeup, S:01 # expires at 79874202526015 nsecs [in 131366995 nsecs] #6: , it_real_fn, S:01 # expires at 79881608643657 nsecs [in 7537484637 nsecs] #7: , it_real_fn, S:01 # expires at 79881608750640 nsecs [in 7537591620 nsecs] #8: , it_real_fn, S:01 # expires at 79895660824942 nsecs [in 21589665922 nsecs] #9: , hrtimer_wakeup, S:01 # expires at 79906270402875 nsecs [in 32199243855 nsecs] #10: , 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: 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.