Hi Eddie, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v6.1-rc1 next-20221018] [cannot apply to broonie-regmap/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/Eddie-James/fsi-Add-regmap-and-refactor-sbefifo/20221017-114633 patch link: https://lore.kernel.org/r/20221014220540.55570-6-eajames%40linux.ibm.com patch subject: [PATCH 5/5] drivers: fsi: occ and sbefifo refactor config: mips-allmodconfig compiler: mips-linux-gcc (GCC) 12.1.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://github.com/intel-lab-lkp/linux/commit/49dc2362239ea2e0f174255d6915f637a72670c8 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Eddie-James/fsi-Add-regmap-and-refactor-sbefifo/20221017-114633 git checkout 49dc2362239ea2e0f174255d6915f637a72670c8 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/fsi/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): drivers/fsi/occ.c:315:63: error: invalid use of undefined type 'struct occ' 315 | struct occ_response *resp = (struct occ_response *)occ->buffer; | ^~ drivers/fsi/occ.c:324:16: error: invalid use of undefined type 'struct occ' 324 | if (occ->dead) | ^~ In file included from include/linux/rhashtable-types.h:14, from include/linux/ipc.h:7, from include/uapi/linux/sem.h:5, from include/linux/sem.h:5, from include/linux/sched.h:15: drivers/fsi/occ.c:330:43: error: invalid use of undefined type 'struct occ' 330 | rc = mutex_lock_interruptible(&occ->lock); | ^~ include/linux/mutex.h:188:72: note: in definition of macro 'mutex_lock_interruptible' 188 | #define mutex_lock_interruptible(lock) mutex_lock_interruptible_nested(lock, 0) | ^~~~ drivers/fsi/occ.c:342:21: error: invalid use of undefined type 'struct occ' 342 | seq_no = occ->sequence_number++; | ^~ drivers/fsi/occ.c:343:17: error: invalid use of undefined type 'struct occ' 343 | if (!occ->sequence_number) | ^~ drivers/fsi/occ.c:344:20: error: invalid use of undefined type 'struct occ' 344 | occ->sequence_number = 1; | ^~ drivers/fsi/occ.c:347:72: error: passing argument 6 of 'occ_putsram' from incompatible pointer type [-Werror=incompatible-pointer-types] 347 | rc = occ_putsram(occ, request, request_size, seq_no, checksum, pending); | ^~~~~~~ | | | struct occ_pending * drivers/fsi/occ.c:166:44: note: expected 'struct occ_pending *' but argument is of type 'struct occ_pending *' 166 | struct occ_pending *pending) | ~~~~~~~~~~~~~~~~~~~~^~~~~~~ drivers/fsi/occ.c:351:36: error: passing argument 2 of 'occ_trigger_attn' from incompatible pointer type [-Werror=incompatible-pointer-types] 351 | rc = occ_trigger_attn(occ, pending); | ^~~~~~~ | | | struct occ_pending * drivers/fsi/occ.c:243:66: note: expected 'struct occ_pending *' but argument is of type 'struct occ_pending *' 243 | static int occ_trigger_attn(struct occ *occ, struct occ_pending *pending) | ~~~~~~~~~~~~~~~~~~~~^~~~~~~ drivers/fsi/occ.c:358:45: error: passing argument 4 of 'occ_getsram' from incompatible pointer type [-Werror=incompatible-pointer-types] 358 | rc = occ_getsram(occ, 0, 8, pending); | ^~~~~~~ | | | struct occ_pending * drivers/fsi/occ.c:105:86: note: expected 'struct occ_pending *' but argument is of type 'struct occ_pending *' 105 | static int occ_getsram(struct occ *occ, u32 offset, ssize_t len, struct occ_pending *pending) | ~~~~~~~~~~~~~~~~~~~~^~~~~~~ drivers/fsi/occ.c:364:45: error: invalid use of undefined type 'struct occ' 364 | dev_err(&occ->dev, | ^~ include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap' 110 | _p_func(dev, fmt, ##__VA_ARGS__); \ | ^~~ drivers/fsi/occ.c:364:33: note: in expansion of macro 'dev_err' 364 | dev_err(&occ->dev, | ^~~~~~~ drivers/fsi/occ.c:382:64: error: invalid use of undefined type 'struct occ' 382 | if ((resp_data_length + 7) > sizeof(occ->buffer)) { | ^~ drivers/fsi/occ.c:392:80: error: passing argument 4 of 'occ_getsram' from incompatible pointer type [-Werror=incompatible-pointer-types] 392 | rc = occ_getsram(occ, 0, resp_data_length + 7, pending); | ^~~~~~~ | | | struct occ_pending * drivers/fsi/occ.c:105:86: note: expected 'struct occ_pending *' but argument is of type 'struct occ_pending *' 105 | static int occ_getsram(struct occ *occ, u32 offset, ssize_t len, struct occ_pending *pending) | ~~~~~~~~~~~~~~~~~~~~^~~~~~~ drivers/fsi/occ.c:408:52: error: passing argument 3 of 'occ_store' from incompatible pointer type [-Werror=incompatible-pointer-types] 408 | rc = occ_store(resp, resp_data_length + 7, pending); | ^~~~~~~ | | | struct occ_pending * drivers/fsi/occ.c:54:73: note: expected 'struct occ_pending *' but argument is of type 'struct occ_pending *' 54 | static int occ_store(const void *data, size_t size, struct occ_pending *pending) | ~~~~~~~~~~~~~~~~~~~~^~~~~~~ drivers/fsi/occ.c:411:26: error: invalid use of undefined type 'struct occ' 411 | mutex_unlock(&occ->lock); | ^~ In file included from include/linux/bits.h:22, from include/linux/ratelimit_types.h:5, from include/linux/ratelimit.h:5: drivers/fsi/occ.c: In function 'occ_free': include/linux/container_of.h:19:54: error: invalid use of undefined type 'struct occ' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ.c:417:27: note: in expansion of macro 'container_of' 417 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ >> include/linux/compiler_types.h:298:27: error: expression in static assertion is not an integer 298 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ.c:417:27: note: in expansion of macro 'container_of' 417 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ In file included from include/uapi/linux/posix_types.h:5, from include/uapi/linux/types.h:14, from include/linux/types.h:6, from include/linux/kasan-checks.h:5, from include/asm-generic/rwonce.h:26, from ./arch/mips/include/generated/asm/rwonce.h:1, from include/linux/compiler.h:246, from include/linux/dev_printk.h:14: include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct occ' 16 | #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) | ^~~~~~~~~~~~~~~~~~ include/linux/container_of.h:22:28: note: in expansion of macro 'offsetof' 22 | ((type *)(__mptr - offsetof(type, member))); }) | ^~~~~~~~ drivers/fsi/occ.c:417:27: note: in expansion of macro 'container_of' 417 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ drivers/fsi/occ.c: In function 'occ_register_hwmon': drivers/fsi/occ.c:431:31: error: invalid use of undefined type 'struct occ' 431 | .parent = &occ->dev, | ^~ drivers/fsi/occ.c:440:30: error: invalid use of undefined type 'struct occ' 440 | dev_warn(&occ->dev, "Failed to create hwmon device: %ld.\n", PTR_ERR(hwmon_dev)); | ^~ include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap' 110 | _p_func(dev, fmt, ##__VA_ARGS__); \ | ^~~ drivers/fsi/occ.c:440:17: note: in expansion of macro 'dev_warn' 440 | dev_warn(&occ->dev, "Failed to create hwmon device: %ld.\n", PTR_ERR(hwmon_dev)); | ^~~~~~~~ drivers/fsi/occ.c: At top level: drivers/fsi/occ.c:453:84: warning: 'enum versions' declared inside parameter list will not be visible outside of this definition or declaration 453 | int (*get_devt)(struct device *, int, dev_t *, int *), enum versions v) | ^~~~~~~~ drivers/fsi/occ.c:453:93: error: parameter 3 ('v') has incomplete type 453 | int (*get_devt)(struct device *, int, dev_t *, int *), enum versions v) | ~~~~~~~~~~~~~~^ drivers/fsi/occ.c:452:13: error: function declaration isn't a prototype [-Werror=strict-prototypes] 452 | struct occ *occ_create(struct sbefifo *sbefifo, | ^~~~~~~~~~ drivers/fsi/occ.c:452:13: error: redefinition of 'occ_create' drivers/fsi/occ.h:64:27: note: previous definition of 'occ_create' with type 'struct occ *()' 64 | static inline struct occ *occ_create(struct sbefifo *sbefifo, | ^~~~~~~~~~ drivers/fsi/occ.c: In function 'occ_create': drivers/fsi/occ.c:462:30: error: invalid application of 'sizeof' to incomplete type 'struct occ' 462 | occ = kvzalloc(sizeof(*occ), GFP_KERNEL); | ^ drivers/fsi/occ.c:468:66: error: invalid use of undefined type 'struct occ' 468 | rc = get_devt(sbefifo->dev.parent, (int)fsi_dev_occ, &occ->dev.devt, &idx); | ^~ drivers/fsi/occ.c:475:12: error: invalid use of undefined type 'struct occ' 475 | occ->dev.type = &fsi_cdev_type; | ^~ drivers/fsi/occ.c:476:12: error: invalid use of undefined type 'struct occ' 476 | occ->dev.parent = &sbefifo->dev; | ^~ drivers/fsi/occ.c:477:12: error: invalid use of undefined type 'struct occ' 477 | occ->dev.release = occ_free; | ^~ drivers/fsi/occ.c:478:31: error: invalid use of undefined type 'struct occ' 478 | device_initialize(&occ->dev); | ^~ drivers/fsi/occ.c:479:26: error: invalid use of undefined type 'struct occ' 479 | dev_set_name(&occ->dev, "occ%d", idx); | ^~ drivers/fsi/occ.c:481:9: error: implicit declaration of function 'occ_cdev_init'; did you mean 'cdev_init'? [-Werror=implicit-function-declaration] 481 | occ_cdev_init(occ); | ^~~~~~~~~~~~~ | cdev_init drivers/fsi/occ.c:483:24: error: invalid use of undefined type 'struct occ' 483 | mutex_init(&occ->lock); | ^~ include/linux/mutex.h:105:23: note: in definition of macro 'mutex_init' 105 | __mutex_init((mutex), #mutex, &__key); \ | ^~~~~ drivers/fsi/occ.c:484:12: error: invalid use of undefined type 'struct occ' 484 | occ->sbefifo = sbefifo; | ^~ drivers/fsi/occ.c:485:12: error: invalid use of undefined type 'struct occ' 485 | occ->version = v; | ^~ drivers/fsi/occ.c:490:12: error: invalid use of undefined type 'struct occ' 490 | occ->sequence_number = (u8)((jiffies % 0xff) + 1); | ^~ drivers/fsi/occ.c: At top level: drivers/fsi/occ.c:497:6: error: redefinition of 'occ_destroy' 497 | void occ_destroy(struct occ *occ, void(*free_devt)(dev_t)) | ^~~~~~~~~~~ drivers/fsi/occ.h:71:20: note: previous definition of 'occ_destroy' with type 'void(struct occ *, void (*)(dev_t))' {aka 'void(struct occ *, void (*)(unsigned int))'} 71 | static inline void occ_destroy(struct occ *occ, void(*free_devt)(dev_t)) {} | ^~~~~~~~~~~ drivers/fsi/occ.c: In function 'occ_destroy': drivers/fsi/occ.c:499:12: error: invalid use of undefined type 'struct occ' 499 | occ->dead = 1; | ^~ drivers/fsi/occ.c:501:35: error: invalid use of undefined type 'struct occ' 501 | device_for_each_child(&occ->dev, NULL, occ_unregister_child); | ^~ drivers/fsi/occ.c:504:30: error: invalid use of undefined type 'struct occ' 504 | free_devt(occ->dev.devt); | ^~ drivers/fsi/occ.c:506:17: error: invalid use of undefined type 'struct occ' 506 | if (!occ->no_cdev) | ^~ drivers/fsi/occ.c:507:37: error: invalid use of undefined type 'struct occ' 507 | cdev_device_del(&occ->occ, &occ->dev); | ^~ drivers/fsi/occ.c:507:48: error: invalid use of undefined type 'struct occ' 507 | cdev_device_del(&occ->occ, &occ->dev); | ^~ drivers/fsi/occ.c:509:24: error: invalid use of undefined type 'struct occ' 509 | put_device(&occ->dev); | ^~ drivers/fsi/occ.c: In function 'fsi_occ_submit': include/linux/container_of.h:19:54: error: invalid use of undefined type 'struct occ' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ.c:515:27: note: in expansion of macro 'container_of' 515 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ >> include/linux/compiler_types.h:298:27: error: expression in static assertion is not an integer 298 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ.c:515:27: note: in expansion of macro 'container_of' 515 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct occ' 16 | #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) | ^~~~~~~~~~~~~~~~~~ include/linux/container_of.h:22:28: note: in expansion of macro 'offsetof' 22 | ((type *)(__mptr - offsetof(type, member))); }) | ^~~~~~~~ drivers/fsi/occ.c:515:27: note: in expansion of macro 'container_of' 515 | struct occ *occ = container_of(dev, struct occ, dev); | ^~~~~~~~~~~~ drivers/fsi/occ.c:516:28: error: storage size of 'pending' isn't known 516 | struct occ_pending pending; | ^~~~~~~ drivers/fsi/occ.c:516:28: warning: unused variable 'pending' [-Wunused-variable] cc1: some warnings being treated as errors -- In file included from drivers/fsi/occ-cdev.c:12: drivers/fsi/occ.h:66:43: warning: 'enum versions' declared inside parameter list will not be visible outside of this definition or declaration 66 | enum versions v) | ^~~~~~~~ drivers/fsi/occ.h:66:52: error: parameter 3 ('v') has incomplete type 66 | enum versions v) | ~~~~~~~~~~~~~~^ drivers/fsi/occ.h:64:27: error: function declaration isn't a prototype [-Werror=strict-prototypes] 64 | static inline struct occ *occ_create(struct sbefifo *sbefifo, | ^~~~~~~~~~ drivers/fsi/occ-cdev.c:14:40: warning: 'struct occ_user' declared inside parameter list will not be visible outside of this definition or declaration 14 | static void occ_release_command(struct occ_user *user) | ^~~~~~~~ drivers/fsi/occ-cdev.c: In function 'occ_release_command': drivers/fsi/occ-cdev.c:16:17: error: invalid use of undefined type 'struct occ_user' 16 | if (user->pending.allocated) | ^~ drivers/fsi/occ-cdev.c:17:27: error: invalid use of undefined type 'struct occ_user' 17 | kfree(user->pending.buffer); | ^~ drivers/fsi/occ-cdev.c:19:13: error: invalid use of undefined type 'struct occ_user' 19 | user->pending.buffer = user->buffer; | ^~ drivers/fsi/occ-cdev.c:19:36: error: invalid use of undefined type 'struct occ_user' 19 | user->pending.buffer = user->buffer; | ^~ drivers/fsi/occ-cdev.c:20:13: error: invalid use of undefined type 'struct occ_user' 20 | user->pending.buffer_size = sizeof(user->buffer); | ^~ drivers/fsi/occ-cdev.c:20:48: error: invalid use of undefined type 'struct occ_user' 20 | user->pending.buffer_size = sizeof(user->buffer); | ^~ drivers/fsi/occ-cdev.c:21:13: error: invalid use of undefined type 'struct occ_user' 21 | user->pending.data_size = 0; | ^~ drivers/fsi/occ-cdev.c:22:13: error: invalid use of undefined type 'struct occ_user' 22 | user->pending.allocated = 0; | ^~ drivers/fsi/occ-cdev.c: In function 'occ_open': drivers/fsi/occ-cdev.c:29:30: error: invalid application of 'sizeof' to incomplete type 'struct occ_user' 29 | user = kmalloc(sizeof(*user), GFP_KERNEL); | ^ In file included from include/linux/seqlock.h:19, from include/linux/dcache.h:11, from include/linux/fs.h:8, from drivers/fsi/occ-cdev.c:7: drivers/fsi/occ-cdev.c:34:25: error: invalid use of undefined type 'struct occ_user' 34 | mutex_init(&user->lock); | ^~ include/linux/mutex.h:105:23: note: in definition of macro 'mutex_init' 105 | __mutex_init((mutex), #mutex, &__key); \ | ^~~~~ drivers/fsi/occ-cdev.c:35:13: error: invalid use of undefined type 'struct occ_user' 35 | user->occ = container_of(inode->i_cdev, struct occ, occ); | ^~ In file included from include/linux/container_of.h:5, from drivers/fsi/occ-cdev.c:4: include/linux/container_of.h:19:54: error: invalid use of undefined type 'struct occ' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ-cdev.c:35:21: note: in expansion of macro 'container_of' 35 | user->occ = container_of(inode->i_cdev, struct occ, occ); | ^~~~~~~~~~~~ >> include/linux/compiler_types.h:298:27: error: expression in static assertion is not an integer 298 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert' 78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg) | ^~~~ include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~~~ include/linux/container_of.h:19:23: note: in expansion of macro '__same_type' 19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \ | ^~~~~~~~~~~ drivers/fsi/occ-cdev.c:35:21: note: in expansion of macro 'container_of' 35 | user->occ = container_of(inode->i_cdev, struct occ, occ); | ^~~~~~~~~~~~ In file included from include/uapi/linux/posix_types.h:5, from include/uapi/linux/types.h:14, from include/linux/types.h:6, from include/linux/kasan-checks.h:5, from include/asm-generic/rwonce.h:26, from ./arch/mips/include/generated/asm/rwonce.h:1, from include/linux/compiler.h:246, from include/linux/build_bug.h:5: include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct occ' 16 | #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) | ^~~~~~~~~~~~~~~~~~ include/linux/container_of.h:22:28: note: in expansion of macro 'offsetof' 22 | ((type *)(__mptr - offsetof(type, member))); }) | ^~~~~~~~ drivers/fsi/occ-cdev.c:35:21: note: in expansion of macro 'container_of' 35 | user->occ = container_of(inode->i_cdev, struct occ, occ); | ^~~~~~~~~~~~ drivers/fsi/occ-cdev.c:36:13: error: invalid use of undefined type 'struct occ_user' 36 | user->pending.buffer = user->buffer; | ^~ drivers/fsi/occ-cdev.c:36:36: error: invalid use of undefined type 'struct occ_user' 36 | user->pending.buffer = user->buffer; | ^~ drivers/fsi/occ-cdev.c:37:13: error: invalid use of undefined type 'struct occ_user' 37 | user->pending.buffer_size = sizeof(user->buffer); | ^~ drivers/fsi/occ-cdev.c:37:48: error: invalid use of undefined type 'struct occ_user' 37 | user->pending.buffer_size = sizeof(user->buffer); | ^~ drivers/fsi/occ-cdev.c:38:13: error: invalid use of undefined type 'struct occ_user' 38 | user->pending.data_size = 0; | ^~ drivers/fsi/occ-cdev.c:39:13: error: invalid use of undefined type 'struct occ_user' 39 | user->pending.allocated = 0; | ^~ drivers/fsi/occ-cdev.c:40:13: error: invalid use of undefined type 'struct occ_user' 40 | user->pending.pending = 0; | ^~ drivers/fsi/occ-cdev.c:41:13: error: invalid use of undefined type 'struct occ_user' 41 | user->pending.resizable = 1; | ^~ drivers/fsi/occ-cdev.c: In function 'occ_read': drivers/fsi/occ-cdev.c:52:26: error: 'OCC_SRAM_BYTES' undeclared (first use in this function) 52 | if (len + offs > OCC_SRAM_BYTES) | ^~~~~~~~~~~~~~ drivers/fsi/occ-cdev.c:52:26: note: each undeclared identifier is reported only once for each function it appears in drivers/fsi/occ-cdev.c:56:25: error: invalid use of undefined type 'struct occ_user' 56 | mutex_lock(&user->lock); | ^~ include/linux/mutex.h:187:44: note: in definition of macro 'mutex_lock' 187 | #define mutex_lock(lock) mutex_lock_nested(lock, 0) | ^~~~ drivers/fsi/occ-cdev.c:59:26: error: invalid use of undefined type 'struct occ_user' 59 | if (!user->pending.pending) { | ^~ drivers/fsi/occ-cdev.c:64:21: error: invalid use of undefined type 'struct occ_user' 64 | user->pending.pending = 0; | ^~ drivers/fsi/occ-cdev.c:67:22: error: implicit declaration of function 'occ_submit' [-Werror=implicit-function-declaration] 67 | rc = occ_submit(user->occ, user->pending.buffer, user->pending.data_size + 6, | ^~~~~~~~~~ drivers/fsi/occ-cdev.c:67:37: error: invalid use of undefined type 'struct occ_user' 67 | rc = occ_submit(user->occ, user->pending.buffer, user->pending.data_size + 6, | ^~ drivers/fsi/occ-cdev.c:67:48: error: invalid use of undefined type 'struct occ_user' 67 | rc = occ_submit(user->occ, user->pending.buffer, user->pending.data_size + 6, | ^~ drivers/fsi/occ-cdev.c:67:70: error: invalid use of undefined type 'struct occ_user' 67 | rc = occ_submit(user->occ, user->pending.buffer, user->pending.data_size + 6, | ^~ drivers/fsi/occ-cdev.c:68:38: error: invalid use of undefined type 'struct occ_user' 68 | &user->pending); | ^~ In file included from include/linux/kernel.h:26, from include/linux/cpumask.h:10, from arch/mips/include/asm/processor.h:15, from arch/mips/include/asm/thread_info.h:16, from include/linux/thread_info.h:60, from include/asm-generic/preempt.h:5, from ./arch/mips/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:56, from include/linux/wait.h:9, from include/linux/wait_bit.h:8, from include/linux/fs.h:6: drivers/fsi/occ-cdev.c:73:27: error: invalid use of undefined type 'struct occ_user' vim +298 include/linux/compiler_types.h eb111869301e15b7 Rasmus Villemoes 2019-09-13 296 d15155824c501480 Will Deacon 2017-10-24 297 /* Are two types/vars the same type (ignoring qualifiers)? */ d15155824c501480 Will Deacon 2017-10-24 @298 #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b)) d15155824c501480 Will Deacon 2017-10-24 299 -- 0-DAY CI Kernel Test Service https://01.org/lkp