tree: https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue head: 3539292abae0518a1d5bee996174d88014865134 commit: 43814676588fa6f849e6ad0ddb4195c8b9fc6030 [40/54] kvm/eventfd: Drain events from eventfd in irqfd_wakeup() config: s390-randconfig-r035-20201109 (attached as .config) compiler: s390-linux-gcc (GCC) 9.3.0 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 # https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?id=43814676588fa6f849e6ad0ddb4195c8b9fc6030 git remote add kvm https://git.kernel.org/pub/scm/virt/kvm/kvm.git git fetch --no-tags kvm queue git checkout 43814676588fa6f849e6ad0ddb4195c8b9fc6030 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): arch/s390/kvm/../../../virt/kvm/eventfd.c: In function 'irqfd_wakeup': >> arch/s390/kvm/../../../virt/kvm/eventfd.c:198:23: error: passing argument 1 of 'eventfd_ctx_do_read' from incompatible pointer type [-Werror=incompatible-pointer-types] 198 | eventfd_ctx_do_read(&irqfd->eventfd, &cnt); | ^~~~~~~~~~~~~~~ | | | struct eventfd_ctx ** In file included from arch/s390/kvm/../../../virt/kvm/eventfd.c:21: include/linux/eventfd.h:44:46: note: expected 'struct eventfd_ctx *' but argument is of type 'struct eventfd_ctx **' 44 | void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt); | ~~~~~~~~~~~~~~~~~~~~^~~ cc1: some warnings being treated as errors vim +/eventfd_ctx_do_read +198 arch/s390/kvm/../../../virt/kvm/eventfd.c 180 181 /* 182 * Called with wqh->lock held and interrupts disabled 183 */ 184 static int 185 irqfd_wakeup(wait_queue_entry_t *wait, unsigned mode, int sync, void *key) 186 { 187 struct kvm_kernel_irqfd *irqfd = 188 container_of(wait, struct kvm_kernel_irqfd, wait); 189 __poll_t flags = key_to_poll(key); 190 struct kvm_kernel_irq_routing_entry irq; 191 struct kvm *kvm = irqfd->kvm; 192 unsigned seq; 193 int idx; 194 int ret = 0; 195 196 if (flags & EPOLLIN) { 197 u64 cnt; > 198 eventfd_ctx_do_read(&irqfd->eventfd, &cnt); 199 200 idx = srcu_read_lock(&kvm->irq_srcu); 201 do { 202 seq = read_seqcount_begin(&irqfd->irq_entry_sc); 203 irq = irqfd->irq_entry; 204 } while (read_seqcount_retry(&irqfd->irq_entry_sc, seq)); 205 /* An event has been signaled, inject an interrupt */ 206 if (kvm_arch_set_irq_inatomic(&irq, kvm, 207 KVM_USERSPACE_IRQ_SOURCE_ID, 1, 208 false) == -EWOULDBLOCK) 209 schedule_work(&irqfd->inject); 210 srcu_read_unlock(&kvm->irq_srcu, idx); 211 ret = 1; 212 } 213 214 if (flags & EPOLLHUP) { 215 /* The eventfd is closing, detach from KVM */ 216 unsigned long iflags; 217 218 spin_lock_irqsave(&kvm->irqfds.lock, iflags); 219 220 /* 221 * We must check if someone deactivated the irqfd before 222 * we could acquire the irqfds.lock since the item is 223 * deactivated from the KVM side before it is unhooked from 224 * the wait-queue. If it is already deactivated, we can 225 * simply return knowing the other side will cleanup for us. 226 * We cannot race against the irqfd going away since the 227 * other side is required to acquire wqh->lock, which we hold 228 */ 229 if (irqfd_is_active(irqfd)) 230 irqfd_deactivate(irqfd); 231 232 spin_unlock_irqrestore(&kvm->irqfds.lock, iflags); 233 } 234 235 return ret; 236 } 237 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org