mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-08 11:26:41 +07:00
hrtimer: Revert CLOCK_MONOTONIC_RAW support
Revert commits:a6e707ddbd
: KVM: arm/arm64: timer: Switch to CLOCK_MONOTONIC_RAW9006a01829
: hrtimer: Catch illegal clockids9c808765e8
: hrtimer: Add support for CLOCK_MONOTONIC_RAW Marc found out, that there are fundamental issues with that patch series because __hrtimer_get_next_event() and hrtimer_forward() need support for CLOCK_MONOTONIC_RAW. Nothing which is easily fixed, so revert the whole lot. Reported-by: Marc Zyngier <marc.zyngier@arm.com> Link: http://lkml.kernel.org/r/56D6CEF0.8060607@arm.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
232d26373d
commit
82e88ff1ea
@ -151,7 +151,6 @@ enum hrtimer_base_type {
|
|||||||
HRTIMER_BASE_REALTIME,
|
HRTIMER_BASE_REALTIME,
|
||||||
HRTIMER_BASE_BOOTTIME,
|
HRTIMER_BASE_BOOTTIME,
|
||||||
HRTIMER_BASE_TAI,
|
HRTIMER_BASE_TAI,
|
||||||
HRTIMER_BASE_MONOTONIC_RAW,
|
|
||||||
HRTIMER_MAX_CLOCK_BASES,
|
HRTIMER_MAX_CLOCK_BASES,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -90,30 +90,19 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =
|
|||||||
.clockid = CLOCK_TAI,
|
.clockid = CLOCK_TAI,
|
||||||
.get_time = &ktime_get_clocktai,
|
.get_time = &ktime_get_clocktai,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
.index = HRTIMER_BASE_MONOTONIC_RAW,
|
|
||||||
.clockid = CLOCK_MONOTONIC_RAW,
|
|
||||||
.get_time = &ktime_get_raw,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
|
static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {
|
||||||
/* Make sure we catch unsupported clockids */
|
|
||||||
[0 ... MAX_CLOCKS - 1] = HRTIMER_MAX_CLOCK_BASES,
|
|
||||||
|
|
||||||
[CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
|
[CLOCK_REALTIME] = HRTIMER_BASE_REALTIME,
|
||||||
[CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
|
[CLOCK_MONOTONIC] = HRTIMER_BASE_MONOTONIC,
|
||||||
[CLOCK_MONOTONIC_RAW] = HRTIMER_BASE_MONOTONIC_RAW,
|
|
||||||
[CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
|
[CLOCK_BOOTTIME] = HRTIMER_BASE_BOOTTIME,
|
||||||
[CLOCK_TAI] = HRTIMER_BASE_TAI,
|
[CLOCK_TAI] = HRTIMER_BASE_TAI,
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int hrtimer_clockid_to_base(clockid_t clock_id)
|
static inline int hrtimer_clockid_to_base(clockid_t clock_id)
|
||||||
{
|
{
|
||||||
int base = hrtimer_clock_to_base_table[clock_id];
|
return hrtimer_clock_to_base_table[clock_id];
|
||||||
BUG_ON(base == HRTIMER_MAX_CLOCK_BASES);
|
|
||||||
return base;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1279,10 +1268,7 @@ static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base, ktime_t now)
|
|||||||
if (!(active & 0x01))
|
if (!(active & 0x01))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (unlikely(base->index == HRTIMER_BASE_MONOTONIC_RAW))
|
basenow = ktime_add(now, base->offset);
|
||||||
basenow = ktime_get_raw();
|
|
||||||
else
|
|
||||||
basenow = ktime_add(now, base->offset);
|
|
||||||
|
|
||||||
while ((node = timerqueue_getnext(&base->active))) {
|
while ((node = timerqueue_getnext(&base->active))) {
|
||||||
struct hrtimer *timer;
|
struct hrtimer *timer;
|
||||||
|
@ -48,7 +48,7 @@ static bool timer_is_armed(struct arch_timer_cpu *timer)
|
|||||||
static void timer_arm(struct arch_timer_cpu *timer, u64 ns)
|
static void timer_arm(struct arch_timer_cpu *timer, u64 ns)
|
||||||
{
|
{
|
||||||
timer->armed = true;
|
timer->armed = true;
|
||||||
hrtimer_start(&timer->timer, ktime_add_ns(ktime_get_raw(), ns),
|
hrtimer_start(&timer->timer, ktime_add_ns(ktime_get(), ns),
|
||||||
HRTIMER_MODE_ABS);
|
HRTIMER_MODE_ABS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,7 +308,7 @@ void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu)
|
|||||||
struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu;
|
struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu;
|
||||||
|
|
||||||
INIT_WORK(&timer->expired, kvm_timer_inject_irq_work);
|
INIT_WORK(&timer->expired, kvm_timer_inject_irq_work);
|
||||||
hrtimer_init(&timer->timer, CLOCK_MONOTONIC_RAW, HRTIMER_MODE_ABS);
|
hrtimer_init(&timer->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
||||||
timer->timer.function = kvm_timer_expire;
|
timer->timer.function = kvm_timer_expire;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user