On Sat, Jan 13, 2024 at 11:47:44AM +0100, Christian Gut wrote: > > > > On 13. Jan 2024, at 10:03, Christian Gut <cycl...@is-root.org> wrote: > > > > > > > >> On 13. Jan 2024, at 00:58, Theo de Raadt <dera...@cvs.openbsd.org> wrote: > >> > >> I suspect this is due to how powerpc64 and octeon boot. Their bootblocks > >> are > >> a special kernel called BOOT which mounts the ffs filesystem diretly. I > >> suspect > >> during the transition to loading GENERIC.MP something wrong happens with > >> the > >> on-disk time information, which misleads the next kernel. > > > > Any thing I could do my self or provide information to improve that? > > I think I have one other of these machines where it seems to behave > > differently. > > I might have found the reason: > > octeon seems to boot that special “BOOT” kernel, which has a ram disk. Inside > that small boot process in > > src/sys/arch/octeon/stand/rdboot/disk.c > disk_init() calls disk_proberoot() > > all possible filesystems are iterated over and are mounted to /mnt. This is > done to find the root filesystem. I would assume inside that boot kernel, the > time had been set to the ramdisk time. As it mounts the root filesystem > temporarily, the time of that filesystem gets set back to the time that had > been set from the ramdisk kernel. > > But that mount uses MNT_RDONLY? > > A lot of assumptions, maybe you can confirm with deeper understanding.
In that file there's also disk_open() that does an r/w mount. That mount is used and later unmounted buy disk_close() (as the code in kexec() shows). So the superblock gets updated with the ramdisk root time, assuming the rest of your analysis is correct. -Otto