Commit 2173e074 authored by Marc Zyngier's avatar Marc Zyngier Committed by Kunkun Jiang
Browse files

KVM: arm64: Introduce kvm_counter_compute_delta() helper

mainline inclusion
from mainline-v5.19-rc1
commit daf85a5f
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I6YAMV
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=daf85a5f6be33788e18ff3efad1d7c3ad66a8cb3



-------------------------------

Refactor kvm_timer_compute_delta() and extract a helper that
compute the delta (in ns) between a given timer and an arbitrary
value.

No functional change expected.

Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20220419182755.601427-5-maz@kernel.org


Signed-off-by: default avatarKunkun Jiang <jiangkunkun@huawei.com>
parent f880a467
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -207,18 +207,16 @@ static irqreturn_t kvm_arch_timer_handler(int irq, void *dev_id)
	return IRQ_HANDLED;
}

static u64 kvm_timer_compute_delta(struct arch_timer_context *timer_ctx)
static u64 kvm_counter_compute_delta(struct arch_timer_context *timer_ctx,
				     u64 val)
{
	u64 cval, now;

	cval = timer_get_cval(timer_ctx);
	now = kvm_phys_timer_read() - timer_get_offset(timer_ctx);
	u64 now = kvm_phys_timer_read() - timer_get_offset(timer_ctx);

	if (now < cval) {
	if (now < val) {
		u64 ns;

		ns = cyclecounter_cyc2ns(timecounter->cc,
					 cval - now,
					 val - now,
					 timecounter->mask,
					 &timecounter->frac);
		return ns;
@@ -227,6 +225,11 @@ static u64 kvm_timer_compute_delta(struct arch_timer_context *timer_ctx)
	return 0;
}

static u64 kvm_timer_compute_delta(struct arch_timer_context *timer_ctx)
{
	return kvm_counter_compute_delta(timer_ctx, timer_get_cval(timer_ctx));
}

static bool kvm_timer_irq_can_fire(struct arch_timer_context *timer_ctx)
{
	WARN_ON(timer_ctx && timer_ctx->loaded);