On Mon, Dec 11, 2017 at 10:56:33AM +0100, Vitaly Kuznetsov wrote: > Roman Kagan <rkagan@xxxxxxxxxxxxx> writes: > > On Fri, Dec 08, 2017 at 11:49:57AM +0100, Vitaly Kuznetsov wrote: > >> +void register_hv_tsc_update(void (*cb)(void)) > >> +{ > > > > The function name seems unfortunate. IMHO such a name suggests > > registering a callback on a notifier chain (rather than unconditionally > > replacing the old callback), and having no other side effects. > > I see, any suggestion? register_hv_reenlightenment_cb? register_hv_tscchange_cb? IMHO arm_hv_reenlightenment_cb or arm_hv_tscchange_cb would be better, but I'm not very good at giving descriptive names. > > > > >> + struct hv_reenlightenment_control re_ctrl = { > >> + .vector = HYPERV_REENLIGHTENMENT_VECTOR, > >> + .enabled = 1, > >> + .target_vp = hv_vp_index[smp_processor_id()] > >> + }; > >> + struct hv_tsc_emulation_control emu_ctrl = {.enabled = 1}; > >> + > >> + if (!(ms_hyperv.features & HV_X64_ACCESS_REENLIGHTENMENT)) > >> + return; > > > > What happens then? L2 guests keep running with their clocks ticking at > > a different speed? > > > > In reallity this never happens -- in case nested virtualization is > supported reenlightenment is also available. In theory, L0 can emulate > TSC acceess for forever after migration. I would think that Hyper-V only started rdtsc emulation if TSC_EMULATION_CONTROL was turned on, which wouldn't happen here. But indeed, normally this shouldn't be a problem. It may make sense just to issue a warning if the feature is unsupported, though. Roman.