Hi Wei, url: https://github.com/0day-ci/linux/commits/Wei-Wang/x86-kvm-expose-the-CPUID-of-SPEC_CTRL-and-STIBP-to-guests/20180109-162925 base: https://git.kernel.org/pub/scm/virt/kvm/kvm.git linux-next
smatch warnings: arch/x86/kvm/cpuid.c:115 kvm_update_cpuid() error: we previously assumed 'best' could be null (see line 105) # https://github.com/0day-ci/linux/commit/3f5dcda20003fabb2c11d18579653a7098b962d8 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 3f5dcda20003fabb2c11d18579653a7098b962d8 vim +/best +115 arch/x86/kvm/cpuid.c 4504b5c94 Luwei Kang 2016-11-07 76 dd598091d Nadav Amit 2014-09-16 77 int kvm_update_cpuid(struct kvm_vcpu *vcpu) 00b27a3ef Avi Kivity 2011-11-23 78 { 00b27a3ef Avi Kivity 2011-11-23 79 struct kvm_cpuid_entry2 *best; 00b27a3ef Avi Kivity 2011-11-23 80 struct kvm_lapic *apic = vcpu->arch.apic; 00b27a3ef Avi Kivity 2011-11-23 81 00b27a3ef Avi Kivity 2011-11-23 82 best = kvm_find_cpuid_entry(vcpu, 1, 0); 00b27a3ef Avi Kivity 2011-11-23 83 if (!best) dd598091d Nadav Amit 2014-09-16 84 return 0; 00b27a3ef Avi Kivity 2011-11-23 85 00b27a3ef Avi Kivity 2011-11-23 86 /* Update OSXSAVE bit */ d366bf7eb Borislav Petkov 2016-04-04 87 if (boot_cpu_has(X86_FEATURE_XSAVE) && best->function == 0x1) { 5c404cabd Paolo Bonzini 2014-12-03 88 best->ecx &= ~F(OSXSAVE); 00b27a3ef Avi Kivity 2011-11-23 89 if (kvm_read_cr4_bits(vcpu, X86_CR4_OSXSAVE)) 5c404cabd Paolo Bonzini 2014-12-03 90 best->ecx |= F(OSXSAVE); 00b27a3ef Avi Kivity 2011-11-23 91 } 00b27a3ef Avi Kivity 2011-11-23 92 c7dd15b33 Jim Mattson 2016-11-09 93 best->edx &= ~F(APIC); c7dd15b33 Jim Mattson 2016-11-09 94 if (vcpu->arch.apic_base & MSR_IA32_APICBASE_ENABLE) c7dd15b33 Jim Mattson 2016-11-09 95 best->edx |= F(APIC); c7dd15b33 Jim Mattson 2016-11-09 96 00b27a3ef Avi Kivity 2011-11-23 97 if (apic) { 5c404cabd Paolo Bonzini 2014-12-03 98 if (best->ecx & F(TSC_DEADLINE_TIMER)) 00b27a3ef Avi Kivity 2011-11-23 99 apic->lapic_timer.timer_mode_mask = 3 << 17; 00b27a3ef Avi Kivity 2011-11-23 100 else 00b27a3ef Avi Kivity 2011-11-23 101 apic->lapic_timer.timer_mode_mask = 1 << 17; 00b27a3ef Avi Kivity 2011-11-23 102 } f5132b013 Gleb Natapov 2011-11-10 103 b9baba861 Huaitong Han 2016-03-22 104 best = kvm_find_cpuid_entry(vcpu, 7, 0); b9baba861 Huaitong Han 2016-03-22 @105 if (best) { b9baba861 Huaitong Han 2016-03-22 106 /* Update OSPKE bit */ b9baba861 Huaitong Han 2016-03-22 107 if (boot_cpu_has(X86_FEATURE_PKU) && best->function == 0x7) { b9baba861 Huaitong Han 2016-03-22 108 best->ecx &= ~F(OSPKE); b9baba861 Huaitong Han 2016-03-22 109 if (kvm_read_cr4_bits(vcpu, X86_CR4_PKE)) b9baba861 Huaitong Han 2016-03-22 110 best->ecx |= F(OSPKE); b9baba861 Huaitong Han 2016-03-22 111 } b9baba861 Huaitong Han 2016-03-22 112 } b9baba861 Huaitong Han 2016-03-22 113 3f5dcda20 Wei Wang 2018-01-09 114 if (cpuid_edx(0x7) & (KF(SPEC_CTRL) | KF(STIBP))) 3f5dcda20 Wei Wang 2018-01-09 @115 best->edx |= KF(SPEC_CTRL) | KF(STIBP); 3f5dcda20 Wei Wang 2018-01-09 116 d7876f1be Paolo Bonzini 2013-10-02 117 best = kvm_find_cpuid_entry(vcpu, 0xD, 0); 4344ee981 Paolo Bonzini 2013-10-02 118 if (!best) { d7876f1be Paolo Bonzini 2013-10-02 119 vcpu->arch.guest_supported_xcr0 = 0; 4344ee981 Paolo Bonzini 2013-10-02 120 vcpu->arch.guest_xstate_size = XSAVE_HDR_SIZE + XSAVE_HDR_OFFSET; 4344ee981 Paolo Bonzini 2013-10-02 121 } else { d7876f1be Paolo Bonzini 2013-10-02 122 vcpu->arch.guest_supported_xcr0 = d7876f1be Paolo Bonzini 2013-10-02 123 (best->eax | ((u64)best->edx << 32)) & 4ff417320 Paolo Bonzini 2014-02-24 124 kvm_supported_xcr0(); 56c103ec0 Liu, Jinsong 2014-02-21 125 vcpu->arch.guest_xstate_size = best->ebx = 412a3c411 Paolo Bonzini 2014-12-03 126 xstate_required_size(vcpu->arch.xcr0, false); 4344ee981 Paolo Bonzini 2013-10-02 127 } d7876f1be Paolo Bonzini 2013-10-02 128 412a3c411 Paolo Bonzini 2014-12-03 129 best = kvm_find_cpuid_entry(vcpu, 0xD, 1); 412a3c411 Paolo Bonzini 2014-12-03 130 if (best && (best->eax & (F(XSAVES) | F(XSAVEC)))) 412a3c411 Paolo Bonzini 2014-12-03 131 best->ebx = xstate_required_size(vcpu->arch.xcr0, true); 412a3c411 Paolo Bonzini 2014-12-03 132 dd598091d Nadav Amit 2014-09-16 133 /* fd8cb4337 Yu Zhang 2017-08-24 134 * The existing code assumes virtual address is 48-bit or 57-bit in the fd8cb4337 Yu Zhang 2017-08-24 135 * canonical address checks; exit if it is ever changed. dd598091d Nadav Amit 2014-09-16 136 */ dd598091d Nadav Amit 2014-09-16 137 best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); fd8cb4337 Yu Zhang 2017-08-24 138 if (best) { fd8cb4337 Yu Zhang 2017-08-24 139 int vaddr_bits = (best->eax & 0xff00) >> 8; fd8cb4337 Yu Zhang 2017-08-24 140 fd8cb4337 Yu Zhang 2017-08-24 141 if (vaddr_bits != 48 && vaddr_bits != 57 && vaddr_bits != 0) dd598091d Nadav Amit 2014-09-16 142 return -EINVAL; fd8cb4337 Yu Zhang 2017-08-24 143 } dd598091d Nadav Amit 2014-09-16 144 5a4f55cde Eugene Korenevsky 2015-03-29 145 /* Update physical-address width */ 5a4f55cde Eugene Korenevsky 2015-03-29 146 vcpu->arch.maxphyaddr = cpuid_query_maxphyaddr(vcpu); 855feb673 Yu Zhang 2017-08-24 147 kvm_mmu_reset_context(vcpu); 5a4f55cde Eugene Korenevsky 2015-03-29 148 c6702c9dc Wei Huang 2015-06-19 149 kvm_pmu_refresh(vcpu); dd598091d Nadav Amit 2014-09-16 150 return 0; 00b27a3ef Avi Kivity 2011-11-23 151 } 00b27a3ef Avi Kivity 2011-11-23 152 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild