Hi Michael, url: https://github.com/intel-lab-lkp/linux/commits/Michael-Riesch/drm-rockchip-vop2-add-support-for-the-rgb-output-block/20221130-220346 base: b7b275e60bcd5f89771e865a8239325f86d9927d patch link: https://lore.kernel.org/r/20221130140217.3196414-4-michael.riesch%40wolfvision.net patch subject: [PATCH 3/5] drm/rockchip: vop2: use symmetric function pair vop2_{create,destroy}_crtcs config: parisc-randconfig-m031-20221225 compiler: hppa-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <error27@xxxxxxxxx> New smatch warnings: drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2330 vop2_create_crtcs() error: uninitialized symbol 'possible_crtcs'. vim +/possible_crtcs +2330 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c fb83276e59f2d6 Michael Riesch 2022-11-30 2249 static int vop2_create_crtcs(struct vop2 *vop2) 604be85547ce4d Andy Yan 2022-04-22 2250 { 604be85547ce4d Andy Yan 2022-04-22 2251 const struct vop2_data *vop2_data = vop2->data; 604be85547ce4d Andy Yan 2022-04-22 2252 struct drm_device *drm = vop2->drm; 604be85547ce4d Andy Yan 2022-04-22 2253 struct device *dev = vop2->dev; 604be85547ce4d Andy Yan 2022-04-22 2254 struct drm_plane *plane; 604be85547ce4d Andy Yan 2022-04-22 2255 struct device_node *port; 604be85547ce4d Andy Yan 2022-04-22 2256 struct vop2_video_port *vp; 604be85547ce4d Andy Yan 2022-04-22 2257 int i, nvp, nvps = 0; 604be85547ce4d Andy Yan 2022-04-22 2258 int ret; 604be85547ce4d Andy Yan 2022-04-22 2259 604be85547ce4d Andy Yan 2022-04-22 2260 for (i = 0; i < vop2_data->nr_vps; i++) { 604be85547ce4d Andy Yan 2022-04-22 2261 const struct vop2_video_port_data *vp_data; 604be85547ce4d Andy Yan 2022-04-22 2262 struct device_node *np; 604be85547ce4d Andy Yan 2022-04-22 2263 char dclk_name[9]; 604be85547ce4d Andy Yan 2022-04-22 2264 604be85547ce4d Andy Yan 2022-04-22 2265 vp_data = &vop2_data->vp[i]; 604be85547ce4d Andy Yan 2022-04-22 2266 vp = &vop2->vps[i]; 604be85547ce4d Andy Yan 2022-04-22 2267 vp->vop2 = vop2; 604be85547ce4d Andy Yan 2022-04-22 2268 vp->id = vp_data->id; 604be85547ce4d Andy Yan 2022-04-22 2269 vp->regs = vp_data->regs; 604be85547ce4d Andy Yan 2022-04-22 2270 vp->data = vp_data; 604be85547ce4d Andy Yan 2022-04-22 2271 604be85547ce4d Andy Yan 2022-04-22 2272 snprintf(dclk_name, sizeof(dclk_name), "dclk_vp%d", vp->id); 604be85547ce4d Andy Yan 2022-04-22 2273 vp->dclk = devm_clk_get(vop2->dev, dclk_name); 604be85547ce4d Andy Yan 2022-04-22 2274 if (IS_ERR(vp->dclk)) { 604be85547ce4d Andy Yan 2022-04-22 2275 drm_err(vop2->drm, "failed to get %s\n", dclk_name); 604be85547ce4d Andy Yan 2022-04-22 2276 return PTR_ERR(vp->dclk); 604be85547ce4d Andy Yan 2022-04-22 2277 } 604be85547ce4d Andy Yan 2022-04-22 2278 604be85547ce4d Andy Yan 2022-04-22 2279 np = of_graph_get_remote_node(dev->of_node, i, -1); 604be85547ce4d Andy Yan 2022-04-22 2280 if (!np) { 604be85547ce4d Andy Yan 2022-04-22 2281 drm_dbg(vop2->drm, "%s: No remote for vp%d\n", __func__, i); 604be85547ce4d Andy Yan 2022-04-22 2282 continue; 604be85547ce4d Andy Yan 2022-04-22 2283 } 604be85547ce4d Andy Yan 2022-04-22 2284 of_node_put(np); 604be85547ce4d Andy Yan 2022-04-22 2285 604be85547ce4d Andy Yan 2022-04-22 2286 port = of_graph_get_port_by_id(dev->of_node, i); 604be85547ce4d Andy Yan 2022-04-22 2287 if (!port) { 604be85547ce4d Andy Yan 2022-04-22 2288 drm_err(vop2->drm, "no port node found for video_port%d\n", i); 604be85547ce4d Andy Yan 2022-04-22 2289 return -ENOENT; 604be85547ce4d Andy Yan 2022-04-22 2290 } 604be85547ce4d Andy Yan 2022-04-22 2291 604be85547ce4d Andy Yan 2022-04-22 2292 vp->crtc.port = port; 604be85547ce4d Andy Yan 2022-04-22 2293 nvps++; 604be85547ce4d Andy Yan 2022-04-22 2294 } 604be85547ce4d Andy Yan 2022-04-22 2295 604be85547ce4d Andy Yan 2022-04-22 2296 nvp = 0; 604be85547ce4d Andy Yan 2022-04-22 2297 for (i = 0; i < vop2->registered_num_wins; i++) { 604be85547ce4d Andy Yan 2022-04-22 2298 struct vop2_win *win = &vop2->win[i]; 604be85547ce4d Andy Yan 2022-04-22 2299 u32 possible_crtcs; 604be85547ce4d Andy Yan 2022-04-22 2300 604be85547ce4d Andy Yan 2022-04-22 2301 if (vop2->data->soc_id == 3566) { 604be85547ce4d Andy Yan 2022-04-22 2302 /* 604be85547ce4d Andy Yan 2022-04-22 2303 * On RK3566 these windows don't have an independent 604be85547ce4d Andy Yan 2022-04-22 2304 * framebuffer. They share the framebuffer with smart0, 604be85547ce4d Andy Yan 2022-04-22 2305 * esmart0 and cluster0 respectively. 604be85547ce4d Andy Yan 2022-04-22 2306 */ 604be85547ce4d Andy Yan 2022-04-22 2307 switch (win->data->phys_id) { 604be85547ce4d Andy Yan 2022-04-22 2308 case ROCKCHIP_VOP2_SMART1: 604be85547ce4d Andy Yan 2022-04-22 2309 case ROCKCHIP_VOP2_ESMART1: 604be85547ce4d Andy Yan 2022-04-22 2310 case ROCKCHIP_VOP2_CLUSTER1: 604be85547ce4d Andy Yan 2022-04-22 2311 continue; 604be85547ce4d Andy Yan 2022-04-22 2312 } 604be85547ce4d Andy Yan 2022-04-22 2313 } 604be85547ce4d Andy Yan 2022-04-22 2314 604be85547ce4d Andy Yan 2022-04-22 2315 if (win->type == DRM_PLANE_TYPE_PRIMARY) { 604be85547ce4d Andy Yan 2022-04-22 2316 vp = find_vp_without_primary(vop2); 604be85547ce4d Andy Yan 2022-04-22 2317 if (vp) { 604be85547ce4d Andy Yan 2022-04-22 2318 possible_crtcs = BIT(nvp); 604be85547ce4d Andy Yan 2022-04-22 2319 vp->primary_plane = win; 604be85547ce4d Andy Yan 2022-04-22 2320 nvp++; 604be85547ce4d Andy Yan 2022-04-22 2321 } else { 604be85547ce4d Andy Yan 2022-04-22 2322 /* change the unused primary window to overlay window */ 604be85547ce4d Andy Yan 2022-04-22 2323 win->type = DRM_PLANE_TYPE_OVERLAY; 604be85547ce4d Andy Yan 2022-04-22 2324 } 604be85547ce4d Andy Yan 2022-04-22 2325 } 604be85547ce4d Andy Yan 2022-04-22 2326 604be85547ce4d Andy Yan 2022-04-22 2327 if (win->type == DRM_PLANE_TYPE_OVERLAY) 604be85547ce4d Andy Yan 2022-04-22 2328 possible_crtcs = (1 << nvps) - 1; What about if win->type is not equal to either DRM_PLANE_TYPE_PRIMARY or DRM_PLANE_TYPE_OVERLAY? That's what the checker is worried about. 604be85547ce4d Andy Yan 2022-04-22 2329 604be85547ce4d Andy Yan 2022-04-22 @2330 ret = vop2_plane_init(vop2, win, possible_crtcs); ^^^^^^^^^^^^^^ 604be85547ce4d Andy Yan 2022-04-22 2331 if (ret) { 604be85547ce4d Andy Yan 2022-04-22 2332 drm_err(vop2->drm, "failed to init plane %s: %d\n", 604be85547ce4d Andy Yan 2022-04-22 2333 win->data->name, ret); 604be85547ce4d Andy Yan 2022-04-22 2334 return ret; 604be85547ce4d Andy Yan 2022-04-22 2335 } 604be85547ce4d Andy Yan 2022-04-22 2336 } 604be85547ce4d Andy Yan 2022-04-22 2337 604be85547ce4d Andy Yan 2022-04-22 2338 for (i = 0; i < vop2_data->nr_vps; i++) { -- 0-DAY CI Kernel Test Service https://01.org/lkp