CC: [email protected] TO: Daniel Vetter <[email protected]> CC: Sam Ravnborg <[email protected]>
tree: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next head: 9e1ed9fb1eb0a4bc43a26365c592d3095286038b commit: c3b790ea07a13da0c46816bda6b04abef346af15 [19/44] drm: Manage drm_mode_config_init with drmm_ :::::: branch date: 2 weeks ago :::::: commit date: 2 weeks ago If you fix the issue, kindly add following tag as appropriate Reported-by: kbuild test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/gpu/drm/drm_mode_config.c:450 drmm_mode_config_init() error: double unlocked 'resv' (orig line 446) git remote add drm-drm-misc git://anongit.freedesktop.org/drm/drm-misc git remote update drm-drm-misc git checkout c3b790ea07a13da0c46816bda6b04abef346af15 vim +/resv +450 drivers/gpu/drm/drm_mode_config.c c3b790ea07a13d Daniel Vetter 2020-03-23 381 28575f165d3605 Daniel Vetter 2016-11-14 382 /** c3b790ea07a13d Daniel Vetter 2020-03-23 383 * drmm_mode_config_init - managed DRM mode_configuration structure c3b790ea07a13d Daniel Vetter 2020-03-23 384 * initialization 28575f165d3605 Daniel Vetter 2016-11-14 385 * @dev: DRM device 28575f165d3605 Daniel Vetter 2016-11-14 386 * 28575f165d3605 Daniel Vetter 2016-11-14 387 * Initialize @dev's mode_config structure, used for tracking the graphics 28575f165d3605 Daniel Vetter 2016-11-14 388 * configuration of @dev. 28575f165d3605 Daniel Vetter 2016-11-14 389 * 28575f165d3605 Daniel Vetter 2016-11-14 390 * Since this initializes the modeset locks, no locking is possible. Which is no 28575f165d3605 Daniel Vetter 2016-11-14 391 * problem, since this should happen single threaded at init time. It is the 28575f165d3605 Daniel Vetter 2016-11-14 392 * driver's problem to ensure this guarantee. 28575f165d3605 Daniel Vetter 2016-11-14 393 * c3b790ea07a13d Daniel Vetter 2020-03-23 394 * Cleanup is automatically handled through registering drm_mode_config_cleanup c3b790ea07a13d Daniel Vetter 2020-03-23 395 * with drmm_add_action(). c3b790ea07a13d Daniel Vetter 2020-03-23 396 * c3b790ea07a13d Daniel Vetter 2020-03-23 397 * Returns: 0 on success, negative error value on failure. 28575f165d3605 Daniel Vetter 2016-11-14 398 */ c3b790ea07a13d Daniel Vetter 2020-03-23 399 int drmm_mode_config_init(struct drm_device *dev) 28575f165d3605 Daniel Vetter 2016-11-14 400 { 28575f165d3605 Daniel Vetter 2016-11-14 401 mutex_init(&dev->mode_config.mutex); 28575f165d3605 Daniel Vetter 2016-11-14 402 drm_modeset_lock_init(&dev->mode_config.connection_mutex); 28575f165d3605 Daniel Vetter 2016-11-14 403 mutex_init(&dev->mode_config.idr_mutex); 28575f165d3605 Daniel Vetter 2016-11-14 404 mutex_init(&dev->mode_config.fb_lock); 28575f165d3605 Daniel Vetter 2016-11-14 405 mutex_init(&dev->mode_config.blob_lock); 28575f165d3605 Daniel Vetter 2016-11-14 406 INIT_LIST_HEAD(&dev->mode_config.fb_list); 28575f165d3605 Daniel Vetter 2016-11-14 407 INIT_LIST_HEAD(&dev->mode_config.crtc_list); 28575f165d3605 Daniel Vetter 2016-11-14 408 INIT_LIST_HEAD(&dev->mode_config.connector_list); 28575f165d3605 Daniel Vetter 2016-11-14 409 INIT_LIST_HEAD(&dev->mode_config.encoder_list); 28575f165d3605 Daniel Vetter 2016-11-14 410 INIT_LIST_HEAD(&dev->mode_config.property_list); 28575f165d3605 Daniel Vetter 2016-11-14 411 INIT_LIST_HEAD(&dev->mode_config.property_blob_list); 28575f165d3605 Daniel Vetter 2016-11-14 412 INIT_LIST_HEAD(&dev->mode_config.plane_list); b962a12050a387 Rob Clark 2018-10-22 413 INIT_LIST_HEAD(&dev->mode_config.privobj_list); b5f06893c49925 Shayenne da Luz Moura 2018-12-13 414 idr_init(&dev->mode_config.object_idr); 28575f165d3605 Daniel Vetter 2016-11-14 415 idr_init(&dev->mode_config.tile_idr); 28575f165d3605 Daniel Vetter 2016-11-14 416 ida_init(&dev->mode_config.connector_ida); 613051dac40da1 Daniel Vetter 2016-12-14 417 spin_lock_init(&dev->mode_config.connector_list_lock); 28575f165d3605 Daniel Vetter 2016-11-14 418 ea497bb9206487 Daniel Vetter 2017-12-13 419 init_llist_head(&dev->mode_config.connector_free_list); ea497bb9206487 Daniel Vetter 2017-12-13 420 INIT_WORK(&dev->mode_config.connector_free_work, drm_connector_free_work_fn); ea497bb9206487 Daniel Vetter 2017-12-13 421 28575f165d3605 Daniel Vetter 2016-11-14 422 drm_mode_create_standard_properties(dev); 28575f165d3605 Daniel Vetter 2016-11-14 423 28575f165d3605 Daniel Vetter 2016-11-14 424 /* Just to be sure */ 28575f165d3605 Daniel Vetter 2016-11-14 425 dev->mode_config.num_fb = 0; 28575f165d3605 Daniel Vetter 2016-11-14 426 dev->mode_config.num_connector = 0; 28575f165d3605 Daniel Vetter 2016-11-14 427 dev->mode_config.num_crtc = 0; 28575f165d3605 Daniel Vetter 2016-11-14 428 dev->mode_config.num_encoder = 0; 28575f165d3605 Daniel Vetter 2016-11-14 429 dev->mode_config.num_total_plane = 0; 2c51419e8c06f6 Daniel Vetter 2019-11-19 430 2c51419e8c06f6 Daniel Vetter 2019-11-19 431 if (IS_ENABLED(CONFIG_LOCKDEP)) { 2c51419e8c06f6 Daniel Vetter 2019-11-19 432 struct drm_modeset_acquire_ctx modeset_ctx; 2c51419e8c06f6 Daniel Vetter 2019-11-19 433 struct ww_acquire_ctx resv_ctx; 2c51419e8c06f6 Daniel Vetter 2019-11-19 434 struct dma_resv resv; 2c51419e8c06f6 Daniel Vetter 2019-11-19 435 int ret; 2c51419e8c06f6 Daniel Vetter 2019-11-19 436 2c51419e8c06f6 Daniel Vetter 2019-11-19 437 dma_resv_init(&resv); 2c51419e8c06f6 Daniel Vetter 2019-11-19 438 2c51419e8c06f6 Daniel Vetter 2019-11-19 439 drm_modeset_acquire_init(&modeset_ctx, 0); 2c51419e8c06f6 Daniel Vetter 2019-11-19 440 ret = drm_modeset_lock(&dev->mode_config.connection_mutex, 2c51419e8c06f6 Daniel Vetter 2019-11-19 441 &modeset_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 442 if (ret == -EDEADLK) 2c51419e8c06f6 Daniel Vetter 2019-11-19 443 ret = drm_modeset_backoff(&modeset_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 444 2c51419e8c06f6 Daniel Vetter 2019-11-19 445 ww_acquire_init(&resv_ctx, &reservation_ww_class); 2c51419e8c06f6 Daniel Vetter 2019-11-19 @446 ret = dma_resv_lock(&resv, &resv_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 447 if (ret == -EDEADLK) 2c51419e8c06f6 Daniel Vetter 2019-11-19 448 dma_resv_lock_slow(&resv, &resv_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 449 2c51419e8c06f6 Daniel Vetter 2019-11-19 @450 dma_resv_unlock(&resv); 2c51419e8c06f6 Daniel Vetter 2019-11-19 451 ww_acquire_fini(&resv_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 452 2c51419e8c06f6 Daniel Vetter 2019-11-19 453 drm_modeset_drop_locks(&modeset_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 454 drm_modeset_acquire_fini(&modeset_ctx); 2c51419e8c06f6 Daniel Vetter 2019-11-19 455 dma_resv_fini(&resv); 2c51419e8c06f6 Daniel Vetter 2019-11-19 456 } c3b790ea07a13d Daniel Vetter 2020-03-23 457 c3b790ea07a13d Daniel Vetter 2020-03-23 458 return drmm_add_action_or_reset(dev, drm_mode_config_init_release, c3b790ea07a13d Daniel Vetter 2020-03-23 459 NULL); 28575f165d3605 Daniel Vetter 2016-11-14 460 } c3b790ea07a13d Daniel Vetter 2020-03-23 461 EXPORT_SYMBOL(drmm_mode_config_init); 28575f165d3605 Daniel Vetter 2016-11-14 462 :::::: The code at line 450 was first introduced by commit :::::: 2c51419e8c06f6b8b1b91892688b17dd9a7f6e39 drm/modeset: Prime modeset lock vs dma_resv :::::: TO: Daniel Vetter <[email protected]> :::::: CC: Daniel Vetter <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
