Hi Tomohito, Thank you for the patch! Yet something to improve: [auto build test ERROR on robh/for-next] [also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip linus/master v5.13-rc7 next-20210618] [cannot apply to pinchartl-media/drm/du/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] url: https://github.com/0day-ci/linux/commits/Tomohito-Esaki/Support-virtual-DRM/20210621-144611 base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next config: arm-allmodconfig (attached as .config) compiler: arm-linux-gnueabi-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://github.com/0day-ci/linux/commit/cc44235a16ab2596f4eae5c4e9011e884ce89691 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Tomohito-Esaki/Support-virtual-DRM/20210621-144611 git checkout cc44235a16ab2596f4eae5c4e9011e884ce89691 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:60:6: error: redefinition of 'rcar_du_vdrm_crtc_complete' 60 | void rcar_du_vdrm_crtc_complete(struct rcar_du_crtc *crtc, unsigned int status) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:35:1: note: previous definition of 'rcar_du_vdrm_crtc_complete' was here 35 | rcar_du_vdrm_crtc_complete(struct rcar_du_crtc *crtc, unsigned int status) { } | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:71:5: error: redefinition of 'rcar_du_vdrm_count' 71 | int rcar_du_vdrm_count(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:37:19: note: previous definition of 'rcar_du_vdrm_count' was here 37 | static inline int rcar_du_vdrm_count(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:83:5: error: redefinition of 'rcar_du_vdrms_init' 83 | int rcar_du_vdrms_init(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:41:19: note: previous definition of 'rcar_du_vdrms_init' was here 41 | static inline int rcar_du_vdrms_init(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:130:5: error: redefinition of 'rcar_du_vdrm_plane_init' 130 | int rcar_du_vdrm_plane_init(struct vdrm_device *vdrm, | ^~~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:46:1: note: previous definition of 'rcar_du_vdrm_plane_init' was here 46 | rcar_du_vdrm_plane_init(struct vdrm_device *vdrm, | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:142:5: error: redefinition of 'rcar_du_vdrm_crtc_init' 142 | int rcar_du_vdrm_crtc_init(struct rcar_du_crtc *crtc, int index) | ^~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:55:19: note: previous definition of 'rcar_du_vdrm_crtc_init' was here 55 | static inline int rcar_du_vdrm_crtc_init(struct rcar_du_crtc *crtc, int index) | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:165:5: error: redefinition of 'rcar_du_vdrms_register' 165 | int rcar_du_vdrms_register(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:59:19: note: previous definition of 'rcar_du_vdrms_register' was here 59 | static inline int rcar_du_vdrms_register(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:178:6: error: redefinition of 'rcar_du_vdrms_fini' 178 | void rcar_du_vdrms_fini(struct rcar_du_device *rcdu) | ^~~~~~~~~~~~~~~~~~ In file included from drivers/gpu/drm/rcar-du/rcar_du_vdrm.c:19: drivers/gpu/drm/rcar-du/rcar_du_vdrm.h:63:20: note: previous definition of 'rcar_du_vdrms_fini' was here 63 | static inline void rcar_du_vdrms_fini(struct rcar_du_device *rcdu) { } | ^~~~~~~~~~~~~~~~~~ vim +/rcar_du_vdrm_crtc_complete +60 drivers/gpu/drm/rcar-du/rcar_du_vdrm.c 59 > 60 void rcar_du_vdrm_crtc_complete(struct rcar_du_crtc *crtc, unsigned int status) 61 { 62 struct rcar_du_vdrm_display *disp; 63 64 list_for_each_entry(disp, &crtc->vdrm_displays, head) { 65 vdrm_drv_handle_vblank(disp->display); 66 if (status & VSP1_DU_STATUS_COMPLETE) 67 vdrm_drv_finish_page_flip(disp->display); 68 } 69 } 70 > 71 int rcar_du_vdrm_count(struct rcar_du_device *rcdu) 72 { 73 const struct device_node *np = rcdu->dev->of_node; 74 int num; 75 76 num = of_property_count_u32_elems(np, "vdrms"); 77 if (num < 0) 78 return 0; 79 80 return num; 81 } 82 > 83 int rcar_du_vdrms_init(struct rcar_du_device *rcdu) 84 { 85 struct vdrm_device *vdrm; 86 int num_vdrms; 87 int i, ret; 88 89 num_vdrms = rcar_du_vdrm_count(rcdu); 90 if (num_vdrms == 0) 91 return 0; 92 93 rcdu->vdrms = kcalloc(num_vdrms, sizeof(vdrm), GFP_KERNEL); 94 if (!rcdu->vdrms) 95 return -1; 96 97 DRM_INFO("VDRM: num vdrm = %d\n", num_vdrms); 98 99 for (i = 0; i < num_vdrms; i++) { 100 struct of_phandle_args args; 101 const struct device_node *np = rcdu->dev->of_node; 102 103 ret = of_parse_phandle_with_fixed_args(np, "vdrms", 0, i, 104 &args); 105 if (ret < 0) { 106 DRM_WARN("VDRM: failed get vdrm%d.\n", i); 107 goto err; 108 } 109 110 vdrm = vdrm_drv_init(&rcdu->ddev, args.np, 0, NULL, 111 &vdrm_funcs); 112 of_node_put(args.np); 113 if (IS_ERR(vdrm)) { 114 ret = PTR_ERR(vdrm); 115 goto err; 116 } 117 118 rcdu->vdrms[i] = vdrm; 119 rcdu->num_vdrms++; 120 } 121 122 return 0; 123 124 err: 125 rcar_du_vdrms_fini(rcdu); 126 rcdu->num_vdrms = 0; 127 return ret; 128 } 129 > 130 int rcar_du_vdrm_plane_init(struct vdrm_device *vdrm, 131 struct rcar_du_vsp_plane *plane, 132 const struct drm_plane_funcs *funcs, 133 const struct drm_plane_helper_funcs *helper_funcs, 134 const u32 *formats, unsigned int num_formats, 135 int max_zpos) 136 { 137 return vdrm_drv_plane_init(vdrm, &plane->plane, funcs, 138 helper_funcs, formats, num_formats, 139 max_zpos); 140 } 141 > 142 int rcar_du_vdrm_crtc_init(struct rcar_du_crtc *crtc, int index) 143 { 144 struct rcar_du_device *rcdu; 145 int i; 146 147 rcdu = crtc->dev; 148 for (i = 0; i < rcdu->num_vdrms; i++) { 149 struct vdrm_display *vdisplay; 150 int plane_index = crtc->vsp->num_planes + i; 151 struct drm_plane *plane = 152 &crtc->vsp->planes[plane_index].plane; 153 154 vdisplay = vdrm_drv_display_init(rcdu->vdrms[i], &crtc->crtc, 155 plane); 156 if (IS_ERR(vdisplay)) 157 return PTR_ERR(vdisplay); 158 159 rcar_du_crtc_add_vdrm_display(crtc, vdisplay); 160 } 161 162 return 0; 163 } 164 > 165 int rcar_du_vdrms_register(struct rcar_du_device *rcdu) 166 { 167 int i, ret; 168 169 for (i = 0; i < rcdu->num_vdrms; i++) { 170 ret = vdrm_drv_register(rcdu->vdrms[i]); 171 if (ret) 172 return ret; 173 } 174 175 return 0; 176 } 177 > 178 void rcar_du_vdrms_fini(struct rcar_du_device *rcdu) --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org