tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   d15be546031cf65a0fc34879beca02fd90fe7ac7
commit: 670d0a4b10704667765f7d18f7592993d02783aa sparse: use identifiers to 
define address spaces
date:   5 weeks ago
config: i386-randconfig-s002-20200724 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-93-g4c6cbe55-dirty
        git checkout 670d0a4b10704667765f7d18f7592993d02783aa
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>


sparse warnings: (new ones prefixed by >>)

   arch/x86/kvm/lapic.c:255:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
>> arch/x86/kvm/lapic.c:255:15: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/lapic.c:255:15: sparse:    struct kvm_apic_map *
   arch/x86/kvm/lapic.c:257:9: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
   arch/x86/kvm/lapic.c:257:9: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/lapic.c:257:9: sparse:    struct kvm_apic_map *
   arch/x86/kvm/lapic.c:615:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   arch/x86/kvm/lapic.c:615:15: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/lapic.c:615:15: sparse:    struct kvm_apic_map *
   arch/x86/kvm/lapic.c:972:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   arch/x86/kvm/lapic.c:972:15: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/lapic.c:972:15: sparse:    struct kvm_apic_map *
   arch/x86/kvm/lapic.c:1014:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   arch/x86/kvm/lapic.c:1014:15: sparse:    struct kvm_apic_map [noderef] __rcu 
*
   arch/x86/kvm/lapic.c:1014:15: sparse:    struct kvm_apic_map *
   arch/x86/kvm/lapic.c:1151:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   arch/x86/kvm/lapic.c:1151:15: sparse:    struct kvm_apic_map [noderef] __rcu 
*
   arch/x86/kvm/lapic.c:1151:15: sparse:    struct kvm_apic_map *
--
   arch/x86/kvm/pmu.c:190:18: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
>> arch/x86/kvm/pmu.c:190:18: sparse:    struct kvm_pmu_event_filter [noderef] 
>> __rcu *
   arch/x86/kvm/pmu.c:190:18: sparse:    struct kvm_pmu_event_filter *
   arch/x86/kvm/pmu.c:251:18: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
   arch/x86/kvm/pmu.c:251:18: sparse:    struct kvm_pmu_event_filter [noderef] 
__rcu *
   arch/x86/kvm/pmu.c:251:18: sparse:    struct kvm_pmu_event_filter *
   arch/x86/kvm/pmu.c:511:18: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
   arch/x86/kvm/pmu.c:511:18: sparse:    struct kvm_pmu_event_filter [noderef] 
__rcu *
   arch/x86/kvm/pmu.c:511:18: sparse:    struct kvm_pmu_event_filter *
   arch/x86/kvm/pmu.c:511:18: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
   arch/x86/kvm/pmu.c:511:18: sparse:    struct kvm_pmu_event_filter [noderef] 
__rcu *
   arch/x86/kvm/pmu.c:511:18: sparse:    struct kvm_pmu_event_filter *
--
>> arch/x86/kvm/x86.c:2667:38: sparse: sparse: incorrect type in argument 1 
>> (different address spaces) @@     expected void const [noderef] __user * @@  
>>    got unsigned char [usertype] * @@
>> arch/x86/kvm/x86.c:2667:38: sparse:     expected void const [noderef] __user 
>> *
   arch/x86/kvm/x86.c:2667:38: sparse:     got unsigned char [usertype] *
   arch/x86/kvm/x86.c:7630:15: sparse: sparse: incompatible types in comparison 
expression (different address spaces):
>> arch/x86/kvm/x86.c:7630:15: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/x86.c:7630:15: sparse:    struct kvm_apic_map *
   arch/x86/kvm/x86.c:10004:16: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
   arch/x86/kvm/x86.c:10004:16: sparse:    struct kvm_apic_map [noderef] __rcu *
   arch/x86/kvm/x86.c:10004:16: sparse:    struct kvm_apic_map *
   arch/x86/kvm/x86.c:10005:15: sparse: sparse: incompatible types in 
comparison expression (different address spaces):
>> arch/x86/kvm/x86.c:10005:15: sparse:    struct kvm_pmu_event_filter 
>> [noderef] __rcu *
   arch/x86/kvm/x86.c:10005:15: sparse:    struct kvm_pmu_event_filter *
   arch/x86/kvm/x86.c: note: in included file (through 
include/linux/notifier.h, include/linux/memory_hotplug.h, 
include/linux/mmzone.h, ...):
   include/linux/srcu.h:179:9: sparse: sparse: context imbalance in 
'vcpu_enter_guest' - unexpected unlock

vim +255 arch/x86/kvm/lapic.c

