Paolo Bonzini <pbonzini@xxxxxxxxxx> writes: > On 01/12/2017 18:29, Stephen Hemminger wrote: >>> +static inline u64 hv_read_tsc_page_tsc(const struct ms_hyperv_tsc_page *tsc_pg, >>> + u64 *cur_tsc) >>> +{ >>> + *cur_tsc = rdtsc(); >>> + >>> + return cur_tsc; >> Why do return and setting by reference. Looks like an ugly API. > > This is the fallback implementation for !CONFIG_HYPERV_TSCPAGE, which > explains why it's ugly, but why is it needed at all (or it could just > BUG())? > It is not needed indeed, the intention was just to avoid '#if IS_ENABLED(CONFIG_HYPERV)' in kvm code. I can replace it with BUG() or return U64_MAX; -- Vitaly