Hi Felix
> +static void lio_sync_octeon_time(struct work_struct *work)
> +{
> + struct cavium_wk *wk = (struct cavium_wk *)work;
> + struct lio *lio = (struct lio *)wk->ctxptr;
> + struct octeon_device *oct = lio->oct_dev;
> + struct octeon_soft_command *sc;
> + struct timespec64 ts;
> + struct lio_time *lt;
> + int ret;
> +
> + sc = octeon_alloc_soft_command(oct, sizeof(struct lio_time), 0, 0);
> + if (!sc) {
> + dev_err(&oct->pci_dev->dev,
> + "Failed to sync time to octeon: soft command allocation
> failed\n");
> + return;
> + }
> +
> + lt = (struct lio_time *)sc->virtdptr;
> +
> + /* Get time of the day */
> + getnstimeofday64(&ts);
> @@ -890,11 +894,29 @@ int octeon_download_firmware(struct octeon_device *oct,
> const u8 *data,
> load_addr += size;
> }
> }
> +
> + /* Get time of the day */
> + do_gettimeofday(&time);
> + time_to_tm(time.tv_sec, (-sys_tz.tz_minuteswest) * 60, &tm_val);
So here, you correct for the timezone the machine is in. However,
lio_sync_octeon_time() uses getnstimeofday64(), which as far as i
know, does not adjust for the time zone.
Maybe put your machine into Pacific/Kiritimati and see what happens?
Andrew