[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180625090741.776c8914@mschwideX1>
Date: Mon, 25 Jun 2018 09:07:41 +0200
From: Martin Schwidefsky <schwidefsky@...ibm.com>
To: Pavel Tatashin <pasha.tatashin@...cle.com>
Cc: steven.sistare@...cle.com, daniel.m.jordan@...cle.com,
linux@...linux.org.uk, heiko.carstens@...ibm.com,
john.stultz@...aro.org, sboyd@...eaurora.org, x86@...nel.org,
linux-kernel@...r.kernel.org, mingo@...hat.com, tglx@...utronix.de,
hpa@...or.com, douly.fnst@...fujitsu.com, peterz@...radead.org,
prarit@...hat.com, feng.tang@...el.com, pmladek@...e.com,
gnomes@...rguk.ukuu.org.uk, linux-s390@...r.kernel.org
Subject: Re: [PATCH v12 05/11] s390/time: add
read_persistent_wall_and_boot_offset()
On Thu, 21 Jun 2018 17:25:12 -0400
Pavel Tatashin <pasha.tatashin@...cle.com> wrote:
> read_persistent_wall_and_boot_offset() will replace read_boot_clock64()
> because on some architectures it is more convenient to read both sources
> as one may depend on the other. For s390, implementation is the same
> as read_boot_clock64() but also calling and returning value of
> read_persistent_clock64()
>
> Signed-off-by: Pavel Tatashin <pasha.tatashin@...cle.com>
> ---
> arch/s390/kernel/time.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
> index cf561160ea88..d1f5447d5687 100644
> --- a/arch/s390/kernel/time.c
> +++ b/arch/s390/kernel/time.c
> @@ -221,6 +221,24 @@ void read_persistent_clock64(struct timespec64 *ts)
> ext_to_timespec64(clk, ts);
> }
>
> +void __init read_persistent_wall_and_boot_offset(struct timespec64 *wall_time,
> + struct timespec64 *boot_offset)
> +{
> + unsigned char clk[STORE_CLOCK_EXT_SIZE];
> + struct timespec64 boot_time;
> + __u64 delta;
> +
> + delta = initial_leap_seconds + TOD_UNIX_EPOCH;
> + memcpy(clk, tod_clock_base, STORE_CLOCK_EXT_SIZE);
> + *(__u64 *)&clk[1] -= delta;
> + if (*(__u64 *)&clk[1] > delta)
> + clk[0]--;
> + ext_to_timespec64(clk, &boot_time);
> +
> + read_persistent_clock64(wall_time);
> + *boot_offset = timespec64_sub(*wall_time, boot_time);
> +}
> +
> void read_boot_clock64(struct timespec64 *ts)
> {
> unsigned char clk[STORE_CLOCK_EXT_SIZE];
>From a s390 standpoint this looks reasonable.
Reviewed-by: Martin Schwidefsky <schwidefsky@...ibm.com>
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
Powered by blists - more mailing lists