[Freedreno] [PATCH 6/6] drm/msm: Implement fbdev emulation as in-kernel client
kernel test robot
lkp at intel.com
Thu Mar 30 10:22:44 UTC 2023
Hi Thomas,
I love your patch! Yet something to improve:
[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on linus/master v6.3-rc4]
[cannot apply to next-20230330]
[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/Thomas-Zimmermann/drm-msm-Clear-aperture-ownership-outside-of-fbdev-code/20230330-154729
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20230330074150.7637-7-tzimmermann%40suse.de
patch subject: [PATCH 6/6] drm/msm: Implement fbdev emulation as in-kernel client
config: csky-randconfig-r011-20230329 (https://download.01.org/0day-ci/archive/20230330/202303301849.HjMnKXNi-lkp@intel.com/config)
compiler: csky-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/ec39cb11cf72fb01ada6fe51c7c572a31dcc805d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Thomas-Zimmermann/drm-msm-Clear-aperture-ownership-outside-of-fbdev-code/20230330-154729
git checkout ec39cb11cf72fb01ada6fe51c7c572a31dcc805d
# 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=csky olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=csky SHELL=/bin/bash drivers/gpu/drm/msm/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp at intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303301849.HjMnKXNi-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/gpu/drm/msm/msm_drv.c: In function 'msm_drm_init':
>> drivers/gpu/drm/msm/msm_drv.c:538:20: error: 'fbdev' undeclared (first use in this function)
538 | if (kms && fbdev)
| ^~~~~
drivers/gpu/drm/msm/msm_drv.c:538:20: note: each undeclared identifier is reported only once for each function it appears in
vim +/fbdev +538 drivers/gpu/drm/msm/msm_drv.c
398
399 static int msm_drm_init(struct device *dev, const struct drm_driver *drv)
400 {
401 struct msm_drm_private *priv = dev_get_drvdata(dev);
402 struct drm_device *ddev;
403 struct msm_kms *kms;
404 int ret, i;
405
406 if (drm_firmware_drivers_only())
407 return -ENODEV;
408
409 /* the fw fb could be anywhere in memory */
410 ret = drm_aperture_remove_framebuffers(false, drv);
411 if (ret)
412 return ret;
413
414 ddev = drm_dev_alloc(drv, dev);
415 if (IS_ERR(ddev)) {
416 DRM_DEV_ERROR(dev, "failed to allocate drm_device\n");
417 return PTR_ERR(ddev);
418 }
419 ddev->dev_private = priv;
420 priv->dev = ddev;
421
422 priv->wq = alloc_ordered_workqueue("msm", 0);
423 if (!priv->wq)
424 return -ENOMEM;
425
426 INIT_LIST_HEAD(&priv->objects);
427 mutex_init(&priv->obj_lock);
428
429 /*
430 * Initialize the LRUs:
431 */
432 mutex_init(&priv->lru.lock);
433 drm_gem_lru_init(&priv->lru.unbacked, &priv->lru.lock);
434 drm_gem_lru_init(&priv->lru.pinned, &priv->lru.lock);
435 drm_gem_lru_init(&priv->lru.willneed, &priv->lru.lock);
436 drm_gem_lru_init(&priv->lru.dontneed, &priv->lru.lock);
437
438 /* Teach lockdep about lock ordering wrt. shrinker: */
439 fs_reclaim_acquire(GFP_KERNEL);
440 might_lock(&priv->lru.lock);
441 fs_reclaim_release(GFP_KERNEL);
442
443 drm_mode_config_init(ddev);
444
445 ret = msm_init_vram(ddev);
446 if (ret)
447 goto err_drm_dev_put;
448
449 /* Bind all our sub-components: */
450 ret = component_bind_all(dev, ddev);
451 if (ret)
452 goto err_drm_dev_put;
453
454 dma_set_max_seg_size(dev, UINT_MAX);
455
456 msm_gem_shrinker_init(ddev);
457
458 if (priv->kms_init) {
459 ret = priv->kms_init(ddev);
460 if (ret) {
461 DRM_DEV_ERROR(dev, "failed to load kms\n");
462 priv->kms = NULL;
463 goto err_msm_uninit;
464 }
465 kms = priv->kms;
466 } else {
467 /* valid only for the dummy headless case, where of_node=NULL */
468 WARN_ON(dev->of_node);
469 kms = NULL;
470 }
471
472 /* Enable normalization of plane zpos */
473 ddev->mode_config.normalize_zpos = true;
474
475 if (kms) {
476 kms->dev = ddev;
477 ret = kms->funcs->hw_init(kms);
478 if (ret) {
479 DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret);
480 goto err_msm_uninit;
481 }
482 }
483
484 drm_helper_move_panel_connectors_to_head(ddev);
485
486 ddev->mode_config.funcs = &mode_config_funcs;
487 ddev->mode_config.helper_private = &mode_config_helper_funcs;
488
489 for (i = 0; i < priv->num_crtcs; i++) {
490 /* initialize event thread */
491 priv->event_thread[i].crtc_id = priv->crtcs[i]->base.id;
492 priv->event_thread[i].dev = ddev;
493 priv->event_thread[i].worker = kthread_create_worker(0,
494 "crtc_event:%d", priv->event_thread[i].crtc_id);
495 if (IS_ERR(priv->event_thread[i].worker)) {
496 ret = PTR_ERR(priv->event_thread[i].worker);
497 DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n");
498 priv->event_thread[i].worker = NULL;
499 goto err_msm_uninit;
500 }
501
502 sched_set_fifo(priv->event_thread[i].worker->task);
503 }
504
505 ret = drm_vblank_init(ddev, priv->num_crtcs);
506 if (ret < 0) {
507 DRM_DEV_ERROR(dev, "failed to initialize vblank\n");
508 goto err_msm_uninit;
509 }
510
511 if (kms) {
512 pm_runtime_get_sync(dev);
513 ret = msm_irq_install(ddev, kms->irq);
514 pm_runtime_put_sync(dev);
515 if (ret < 0) {
516 DRM_DEV_ERROR(dev, "failed to install IRQ handler\n");
517 goto err_msm_uninit;
518 }
519 }
520
521 ret = drm_dev_register(ddev, 0);
522 if (ret)
523 goto err_msm_uninit;
524
525 if (kms) {
526 ret = msm_disp_snapshot_init(ddev);
527 if (ret)
528 DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret);
529 }
530 drm_mode_config_reset(ddev);
531
532 ret = msm_debugfs_late_init(ddev);
533 if (ret)
534 goto err_msm_uninit;
535
536 drm_kms_helper_poll_init(ddev);
537
> 538 if (kms && fbdev)
539 msm_fbdev_setup(ddev);
540
541 return 0;
542
543 err_msm_uninit:
544 msm_drm_uninit(dev);
545 err_drm_dev_put:
546 drm_dev_put(ddev);
547 return ret;
548 }
549
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
More information about the Freedreno
mailing list