2019-08-22 07:03:18

by Tianyu Lan

[permalink] [raw]
Subject: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

From: Tianyu Lan <[email protected]>

Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
hv_sched_clock_offset for their sched clock callback and so
define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.

Signed-off-by: Tianyu Lan <[email protected]>
---
This patch is based on the top of "git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
timers/core".

drivers/clocksource/hyperv_timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
index dad8af198e20..c322ab4d3689 100644
--- a/drivers/clocksource/hyperv_timer.c
+++ b/drivers/clocksource/hyperv_timer.c
@@ -22,6 +22,7 @@
#include <asm/mshyperv.h>

static struct clock_event_device __percpu *hv_clock_event;
+static u64 hv_sched_clock_offset __ro_after_init;

/*
* If false, we're using the old mechanism for stimer0 interrupts
@@ -215,7 +216,6 @@ EXPORT_SYMBOL_GPL(hyperv_cs);
#ifdef CONFIG_HYPERV_TSCPAGE

static struct ms_hyperv_tsc_page tsc_pg __aligned(PAGE_SIZE);
-static u64 hv_sched_clock_offset __ro_after_init;

struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
{
--
2.14.5


2019-08-22 10:09:34

by Tianyu Lan

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

On Thu, Aug 22, 2019 at 4:39 PM Vitaly Kuznetsov <[email protected]> wrote:
>
> [email protected] writes:
>
> > From: Tianyu Lan <[email protected]>
> >
> > Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
> > hv_sched_clock_offset for their sched clock callback and so
> > define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.
>
> CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
> clocksource on 32bit" patch. Do we still have an issue to fix?
>
Hi Vtialy:
Your patch also fixs the build issue. If it's not
necessary to have a dedicated patch
to fix the issue, please ignore it. Thanks.

> >
> > Signed-off-by: Tianyu Lan <[email protected]>
> > ---
> > This patch is based on the top of "git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
> > timers/core".
> >
> > drivers/clocksource/hyperv_timer.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
> > index dad8af198e20..c322ab4d3689 100644
> > --- a/drivers/clocksource/hyperv_timer.c
> > +++ b/drivers/clocksource/hyperv_timer.c
> > @@ -22,6 +22,7 @@
> > #include <asm/mshyperv.h>
> >
> > static struct clock_event_device __percpu *hv_clock_event;
> > +static u64 hv_sched_clock_offset __ro_after_init;
> >
> > /*
> > * If false, we're using the old mechanism for stimer0 interrupts
> > @@ -215,7 +216,6 @@ EXPORT_SYMBOL_GPL(hyperv_cs);
> > #ifdef CONFIG_HYPERV_TSCPAGE
> >
> > static struct ms_hyperv_tsc_page tsc_pg __aligned(PAGE_SIZE);
> > -static u64 hv_sched_clock_offset __ro_after_init;
> >
> > struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
> > {
>
> --
> Vitaly



--
Best regards
Tianyu Lan

2019-08-22 11:11:54

by Vitaly Kuznetsov

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

[email protected] writes:

> From: Tianyu Lan <[email protected]>
>
> Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
> hv_sched_clock_offset for their sched clock callback and so
> define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.

CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
clocksource on 32bit" patch. Do we still have an issue to fix?

>
> Signed-off-by: Tianyu Lan <[email protected]>
> ---
> This patch is based on the top of "git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
> timers/core".
>
> drivers/clocksource/hyperv_timer.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
> index dad8af198e20..c322ab4d3689 100644
> --- a/drivers/clocksource/hyperv_timer.c
> +++ b/drivers/clocksource/hyperv_timer.c
> @@ -22,6 +22,7 @@
> #include <asm/mshyperv.h>
>
> static struct clock_event_device __percpu *hv_clock_event;
> +static u64 hv_sched_clock_offset __ro_after_init;
>
> /*
> * If false, we're using the old mechanism for stimer0 interrupts
> @@ -215,7 +216,6 @@ EXPORT_SYMBOL_GPL(hyperv_cs);
> #ifdef CONFIG_HYPERV_TSCPAGE
>
> static struct ms_hyperv_tsc_page tsc_pg __aligned(PAGE_SIZE);
> -static u64 hv_sched_clock_offset __ro_after_init;
>
> struct ms_hyperv_tsc_page *hv_get_tsc_page(void)
> {

--
Vitaly

2019-08-24 17:55:50

by Sasha Levin

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

On Thu, Aug 22, 2019 at 10:39:46AM +0200, Vitaly Kuznetsov wrote:
>[email protected] writes:
>
>> From: Tianyu Lan <[email protected]>
>>
>> Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
>> hv_sched_clock_offset for their sched clock callback and so
>> define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.
>
>CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
>clocksource on 32bit" patch. Do we still have an issue to fix?

Yes. Let's get it fixed on older kernels (as such we need to tag this
one for stable). The 32bit TSC patch won't come in before 5.4 anyway.

Vitaly, does can you ack this patch? It might require you to re-spin
your patch.

--
Thanks,
Sasha

2019-08-26 03:47:36

by Tianyu Lan

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

On Sun, Aug 25, 2019 at 1:52 AM Sasha Levin <[email protected]> wrote:
>
> On Thu, Aug 22, 2019 at 10:39:46AM +0200, Vitaly Kuznetsov wrote:
> >[email protected] writes:
> >
> >> From: Tianyu Lan <[email protected]>
> >>
> >> Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
> >> hv_sched_clock_offset for their sched clock callback and so
> >> define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.
> >
> >CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
> >clocksource on 32bit" patch. Do we still have an issue to fix?
>
> Yes. Let's get it fixed on older kernels (as such we need to tag this
> one for stable). The 32bit TSC patch won't come in before 5.4 anyway.
>
> Vitaly, does can you ack this patch? It might require you to re-spin
> your patch.
>
Hi Sasha:
Thomas has foled this fix into original patch.
https://lkml.org/lkml/2019/8/23/600
--
Best regards
Tianyu Lan

2019-08-26 07:21:59

by Vitaly Kuznetsov

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

Sasha Levin <[email protected]> writes:

> On Thu, Aug 22, 2019 at 10:39:46AM +0200, Vitaly Kuznetsov wrote:
>>[email protected] writes:
>>
>>> From: Tianyu Lan <[email protected]>
>>>
>>> Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
>>> hv_sched_clock_offset for their sched clock callback and so
>>> define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.
>>
>>CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
>>clocksource on 32bit" patch. Do we still have an issue to fix?
>
> Yes. Let's get it fixed on older kernels (as such we need to tag this
> one for stable). The 32bit TSC patch won't come in before 5.4 anyway.
>
> Vitaly, does can you ack this patch? It might require you to re-spin
> your patch.
>

Sure, no problem,

Acked-by: Vitaly Kuznetsov <[email protected]>

I, however, was under the impression the patch fixes the issue with the
newly introduced sched clock:

commit b74e1d61dbc614ff35ef3ad9267c61ed06b09051
Author: Tianyu Lan <[email protected]>
Date: Wed Aug 14 20:32:16 2019 +0800

clocksource/hyperv: Add Hyper-V specific sched clock function

(and Fixes: tag is missing)

and this is not in mainline as of v5.3-rc6. In tip/timers/core Thomas
already picked my "clocksource/drivers/hyperv: Enable TSC page
clocksource on 32bit" which also resolves the issue.

So my question is - which older/stable kernel do you have in mind?

--
Vitaly

2019-08-26 11:56:35

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] x86/Hyper-V: Fix build error with CONFIG_HYPERV_TSCPAGE=N

On Mon, 26 Aug 2019, Vitaly Kuznetsov wrote:
> Sasha Levin <[email protected]> writes:
>
> > On Thu, Aug 22, 2019 at 10:39:46AM +0200, Vitaly Kuznetsov wrote:
> >>[email protected] writes:
> >>
> >>> From: Tianyu Lan <[email protected]>
> >>>
> >>> Both Hyper-V tsc page and Hyper-V tsc MSR code use variable
> >>> hv_sched_clock_offset for their sched clock callback and so
> >>> define the variable regardless of CONFIG_HYPERV_TSCPAGE setting.
> >>
> >>CONFIG_HYPERV_TSCPAGE is gone after my "x86/hyper-v: enable TSC page
> >>clocksource on 32bit" patch. Do we still have an issue to fix?
> >
> > Yes. Let's get it fixed on older kernels (as such we need to tag this
> > one for stable). The 32bit TSC patch won't come in before 5.4 anyway.
> >
> > Vitaly, does can you ack this patch? It might require you to re-spin
> > your patch.
> >
>
> Sure, no problem,
>
> Acked-by: Vitaly Kuznetsov <[email protected]>
>
> I, however, was under the impression the patch fixes the issue with the
> newly introduced sched clock:
>
> commit b74e1d61dbc614ff35ef3ad9267c61ed06b09051
> Author: Tianyu Lan <[email protected]>
> Date: Wed Aug 14 20:32:16 2019 +0800
>
> clocksource/hyperv: Add Hyper-V specific sched clock function
>
> (and Fixes: tag is missing)
>
> and this is not in mainline as of v5.3-rc6. In tip/timers/core Thomas
> already picked my "clocksource/drivers/hyperv: Enable TSC page
> clocksource on 32bit" which also resolves the issue.

No. I folded Sashas fix into the original clocksource patch and then added
yours on top.

Thanks,

tglx