Cas
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Pondělí Listopad 2 19:34:48 CET 2015
On Mon, 2 Nov 2015, Martin Mokry wrote:
> Vysledkom bolo:
>
> [root na localhost ~]# stap -c 'hwclock --show --directisa' hwc.stp
> Po 2. november 2015, 08:31:23 CET .759303 seconds
> 24h = 0
>
> Takze skutocne uchovava cas v 12 hodinovom formate. Skusil som sa aj
> pozriet do BIOSu ci tam nie je prepinanie medzi 12/24 hodinovym formatom
> ale nic som nenasiel.
Hypoteticky by mělo být na MC146818 nebo kompatibilním možno příslušný bit
nahodit a tím zapnout 24-hodinový režim.
Pokud si na to nechcete dělat zvláštní program, tak by mohlo fungovat,
když spustíte "gdb --args /sbin/hwclock --systohc --directisa",
nastavíte si breakpoint na vhodné místo ve funkci cmos_set_time
v hwclock-cmos.c (na F22 by měl vyhovovat např. řádek 402), spustíte to
a když se to zastaví na breakpointu, tak uděláte "set save_control |= 2"
a necháte hwclock dokončit práci.
Tím by se měl nahodit bit signalizující 24-hodinový režim.
Nebo také možná ne a počítač vzplane jasným plamenem. ;)
(Hypoteticky by mělo být možno i toto provést přes SystemTap (v guru
módu), ale nedaří se mi, furt mi nadává, že lokální proměnnou save_control
nezná.)
Nicméně mám jisté podezření, že to celé bude nějaké složitější:
Driver rtc-cmos by měl v cmos_do_probe odmítnout používat RTC, pokud není
ten 24-hodinový režim zapnutý. To by naznačovalo, že je to při normálním
startu zapnuté a nějak se to pak samovolně vypne. Jak dlouho už běžel
systém, na kterém jste získal to "24h = 0" a byl od startu už aspoň jednou
uspaný a probuzený?
Teď ale koukám, že ta podmínka v cmos_do_probe je nějak divně kombinovaná
s testem na IRQ (is_valid_irq(rtc_irq)) a je tedy možné, že je to vypnuté
pořád, ale driver to ignoroval, protože z nějakého důvodu nemá IRQ.
Máte v logu hlášku začínající "kernel: rtc_cmos"?
Co máte v /sys/class/rtc/rtc0/device/resources?
--
Pavel Kankovsky aka Peak "Que sais-je?"
Další informace o konferenci Linux