summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2021-12-01 08:30:51 +0900
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2021-12-04 00:46:00 +0900
commit827b942a5b05f2ffd0d44c44ee8c37781b60f226 (patch)
tree67e25cc97f6e42af3f1a6b08b9315a1d2dc8b2fb
parentcd255477e0fca7834d348963c9c1430db3a011a9 (diff)
Workaround for booting time crash in R-CarH3SK wth Kingfisher boardlamprey_12.1.0lamprey/12.1.012.1.0
When I run AGL Instrument Cluster with IVI in R-CarH3SK wth Kingfisher board, it's frequently crash at booting time. RGX driver has race condition issue at firmware download time. This issue occur in multi compositor environment such as IC container integration. This issue will fix by renesas in next BSP update time, may be. This patch enable workaround for this race condition issue. AGL-Bug : SPEC-4164 Change-Id: I5ca3affdfd681fd08391805ee765b3252afe190f Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
-rw-r--r--meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend4
-rw-r--r--meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles/0001-Fix-fw-download-issue.patch60
2 files changed, 64 insertions, 0 deletions
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend
index d0a6a502..c230e5ae 100644
--- a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend
+++ b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles.bbappend
@@ -1 +1,5 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI:append = " file://0001-Fix-fw-download-issue.patch"
+
RDEPENDS:${PN}:append = " gles-user-module-firmware"
diff --git a/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles/0001-Fix-fw-download-issue.patch b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles/0001-Fix-fw-download-issue.patch
new file mode 100644
index 00000000..a44e8eff
--- /dev/null
+++ b/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles/0001-Fix-fw-download-issue.patch
@@ -0,0 +1,60 @@
+From d7a7ad476dee136e21fc7de112003528f7675007 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Wed, 1 Dec 2021 08:16:24 +0900
+Subject: [PATCH] Fix fw download issue
+
+---
+ services/server/env/linux/module_common.c | 26 ++++++++++++++++-------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/services/server/env/linux/module_common.c b/services/server/env/linux/module_common.c
+index 5822dab..3c97b28 100644
+--- a/services/server/env/linux/module_common.c
++++ b/services/server/env/linux/module_common.c
+@@ -416,6 +416,10 @@ int PVRSRVDeviceResume(PVRSRV_DEVICE_NODE *psDeviceNode)
+ return 0;
+ }
+
++//HACK
++static DEFINE_MUTEX(rgx_initialize_mutex);
++//HACK
++
+ /**************************************************************************/ /*!
+ @Function PVRSRVDeviceOpen
+ @Description Common device open.
+@@ -455,18 +459,24 @@ int PVRSRVDeviceOpen(PVRSRV_DEVICE_NODE *psDeviceNode,
+
+ if (psDeviceNode->eDevState == PVRSRV_DEVICE_STATE_INIT)
+ {
+- eError = PVRSRVCommonDeviceInitialise(psDeviceNode);
+- if (eError != PVRSRV_OK)
++ mutex_lock(&rgx_initialize_mutex);
++ if (psDeviceNode->eDevState == PVRSRV_DEVICE_STATE_INIT)
+ {
+- PVR_DPF((PVR_DBG_ERROR, "%s: Failed to initialise device (%s)",
+- __func__, PVRSRVGetErrorString(eError)));
+- iErr = -ENODEV;
+- goto out;
+- }
++ eError = PVRSRVCommonDeviceInitialise(psDeviceNode);
++ if (eError != PVRSRV_OK)
++ {
++ PVR_DPF((PVR_DBG_ERROR, "%s: Failed to initialise device (%s)",
++ __func__, PVRSRVGetErrorString(eError)));
++ iErr = -ENODEV;
++ mutex_unlock(&rgx_initialize_mutex);
++ goto out;
++ }
+
+ #if defined(SUPPORT_RGX)
+- PVRGpuTraceInitIfEnabled(psDeviceNode);
++ PVRGpuTraceInitIfEnabled(psDeviceNode);
+ #endif
++ }
++ mutex_unlock(&rgx_initialize_mutex);
+ }
+
+ sPrivData.psDevNode = psDeviceNode;
+--
+2.25.1
+