Cas

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pátek Říjen 30 10:34:53 CET 2015


On Fri, 30 Oct 2015, Martin Mokry wrote:

> [root na localhost ~]# ls -l /sys/class/rtc/rtc0/device/driver
> lrwxrwxrwx. 1 root root 0 okt 30  2015 /sys/class/rtc/rtc0/device/driver ->
> ../../../bus/pnp/drivers/rtc_cmos

To je fakt hodně divné.

Čtení hodin dělá funkce cmos_read_time, která z principu nemůže chybu 
vrátit (končí příkazem "return 0").

Ještě připadá v úvahu možnost, že chyba nastane jinde.

__rtc_read_time může tuto chybu chybu vrátit, pokud by driver nenabízel 
funkci na čtení času, ale to by v případě rtc_cmos bylo možné jen tehdy, 
pokud by něco vynulovalo položku v jeho tabulce. To je nepravděpodobné (i 
když ne zcela nemožné).

Pokud máte dostatečně čerstvé jádro (cca >= 3.19), tak by to ještě mohlo 
selhat, když __rtc_read_time zavolá rtc_valid_tm, aby se zkontrolovalo, 
zda jsou údaje získané z driveru smysluplné. Pokud máte nějaký divný 
hardware, tak je možné, že vrací údaje, které to považuje za nesmysly.
V logu by se měla objevit hláška "read_time: rtc_time isn't valid", ovšem 
máte-li opravdu čerstvé jádro (cca >= 4.1), tak tam je ta hláška 
degradována z dev_err na dev_dbg, a tudíž její viditelnost záleží na 
nastavení jádra i systémových logů.

Takže otázka zní, jaké máte přesně jádro, jak je nastavené logování a zda 
se v logu neobjevují nějaké protesty ohledně "read_time. (Ano, psal jste, 
že je to Fedora 22, ale nechce se mi teď zjišťovat, jak to tam přesně je.)

Také je otázka, jaký máte hardware a zda to na něm dřív fungovalo lépe.

Také zkuste "hwclock --show --directisa". Nevím, jestli to ještě funguje, 
ale pokud ano, tak by to mělo přimět hwclock, aby zkusil hodiny přečíst 
přímo z hardwaru.


-- 
Pavel Kankovsky aka Peak                      "Que sais-je?"


Další informace o konferenci Linux