* Re: [PATCH 26/26] KVM: x86: asi: Add some mitigations on address space transitions
[not found] <20240712-asi-rfc-24-v1-26-144b319a40d8@google.com>
@ 2024-07-14 5:02 ` kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-07-14 5:02 UTC (permalink / raw)
To: Brendan Jackman, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, H. Peter Anvin, Andy Lutomirski, Peter Zijlstra,
Sean Christopherson, Paolo Bonzini, Alexandre Chartre, Liran Alon,
Jan Setje-Eilers, Catalin Marinas, Will Deacon, Mark Rutland,
Andrew Morton, Mel Gorman, Lorenzo Stoakes, David Hildenbrand,
Vlastimil Babka, Michal Hocko, Khalid Aziz, Juri Lelli,
Vincent Guittot, Dietmar Eggemann, Steven Rostedt,
Valentin Schneider, Paul Turner, Reiji Watanabe
Cc: llvm, oe-kbuild-all, Linux Memory Management List
Hi Brendan,
kernel test robot noticed the following build errors:
[auto build test ERROR on a38297e3fb012ddfa7ce0321a7e5a8daeb1872b6]
url: https://github.com/intel-lab-lkp/linux/commits/Brendan-Jackman/mm-asi-Make-some-utility-functions-noinstr-compatible/20240713-012107
base: a38297e3fb012ddfa7ce0321a7e5a8daeb1872b6
patch link: https://lore.kernel.org/r/20240712-asi-rfc-24-v1-26-144b319a40d8%40google.com
patch subject: [PATCH 26/26] KVM: x86: asi: Add some mitigations on address space transitions
config: i386-buildonly-randconfig-004-20240714 (https://download.01.org/0day-ci/archive/20240714/202407141222.Av9rdSaZ-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240714/202407141222.Av9rdSaZ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407141222.Av9rdSaZ-lkp@intel.com/
All errors (new ones prefixed by >>):
>> arch/x86/kvm/x86.c:9786:12: error: no member named 'post_asi_enter' in 'struct asi_hooks'
9786 | asi_hooks.post_asi_enter = ops->post_asi_enter;
| ~~~~~~~~~ ^
1 error generated.
vim +9786 arch/x86/kvm/x86.c
9726
9727
9728 int kvm_x86_vendor_init(struct kvm_x86_init_ops *ops)
9729 {
9730 u64 host_pat;
9731 int r, cpu;
9732
9733 guard(mutex)(&vendor_module_lock);
9734
9735 if (kvm_x86_ops.hardware_enable) {
9736 pr_err("already loaded vendor module '%s'\n", kvm_x86_ops.name);
9737 return -EEXIST;
9738 }
9739
9740 /*
9741 * KVM explicitly assumes that the guest has an FPU and
9742 * FXSAVE/FXRSTOR. For example, the KVM_GET_FPU explicitly casts the
9743 * vCPU's FPU state as a fxregs_state struct.
9744 */
9745 if (!boot_cpu_has(X86_FEATURE_FPU) || !boot_cpu_has(X86_FEATURE_FXSR)) {
9746 pr_err("inadequate fpu\n");
9747 return -EOPNOTSUPP;
9748 }
9749
9750 if (IS_ENABLED(CONFIG_PREEMPT_RT) && !boot_cpu_has(X86_FEATURE_CONSTANT_TSC)) {
9751 pr_err("RT requires X86_FEATURE_CONSTANT_TSC\n");
9752 return -EOPNOTSUPP;
9753 }
9754
9755 /*
9756 * KVM assumes that PAT entry '0' encodes WB memtype and simply zeroes
9757 * the PAT bits in SPTEs. Bail if PAT[0] is programmed to something
9758 * other than WB. Note, EPT doesn't utilize the PAT, but don't bother
9759 * with an exception. PAT[0] is set to WB on RESET and also by the
9760 * kernel, i.e. failure indicates a kernel bug or broken firmware.
9761 */
9762 if (rdmsrl_safe(MSR_IA32_CR_PAT, &host_pat) ||
9763 (host_pat & GENMASK(2, 0)) != 6) {
9764 pr_err("host PAT[0] is not WB\n");
9765 return -EIO;
9766 }
9767
9768 x86_emulator_cache = kvm_alloc_emulator_cache();
9769 if (!x86_emulator_cache) {
9770 pr_err("failed to allocate cache for x86 emulator\n");
9771 return -ENOMEM;
9772 }
9773
9774 user_return_msrs = alloc_percpu(struct kvm_user_return_msrs);
9775 if (!user_return_msrs) {
9776 pr_err("failed to allocate percpu kvm_user_return_msrs\n");
9777 r = -ENOMEM;
9778 goto out_free_x86_emulator_cache;
9779 }
9780 kvm_nr_uret_msrs = 0;
9781
9782 r = kvm_mmu_vendor_module_init();
9783 if (r)
9784 goto out_free_percpu;
9785
> 9786 asi_hooks.post_asi_enter = ops->post_asi_enter;
9787 r = asi_register_class("KVM", &asi_hooks);
9788 if (r < 0)
9789 goto out_mmu_exit;
9790 kvm_asi_index = r;
9791
9792 if (boot_cpu_has(X86_FEATURE_XSAVE)) {
9793 host_xcr0 = xgetbv(XCR_XFEATURE_ENABLED_MASK);
9794 kvm_caps.supported_xcr0 = host_xcr0 & KVM_SUPPORTED_XCR0;
9795 }
9796
9797 rdmsrl_safe(MSR_EFER, &host_efer);
9798
9799 if (boot_cpu_has(X86_FEATURE_XSAVES))
9800 rdmsrl(MSR_IA32_XSS, host_xss);
9801
9802 kvm_init_pmu_capability(ops->pmu_ops);
9803
9804 if (boot_cpu_has(X86_FEATURE_ARCH_CAPABILITIES))
9805 rdmsrl(MSR_IA32_ARCH_CAPABILITIES, host_arch_capabilities);
9806
9807 r = ops->hardware_setup();
9808 if (r != 0)
9809 goto out_asi_unregister;
9810
9811 kvm_ops_update(ops);
9812
9813 for_each_online_cpu(cpu) {
9814 smp_call_function_single(cpu, kvm_x86_check_cpu_compat, &r, 1);
9815 if (r < 0)
9816 goto out_unwind_ops;
9817 }
9818
9819 /*
9820 * Point of no return! DO NOT add error paths below this point unless
9821 * absolutely necessary, as most operations from this point forward
9822 * require unwinding.
9823 */
9824 kvm_timer_init();
9825
9826 if (pi_inject_timer == -1)
9827 pi_inject_timer = housekeeping_enabled(HK_TYPE_TIMER);
9828 #ifdef CONFIG_X86_64
9829 pvclock_gtod_register_notifier(&pvclock_gtod_notifier);
9830
9831 if (hypervisor_is_type(X86_HYPER_MS_HYPERV))
9832 set_hv_tscchange_cb(kvm_hyperv_tsc_notifier);
9833 #endif
9834
9835 kvm_register_perf_callbacks(ops->handle_intel_pt_intr);
9836
9837 if (!kvm_cpu_cap_has(X86_FEATURE_XSAVES))
9838 kvm_caps.supported_xss = 0;
9839
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread