Hi Alex, kernel test robot noticed the following build errors:
[auto build test ERROR on drm-exynos/exynos-drm-next] [also build test ERROR on linus/master v6.17-rc1 next-20250815] [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/Alex-Hung/drm-Add-helper-for-conversion-from-signed-magnitude/20250815-120435 base: https://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git exynos-drm-next patch link: https://lore.kernel.org/r/20250815035047.3319284-16-alex.hung%40amd.com patch subject: [PATCH V11 15/47] drm/vkms: Add kunit tests for linear and sRGB LUTs config: arc-randconfig-001-20250816 (https://download.01.org/0day-ci/archive/20250816/202508160408.6oo4az4x-...@intel.com/config) compiler: arc-linux-gcc (GCC) 8.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250816/202508160408.6oo4az4x-...@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 <l...@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202508160408.6oo4az4x-...@intel.com/ All errors (new ones prefixed by >>): In file included from drivers/gpu/drm/vkms/vkms_composer.c:15: drivers/gpu/drm/vkms/vkms_composer.h:21:32: warning: 'struct vkms_color_lut' declared inside parameter list will not be visible outside of this definition or declaration s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value); ^~~~~~~~~~~~~~ drivers/gpu/drm/vkms/vkms_composer.h:22:45: warning: 'struct vkms_color_lut' declared inside parameter list will not be visible outside of this definition or declaration u16 apply_lut_to_channel_value(const struct vkms_color_lut *lut, u16 channel_value, ^~~~~~~~~~~~~~ drivers/gpu/drm/vkms/vkms_composer.c:77:22: error: conflicting types for 'get_lut_index' VISIBLE_IF_KUNIT s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value) ^~~~~~~~~~~~~ In file included from drivers/gpu/drm/vkms/vkms_composer.c:15: drivers/gpu/drm/vkms/vkms_composer.h:21:5: note: previous declaration of 'get_lut_index' was here s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value); ^~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/preempt.h:10, from include/linux/spinlock.h:56, from include/drm/drm_crtc.h:28, from include/drm/drm_atomic.h:31, from drivers/gpu/drm/vkms/vkms_composer.c:5: drivers/gpu/drm/vkms/vkms_composer.c:83:24: error: conflicting types for 'get_lut_index' EXPORT_SYMBOL_IF_KUNIT(get_lut_index); ^~~~~~~~~~~~~ include/linux/export.h:76:21: note: in definition of macro '__EXPORT_SYMBOL' extern typeof(sym) sym; \ ^~~ include/kunit/visibility.h:27:44: note: in expansion of macro 'EXPORT_SYMBOL_NS' #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, "EXPORTED_FOR_KUNIT_TESTING") ^~~~~~~~~~~~~~~~ drivers/gpu/drm/vkms/vkms_composer.c:83:1: note: in expansion of macro 'EXPORT_SYMBOL_IF_KUNIT' EXPORT_SYMBOL_IF_KUNIT(get_lut_index); ^~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/vkms/vkms_composer.c:15: drivers/gpu/drm/vkms/vkms_composer.h:21:5: note: previous declaration of 'get_lut_index' was here s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value); ^~~~~~~~~~~~~ >> drivers/gpu/drm/vkms/vkms_composer.c:85:22: error: conflicting types for >> 'apply_lut_to_channel_value' VISIBLE_IF_KUNIT u16 apply_lut_to_channel_value(const struct vkms_color_lut *lut, u16 channel_value, ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/vkms/vkms_composer.c:15: drivers/gpu/drm/vkms/vkms_composer.h:22:5: note: previous declaration of 'apply_lut_to_channel_value' was here u16 apply_lut_to_channel_value(const struct vkms_color_lut *lut, u16 channel_value, ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/linkage.h:7, from include/linux/preempt.h:10, from include/linux/spinlock.h:56, from include/drm/drm_crtc.h:28, from include/drm/drm_atomic.h:31, from drivers/gpu/drm/vkms/vkms_composer.c:5: drivers/gpu/drm/vkms/vkms_composer.c:111:24: error: conflicting types for 'apply_lut_to_channel_value' EXPORT_SYMBOL_IF_KUNIT(apply_lut_to_channel_value); ^~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/export.h:76:21: note: in definition of macro '__EXPORT_SYMBOL' extern typeof(sym) sym; \ ^~~ include/kunit/visibility.h:27:44: note: in expansion of macro 'EXPORT_SYMBOL_NS' #define EXPORT_SYMBOL_IF_KUNIT(symbol) EXPORT_SYMBOL_NS(symbol, "EXPORTED_FOR_KUNIT_TESTING") ^~~~~~~~~~~~~~~~ drivers/gpu/drm/vkms/vkms_composer.c:111:1: note: in expansion of macro 'EXPORT_SYMBOL_IF_KUNIT' EXPORT_SYMBOL_IF_KUNIT(apply_lut_to_channel_value); ^~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/vkms/vkms_composer.c:15: drivers/gpu/drm/vkms/vkms_composer.h:22:5: note: previous declaration of 'apply_lut_to_channel_value' was here u16 apply_lut_to_channel_value(const struct vkms_color_lut *lut, u16 channel_value, ^~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/apply_lut_to_channel_value +85 drivers/gpu/drm/vkms/vkms_composer.c 76 77 VISIBLE_IF_KUNIT s64 get_lut_index(const struct vkms_color_lut *lut, u16 channel_value) 78 { 79 s64 color_channel_fp = drm_int2fixp(channel_value); 80 81 return drm_fixp_mul(color_channel_fp, lut->channel_value2index_ratio); 82 } > 83 EXPORT_SYMBOL_IF_KUNIT(get_lut_index); 84 > 85 VISIBLE_IF_KUNIT u16 apply_lut_to_channel_value(const struct vkms_color_lut *lut, u16 channel_value, 86 enum lut_channel channel) 87 { 88 s64 lut_index = get_lut_index(lut, channel_value); 89 u16 *floor_lut_value, *ceil_lut_value; 90 u16 floor_channel_value, ceil_channel_value; 91 92 /* 93 * This checks if `struct drm_color_lut` has any gap added by the compiler 94 * between the struct fields. 95 */ 96 static_assert(sizeof(struct drm_color_lut) == sizeof(__u16) * 4); 97 98 floor_lut_value = (__u16 *)&lut->base[drm_fixp2int(lut_index)]; 99 if (drm_fixp2int(lut_index) == (lut->lut_length - 1)) 100 /* We're at the end of the LUT array, use same value for ceil and floor */ 101 ceil_lut_value = floor_lut_value; 102 else 103 ceil_lut_value = (__u16 *)&lut->base[drm_fixp2int_ceil(lut_index)]; 104 105 floor_channel_value = floor_lut_value[channel]; 106 ceil_channel_value = ceil_lut_value[channel]; 107 108 return lerp_u16(floor_channel_value, ceil_channel_value, 109 lut_index & DRM_FIXED_DECIMAL_MASK); 110 } 111 EXPORT_SYMBOL_IF_KUNIT(apply_lut_to_channel_value); 112 113 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki