[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:23938] Re: rtc problem of SMP Kernel (was: Re: Re: set_rtc_mmss: can't update)
佐野@浜松です。
In <20000908202524U.yoh@xxxxxxxxxxxx>,
on "Fri, 8 Sep 2000 20:25:33 +0900',
with "Re: Re: rtc problem of SMP Kernel (was: Re: Re: set_rtc_mmss: can't update)",
MATSUDA Yoh-ichi / 松田陽一 <yoh@xxxxxxxxxxxx> さん wrote:
> > >まる一日経過しましたが、ログにはhwclock が正常終了する旨のメッセージ
> > >のみが延々と記録され続けています。
> > >BIOSが原因のようです。
> >
> > とは思えないです。RTC って BIOS で設定できる内容はほとんどないので。
> > CPU の内部設定の可能性はあるけど、それなら kernel で回避できるし、
> > ほんと? って感じもあるし。
>
> んー、言われてみれば確かにそうは思うんですけど。
> Linux って、起動してしまえば BIOS をスッ飛ばすものだとずっと思ってた
> ので、今般 BIOS のアップデートで正常に動いてくれてるのを見ると、ちょっ
> と狐につままれたような、変な気分です。
APM 関係とか、Video 関連とか、PC の場合は BIOS に依存する部分も
けっこうあるので、ハードウェア関連の場合は BIOS update で問題が
解決することがあっても不思議ではないかも、という気がします。
なお arch/i386/kernel/time.c の set_rtc_mmss() に使われている
CMOS_READ() / CMOS_WRITE() は include/linux/mc146818rtc.h の
中で定義されていますね。
あと SMP 関係では arch/i386/kernel/time.c の中に
do_timer_interrupt() があって、
/*
* In the SMP case we use the local APIC timer interrupt to do the
* profiling, except when we simulate SMP mode on a uniprocessor
* system, in that case we have to call the local interrupt handler.
*/
#ifndef __SMP__
if (!user_mode(regs))
x86_do_profile(regs->eip);
#else
if (!smp_found_config)
smp_local_timer_interrupt(regs);
#endif
というコードがありますね。このへんが関係ありそうなのかな。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)