summaryrefslogtreecommitdiffstats
path: root/meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles
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:33:35 +0900
commit59de37c489c605103b90924dbfa2c42b8eeda7d8 (patch)
tree100e03ab0d574ea57d249f5a9e58f3b604077344 /meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles
parentbe85a1d3e268565c7dcf0c49662d7b5c4cd1763b (diff)
Workaround for booting time crash in R-CarH3SK wth Kingfisher board
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>
Diffstat (limited to 'meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles')
-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
+