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