On 16/08/2021 18:03:13+0800, Tony W Wang-oc wrote: > > On 16/08/2021 16:24, Alexandre Belloni wrote: > > Hello, > > > > On 16/08/2021 21:47:18+0800, Tony W Wang-oc wrote: > >> When the RTC divider is changed from reset to an operating time base, > >> the first update cycle should be 500ms later. But on some Zhaoxin SOCs, > >> this first update cycle is one second later. > >> > >> So set RTC time on these Zhaoxin SOCs will causing 500ms delay. > >> > > > > Can you explain what is the relationship between writing the divider and > > the 500ms delay? > >> Isn't the issue that you are using systohc and set_offset_nsec is set to > > NSEC_PER_SEC / 2 ? > > > No. > When using #hwclock -s to set RTC time and set_offset_nsec is > NSEC_PER_SEC / 2, the function mc146818_set_time() requires the first > update cycle after RTC divider be changed from reset to an operating > mode is 500ms as the MC146818A spec specified. But on some Zhaoxin SOCs, > the first update cycle of RTC is one second later after RTC divider be > changed from reset to an operating mode. So the first update cycle after > RTC divider be changed from reset to an operation mode on These SOCs > will causing 500ms delay with current mc146818_set_time() implementation. > What happens with hwclock --delay=0 -s ? -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com