Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7550d07 authored by Minfei Huang's avatar Minfei Huang Committed by Paolo Bonzini
Browse files

pvclock: Cleanup to remove function pvclock_get_nsec_offset



Function __pvclock_read_cycles is short enough, so there is no need to
have another function pvclock_get_nsec_offset to calculate tsc delta.
It's better to combine it into function __pvclock_read_cycles.

Remove useless variables in function __pvclock_read_cycles.

Signed-off-by: default avatarMinfei Huang <mnghuan@gmail.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 749d088b
Loading
Loading
Loading
Loading
+7 −16
Original line number Diff line number Diff line
@@ -68,32 +68,23 @@ static inline u64 pvclock_scale_delta(u64 delta, u32 mul_frac, int shift)
	return product;
}

static __always_inline
u64 pvclock_get_nsec_offset(const struct pvclock_vcpu_time_info *src)
{
	u64 delta = rdtsc_ordered() - src->tsc_timestamp;
	return pvclock_scale_delta(delta, src->tsc_to_system_mul,
				   src->tsc_shift);
}

static __always_inline
unsigned __pvclock_read_cycles(const struct pvclock_vcpu_time_info *src,
			       cycle_t *cycles, u8 *flags)
{
	unsigned version;
	cycle_t ret, offset;
	u8 ret_flags;
	cycle_t offset;
	u64 delta;

	version = src->version;
	/* Make the latest version visible */
	smp_rmb();

	offset = pvclock_get_nsec_offset(src);
	ret = src->system_time + offset;
	ret_flags = src->flags;

	*cycles = ret;
	*flags = ret_flags;
	delta = rdtsc_ordered() - src->tsc_timestamp;
	offset = pvclock_scale_delta(delta, src->tsc_to_system_mul,
				   src->tsc_shift);
	*cycles = src->system_time + offset;
	*flags = src->flags;
	return version;
}