Re: [PATCH v7 09/16] virt: geniezone: Add irqfd support

From: kernel test robot
Date: Sat Nov 18 2023 - 08:43:58 EST


Hi Yi-De,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.7-rc1 next-20231117]
[cannot apply to arm64/for-next/core robh/for-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Yi-De-Wu/docs-geniezone-Introduce-GenieZone-hypervisor/20231116-233442
base: linus/master
patch link: https://lore.kernel.org/r/20231116152756.4250-10-yi-de.wu%40mediatek.com
patch subject: [PATCH v7 09/16] virt: geniezone: Add irqfd support
config: arm64-randconfig-r081-20231118 (https://download.01.org/0day-ci/archive/20231118/202311182112.B1KM0yj9-lkp@xxxxxxxxx/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231118/202311182112.B1KM0yj9-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311182112.B1KM0yj9-lkp@xxxxxxxxx/

All error/warnings (new ones prefixed by >>):

arch/arm64/geniezone/../../../drivers/virt/geniezone/gzvm_irqfd.c: In function 'gzvm_irqfd_assign':
>> arch/arm64/geniezone/../../../drivers/virt/geniezone/gzvm_irqfd.c:185:19: error: implicit declaration of function 'eventfd_ctx_fileget'; did you mean 'eventfd_ctx_fdget'? [-Werror=implicit-function-declaration]
185 | eventfd = eventfd_ctx_fileget(f.file);
| ^~~~~~~~~~~~~~~~~~~
| eventfd_ctx_fdget
>> arch/arm64/geniezone/../../../drivers/virt/geniezone/gzvm_irqfd.c:185:17: warning: assignment to 'struct eventfd_ctx *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
185 | eventfd = eventfd_ctx_fileget(f.file);
| ^
cc1: some warnings being treated as errors


vim +185 arch/arm64/geniezone/../../../drivers/virt/geniezone/gzvm_irqfd.c

160
161 static int gzvm_irqfd_assign(struct gzvm *gzvm, struct gzvm_irqfd *args)
162 {
163 struct gzvm_kernel_irqfd *irqfd, *tmp;
164 struct fd f;
165 struct eventfd_ctx *eventfd = NULL;
166 int ret;
167 int idx;
168
169 irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL_ACCOUNT);
170 if (!irqfd)
171 return -ENOMEM;
172
173 irqfd->gzvm = gzvm;
174 irqfd->gsi = args->gsi;
175
176 INIT_LIST_HEAD(&irqfd->list);
177 INIT_WORK(&irqfd->shutdown, irqfd_shutdown);
178
179 f = fdget(args->fd);
180 if (!f.file) {
181 ret = -EBADF;
182 goto out;
183 }
184
> 185 eventfd = eventfd_ctx_fileget(f.file);
186 if (IS_ERR(eventfd)) {
187 ret = PTR_ERR(eventfd);
188 goto fail;
189 }
190
191 irqfd->eventfd = eventfd;
192
193 /*
194 * Install our own custom wake-up handling so we are notified via
195 * a callback whenever someone signals the underlying eventfd
196 */
197 init_waitqueue_func_entry(&irqfd->wait, irqfd_wakeup);
198 init_poll_funcptr(&irqfd->pt, irqfd_ptable_queue_proc);
199
200 spin_lock_irq(&gzvm->irqfds.lock);
201
202 ret = 0;
203 list_for_each_entry(tmp, &gzvm->irqfds.items, list) {
204 if (irqfd->eventfd != tmp->eventfd)
205 continue;
206 /* This fd is used for another irq already. */
207 pr_err("already used: gsi=%d fd=%d\n", args->gsi, args->fd);
208 ret = -EBUSY;
209 spin_unlock_irq(&gzvm->irqfds.lock);
210 goto fail;
211 }
212
213 idx = srcu_read_lock(&gzvm->irq_srcu);
214
215 list_add_tail(&irqfd->list, &gzvm->irqfds.items);
216
217 spin_unlock_irq(&gzvm->irqfds.lock);
218
219 vfs_poll(f.file, &irqfd->pt);
220
221 srcu_read_unlock(&gzvm->irq_srcu, idx);
222
223 /*
224 * do not drop the file until the irqfd is fully initialized, otherwise
225 * we might race against the EPOLLHUP
226 */
227 fdput(f);
228 return 0;
229
230 fail:
231 if (eventfd && !IS_ERR(eventfd))
232 eventfd_ctx_put(eventfd);
233
234 fdput(f);
235
236 out:
237 kfree(irqfd);
238 return ret;
239 }
240

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki