Hi Vitaly,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on kvm/linux-next]
[also build test ERROR on next-20180202]
[cannot apply to tip/x86/core v4.15]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Vitaly-Kuznetsov/Enlightened-VMCS-support-for-KVM-on-Hyper-V/20180203-201607
base:   https://git.kernel.org/pub/scm/virt/kvm/kvm.git linux-next
config: x86_64-federa-25 (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

Note: the 
linux-review/Vitaly-Kuznetsov/Enlightened-VMCS-support-for-KVM-on-Hyper-V/20180203-201607
 HEAD cdf144fafed59cc093693dc168ba6cc21dc49d6c builds fine.
      It only hurts bisectibility.

All errors (new ones prefixed by >>):

   arch/x86/hyperv/hv_init.c: In function 'hyperv_init':
>> arch/x86/hyperv/hv_init.c:273:23: error: 
>> 'HV_X64_ENLIGHTENED_VMCS_RECOMMENDED' undeclared (first use in this 
>> function); did you mean 'HV_X64_APIC_ACCESS_RECOMMENDED'?
      ms_hyperv.hints &= ~HV_X64_ENLIGHTENED_VMCS_RECOMMENDED;
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                          HV_X64_APIC_ACCESS_RECOMMENDED
   arch/x86/hyperv/hv_init.c:273:23: note: each undeclared identifier is 
reported only once for each function it appears in

vim +273 arch/x86/hyperv/hv_init.c

   241  
   242  /*
   243   * This function is to be invoked early in the boot sequence after the
   244   * hypervisor has been detected.
   245   *
   246   * 1. Setup the hypercall page.
   247   * 2. Register Hyper-V specific clocksource.
   248   */
   249  void hyperv_init(void)
   250  {
   251          u64 guest_id, required_msrs;
   252          union hv_x64_msr_hypercall_contents hypercall_msr;
   253  
   254          if (x86_hyper_type != X86_HYPER_MS_HYPERV)
   255                  return;
   256  
   257          /* Absolutely required MSRs */
   258          required_msrs = HV_X64_MSR_HYPERCALL_AVAILABLE |
   259                  HV_X64_MSR_VP_INDEX_AVAILABLE;
   260  
   261          if ((ms_hyperv.features & required_msrs) != required_msrs)
   262                  return;
   263  
   264          /* Allocate percpu VP index */
   265          hv_vp_index = kmalloc_array(num_possible_cpus(), 
sizeof(*hv_vp_index),
   266                                      GFP_KERNEL);
   267          if (!hv_vp_index)
   268                  return;
   269  
   270          hv_vp_assist_page = kcalloc(num_possible_cpus(),
   271                                      sizeof(*hv_vp_assist_page), 
GFP_KERNEL);
   272          if (!hv_vp_assist_page) {
 > 273                  ms_hyperv.hints &= ~HV_X64_ENLIGHTENED_VMCS_RECOMMENDED;
   274                  return;
   275          }
   276  
   277          if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, 
"x86/hyperv_init:online",
   278                                hv_cpu_init, hv_cpu_die) < 0)
   279                  goto free_vp_index;
   280  
   281          /*
   282           * Setup the hypercall page and enable hypercalls.
   283           * 1. Register the guest ID
   284           * 2. Enable the hypercall and register the hypercall page
   285           */
   286          guest_id = generate_guest_id(0, LINUX_VERSION_CODE, 0);
   287          wrmsrl(HV_X64_MSR_GUEST_OS_ID, guest_id);
   288  
   289          hv_hypercall_pg  = __vmalloc(PAGE_SIZE, GFP_KERNEL, 
PAGE_KERNEL_RX);
   290          if (hv_hypercall_pg == NULL) {
   291                  wrmsrl(HV_X64_MSR_GUEST_OS_ID, 0);
   292                  goto free_vp_index;
   293          }
   294  
   295          rdmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
   296          hypercall_msr.enable = 1;
   297          hypercall_msr.guest_physical_address = 
vmalloc_to_pfn(hv_hypercall_pg);
   298          wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
   299  
   300          hyper_alloc_mmu();
   301  
   302          /*
   303           * Register Hyper-V specific clocksource.
   304           */
   305  #ifdef CONFIG_HYPERV_TSCPAGE
   306          if (ms_hyperv.features & HV_X64_MSR_REFERENCE_TSC_AVAILABLE) {
   307                  union hv_x64_msr_hypercall_contents tsc_msr;
   308  
   309                  tsc_pg = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL);
   310                  if (!tsc_pg)
   311                          goto register_msr_cs;
   312  
   313                  hyperv_cs = &hyperv_cs_tsc;
   314  
   315                  rdmsrl(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64);
   316  
   317                  tsc_msr.enable = 1;
   318                  tsc_msr.guest_physical_address = vmalloc_to_pfn(tsc_pg);
   319  
   320                  wrmsrl(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64);
   321  
   322                  hyperv_cs_tsc.archdata.vclock_mode = VCLOCK_HVCLOCK;
   323  
   324                  clocksource_register_hz(&hyperv_cs_tsc, 
NSEC_PER_SEC/100);
   325                  return;
   326          }
   327  register_msr_cs:
   328  #endif
   329          /*
   330           * For 32 bit guests just use the MSR based mechanism for 
reading
   331           * the partition counter.
   332           */
   333  
   334          hyperv_cs = &hyperv_cs_msr;
   335          if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)
   336                  clocksource_register_hz(&hyperv_cs_msr, 
NSEC_PER_SEC/100);
   337  
   338          return;
   339  
   340  free_vp_index:
   341          kfree(hv_vp_index);
   342          hv_vp_index = NULL;
   343  }
   344  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to