Commit 0f532a78 authored by Lakshmi Sowjanya D's avatar Lakshmi Sowjanya D Committed by Thomas Gleixner
Browse files

x86/tsc: Remove obsolete ART to TSC conversion functions



convert_art_to_tsc() and convert_art_ns_to_tsc() interfaces are no
longer required. The conversion is now handled by the core code.

Signed-off-by: default avatarLakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240513103813.5666-9-lakshmi.sowjanya.d@intel.com
parent d4bea547
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -28,9 +28,6 @@ static inline cycles_t get_cycles(void)
}
#define get_cycles get_cycles

extern struct system_counterval_t convert_art_to_tsc(u64 art);
extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns);

extern void tsc_early_init(void);
extern void tsc_init(void);
extern void mark_tsc_unstable(char *reason);
+0 −60
Original line number Diff line number Diff line
@@ -1297,66 +1297,6 @@ int unsynchronized_tsc(void)
	return 0;
}

/*
 * Convert ART to TSC given numerator/denominator found in detect_art()
 */
struct system_counterval_t convert_art_to_tsc(u64 art)
{
	u64 tmp, res, rem;

	rem = do_div(art, art_base_clk.denominator);

	res = art * art_base_clk.numerator;
	tmp = rem * art_base_clk.numerator;

	do_div(tmp, art_base_clk.denominator);
	res += tmp + art_base_clk.offset;

	return (struct system_counterval_t) {
		.cs_id	= have_art ? CSID_X86_TSC : CSID_GENERIC,
		.cycles	= res,
	};
}
EXPORT_SYMBOL(convert_art_to_tsc);

/**
 * convert_art_ns_to_tsc() - Convert ART in nanoseconds to TSC.
 * @art_ns: ART (Always Running Timer) in unit of nanoseconds
 *
 * PTM requires all timestamps to be in units of nanoseconds. When user
 * software requests a cross-timestamp, this function converts system timestamp
 * to TSC.
 *
 * This is valid when CPU feature flag X86_FEATURE_TSC_KNOWN_FREQ is set
 * indicating the tsc_khz is derived from CPUID[15H]. Drivers should check
 * that this flag is set before conversion to TSC is attempted.
 *
 * Return:
 * struct system_counterval_t - system counter value with the ID of the
 *	corresponding clocksource:
 *	cycles:		System counter value
 *	cs_id:		The clocksource ID for validating comparability
 */

struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns)
{
	u64 tmp, res, rem;

	rem = do_div(art_ns, USEC_PER_SEC);

	res = art_ns * tsc_khz;
	tmp = rem * tsc_khz;

	do_div(tmp, USEC_PER_SEC);
	res += tmp;

	return (struct system_counterval_t) {
		.cs_id	= have_art ? CSID_X86_TSC : CSID_GENERIC,
		.cycles	= res,
	};
}
EXPORT_SYMBOL(convert_art_ns_to_tsc);

static void tsc_refine_calibration_work(struct work_struct *work);
static DECLARE_DELAYED_WORK(tsc_irqwork, tsc_refine_calibration_work);
/**