Stable Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit
@ 2020-03-27  2:11 Tianyu Lan
  2020-03-27  8:53 ` Vitaly Kuznetsov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Tianyu Lan @ 2020-03-27  2:11 UTC (permalink / raw)
  To: kys, haiyangz, sthemmin, liuwe, daniel.lezcano, tglx, michael.h.kelley
  Cc: Tianyu Lan, linux-hyperv, linux-kernel, vkuznets, stable, Yubo Xie

From: Yubo Xie <yuboxie@microsoft.com>

sched clock callback should return time with nano second as unit
but current hv callback returns time with 100ns. Fix it.

Cc: stable@vger.kernel.org
Signed-off-by: Yubo Xie <yuboxie@microsoft.com>
Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
Fixes: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function")
---
Change since v1:
	Update fix commit number in change log. 
---
 drivers/clocksource/hyperv_timer.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
index 9d808d595ca8..662ed978fa24 100644
--- a/drivers/clocksource/hyperv_timer.c
+++ b/drivers/clocksource/hyperv_timer.c
@@ -343,7 +343,8 @@ static u64 notrace read_hv_clock_tsc_cs(struct clocksource *arg)
 
 static u64 read_hv_sched_clock_tsc(void)
 {
-	return read_hv_clock_tsc() - hv_sched_clock_offset;
+	return (read_hv_clock_tsc() - hv_sched_clock_offset)
+		* (NSEC_PER_SEC / HV_CLOCK_HZ);
 }
 
 static void suspend_hv_clock_tsc(struct clocksource *arg)
@@ -398,7 +399,8 @@ static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg)
 
 static u64 read_hv_sched_clock_msr(void)
 {
-	return read_hv_clock_msr() - hv_sched_clock_offset;
+	return (read_hv_clock_msr() - hv_sched_clock_offset)
+		* (NSEC_PER_SEC / HV_CLOCK_HZ);
 }
 
 static struct clocksource hyperv_cs_msr = {
-- 
2.14.5


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit
  2020-03-27  2:11 [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Tianyu Lan
@ 2020-03-27  8:53 ` Vitaly Kuznetsov
  2020-03-30 10:05   ` Wei Liu
  2020-03-27 11:30 ` [tip: timers/urgent] clocksource/drivers/hyper-v: Make sched clock return nanoseconds correctly tip-bot2 for Yubo Xie
  2020-03-27 15:03 ` [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Sasha Levin
  2 siblings, 1 reply; 6+ messages in thread
From: Vitaly Kuznetsov @ 2020-03-27  8:53 UTC (permalink / raw)
  To: Tianyu Lan
  Cc: Tianyu Lan, linux-hyperv, linux-kernel, stable, Yubo Xie, kys,
	haiyangz, sthemmin, liuwe, daniel.lezcano, tglx,
	michael.h.kelley

Tianyu Lan <ltykernel@gmail.com> writes:

> From: Yubo Xie <yuboxie@microsoft.com>
>
> sched clock callback should return time with nano second as unit
> but current hv callback returns time with 100ns. Fix it.
>
> Cc: stable@vger.kernel.org
> Signed-off-by: Yubo Xie <yuboxie@microsoft.com>
> Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
> Fixes: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function")
> ---
> Change since v1:
> 	Update fix commit number in change log. 
> ---
>  drivers/clocksource/hyperv_timer.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
> index 9d808d595ca8..662ed978fa24 100644
> --- a/drivers/clocksource/hyperv_timer.c
> +++ b/drivers/clocksource/hyperv_timer.c
> @@ -343,7 +343,8 @@ static u64 notrace read_hv_clock_tsc_cs(struct clocksource *arg)
>  
>  static u64 read_hv_sched_clock_tsc(void)
>  {
> -	return read_hv_clock_tsc() - hv_sched_clock_offset;
> +	return (read_hv_clock_tsc() - hv_sched_clock_offset)
> +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
>  }
>  
>  static void suspend_hv_clock_tsc(struct clocksource *arg)
> @@ -398,7 +399,8 @@ static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg)
>  
>  static u64 read_hv_sched_clock_msr(void)
>  {
> -	return read_hv_clock_msr() - hv_sched_clock_offset;
> +	return (read_hv_clock_msr() - hv_sched_clock_offset)
> +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
>  }
>  
>  static struct clocksource hyperv_cs_msr = {

Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>

-- 
Vitaly


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip: timers/urgent] clocksource/drivers/hyper-v: Make sched clock return nanoseconds correctly
  2020-03-27  2:11 [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Tianyu Lan
  2020-03-27  8:53 ` Vitaly Kuznetsov
