All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Liu <wei.liu@kernel.org>
To: Peter Martincic <pmartincic@microsoft.com>
Cc: "linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"Michael Kelley (LINUX)" <mikelley@microsoft.com>,
	Boqun Feng <Boqun.Feng@microsoft.com>,
	Wei Liu <liuwe@microsoft.com>, Wei Liu <wei.liu@kernel.org>
Subject: Re: [PATCH] hv_utils: Allow implicit ICTIMESYNCFLAG_SYNC
Date: Mon, 6 Nov 2023 01:30:50 +0000	[thread overview]
Message-ID: <ZUhByoXhvb3ZowPH@liuwe-devbox-debian-v2> (raw)
In-Reply-To: <CY5PR21MB366066CE916AEB5289153F09D5DCA@CY5PR21MB3660.namprd21.prod.outlook.com>

On Fri, Oct 27, 2023 at 08:42:33PM +0000, Peter Martincic wrote:
> From 529fcea5d296c22b1dc6c23d55bd6417794b3cda Mon Sep 17 00:00:00 2001
> From: Peter Martincic <pmartincic@microsoft.com>
> Date: Mon, 16 Oct 2023 16:41:10 -0700
> Subject: [PATCH] hv_utils: Allow implicit ICTIMESYNCFLAG_SYNC
> 
> Windows hosts can omit the _SYNC flag to due a bug on resume from modern
> suspend. If the guest is sufficiently behind, treat a _SAMPLE the same
> as if _SYNC was received.
> 
> This is hidden behind param hv_utils.timesync_implicit.
> 
> Signed-off-by: Peter Martincic <pmartincic@microsoft.com>

Boqun, what do you think about this patch?

> ---
>  drivers/hv/hv_util.c | 31 ++++++++++++++++++++++++++++++-
>  1 file changed, 30 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c
> index 42aec2c5606a..158f5ff4b809 100644
> --- a/drivers/hv/hv_util.c
> +++ b/drivers/hv/hv_util.c
> @@ -296,6 +296,11 @@ static struct {
>         spinlock_t                      lock;
>  } host_ts;
> 
> +static bool timesync_implicit;
> +
> +module_param(timesync_implicit, bool, 0644);
> +MODULE_PARM_DESC(timesync_implicit, "If set treat SAMPLE as SYNC when clock is behind");
> +
>  static inline u64 reftime_to_ns(u64 reftime)
>  {
>         return (reftime - WLTIMEDELTA) * 100;
> @@ -344,6 +349,29 @@ static void hv_set_host_time(struct work_struct *work)
>                 do_settimeofday64(&ts);
>  }
> 
> +/*
> + * Due to a bug on Windows hosts, the sync flag may not always be sent on resume.
> + * Force a sync if it's behind.
> + */
> +static inline bool hv_implicit_sync(u64 host_time)
> +{
> +       struct timespec64 new_ts;
> +       struct timespec64 threshold_ts;
> +
> +       new_ts = ns_to_timespec64(reftime_to_ns(host_time));
> +       ktime_get_real_ts64(&threshold_ts);
> +
> +       threshold_ts.tv_sec += 5;
> +
> +       /*
> +        * If guest behind the host by 5 or more seconds.
> +        */
> +       if (timespec64_compare(&new_ts, &threshold_ts) >= 0)
> +               return true;
> +
> +       return false;
> +}
> +
>  /*
>   * Synchronize time with host after reboot, restore, etc.
>   *
> @@ -384,7 +412,8 @@ static inline void adj_guesttime(u64 hosttime, u64 reftime, u8 adj_flags)
>         spin_unlock_irqrestore(&host_ts.lock, flags);
> 
>         /* Schedule work to do do_settimeofday64() */
> -       if (adj_flags & ICTIMESYNCFLAG_SYNC)
> +       if ((adj_flags & ICTIMESYNCFLAG_SYNC) ||
> +           (timesync_implicit && hv_implicit_sync(host_ts.host_time)))
>                 schedule_work(&adj_time_work);
>  }
> 
> --
> 2.34.1
> 

  reply	other threads:[~2023-11-06  1:31 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-27 20:42 [PATCH] hv_utils: Allow implicit ICTIMESYNCFLAG_SYNC Peter Martincic
2023-11-06  1:30 ` Wei Liu [this message]
2023-11-06 18:18   ` [EXTERNAL] " Peter Martincic
2023-11-06 19:01     ` Boqun Feng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZUhByoXhvb3ZowPH@liuwe-devbox-debian-v2 \
    --to=wei.liu@kernel.org \
    --cc=Boqun.Feng@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=liuwe@microsoft.com \
    --cc=mikelley@microsoft.com \
    --cc=pmartincic@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.