execute tbm_bufmgr_init when init sandbox/jk/hal
authorJunkyeong Kim <jk0430.kim@samsung.com>
Sat, 20 Feb 2021 08:47:13 +0000 (17:47 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Sat, 20 Feb 2021 08:47:18 +0000 (17:47 +0900)
cause of hal-tdm / hal-tbm error, tdm has to get bufmgr.
if do not get bufmgr, got hang in tdm-haltests.
error case:
tbm deinit -> tdm_putbackend -> destroy all created surface -> tbm_bufmgr_deinit -> tbm_putbackend
cannot execute putbackend at the same time.

Change-Id: Ic18b0ef5bcfe987ff2b0308286175b5caf47b5cb
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/tdm.c
src/tdm_private.h
src/tdm_private_types.h

index 963bc44..1303fbb 100644 (file)
--- a/src/tdm.c
+++ b/src/tdm.c
@@ -1416,6 +1416,7 @@ tdm_display_init(tdm_error *error)
        stamp1 = stamp2;
 
 #ifdef INIT_BUFMGR
+#if 0
        int tdm_drm_fd = tdm_helper_get_fd("TDM_DRM_MASTER_FD");
        if (tdm_drm_fd >= 0) {
                private_display->bufmgr = tbm_bufmgr_init(tdm_drm_fd);
@@ -1431,6 +1432,19 @@ tdm_display_init(tdm_error *error)
                TDM_DBG("initializing bufmgr time: %.3f ms", (stamp2 - stamp1) * 1000.0);
                stamp1 = stamp2;
        }
+#else
+       private_display->bufmgr = tbm_bufmgr_init(-1);
+       if (!private_display->bufmgr) {
+               TDM_ERR("tbm_bufmgr_init failed");
+               goto failed_update;
+       } else {
+               TDM_INFO("tbm_bufmgr_init successed");
+       }
+
+       stamp2 = tdm_helper_get_time();
+       TDM_DBG("initializing bufmgr time: %.3f ms", (stamp2 - stamp1) * 1000.0);
+       stamp1 = stamp2;
+#endif
 #endif
 
        TDM_TRACE_BEGIN("TDM_Update_Display");
@@ -1481,6 +1495,10 @@ tdm_display_init(tdm_error *error)
 
 /* LCOV_EXCL_START */
 failed_update:
+#ifdef INIT_BUFMGR
+       if (private_display->bufmgr)
+               tbm_bufmgr_deinit(private_display->bufmgr);
+#endif
        _tdm_display_unload_modules(private_display);
 failed_load:
        tdm_vblank_deinit(private_display);
index 10f3cf3..fcc3245 100644 (file)
@@ -70,7 +70,7 @@
 extern "C" {
 #endif
 
-//#define INIT_BUFMGR
+#define INIT_BUFMGR
 
 /*****************************************************************************
  * This file includes
index f2074e3..69a2e1d 100644 (file)
@@ -51,7 +51,7 @@
 extern "C" {
 #endif
 
-//#define INIT_BUFMGR
+#define INIT_BUFMGR
 
 /*****************************************************************************
  * This file defines private Enumerations and Structures for frontend