On Mon, Jun 18, 2018 at 10:04 PM, Andreas Schwab <sch...@linux-m68k.org> wrote: > On Jun 18 2018, Mathieu Malaterre <ma...@debian.org> wrote: > >> Sadly, trying again today does not work anymore. Adding some printk >> just before WARN_ON: >> >> +printk(KERN_ERR " rtc DBG pmu_get_time1: %lld %d %lld \n", now, >> RTC_OFFSET, now - RTC_OFFSET ); >> +printk(KERN_ERR " rtc DBG pmu_get_time2: %x %x %x %x %d \n", >> req.reply[0], req.reply[1], req.reply[2], req.reply[3] , >> req.reply_len); >> >> leads to: >> >> [ 0.000000] rtc DBG pmu_get_time1: 14096662 2082844800 -2068748138 >> [ 0.000000] rtc DBG pmu_get_time2: 0 d7 19 16 4 > > A good value would have 0xd7 in the first byte. The problem is that > pmu_set_rtc_time is also broken, and leads to an invalid time value > stored in the RTC. Since pmu_request is a varargs function passing > values of type time64_t without casting won't work. > > You need to reset your RTC before you can continue. > > I think the right fix is to change nowtime in pmu_set_rtc_time and > cuda_set_rtc_time back to unsigned int (or to u32).
Thanks for the additional analysis. I'll do it like you suggest and send an updated patch. Arnd