All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Peter Hilber <peter.hilber@opensynergy.com>
Cc: linux-kernel@vger.kernel.org, "D,
	Lakshmi Sowjanya" <lakshmi.sowjanya.d@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	jstultz@google.com, giometti@enneenne.com, corbet@lwn.net,
	andriy.shevchenko@linux.intel.com, "Dong,
	Eddie" <eddie.dong@intel.com>,
	"Hall, Christopher S" <christopher.s.hall@intel.com>,
	Sean Christopherson <seanjc@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Wanpeng Li <wanpengli@tencent.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Marc Zyngier <maz@kernel.org>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Richard Cochran <richardcochran@gmail.com>,
	kvm@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [RFC PATCH v2 2/7] x86/tsc: Add clocksource ID, set system_counterval_t.cs_id
Date: Sun, 24 Dec 2023 16:27:09 +0000	[thread overview]
Message-ID: <20231224162709.GA230301@kernel.org> (raw)
In-Reply-To: <20231215220612.173603-3-peter.hilber@opensynergy.com>

On Fri, Dec 15, 2023 at 11:06:07PM +0100, Peter Hilber wrote:
> Add a clocksource ID for TSC and a distinct one for the early TSC.
> 
> Use distinct IDs for TSC and early TSC, since those also have distinct
> clocksource structs. This should help to keep existing semantics when
> comparing clocksources.
> 
> Also, set the recently added struct system_counterval_t member cs_id to the
> TSC ID in the cases where the clocksource member is being set to the TSC
> clocksource. In the future, this will keep get_device_system_crosststamp()
> working, when it will compare the clocksource id in struct
> system_counterval_t, rather than the clocksource.
> 
> For the x86 ART related code, system_counterval_t.cs == NULL corresponds to
> system_counterval_t.cs_id == CSID_GENERIC (0).
> 
> Signed-off-by: Peter Hilber <peter.hilber@opensynergy.com>

Hi Peter,

some minor feedback from my side that you may consider for
a future revision.

> diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c

...

> @@ -1327,12 +1334,15 @@ EXPORT_SYMBOL(convert_art_to_tsc);
>   * that this flag is set before conversion to TSC is attempted.
>   *
>   * Return:
> - * struct system_counterval_t - system counter value with the pointer to the
> + * struct system_counterval_t - system counter value with the ID of the
>   *	corresponding clocksource
>   *	@cycles:	System counter value
>   *	@cs:		Clocksource corresponding to system counter value. Used
>   *			by timekeeping code to verify comparability of two cycle
>   *			values.
> + *	@cs_id:		Clocksource ID corresponding to system counter value.
> + *			Used by timekeeping code to verify comparability of two
> + *			cycle values.

None of the documented parameters to convert_art_ns_to_tsc() above
correspond to the parameters of convert_art_ns_to_tsc() below.

I would suggest a separate patch to address this.
And dropping this hunk from this patch.

The same patch that corrects the kernel doc for convert_art_ns_to_tsc()
could also correct the kernel doc for tsc_refine_calibration_work()
by documenting it's work parameter.

>   */
>  
>  struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns)
> @@ -1347,8 +1357,11 @@ struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns)
>  	do_div(tmp, USEC_PER_SEC);
>  	res += tmp;
>  
> -	return (struct system_counterval_t) { .cs = art_related_clocksource,
> -					      .cycles = res};
> +	return (struct system_counterval_t) {
> +		.cs = art_related_clocksource,
> +		.cs_id = have_art ? CSID_X86_TSC : CSID_GENERIC,
> +		.cycles = res
> +	};
>  }
>  EXPORT_SYMBOL(convert_art_ns_to_tsc);
>  
> @@ -1454,8 +1467,10 @@ static void tsc_refine_calibration_work(struct work_struct *work)
>  	if (tsc_unstable)
>  		goto unreg;
>  
> -	if (boot_cpu_has(X86_FEATURE_ART))
> +	if (boot_cpu_has(X86_FEATURE_ART)) {
>  		art_related_clocksource = &clocksource_tsc;
> +		have_art = true;
> +	}
>  	clocksource_register_khz(&clocksource_tsc, tsc_khz);
>  unreg:
>  	clocksource_unregister(&clocksource_tsc_early);

...

  reply	other threads:[~2023-12-24 16:27 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-15 22:06 [RFC PATCH v2 0/7] treewide: Use clocksource id for get_device_system_crosststamp() Peter Hilber
2023-12-15 22:06 ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 1/7] timekeeping: Add clocksource ID to struct system_counterval_t Peter Hilber
2023-12-15 22:06   ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 2/7] x86/tsc: Add clocksource ID, set system_counterval_t.cs_id Peter Hilber
2023-12-24 16:27   ` Simon Horman [this message]
2024-01-11 11:34     ` Peter Hilber
2024-01-25 20:13     ` Thomas Gleixner
2023-12-15 22:06 ` [RFC PATCH v2 3/7] x86/kvm, ptp/kvm: " Peter Hilber
2023-12-15 22:06   ` Peter Hilber
2023-12-18 10:23   ` Andy Shevchenko
2023-12-18 10:23     ` Andy Shevchenko
2024-01-11 11:32     ` Peter Hilber
2024-01-11 11:32       ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 4/7] ptp/kvm, arm_arch_timer: Set system_counterval_t.cs_id to constant Peter Hilber
2023-12-15 22:06   ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 5/7] timekeeping: Evaluate system_counterval_t.cs_id instead of .cs Peter Hilber
2023-12-15 22:06   ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 6/7] treewide: Remove system_counterval_t.cs, which is never read Peter Hilber
2023-12-15 22:06   ` Peter Hilber
2023-12-15 22:06 ` [RFC PATCH v2 7/7] kvmclock: Unexport kvmclock clocksource Peter Hilber

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=20231224162709.GA230301@kernel.org \
    --to=horms@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=christopher.s.hall@intel.com \
    --cc=corbet@lwn.net \
    --cc=daniel.lezcano@linaro.org \
    --cc=dave.hansen@linux.intel.com \
    --cc=eddie.dong@intel.com \
    --cc=giometti@enneenne.com \
    --cc=hpa@zytor.com \
    --cc=jstultz@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=lakshmi.sowjanya.d@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peter.hilber@opensynergy.com \
    --cc=richardcochran@gmail.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=x86@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.