All of lore.kernel.org
 help / color / mirror / 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 related	[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 related	[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, other threads:[~2020-03-30 10:22 UTC | newest]

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

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.