On Fri, 16 Mar 2018, Vitaly Kuznetsov wrote: > static int hv_cpu_init(unsigned int cpu) > @@ -101,6 +104,23 @@ static int hv_cpu_init(unsigned int cpu) > if (msr_vp_index > hv_max_vp_index) > hv_max_vp_index = msr_vp_index; > > + if (!hv_vp_assist_page) > + return 0; > + > + if (!hv_vp_assist_page[smp_processor_id()]) > + hv_vp_assist_page[smp_processor_id()] = > + __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL); Please avoid the ugly line break which makes the statement appear as multiline - which would require curly braces for readability - and simply have a local variable struct hv_vp_assist_page **hvp = hv_vp_assist_page[smp_processor_id()]; and use that throughout the function. > + if (hv_vp_assist_page[smp_processor_id()]) { > + u64 val; > + > + val = vmalloc_to_pfn(hv_vp_assist_page[smp_processor_id()]); > + val = (val << HV_X64_MSR_VP_ASSIST_PAGE_ADDRESS_SHIFT) | > + HV_X64_MSR_VP_ASSIST_PAGE_ENABLE; > + > + wrmsrl(HV_X64_MSR_VP_ASSIST_PAGE, val); > + } > + > return 0; Other than that: Reviewed-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>