CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Anup Patel <[email protected]>

tree:   https://github.com/avpatel/linux.git riscv_kvm_aia_v1
head:   bafeaefb38960799e1f7ac9b6707a22e5be067d0
commit: 472607f8a84913ba6fda3fbda42c963a1df9e411 [33/38] RISC-V: KVM: Initial 
skeletal support for in-kernel AIA irqchip
:::::: branch date: 16 hours ago
:::::: commit date: 16 hours ago
config: riscv-randconfig-c006-20220320 
(https://download.01.org/0day-ci/archive/20220323/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
85e9b2687a13d1908aa86d1b89c5ce398a06cd39)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://github.com/avpatel/linux/commit/472607f8a84913ba6fda3fbda42c963a1df9e411
        git remote add avpatel https://github.com/avpatel/linux.git
        git fetch --no-tags avpatel riscv_kvm_aia_v1
        git checkout 472607f8a84913ba6fda3fbda42c963a1df9e411
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   drivers/dma-buf/dma-resv.c:165:18: note: '?' condition is false
                   max = max(4ul, roundup_pow_of_two(num_fences));
                                  ^
   include/linux/log2.h:176:2: note: expanded from macro 'roundup_pow_of_two'
           __builtin_constant_p(n) ? (             \
           ^
   drivers/dma-buf/dma-resv.c:165:18: note: Calling '__roundup_pow_of_two'
                   max = max(4ul, roundup_pow_of_two(num_fences));
                                  ^
   include/linux/log2.h:180:2: note: expanded from macro 'roundup_pow_of_two'
           __roundup_pow_of_two(n)                 \
           ^
   include/linux/minmax.h:52:36: note: expanded from macro 'max'
   #define max(x, y)       __careful_cmp(x, y, >)
                           ~~~~~~~~~~~~~~~~~^~~~~
   include/linux/minmax.h:38:17: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:32:25: note: expanded from macro '__cmp_once'
                   typeof(y) unique_y = (y);               \
                                         ^
   include/linux/log2.h:57:16: note: Calling 'fls_long'
           return 1UL << fls_long(n - 1);
                         ^~~~~~~~~~~~~~~
   include/linux/bitops.h:154:2: note: Taking true branch
           if (sizeof(l) == 4)
           ^
   include/linux/bitops.h:155:10: note: Calling 'fls'
                   return fls(l);
                          ^~~~~~
   include/asm-generic/bitops/fls.h:15:2: note: 'r' initialized to 32
           int r = 32;
           ^~~~~
   include/asm-generic/bitops/fls.h:17:6: note: Assuming 'x' is not equal to 0, 
which participates in a condition later
           if (!x)
               ^~
   include/asm-generic/bitops/fls.h:17:2: note: Taking false branch
           if (!x)
           ^
   include/asm-generic/bitops/fls.h:19:6: note: Assuming the condition is false
           if (!(x & 0xffff0000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:19:2: note: Taking false branch
           if (!(x & 0xffff0000u)) {
           ^
   include/asm-generic/bitops/fls.h:23:6: note: Assuming the condition is false
           if (!(x & 0xff000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:23:2: note: Taking false branch
           if (!(x & 0xff000000u)) {
           ^
   include/asm-generic/bitops/fls.h:27:6: note: Assuming the condition is false
           if (!(x & 0xf0000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:27:2: note: Taking false branch
           if (!(x & 0xf0000000u)) {
           ^
   include/asm-generic/bitops/fls.h:31:6: note: Assuming the condition is false
           if (!(x & 0xc0000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:31:2: note: Taking false branch
           if (!(x & 0xc0000000u)) {
           ^
   include/asm-generic/bitops/fls.h:35:6: note: Assuming the condition is false
           if (!(x & 0x80000000u)) {
               ^~~~~~~~~~~~~~~~~~
   include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
           if (!(x & 0x80000000u)) {
           ^
   include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded 
from 'r')
           return r;
           ^~~~~~~~
   include/linux/bitops.h:155:10: note: Returning from 'fls'
                   return fls(l);
                          ^~~~~~
   include/linux/bitops.h:155:3: note: Returning the value 32
                   return fls(l);
                   ^~~~~~~~~~~~~
   include/linux/log2.h:57:16: note: Returning from 'fls_long'
           return 1UL << fls_long(n - 1);
                         ^~~~~~~~~~~~~~~
   include/linux/log2.h:57:13: note: The result of the left shift is undefined 
due to shifting by '32', which is greater or equal to the width of type 
'unsigned long'
           return 1UL << fls_long(n - 1);
                      ^  ~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (2 in non-user code, 2 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
>> arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: warning: Value stored to 
>> 'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = 0;
           ^     ~
   arch/riscv/kvm/../../../virt/kvm/eventfd.c:392:2: note: Value stored to 
'ret' is never read
           ret = 0;
           ^     ~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/base/cacheinfo.c:38:31: warning: Access to field 'fw_token' results 
in a dereference of a null pointer (loaded from variable 'this_leaf') 
[clang-analyzer-core.NullDereference]
           return sib_leaf->fw_token == this_leaf->fw_token;
                                        ^
   drivers/base/cacheinfo.c:225:6: note: Assuming field 'cpu_map_populated' is 
false
           if (this_cpu_ci->cpu_map_populated)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/base/cacheinfo.c:225:2: note: Taking false branch
           if (this_cpu_ci->cpu_map_populated)
           ^
   drivers/base/cacheinfo.c:228:2: note: Taking false branch
           if (of_have_populated_dt())
           ^
   drivers/base/cacheinfo.c:230:7: note: Taking false branch
           else if (!acpi_disabled)
                ^
   drivers/base/cacheinfo.c:233:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/base/cacheinfo.c:233:2: note: Taking false branch
           if (ret)
           ^
   drivers/base/cacheinfo.c:236:26: note: Loop condition is false.  Exiting loop
           for (index = 0; index < cache_leaves(cpu); index++) {
                                   ^
   drivers/base/cacheinfo.c:26:28: note: expanded from macro 'cache_leaves'
   #define cache_leaves(cpu)       (ci_cacheinfo(cpu)->num_leaves)
                                    ^
   drivers/base/cacheinfo.c:25:29: note: expanded from macro 'ci_cacheinfo'
   #define ci_cacheinfo(cpu)       (&per_cpu(ci_cpu_cacheinfo, cpu))
                                     ^
   include/linux/percpu-defs.h:269:29: note: expanded from macro 'per_cpu'
   #define per_cpu(var, cpu)       (*per_cpu_ptr(&(var), cpu))
                                     ^
   include/linux/percpu-defs.h:263:47: note: expanded from macro 'per_cpu_ptr'
   #define per_cpu_ptr(ptr, cpu)   ({ (void)(cpu); VERIFY_PERCPU_PTR(ptr); })
                                                   ^
   include/linux/percpu-defs.h:259:2: note: expanded from macro 
'VERIFY_PERCPU_PTR'
           __verify_pcpu_ptr(__p);                                         \
           ^
   include/linux/percpu-defs.h:217:37: note: expanded from macro 
'__verify_pcpu_ptr'
   #define __verify_pcpu_ptr(ptr)                                          \
                                                                           ^
   drivers/base/cacheinfo.c:236:18: note: Assuming 'index' is < field 
'num_leaves'
           for (index = 0; index < cache_leaves(cpu); index++) {
                           ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/base/cacheinfo.c:236:2: note: Loop condition is true.  Entering loop 
body
           for (index = 0; index < cache_leaves(cpu); index++) {
           ^
   drivers/base/cacheinfo.c:241:8: note: Calling 'cpumask_empty'
                   if (!cpumask_empty(&this_leaf->shared_cpu_map))
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/cpumask.h:557:9: note: Calling 'bitmap_empty'
           return bitmap_empty(cpumask_bits(srcp), nr_cpumask_bits);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitmap.h:385:6: note: Left side of '&&' is false
           if (small_const_nbits(nbits))

vim +/ret +392 arch/riscv/kvm/../../../virt/kvm/eventfd.c

1a02b27035f820 Eric Auger            2015-09-18  292  
721eecbf4fe995 Gregory Haskins       2009-05-20  293  static int
d4db2935e4fffe Alex Williamson       2012-06-29  294  kvm_irqfd_assign(struct 
kvm *kvm, struct kvm_irqfd *args)
721eecbf4fe995 Gregory Haskins       2009-05-20  295  {
166c9775f1f8b8 Eric Auger            2015-09-18  296    struct kvm_kernel_irqfd 
*irqfd, *tmp;
cffe78d92c217a Al Viro               2013-08-30  297    struct fd f;
7a84428af7ca6a Alex Williamson       2012-09-21  298    struct eventfd_ctx 
*eventfd = NULL, *resamplefd = NULL;
721eecbf4fe995 Gregory Haskins       2009-05-20  299    int ret;
e6c8adca20ba45 Al Viro               2017-07-03  300    __poll_t events;
9957c86d659a4d Paul Mackerras        2014-06-30  301    int idx;
721eecbf4fe995 Gregory Haskins       2009-05-20  302  
01c94e64f5a6f2 Eric Auger            2015-03-04  303    if 
(!kvm_arch_intc_initialized(kvm))
01c94e64f5a6f2 Eric Auger            2015-03-04  304            return -EAGAIN;
01c94e64f5a6f2 Eric Auger            2015-03-04  305  
654f1f13ea56b9 Peter Xu              2019-05-05  306    if 
(!kvm_arch_irqfd_allowed(kvm, args))
654f1f13ea56b9 Peter Xu              2019-05-05  307            return -EINVAL;
654f1f13ea56b9 Peter Xu              2019-05-05  308  
b12ce36a43f29d Ben Gardon            2019-02-11  309    irqfd = 
kzalloc(sizeof(*irqfd), GFP_KERNEL_ACCOUNT);
721eecbf4fe995 Gregory Haskins       2009-05-20  310    if (!irqfd)
721eecbf4fe995 Gregory Haskins       2009-05-20  311            return -ENOMEM;
721eecbf4fe995 Gregory Haskins       2009-05-20  312  
721eecbf4fe995 Gregory Haskins       2009-05-20  313    irqfd->kvm = kvm;
d4db2935e4fffe Alex Williamson       2012-06-29  314    irqfd->gsi = args->gsi;
721eecbf4fe995 Gregory Haskins       2009-05-20  315    
INIT_LIST_HEAD(&irqfd->list);
721eecbf4fe995 Gregory Haskins       2009-05-20  316    
INIT_WORK(&irqfd->inject, irqfd_inject);
721eecbf4fe995 Gregory Haskins       2009-05-20  317    
INIT_WORK(&irqfd->shutdown, irqfd_shutdown);
5c73b9a2b1b4ec Ahmed S. Darwish      2020-07-20  318    
seqcount_spinlock_init(&irqfd->irq_entry_sc, &kvm->irqfds.lock);
721eecbf4fe995 Gregory Haskins       2009-05-20  319  
cffe78d92c217a Al Viro               2013-08-30  320    f = fdget(args->fd);
cffe78d92c217a Al Viro               2013-08-30  321    if (!f.file) {
cffe78d92c217a Al Viro               2013-08-30  322            ret = -EBADF;
cffe78d92c217a Al Viro               2013-08-30  323            goto out;
721eecbf4fe995 Gregory Haskins       2009-05-20  324    }
721eecbf4fe995 Gregory Haskins       2009-05-20  325  
cffe78d92c217a Al Viro               2013-08-30  326    eventfd = 
eventfd_ctx_fileget(f.file);
721eecbf4fe995 Gregory Haskins       2009-05-20  327    if (IS_ERR(eventfd)) {
721eecbf4fe995 Gregory Haskins       2009-05-20  328            ret = 
PTR_ERR(eventfd);
721eecbf4fe995 Gregory Haskins       2009-05-20  329            goto fail;
721eecbf4fe995 Gregory Haskins       2009-05-20  330    }
721eecbf4fe995 Gregory Haskins       2009-05-20  331  
721eecbf4fe995 Gregory Haskins       2009-05-20  332    irqfd->eventfd = 
eventfd;
721eecbf4fe995 Gregory Haskins       2009-05-20  333  
7a84428af7ca6a Alex Williamson       2012-09-21  334    if (args->flags & 
KVM_IRQFD_FLAG_RESAMPLE) {
166c9775f1f8b8 Eric Auger            2015-09-18  335            struct 
kvm_kernel_irqfd_resampler *resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  336  
7a84428af7ca6a Alex Williamson       2012-09-21  337            resamplefd = 
eventfd_ctx_fdget(args->resamplefd);
7a84428af7ca6a Alex Williamson       2012-09-21  338            if 
(IS_ERR(resamplefd)) {
7a84428af7ca6a Alex Williamson       2012-09-21  339                    ret = 
PTR_ERR(resamplefd);
7a84428af7ca6a Alex Williamson       2012-09-21  340                    goto 
fail;
7a84428af7ca6a Alex Williamson       2012-09-21  341            }
7a84428af7ca6a Alex Williamson       2012-09-21  342  
7a84428af7ca6a Alex Williamson       2012-09-21  343            
irqfd->resamplefd = resamplefd;
7a84428af7ca6a Alex Williamson       2012-09-21  344            
INIT_LIST_HEAD(&irqfd->resampler_link);
7a84428af7ca6a Alex Williamson       2012-09-21  345  
7a84428af7ca6a Alex Williamson       2012-09-21  346            
mutex_lock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  347  
7a84428af7ca6a Alex Williamson       2012-09-21  348            
list_for_each_entry(resampler,
49f8a1a5394d8b Alex Williamson       2012-12-06  349                            
    &kvm->irqfds.resampler_list, link) {
7a84428af7ca6a Alex Williamson       2012-09-21  350                    if 
(resampler->notifier.gsi == irqfd->gsi) {
7a84428af7ca6a Alex Williamson       2012-09-21  351                            
irqfd->resampler = resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  352                            
break;
7a84428af7ca6a Alex Williamson       2012-09-21  353                    }
7a84428af7ca6a Alex Williamson       2012-09-21  354            }
7a84428af7ca6a Alex Williamson       2012-09-21  355  
7a84428af7ca6a Alex Williamson       2012-09-21  356            if 
(!irqfd->resampler) {
b12ce36a43f29d Ben Gardon            2019-02-11  357                    
resampler = kzalloc(sizeof(*resampler),
b12ce36a43f29d Ben Gardon            2019-02-11  358                            
            GFP_KERNEL_ACCOUNT);
7a84428af7ca6a Alex Williamson       2012-09-21  359                    if 
(!resampler) {
7a84428af7ca6a Alex Williamson       2012-09-21  360                            
ret = -ENOMEM;
7a84428af7ca6a Alex Williamson       2012-09-21  361                            
mutex_unlock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  362                            
goto fail;
7a84428af7ca6a Alex Williamson       2012-09-21  363                    }
7a84428af7ca6a Alex Williamson       2012-09-21  364  
7a84428af7ca6a Alex Williamson       2012-09-21  365                    
resampler->kvm = kvm;
7a84428af7ca6a Alex Williamson       2012-09-21  366                    
INIT_LIST_HEAD(&resampler->list);
7a84428af7ca6a Alex Williamson       2012-09-21  367                    
resampler->notifier.gsi = irqfd->gsi;
7a84428af7ca6a Alex Williamson       2012-09-21  368                    
resampler->notifier.irq_acked = irqfd_resampler_ack;
7a84428af7ca6a Alex Williamson       2012-09-21  369                    
INIT_LIST_HEAD(&resampler->link);
7a84428af7ca6a Alex Williamson       2012-09-21  370  
7a84428af7ca6a Alex Williamson       2012-09-21  371                    
list_add(&resampler->link, &kvm->irqfds.resampler_list);
7a84428af7ca6a Alex Williamson       2012-09-21  372                    
kvm_register_irq_ack_notifier(kvm,
7a84428af7ca6a Alex Williamson       2012-09-21  373                            
                      &resampler->notifier);
7a84428af7ca6a Alex Williamson       2012-09-21  374                    
irqfd->resampler = resampler;
7a84428af7ca6a Alex Williamson       2012-09-21  375            }
7a84428af7ca6a Alex Williamson       2012-09-21  376  
7a84428af7ca6a Alex Williamson       2012-09-21  377            
list_add_rcu(&irqfd->resampler_link, &irqfd->resampler->list);
719d93cd5f5c5c Christian Borntraeger 2014-01-16  378            
synchronize_srcu(&kvm->irq_srcu);
7a84428af7ca6a Alex Williamson       2012-09-21  379  
7a84428af7ca6a Alex Williamson       2012-09-21  380            
mutex_unlock(&kvm->irqfds.resampler_lock);
7a84428af7ca6a Alex Williamson       2012-09-21  381    }
7a84428af7ca6a Alex Williamson       2012-09-21  382  
721eecbf4fe995 Gregory Haskins       2009-05-20  383    /*
721eecbf4fe995 Gregory Haskins       2009-05-20  384     * Install our own 
custom wake-up handling so we are notified via
721eecbf4fe995 Gregory Haskins       2009-05-20  385     * a callback whenever 
someone signals the underlying eventfd
721eecbf4fe995 Gregory Haskins       2009-05-20  386     */
721eecbf4fe995 Gregory Haskins       2009-05-20  387    
init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup);
721eecbf4fe995 Gregory Haskins       2009-05-20  388    
init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc);
721eecbf4fe995 Gregory Haskins       2009-05-20  389  
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  390    
spin_lock_irq(&kvm->irqfds.lock);
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  391  
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13 @392    ret = 0;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  393    
list_for_each_entry(tmp, &kvm->irqfds.items, list) {
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  394            if 
(irqfd->eventfd != tmp->eventfd)
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  395                    
continue;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  396            /* This fd is 
used for another irq already. */
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  397            ret = -EBUSY;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  398            
spin_unlock_irq(&kvm->irqfds.lock);
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  399            goto fail;
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  400    }
f1d1c309f35e9b Michael S. Tsirkin    2010-01-13  401  
9957c86d659a4d Paul Mackerras        2014-06-30  402    idx = 
srcu_read_lock(&kvm->irq_srcu);
9957c86d659a4d Paul Mackerras        2014-06-30  403    irqfd_update(kvm, 
irqfd);
bd2b53b20fcd0d Michael S. Tsirkin    2010-11-18  404  
721eecbf4fe995 Gregory Haskins       2009-05-20  405    
list_add_tail(&irqfd->list, &kvm->irqfds.items);
721eecbf4fe995 Gregory Haskins       2009-05-20  406  
684a0b719ddbba Cornelia Huck         2014-03-17  407    
spin_unlock_irq(&kvm->irqfds.lock);
684a0b719ddbba Cornelia Huck         2014-03-17  408  
721eecbf4fe995 Gregory Haskins       2009-05-20  409    /*
721eecbf4fe995 Gregory Haskins       2009-05-20  410     * Check if there was 
an event already pending on the eventfd
721eecbf4fe995 Gregory Haskins       2009-05-20  411     * before we 
registered, and trigger it as if we didn't miss it.
721eecbf4fe995 Gregory Haskins       2009-05-20  412     */
9965ed174e7d38 Christoph Hellwig     2018-03-05  413    events = 
vfs_poll(f.file, &irqfd->pt);
684a0b719ddbba Cornelia Huck         2014-03-17  414  
a9a08845e9acbd Linus Torvalds        2018-02-11  415    if (events & EPOLLIN)
721eecbf4fe995 Gregory Haskins       2009-05-20  416            
schedule_work(&irqfd->inject);
721eecbf4fe995 Gregory Haskins       2009-05-20  417  

:::::: The code at line 392 was first introduced by commit
:::::: f1d1c309f35e9b0fb961cffd70fbd04f450ec47c KVM: only allow one gsi per fd

:::::: TO: Michael S. Tsirkin <[email protected]>
:::::: CC: Marcelo Tosatti <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to