3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  171  
4abaffce4d25aa4 Wanpeng Li            2020-02-26  172  void 
kvm_recalculate_apic_map(struct kvm *kvm)
1e08ec4a130e274 Gleb Natapov          2012-09-13  173  {
1e08ec4a130e274 Gleb Natapov          2012-09-13  174   struct kvm_apic_map 
*new, *old = NULL;
1e08ec4a130e274 Gleb Natapov          2012-09-13  175   struct kvm_vcpu *vcpu;
1e08ec4a130e274 Gleb Natapov          2012-09-13  176   int i;
6e50043912d9c9c Radim Krčmář          2016-12-15  177   u32 max_id = 255; /* 
enough space for any xAPIC ID */
1e08ec4a130e274 Gleb Natapov          2012-09-13  178  
4abaffce4d25aa4 Wanpeng Li            2020-02-26  179   if 
(!kvm->arch.apic_map_dirty) {
4abaffce4d25aa4 Wanpeng Li            2020-02-26  180           /*
4abaffce4d25aa4 Wanpeng Li            2020-02-26  181            * Read 
kvm->arch.apic_map_dirty before
4abaffce4d25aa4 Wanpeng Li            2020-02-26  182            * 
kvm->arch.apic_map
4abaffce4d25aa4 Wanpeng Li            2020-02-26  183            */
4abaffce4d25aa4 Wanpeng Li            2020-02-26  184           smp_rmb();
4abaffce4d25aa4 Wanpeng Li            2020-02-26  185           return;
4abaffce4d25aa4 Wanpeng Li            2020-02-26  186   }
4abaffce4d25aa4 Wanpeng Li            2020-02-26  187  
1e08ec4a130e274 Gleb Natapov          2012-09-13  188   
mutex_lock(&kvm->arch.apic_map_lock);
4abaffce4d25aa4 Wanpeng Li            2020-02-26  189   if 
(!kvm->arch.apic_map_dirty) {
4abaffce4d25aa4 Wanpeng Li            2020-02-26  190           /* Someone else 
has updated the map. */
4abaffce4d25aa4 Wanpeng Li            2020-02-26  191           
mutex_unlock(&kvm->arch.apic_map_lock);
4abaffce4d25aa4 Wanpeng Li            2020-02-26  192           return;
4abaffce4d25aa4 Wanpeng Li            2020-02-26  193   }
1e08ec4a130e274 Gleb Natapov          2012-09-13  194  
0ca52e7b81a3726 Radim Krčmář          2016-07-12  195   kvm_for_each_vcpu(i, 
vcpu, kvm)
0ca52e7b81a3726 Radim Krčmář          2016-07-12  196           if 
(kvm_apic_present(vcpu))
6e50043912d9c9c Radim Krčmář          2016-12-15  197                   max_id 
= max(max_id, kvm_x2apic_id(vcpu->arch.apic));
0ca52e7b81a3726 Radim Krčmář          2016-07-12  198  
a7c3e901a46ff54 Michal Hocko          2017-05-08  199   new = 
kvzalloc(sizeof(struct kvm_apic_map) +
254272ce6505948 Ben Gardon            2019-02-11  200                      
sizeof(struct kvm_lapic *) * ((u64)max_id + 1),
254272ce6505948 Ben Gardon            2019-02-11  201                      
GFP_KERNEL_ACCOUNT);
0ca52e7b81a3726 Radim Krčmář          2016-07-12  202  
1e08ec4a130e274 Gleb Natapov          2012-09-13  203   if (!new)
1e08ec4a130e274 Gleb Natapov          2012-09-13  204           goto out;
1e08ec4a130e274 Gleb Natapov          2012-09-13  205  
0ca52e7b81a3726 Radim Krčmář          2016-07-12  206   new->max_apic_id = 
max_id;
0ca52e7b81a3726 Radim Krčmář          2016-07-12  207  
173beedc1601f51 Nadav Amit            2014-11-02  208   kvm_for_each_vcpu(i, 
vcpu, kvm) {
173beedc1601f51 Nadav Amit            2014-11-02  209           struct 
kvm_lapic *apic = vcpu->arch.apic;
e45115b62f9abb1 Radim Krčmář          2016-07-12  210           struct 
kvm_lapic **cluster;
e45115b62f9abb1 Radim Krčmář          2016-07-12  211           u16 mask;
5bd5db385b3e13c Radim Krčmář          2016-12-15  212           u32 ldr;
5bd5db385b3e13c Radim Krčmář          2016-12-15  213           u8 xapic_id;
5bd5db385b3e13c Radim Krčmář          2016-12-15  214           u32 x2apic_id;
1e08ec4a130e274 Gleb Natapov          2012-09-13  215  
df04d1d191a5fea Radim Krčmář          2015-01-29  216           if 
(!kvm_apic_present(vcpu))
df04d1d191a5fea Radim Krčmář          2015-01-29  217                   
continue;
df04d1d191a5fea Radim Krčmář          2015-01-29  218  
5bd5db385b3e13c Radim Krčmář          2016-12-15  219           xapic_id = 
kvm_xapic_id(apic);
5bd5db385b3e13c Radim Krčmář          2016-12-15  220           x2apic_id = 
kvm_x2apic_id(apic);
5bd5db385b3e13c Radim Krčmář          2016-12-15  221  
5bd5db385b3e13c Radim Krčmář          2016-12-15  222           /* Hotplug 
hack: see kvm_apic_match_physical_addr(), ... */
5bd5db385b3e13c Radim Krčmář          2016-12-15  223           if 
((apic_x2apic_mode(apic) || x2apic_id > 0xff) &&
5bd5db385b3e13c Radim Krčmář          2016-12-15  224                           
x2apic_id <= new->max_apic_id)
5bd5db385b3e13c Radim Krčmář          2016-12-15  225                   
new->phys_map[x2apic_id] = apic;
5bd5db385b3e13c Radim Krčmář          2016-12-15  226           /*
5bd5db385b3e13c Radim Krčmář          2016-12-15  227            * ... xAPIC ID 
of VCPUs with APIC ID > 0xff will wrap-around,
5bd5db385b3e13c Radim Krčmář          2016-12-15  228            * prevent them 
from masking VCPUs with APIC ID <= 0xff.
5bd5db385b3e13c Radim Krčmář          2016-12-15  229            */
5bd5db385b3e13c Radim Krčmář          2016-12-15  230           if 
(!apic_x2apic_mode(apic) && !new->phys_map[xapic_id])
5bd5db385b3e13c Radim Krčmář          2016-12-15  231                   
new->phys_map[xapic_id] = apic;
3548a259f6990d8 Radim Krčmář          2015-02-12  232  
b14c876b994f208 Radim Krcmar          2019-08-13  233           if 
(!kvm_apic_sw_enabled(apic))
b14c876b994f208 Radim Krcmar          2019-08-13  234                   
continue;
b14c876b994f208 Radim Krcmar          2019-08-13  235  
6e50043912d9c9c Radim Krčmář          2016-12-15  236           ldr = 
kvm_lapic_get_reg(apic, APIC_LDR);
6e50043912d9c9c Radim Krčmář          2016-12-15  237  
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  238           if 
(apic_x2apic_mode(apic)) {
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  239                   
new->mode |= KVM_APIC_MODE_X2APIC;
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  240           } else if (ldr) 
{
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  241                   ldr = 
GET_APIC_LOGICAL_ID(ldr);
dfb9595429c65f7 Suravee Suthikulpanit 2016-05-04  242                   if 
(kvm_lapic_get_reg(apic, APIC_DFR) == APIC_DFR_FLAT)
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  243                           
new->mode |= KVM_APIC_MODE_XAPIC_FLAT;
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  244                   else
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  245                           
new->mode |= KVM_APIC_MODE_XAPIC_CLUSTER;
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  246           }
3b5a5ffa928a3f8 Radim Krčmář          2015-02-12  247  
e45115b62f9abb1 Radim Krčmář          2016-07-12  248           if 
(!kvm_apic_map_get_logical_dest(new, ldr, &cluster, &mask))
3548a259f6990d8 Radim Krčmář          2015-02-12  249                   
continue;
3548a259f6990d8 Radim Krčmář          2015-02-12  250  
e45115b62f9abb1 Radim Krčmář          2016-07-12  251           if (mask)
e45115b62f9abb1 Radim Krčmář          2016-07-12  252                   
cluster[ffs(mask) - 1] = apic;
1e08ec4a130e274 Gleb Natapov          2012-09-13  253   }
1e08ec4a130e274 Gleb Natapov          2012-09-13  254  out:
1e08ec4a130e274 Gleb Natapov          2012-09-13 @255   old = 
rcu_dereference_protected(kvm->arch.apic_map,
1e08ec4a130e274 Gleb Natapov          2012-09-13  256                   
lockdep_is_held(&kvm->arch.apic_map_lock));
1e08ec4a130e274 Gleb Natapov          2012-09-13  257   
rcu_assign_pointer(kvm->arch.apic_map, new);
4abaffce4d25aa4 Wanpeng Li            2020-02-26  258   /*
4abaffce4d25aa4 Wanpeng Li            2020-02-26  259    * Write 
kvm->arch.apic_map before
4abaffce4d25aa4 Wanpeng Li            2020-02-26  260    * clearing 
apic->apic_map_dirty
4abaffce4d25aa4 Wanpeng Li            2020-02-26  261    */
4abaffce4d25aa4 Wanpeng Li            2020-02-26  262   smp_wmb();
4abaffce4d25aa4 Wanpeng Li            2020-02-26  263   
kvm->arch.apic_map_dirty = false;
1e08ec4a130e274 Gleb Natapov          2012-09-13  264   
mutex_unlock(&kvm->arch.apic_map_lock);
1e08ec4a130e274 Gleb Natapov          2012-09-13  265  
1e08ec4a130e274 Gleb Natapov          2012-09-13  266   if (old)
af1bae5497b98cb Radim Krčmář          2016-07-12  267           
call_rcu(&old->rcu, kvm_apic_map_free);
c7c9c56ca26f7b9 Yang Zhang            2013-01-25  268  
b053b2aef25d007 Steve Rutherford      2015-07-29  269   
kvm_make_scan_ioapic_request(kvm);
1e08ec4a130e274 Gleb Natapov          2012-09-13  270  }
1e08ec4a130e274 Gleb Natapov          2012-09-13  271  

:::::: The code at line 255 was first introduced by commit
:::::: 1e08ec4a130e2745d96df169e67c58df98a07311 KVM: optimize apic interrupt 
delivery

:::::: TO: Gleb Natapov <g...@redhat.com>
:::::: CC: Avi Kivity <a...@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to