直接 Linux を起動した時のメッセージは次の通り。
[ 3.611940] rtc_cmos 00:06: RTC can wake from S4 [ 3.616695] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0 [ 3.622851] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 3.629732] cpuidle: using governor ladder [ 3.633934] cpuidle: using governor menu [ 3.638014] TCP cubic registered [ 3.641515] NET: Registered protocol family 10 [ 3.646410] Mobile IPv6 [ 3.648909] NET: Registered protocol family 17 [ 3.653429] input: AT Translated Set 2 keyboard as /devices/platform/i8042/se rio0/input/input0 [ 3.662083] Registering the dns_resolver key type [ 3.666982] PM: Hibernation image not present or could not be loaded. [ 3.673466] registered taskstats version 1 [ 3.678145] rtc_cmos 00:06: setting system clock to 2013-11-05 22:29:48 UTC (1383690588)
Linuxのソースコードを読むと、24時間モードのビットが立っていないために、RTCドライバの初期化に失敗したように見える。
drivers/rtc/rtc-cmos.c:cmos_do_probe
rtc_control = CMOS_READ(RTC_CONTROL); spin_unlock_irq(&rtc_lock); /* FIXME: * <asm-generic/rtc.h> doesn't know 12-hour mode either. */ if (is_valid_irq(rtc_irq) && !(rtc_control & RTC_24H)) { dev_warn(dev, "only 24-hr supported\n"); retval = -ENXIO; goto cleanup1; }
r119 で、RTC の Register B の Data Mode フィールドと Hour Format フィールドを VM1 から読み出せるようにしました。 その結果、エラーにならなくなりました。
[ 1.290609] rtc_cmos 00:01: RTC can wake from S4 [ 1.292456] rtc_cmos 00:01: rtc core: registered rtc_cmos as rtc0 [ 1.294848] rtc0: alarms up to one day, 114 bytes nvram, hpet irqs [ 1.297243] cpuidle: using governor ladder [ 1.298839] cpuidle: using governor menu [ 1.300392] TCP cubic registered [ 1.301748] NET: Registered protocol family 10 [ 1.303623] Mobile IPv6 [ 1.304565] NET: Registered protocol family 17 [ 1.306277] Registering the dns_resolver key type [ 1.308222] PM: Hibernation image not present or could not be loaded. [ 1.310713] registered taskstats version 1 [ 1.312530] rtc_cmos 00:01: setting system clock to 2013-11-05 23:07:27 UTC ( 1383692847)
障害発生リビジョン: r118