@ 2020-03-27 11:30 ` tip-bot2 for Yubo Xie
  2020-03-27 15:03 ` [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Sasha Levin
  2 siblings, 0 replies; 6+ messages in thread
From: tip-bot2 for Yubo Xie @ 2020-03-27 11:30 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Yubo Xie, Tianyu Lan, Thomas Gleixner, Vitaly Kuznetsov, stable,
	x86, LKML

The following commit has been merged into the timers/urgent branch of tip:

Commit-ID:     749da8ca978f19710aba496208c480ad42d37f79
Gitweb:        https://git.kernel.org/tip/749da8ca978f19710aba496208c480ad42d37f79
Author:        Yubo Xie <yuboxie@microsoft.com>
AuthorDate:    Thu, 26 Mar 2020 19:11:59 -07:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Fri, 27 Mar 2020 12:27:45 +01:00

clocksource/drivers/hyper-v: Make sched clock return nanoseconds correctly

The sched clock read functions return the HV clock (100ns granularity)
without converting it to nanoseconds.

Add the missing conversion.

Fixes: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function")
Signed-off-by: Yubo Xie <yuboxie@microsoft.com>
Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20200327021159.31429-1-Tianyu.Lan@microsoft.com

---
 drivers/clocksource/hyperv_timer.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
index 9d808d5..eb0ba78 100644
--- a/drivers/clocksource/hyperv_timer.c
+++ b/drivers/clocksource/hyperv_timer.c
@@ -343,7 +343,8 @@ static u64 notrace read_hv_clock_tsc_cs(struct clocksource *arg)
 
 static u64 read_hv_sched_clock_tsc(void)
 {
-	return read_hv_clock_tsc() - hv_sched_clock_offset;
+	return (read_hv_clock_tsc() - hv_sched_clock_offset) *
+		(NSEC_PER_SEC / HV_CLOCK_HZ);
 }
 
 static void suspend_hv_clock_tsc(struct clocksource *arg)
@@ -398,7 +399,8 @@ static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg)
 
 static u64 read_hv_sched_clock_msr(void)
 {
-	return read_hv_clock_msr() - hv_sched_clock_offset;
+	return (read_hv_clock_msr() - hv_sched_clock_offset) *
+		(NSEC_PER_SEC / HV_CLOCK_HZ);
 }
 
 static struct clocksource hyperv_cs_msr = {

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit
  2020-03-27  2:11 [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Tianyu Lan
  2020-03-27  8:53 ` Vitaly Kuznetsov
  2020-03-27 11:30 ` [tip: timers/urgent] clocksource/drivers/hyper-v: Make sched clock return nanoseconds correctly tip-bot2 for Yubo Xie
@ 2020-03-27 15:03 ` Sasha Levin
  2 siblings, 0 replies; 6+ messages in thread
From: Sasha Levin @ 2020-03-27 15:03 UTC (permalink / raw)
  To: Sasha Levin, Tianyu Lan, Yubo Xie, kys, haiyangz, sthemmin
  Cc: Tianyu Lan, stable, stable

Hi

[This is an automated email]

This commit has been processed because it contains a "Fixes:" tag
fixing commit: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function").

The bot has tested the following trees: v5.5.11, v5.4.27.

v5.5.11: Failed to apply! Possible dependencies:
    0af3e137c144 ("clocksource/drivers/hyper-v: Untangle stimers and timesync from clocksources")
    ddc61bbc4501 ("clocksource/drivers/hyper-v: Reserve PAGE_SIZE space for tsc page")

v5.4.27: Failed to apply! Possible dependencies:
    0af3e137c144 ("clocksource/drivers/hyper-v: Untangle stimers and timesync from clocksources")
    ddc61bbc4501 ("clocksource/drivers/hyper-v: Reserve PAGE_SIZE space for tsc page")


NOTE: The patch will not be queued to stable trees until it is upstream.

How should we proceed with this patch?

-- 
Thanks
Sasha

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit
  2020-03-27  8:53 ` Vitaly Kuznetsov
@ 2020-03-30 10:05   ` Wei Liu
  2020-03-30 10:22     ` Wei Liu
  0 siblings, 1 reply; 6+ messages in thread
From: Wei Liu @ 2020-03-30 10:05 UTC (permalink / raw)
  To: Vitaly Kuznetsov
  Cc: Tianyu Lan, Tianyu Lan, linux-hyperv, linux-kernel, stable,
	Yubo Xie, kys, haiyangz, sthemmin, liuwe, daniel.lezcano, tglx,
	michael.h.kelley, Wei Liu

On Fri, Mar 27, 2020 at 09:53:39AM +0100, Vitaly Kuznetsov wrote:
> Tianyu Lan <ltykernel@gmail.com> writes:
> 
> > From: Yubo Xie <yuboxie@microsoft.com>
> >
> > sched clock callback should return time with nano second as unit
> > but current hv callback returns time with 100ns. Fix it.
> >
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Yubo Xie <yuboxie@microsoft.com>
> > Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
> > Fixes: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function")
> > ---
> > Change since v1:
> > 	Update fix commit number in change log. 
> > ---
> >  drivers/clocksource/hyperv_timer.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
> > index 9d808d595ca8..662ed978fa24 100644
> > --- a/drivers/clocksource/hyperv_timer.c
> > +++ b/drivers/clocksource/hyperv_timer.c
> > @@ -343,7 +343,8 @@ static u64 notrace read_hv_clock_tsc_cs(struct clocksource *arg)
> >  
> >  static u64 read_hv_sched_clock_tsc(void)
> >  {
> > -	return read_hv_clock_tsc() - hv_sched_clock_offset;
> > +	return (read_hv_clock_tsc() - hv_sched_clock_offset)
> > +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
> >  }
> >  
> >  static void suspend_hv_clock_tsc(struct clocksource *arg)
> > @@ -398,7 +399,8 @@ static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg)
> >  
> >  static u64 read_hv_sched_clock_msr(void)
> >  {
> > -	return read_hv_clock_msr() - hv_sched_clock_offset;
> > +	return (read_hv_clock_msr() - hv_sched_clock_offset)
> > +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
> >  }
> >  
> >  static struct clocksource hyperv_cs_msr = {
> 
> Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>

Queued for hyperv-fixes. Thank you both.

Wei.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit
  2020-03-30 10:05   ` Wei Liu
@ 2020-03-30 10:22     ` Wei Liu
  0 siblings, 0 replies; 6+ messages in thread
From: Wei Liu @ 2020-03-30 10:22 UTC (permalink / raw)
  To: Vitaly Kuznetsov
  Cc: Tianyu Lan, Tianyu Lan, linux-hyperv, linux-kernel, stable,
	Yubo Xie, kys, haiyangz, sthemmin, liuwe, daniel.lezcano, tglx,
	michael.h.kelley, Wei Liu

On Mon, Mar 30, 2020 at 11:05:02AM +0100, Wei Liu wrote:
> On Fri, Mar 27, 2020 at 09:53:39AM +0100, Vitaly Kuznetsov wrote:
> > Tianyu Lan <ltykernel@gmail.com> writes:
> > 
> > > From: Yubo Xie <yuboxie@microsoft.com>
> > >
> > > sched clock callback should return time with nano second as unit
> > > but current hv callback returns time with 100ns. Fix it.
> > >
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Yubo Xie <yuboxie@microsoft.com>
> > > Signed-off-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
> > > Fixes: bd00cd52d5be ("clocksource/drivers/hyperv: Add Hyper-V specific sched clock function")
> > > ---
> > > Change since v1:
> > > 	Update fix commit number in change log. 
> > > ---
> > >  drivers/clocksource/hyperv_timer.c | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
> > > index 9d808d595ca8..662ed978fa24 100644
> > > --- a/drivers/clocksource/hyperv_timer.c
> > > +++ b/drivers/clocksource/hyperv_timer.c
> > > @@ -343,7 +343,8 @@ static u64 notrace read_hv_clock_tsc_cs(struct clocksource *arg)
> > >  
> > >  static u64 read_hv_sched_clock_tsc(void)
> > >  {
> > > -	return read_hv_clock_tsc() - hv_sched_clock_offset;
> > > +	return (read_hv_clock_tsc() - hv_sched_clock_offset)
> > > +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
> > >  }
> > >  
> > >  static void suspend_hv_clock_tsc(struct clocksource *arg)
> > > @@ -398,7 +399,8 @@ static u64 notrace read_hv_clock_msr_cs(struct clocksource *arg)
> > >  
> > >  static u64 read_hv_sched_clock_msr(void)
> > >  {
> > > -	return read_hv_clock_msr() - hv_sched_clock_offset;
> > > +	return (read_hv_clock_msr() - hv_sched_clock_offset)
> > > +		* (NSEC_PER_SEC / HV_CLOCK_HZ);
> > >  }
> > >  
> > >  static struct clocksource hyperv_cs_msr = {
> > 
> > Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
> 
> Queued for hyperv-fixes. Thank you both.

It appears Thomas already sent this to Linus, so I will drop this from
my branch.

Wei.

> 
> Wei.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-27  2:11 [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Tianyu Lan
2020-03-27  8:53 ` Vitaly Kuznetsov
2020-03-30 10:05   ` Wei Liu
2020-03-30 10:22     ` Wei Liu
2020-03-27 11:30 ` [tip: timers/urgent] clocksource/drivers/hyper-v: Make sched clock return nanoseconds correctly tip-bot2 for Yubo Xie
2020-03-27 15:03 ` [PATCH V2] x86/Hyper-V: Fix hv sched clock function return wrong time unit Sasha Levin

Stable Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ https://lore.kernel.org/stable \
		stable@vger.kernel.org
	public-inbox-index stable

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.stable


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git