* [axboe-block:rw_iter 205/415] drivers/misc/cxl/file.c:422:9: error: conflicting types for 'afu_read'
@ 2024-04-11 13:12 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-04-11 13:12 UTC (permalink / raw)
To: Jens Axboe; +Cc: llvm, oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git rw_iter
head: 2cdbd541e4481cb9cbd08913e0586dc8a2570aec
commit: 2ff4bdb9c46f5a8cb1b473cd9fa7ca74a1c675d4 [205/415] misc: cxl: convert to read/write iterators
config: powerpc64-randconfig-001-20240411 (https://download.01.org/0day-ci/archive/20240411/202404112138.TKDNBBBS-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 8b3b4a92adee40483c27f26c478a384cd69c6f05)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240411/202404112138.TKDNBBBS-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404112138.TKDNBBBS-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/misc/cxl/file.c:15:
In file included from include/linux/mm.h:2208:
include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/misc/cxl/file.c:422:9: error: conflicting types for 'afu_read'
422 | ssize_t afu_read(struct kiocb *iocb, struct iov_iter *to)
| ^
drivers/misc/cxl/cxl.h:1048:9: note: previous declaration is here
1048 | ssize_t afu_read(struct file *file, char __user *buf, size_t count, loff_t *off);
| ^
>> drivers/misc/cxl/file.c:508:37: error: use of undeclared identifier 'buf'
508 | return afu_driver_event_copy(ctx, buf, &event, pl);
| ^
>> drivers/misc/cxl/file.c:528:15: error: incompatible function pointer types initializing 'ssize_t (*)(struct kiocb *, struct iov_iter *)' (aka 'long (*)(struct kiocb *, struct iov_iter *)') with an expression of type 'ssize_t (struct file *, char *, size_t, loff_t *)' (aka 'long (struct file *, char *, unsigned long, long long *)') [-Wincompatible-function-pointer-types]
528 | .read_iter = afu_read,
| ^~~~~~~~
drivers/misc/cxl/file.c:539:15: error: incompatible function pointer types initializing 'ssize_t (*)(struct kiocb *, struct iov_iter *)' (aka 'long (*)(struct kiocb *, struct iov_iter *)') with an expression of type 'ssize_t (struct file *, char *, size_t, loff_t *)' (aka 'long (struct file *, char *, unsigned long, long long *)') [-Wincompatible-function-pointer-types]
539 | .read_iter = afu_read,
| ^~~~~~~~
4 warnings and 4 errors generated.
vim +/afu_read +422 drivers/misc/cxl/file.c
421
> 422 ssize_t afu_read(struct kiocb *iocb, struct iov_iter *to)
423 {
424 struct cxl_context *ctx = iocb->ki_filp->private_data;
425 struct cxl_event_afu_driver_reserved *pl = NULL;
426 size_t count = iov_iter_count(to);
427 struct cxl_event event;
428 unsigned long flags;
429 int rc;
430 DEFINE_WAIT(wait);
431
432 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
433 return -EIO;
434
435 if (count < CXL_READ_MIN_SIZE)
436 return -EINVAL;
437
438 spin_lock_irqsave(&ctx->lock, flags);
439
440 for (;;) {
441 prepare_to_wait(&ctx->wq, &wait, TASK_INTERRUPTIBLE);
442 if (ctx_event_pending(ctx) || (ctx->status == CLOSED))
443 break;
444
445 if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) {
446 rc = -EIO;
447 goto out;
448 }
449
450 if (iocb->ki_filp->f_flags & O_NONBLOCK) {
451 rc = -EAGAIN;
452 goto out;
453 }
454
455 if (signal_pending(current)) {
456 rc = -ERESTARTSYS;
457 goto out;
458 }
459
460 spin_unlock_irqrestore(&ctx->lock, flags);
461 pr_devel("afu_read going to sleep...\n");
462 schedule();
463 pr_devel("afu_read woken up\n");
464 spin_lock_irqsave(&ctx->lock, flags);
465 }
466
467 finish_wait(&ctx->wq, &wait);
468
469 memset(&event, 0, sizeof(event));
470 event.header.process_element = ctx->pe;
471 event.header.size = sizeof(struct cxl_event_header);
472 if (ctx->afu_driver_ops && atomic_read(&ctx->afu_driver_events)) {
473 pr_devel("afu_read delivering AFU driver specific event\n");
474 pl = ctx->afu_driver_ops->fetch_event(ctx);
475 atomic_dec(&ctx->afu_driver_events);
476 event.header.type = CXL_EVENT_AFU_DRIVER;
477 } else if (ctx->pending_irq) {
478 pr_devel("afu_read delivering AFU interrupt\n");
479 event.header.size += sizeof(struct cxl_event_afu_interrupt);
480 event.header.type = CXL_EVENT_AFU_INTERRUPT;
481 event.irq.irq = find_first_bit(ctx->irq_bitmap, ctx->irq_count) + 1;
482 clear_bit(event.irq.irq - 1, ctx->irq_bitmap);
483 if (bitmap_empty(ctx->irq_bitmap, ctx->irq_count))
484 ctx->pending_irq = false;
485 } else if (ctx->pending_fault) {
486 pr_devel("afu_read delivering data storage fault\n");
487 event.header.size += sizeof(struct cxl_event_data_storage);
488 event.header.type = CXL_EVENT_DATA_STORAGE;
489 event.fault.addr = ctx->fault_addr;
490 event.fault.dsisr = ctx->fault_dsisr;
491 ctx->pending_fault = false;
492 } else if (ctx->pending_afu_err) {
493 pr_devel("afu_read delivering afu error\n");
494 event.header.size += sizeof(struct cxl_event_afu_error);
495 event.header.type = CXL_EVENT_AFU_ERROR;
496 event.afu_error.error = ctx->afu_err;
497 ctx->pending_afu_err = false;
498 } else if (ctx->status == CLOSED) {
499 pr_devel("afu_read fatal error\n");
500 spin_unlock_irqrestore(&ctx->lock, flags);
501 return -EIO;
502 } else
503 WARN(1, "afu_read must be buggy\n");
504
505 spin_unlock_irqrestore(&ctx->lock, flags);
506
507 if (event.header.type == CXL_EVENT_AFU_DRIVER)
> 508 return afu_driver_event_copy(ctx, buf, &event, pl);
509
510 if (!copy_to_iter_full(&event, event.header.size, to))
511 return -EFAULT;
512 return event.header.size;
513
514 out:
515 finish_wait(&ctx->wq, &wait);
516 spin_unlock_irqrestore(&ctx->lock, flags);
517 return rc;
518 }
519
520 /*
521 * Note: if this is updated, we need to update api.c to patch the new ones in
522 * too
523 */
524 const struct file_operations afu_fops = {
525 .owner = THIS_MODULE,
526 .open = afu_open,
527 .poll = afu_poll,
> 528 .read_iter = afu_read,
529 .release = afu_release,
530 .unlocked_ioctl = afu_ioctl,
531 .compat_ioctl = afu_compat_ioctl,
532 .mmap = afu_mmap,
533 };
534
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-04-11 13:12 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-11 13:12 [axboe-block:rw_iter 205/415] drivers/misc/cxl/file.c:422:9: error: conflicting types for 'afu_read' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.