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

Reply via email to