tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: 4.0/i386 auich_calibrate() and GENERIC.NOACPI failure



On Fri, Jan 11, 2008 at 11:15:18PM -0500, Chuck Cranor wrote:

> ichlpcib* at pci? dev ? function ?     # Intel ICH PCI-ISA w/ watchdog and
> isa0   at ichlpcib?
> 
> to GENERIC.NOACPI, but it didn't fix the auich0 problem:
> 
> [ http://yogi.pdl.cmu.edu/~chuck/40/dmesg-ichlpcib.txt ]
> auich0: measured ac97 link rate at 43212 Hz, will use 48000 Hz
> 
> rather than the expected 55000 Hz.
> 
> 
>     But I did some poking around and discovered that this broke
> in Sept of 2006.   A binary search showed that kernels compiled
> from a Sept 2006 1st, 8th, and 10th source tree work fine, but 
> kernels compiled from Sept 2006 11th, 12th, and 15th did not.
> The key even was the commit of rev 1.12 of kern_rc.c on the 10th.
> 
> 
>     Working with a 4.0 release tree, things also work OK if you 
> just revert kern_tc.c back to 1.11 (keeping everything else at 4.0).
>
>     This makes me think it is spl() related.   Is it possible
> that interrupts are invalidating the measurement that auich_calibrate() 
> is trying to do?

You could some printfs to see what happens to curcpu()->ci_ilevel, but it
should stay at IPL_HIGH because ints are off during autoconf. As Joerg
mentioned the i8254 based microtime() is incredibly slow. It would be
interesting to see what happens if you took the microtime call out of the
loop in auich_calibrate().

Andrew



Home | Main Index | Thread Index | Old Index