[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 (佐野 武俊)