All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Thomas Gleixner <tglx@linutronix.de>, linux-hyperv@vger.kernel.org
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
	Michael Kelley <mikelley@microsoft.com>,
	Mohammed Gamal <mgamal@redhat.com>, Wei Liu <wei.liu@kernel.org>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Dexuan Cui <decui@microsoft.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] clocksource/drivers/hyper-v: Re-enable VDSO_CLOCKMODE_HVCLOCK on X86
Date: Thu, 13 May 2021 09:18:37 +0200	[thread overview]
Message-ID: <8735urw182.fsf@vitty.brq.redhat.com> (raw)
In-Reply-To: <87tun766kv.ffs@nanos.tec.linutronix.de>

Thomas Gleixner <tglx@linutronix.de> writes:

> On Wed, May 12 2021 at 10:46, Vitaly Kuznetsov wrote:
>> Mohammed reports (https://bugzilla.kernel.org/show_bug.cgi?id=213029)
>> the commit e4ab4658f1cf ("clocksource/drivers/hyper-v: Handle vDSO
>> differences inline") broke vDSO on x86. The problem appears to be that
>> VDSO_CLOCKMODE_HVCLOCK is an enum value in 'enum vdso_clock_mode' and
>> '#ifdef VDSO_CLOCKMODE_HVCLOCK' branch evaluates to false (it is not
>> a define). Replace it with CONFIG_X86 as it is the only arch which
>> has this mode currently.
>>
>> Reported-by: Mohammed Gamal <mgamal@redhat.com>
>> Fixes: e4ab4658f1cf ("clocksource/drivers/hyper-v: Handle vDSO differences inline")
>> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
>> ---
>>  drivers/clocksource/hyperv_timer.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
>> index 977fd05ac35f..e17421f5e47d 100644
>> --- a/drivers/clocksource/hyperv_timer.c
>> +++ b/drivers/clocksource/hyperv_timer.c
>> @@ -419,7 +419,7 @@ static void resume_hv_clock_tsc(struct clocksource *arg)
>>  	hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
>>  }
>>  
>> -#ifdef VDSO_CLOCKMODE_HVCLOCK
>> +#ifdef CONFIG_X86
>>  static int hv_cs_enable(struct clocksource *cs)
>>  {
>>  	vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK);
>> @@ -435,7 +435,7 @@ static struct clocksource hyperv_cs_tsc = {
>>  	.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
>>  	.suspend= suspend_hv_clock_tsc,
>>  	.resume	= resume_hv_clock_tsc,
>> -#ifdef VDSO_CLOCKMODE_HVCLOCK
>> +#ifdef CONFIG_X86
>>  	.enable = hv_cs_enable,
>>  	.vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK,
>>  #else
>
> That's lame as it needs to be patched differently once ARM64 gains
> support. What about the below?
>

The solution I liked the most was Michael's: no need to do anything
except for adding VDSO_CLOCKMODE_HVCLOCK to the enum. Too bad it didn't
work)

You proposal seems to be slightly better than mine: when adding
VDSO_CLOCKMODE_HVCLOCK to ARM the change will be limited to
drivers/clocksource/hyperv_timer.c will stay intact.

I'll send v2 shortly, thanks!


> Thanks,
>
>         tglx
> ---
> --- a/arch/x86/include/asm/vdso/clocksource.h
> +++ b/arch/x86/include/asm/vdso/clocksource.h
> @@ -7,4 +7,6 @@
>  	VDSO_CLOCKMODE_PVCLOCK,	\
>  	VDSO_CLOCKMODE_HVCLOCK
>  
> +#define HAVE_VDSO_CLOCKMODE_HVCLOCK
> +
>  #endif /* __ASM_VDSO_CLOCKSOURCE_H */
> --- a/drivers/clocksource/hyperv_timer.c
> +++ b/drivers/clocksource/hyperv_timer.c
> @@ -419,7 +419,7 @@ static void resume_hv_clock_tsc(struct c
>  	hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
>  }
>  
> -#ifdef VDSO_CLOCKMODE_HVCLOCK
> +#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
>  static int hv_cs_enable(struct clocksource *cs)
>  {
>  	vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK);
> @@ -435,7 +435,7 @@ static struct clocksource hyperv_cs_tsc
>  	.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
>  	.suspend= suspend_hv_clock_tsc,
>  	.resume	= resume_hv_clock_tsc,
> -#ifdef VDSO_CLOCKMODE_HVCLOCK
> +#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
>  	.enable = hv_cs_enable,
>  	.vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK,
>  #else
>

-- 
Vitaly


      reply	other threads:[~2021-05-13  7:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-12  8:46 [PATCH] clocksource/drivers/hyper-v: Re-enable VDSO_CLOCKMODE_HVCLOCK on X86 Vitaly Kuznetsov
2021-05-12 16:03 ` Michael Kelley
2021-05-12 20:27 ` Thomas Gleixner
2021-05-13  7:18   ` Vitaly Kuznetsov [this message]

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=8735urw182.fsf@vitty.brq.redhat.com \
    --to=vkuznets@redhat.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=decui@microsoft.com \
    --cc=haiyangz@microsoft.com \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgamal@redhat.com \
    --cc=mikelley@microsoft.com \
    --cc=sthemmin@microsoft.com \
    --cc=tglx@linutronix.de \
    --cc=wei.liu@kernel.org \
    /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.