diff options
author | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2021-12-01 08:30:51 +0900 |
---|---|---|
committer | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2021-12-04 00:33:35 +0900 |
commit | 59de37c489c605103b90924dbfa2c42b8eeda7d8 (patch) | |
tree | 100e03ab0d574ea57d249f5a9e58f3b604077344 /meta-agl-lxc/dynamic-layers/meta-rcar-gen3/recipes-kernel/kernel-module-gles | |
parent | be85a1d3e268565c7dcf0c49662d7b5c4cd1763b (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')
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 + |