x86/kvm, ptp/kvm: Add clocksource ID, set system_counterval_t.cs_id

Add a clocksource ID for the x86 kvmclock.

Also, for ptp_kvm, set the recently added struct system_counterval_t member
cs_id to the clocksource ID (x86 kvmclock or ARM Generic Timer). In the
future, get_device_system_crosststamp() will compare the clocksource ID in
struct system_counterval_t, rather than the clocksource.

For now, to avoid touching too many subsystems at once, extract the
clocksource ID from the clocksource. The clocksource dereference will be
removed once everything is converted over..

Signed-off-by: Peter Hilber <peter.hilber@opensynergy.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20240201010453.2212371-5-peter.hilber@opensynergy.com
This commit is contained in:
Peter Hilber 2024-02-01 02:04:49 +01:00 committed by Thomas Gleixner
parent a2c1fe7206
commit 576bd4962f
3 changed files with 4 additions and 0 deletions

View File

@ -160,6 +160,7 @@ struct clocksource kvm_clock = {
.rating = 400, .rating = 400,
.mask = CLOCKSOURCE_MASK(64), .mask = CLOCKSOURCE_MASK(64),
.flags = CLOCK_SOURCE_IS_CONTINUOUS, .flags = CLOCK_SOURCE_IS_CONTINUOUS,
.id = CSID_X86_KVM_CLK,
.enable = kvm_cs_enable, .enable = kvm_cs_enable,
}; };
EXPORT_SYMBOL_GPL(kvm_clock); EXPORT_SYMBOL_GPL(kvm_clock);

View File

@ -4,6 +4,7 @@
* *
* Copyright (C) 2017 Red Hat Inc. * Copyright (C) 2017 Red Hat Inc.
*/ */
#include <linux/clocksource.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/init.h> #include <linux/init.h>
@ -47,6 +48,7 @@ static int ptp_kvm_get_time_fn(ktime_t *device_time,
system_counter->cycles = cycle; system_counter->cycles = cycle;
system_counter->cs = cs; system_counter->cs = cs;
system_counter->cs_id = cs->id;
*device_time = timespec64_to_ktime(tspec); *device_time = timespec64_to_ktime(tspec);

View File

@ -8,6 +8,7 @@ enum clocksource_ids {
CSID_ARM_ARCH_COUNTER, CSID_ARM_ARCH_COUNTER,
CSID_X86_TSC_EARLY, CSID_X86_TSC_EARLY,
CSID_X86_TSC, CSID_X86_TSC,
CSID_X86_KVM_CLK,
CSID_MAX, CSID_MAX,
}; };