From 827b942a5b05f2ffd0d44c44ee8c37781b60f226 Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Wed, 1 Dec 2021 08:30:51 +0900 Subject: 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 --- .../kernel-module-gles/kernel-module-gles.bbappend | 4 ++ .../0001-Fix-fw-download-issue.patch | 60 ++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles/kernel-module-gles/0001-Fix-fw-download-issue.patch 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 +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 + -- cgit 1.2.3-korg